From 3952ceee76189d98e34f8227296ce30e0ad72484 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Wed, 16 Aug 2023 11:27:46 +0200 Subject: [PATCH 01/34] feature: new Vue 3 based list-view --- assets/vue/uu-list/.eslintrc.json | 47 + assets/vue/uu-list/.gitignore | 15 + assets/vue/uu-list/package.json | 20 + assets/vue/uu-list/src/index.ts | 3 + assets/vue/uu-list/tsconfig.json | 44 + assets/vue/uu-list/vite.config.ts | 48 + assets/vue/uu-list/yarn.lock | 385 ++ dev/dev_project/settings.py | 12 +- dev/dev_project/urls.py | 36 +- dev/dev_vue/__init__.py | 0 dev/dev_vue/admin.py | 3 + dev/dev_vue/apps.py | 6 + dev/dev_vue/management/__init__.py | 0 dev/dev_vue/management/commands/__init__.py | 0 .../management/commands/create_test_data.py | 50 + dev/dev_vue/menus.py | 19 + dev/dev_vue/migrations/0001_initial.py | 25 + .../0002_exampledata_project_type.py | 18 + .../0003_alter_exampledata_created.py | 19 + dev/dev_vue/migrations/__init__.py | 0 dev/dev_vue/models.py | 38 + dev/dev_vue/serializers.py | 56 + dev/dev_vue/templates/dev_vue/list.html | 13 + dev/dev_vue/tests.py | 3 + dev/dev_vue/urls.py | 11 + dev/dev_vue/views.py | 132 + src/cdh/vue3/components/__init__.py | 0 src/cdh/vue3/components/uu_list/__init__.py | 32 + src/cdh/vue3/components/uu_list/columns.py | 151 + src/cdh/vue3/components/uu_list/paginator.py | 38 + .../vue3/components/uu_list/serializers.py | 152 + src/cdh/vue3/components/uu_list/views.py | 269 + .../components/uu-list/UUList.iife.js | 5630 +++++++++++++++++ .../cdh.vue3/components/uu-list/style.css | 20 + 34 files changed, 7275 insertions(+), 20 deletions(-) create mode 100644 assets/vue/uu-list/.eslintrc.json create mode 100644 assets/vue/uu-list/.gitignore create mode 100644 assets/vue/uu-list/package.json create mode 100644 assets/vue/uu-list/src/index.ts create mode 100644 assets/vue/uu-list/tsconfig.json create mode 100644 assets/vue/uu-list/vite.config.ts create mode 100644 assets/vue/uu-list/yarn.lock create mode 100644 dev/dev_vue/__init__.py create mode 100644 dev/dev_vue/admin.py create mode 100644 dev/dev_vue/apps.py create mode 100644 dev/dev_vue/management/__init__.py create mode 100644 dev/dev_vue/management/commands/__init__.py create mode 100644 dev/dev_vue/management/commands/create_test_data.py create mode 100644 dev/dev_vue/menus.py create mode 100644 dev/dev_vue/migrations/0001_initial.py create mode 100644 dev/dev_vue/migrations/0002_exampledata_project_type.py create mode 100644 dev/dev_vue/migrations/0003_alter_exampledata_created.py create mode 100644 dev/dev_vue/migrations/__init__.py create mode 100644 dev/dev_vue/models.py create mode 100644 dev/dev_vue/serializers.py create mode 100644 dev/dev_vue/templates/dev_vue/list.html create mode 100644 dev/dev_vue/tests.py create mode 100644 dev/dev_vue/urls.py create mode 100644 dev/dev_vue/views.py create mode 100644 src/cdh/vue3/components/__init__.py create mode 100644 src/cdh/vue3/components/uu_list/__init__.py create mode 100644 src/cdh/vue3/components/uu_list/columns.py create mode 100644 src/cdh/vue3/components/uu_list/paginator.py create mode 100644 src/cdh/vue3/components/uu_list/serializers.py create mode 100644 src/cdh/vue3/components/uu_list/views.py create mode 100644 src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js create mode 100644 src/cdh/vue3/static/cdh.vue3/components/uu-list/style.css diff --git a/assets/vue/uu-list/.eslintrc.json b/assets/vue/uu-list/.eslintrc.json new file mode 100644 index 00000000..2ec56870 --- /dev/null +++ b/assets/vue/uu-list/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "root": true, + "extends": [ + "eslint:recommended", + "plugin:vue/vue3-recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "parserOptions": { + "ecmaVersion": "latest", + "parser": "@typescript-eslint/parser", + "sourceType": "module", + "extraFileExtensions": [".vue"] + }, + "overrides": [ + { + "files": ["*.ts"], + + "parserOptions": { + "project": ["./tsconfig.json"] // Specify it only for TypeScript files + } + } + ], + "plugins": [ + "vue", + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-inferrable-types": "off", + "vue/html-self-closing": ["error", { + "html": { + "void": "any", + "normal": "always", + "component": "always" + }, + "svg": "always", + "math": "always" + }], + "@typescript-eslint/no-unused-vars": ["warn", { + "varsIgnorePattern": "(props)|(emits?)|_" + }], + "vue/require-v-for-key": "warn", + "vue/no-v-model-argument": "off" // NO idea why this rule exists + }, + "ignorePatterns": ["**/*.test.ts", "dist/*", "node_modules/*"] +} diff --git a/assets/vue/uu-list/.gitignore b/assets/vue/uu-list/.gitignore new file mode 100644 index 00000000..d5aa0f8a --- /dev/null +++ b/assets/vue/uu-list/.gitignore @@ -0,0 +1,15 @@ +.sass-cache/ +*.css.map +*.sass.map +*.scss.map +!dist/css/*.css.map + +node_modules +vite.config.d.ts +*.log* +.cache +.output +.env +generated + +.idea diff --git a/assets/vue/uu-list/package.json b/assets/vue/uu-list/package.json new file mode 100644 index 00000000..3a492b91 --- /dev/null +++ b/assets/vue/uu-list/package.json @@ -0,0 +1,20 @@ +{ + "name": "uu-list", + "version": "1.0.0", + "author": "Humanities IT Portal development", + "license": "Apache-2.0", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.0" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.3.4", + "typescript": "^5.2.2", + "vite": "^4.4.9", + "vue": "^3.3.4" + } +} diff --git a/assets/vue/uu-list/src/index.ts b/assets/vue/uu-list/src/index.ts new file mode 100644 index 00000000..bd9a82bb --- /dev/null +++ b/assets/vue/uu-list/src/index.ts @@ -0,0 +1,3 @@ +import {DSCList} from "cdh-vue-lib/components"; +import "cdh-vue-lib/dist/style.css" +export default DSCList; \ No newline at end of file diff --git a/assets/vue/uu-list/tsconfig.json b/assets/vue/uu-list/tsconfig.json new file mode 100644 index 00000000..4d0d1dee --- /dev/null +++ b/assets/vue/uu-list/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "moduleResolution": "node", + "declaration": true, + "outDir": "dist", + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "useDefineForClassFields": true, + "resolveJsonModule": true, + "sourceMap": true, + "baseUrl": ".", + "typeRoots": [ + "src/stubs.d.ts" + ], + "paths": { + "@/*": [ + "./src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx" + ], + "exclude": [ + "node_modules", + "vite.config.ts" + ] +} \ No newline at end of file diff --git a/assets/vue/uu-list/vite.config.ts b/assets/vue/uu-list/vite.config.ts new file mode 100644 index 00000000..799073d6 --- /dev/null +++ b/assets/vue/uu-list/vite.config.ts @@ -0,0 +1,48 @@ +import {defineConfig} from "vite"; +import {resolve} from "path"; +import vue from "@vitejs/plugin-vue"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + base: '/static/', + build: { + // minify: 'esbuild', + minify: false, + outDir: "../../../src/cdh/vue3/static/cdh.vue3/components/uu-list/", + emptyOutDir: true, + lib: { + // src/index.ts is where we have exported the component(s) + entry: resolve(__dirname, "src/index.ts"), + name: "UUList", + // the name of the output files when the build is run + fileName: "UUList", + formats: ['iife'] + }, + rollupOptions: { + // make sure to externalize deps that shouldn't be bundled + // into your library + external: ["vue", "vueI18n"], + output: { + // Provide global variables to use in the UMD build + // for externalized deps + globals: { + vue: "Vue", + vueI18n: "vueI18n", + }, + chunkFileNames: undefined, + }, + }, + }, + resolve: { + alias: { + "@": resolve(__dirname, "./src"), + }, + }, + optimizeDeps: { + include: ['src/**/*.vue', 'src/index.ts'], + }, + define: { + 'process.env': {} + } +}); diff --git a/assets/vue/uu-list/yarn.lock b/assets/vue/uu-list/yarn.lock new file mode 100644 index 00000000..6cd19f07 --- /dev/null +++ b/assets/vue/uu-list/yarn.lock @@ -0,0 +1,385 @@ +# 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.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.13.tgz#23fb17892b2be7afef94f573031c2f4b42839a2b" + integrity sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw== + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + +"@intlify/core-base@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.5.0.tgz#cbb17a27029ccfd0a83a837931baee08b887af60" + integrity sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w== + dependencies: + "@intlify/message-compiler" "9.5.0" + "@intlify/shared" "9.5.0" + +"@intlify/message-compiler@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.5.0.tgz#1b4916bf11ca7024f9c15be0d6b4de7be5317808" + integrity sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g== + dependencies: + "@intlify/shared" "9.5.0" + source-map-js "^1.0.2" + +"@intlify/shared@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.5.0.tgz#185d9ab9f6b4bb4f4d133cfdd51432e9b94c2c44" + integrity sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA== + +"@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== + +"@vitejs/plugin-vue@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz#a289dff38e01949fe7be581d5542cabaeb961dec" + integrity sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw== + +"@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.5.0": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" + integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== + +"@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== + +bootstrap@5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.1.tgz#8ca07040ad15d7f75891d1504cf14c5dedfb1cfe" + integrity sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g== + +"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.0": + version "0.2.0" + resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#844da7418fced8fa6702656de0e9693ff3bcfc69" + dependencies: + uu-bootstrap "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0" + uuid "^9.0.0" + vue-i18n "9" + +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== + +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +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== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +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" + +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== + +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== + +postcss@^8.1.10, postcss@^8.4.27: + version "8.4.29" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" + integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +rollup@^3.27.1: + version "3.28.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.1.tgz#fb44aa6d5e65c7e13fd5bcfff266d0c4ea9ba433" + integrity sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw== + optionalDependencies: + fsevents "~2.3.2" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +"uu-bootstrap@git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0": + version "1.5.0-alpha.0" + resolved "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#0bd740cae32d73770ed4ca7f4818612c8b4bff91" + dependencies: + bootstrap "5.3.1" + +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +vite@^4.4.9: + version "4.4.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" + integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" + +vue-i18n@9: + version "9.5.0" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.5.0.tgz#361a820f591f6d9689435a42763fd1dae224833b" + integrity sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg== + dependencies: + "@intlify/core-base" "9.5.0" + "@intlify/shared" "9.5.0" + "@vue/devtools-api" "^6.5.0" + +vue@^3.3.4: + 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" diff --git a/dev/dev_project/settings.py b/dev/dev_project/settings.py index 7fda6837..e80add2b 100644 --- a/dev/dev_project/settings.py +++ b/dev/dev_project/settings.py @@ -32,7 +32,6 @@ ALLOWED_HOSTS = ['localhost', '127.0.0.1'] INTERNAL_IPS = ['127.0.0.1'] - # Application definition INSTALLED_APPS = [ @@ -40,6 +39,7 @@ 'cdh.core', 'cdh.rest', 'cdh.vue', + 'cdh.vue3', 'cdh.files', 'cdh.integration_platform', @@ -59,6 +59,7 @@ # DRF 'rest_framework', + 'django_filters', # Impersonate 'impersonate', @@ -70,6 +71,7 @@ 'main', 'dev_files', 'dev_integration_platform', + 'dev_vue', ] MIDDLEWARE = [ @@ -86,6 +88,12 @@ 'csp.middleware.CSPMiddleware', ] +REST_FRAMEWORK = { + 'DEFAULT_FILTER_BACKENDS': [ + 'django_filters.rest_framework.DjangoFilterBackend' + ], +} + if DEBUG and ENABLE_DEBUG_TOOLBAR: INSTALLED_APPS.append('debug_toolbar') MIDDLEWARE.append('debug_toolbar.middleware.DebugToolbarMiddleware', ) @@ -205,7 +213,7 @@ # Django CSP # http://django-csp.readthedocs.io/en/latest/index.html -CSP_REPORT_ONLY = False +CSP_REPORT_ONLY = True CSP_UPGRADE_INSECURE_REQUESTS = not DEBUG CSP_INCLUDE_NONCE_IN = ['script-src'] diff --git a/dev/dev_project/urls.py b/dev/dev_project/urls.py index 6f157413..3f70c835 100644 --- a/dev/dev_project/urls.py +++ b/dev/dev_project/urls.py @@ -18,32 +18,32 @@ from django.contrib import admin from django.urls import include, path -handler404 = 'main.error_views.error_404' -handler500 = 'main.error_views.error_500' -handler403 = 'main.error_views.error_403' -handler400 = 'main.error_views.error_400' +handler404 = "main.error_views.error_404" +handler500 = "main.error_views.error_500" +handler403 = "main.error_views.error_403" +handler400 = "main.error_views.error_400" urlpatterns = [ - path('admin/', admin.site.urls), - path('saml/', include('djangosaml2.urls')), - path('', include('main.urls')), - path('files/', include('dev_files.urls')), - path('integration_platform/', include('dev_integration_platform.urls')), - - path('impersonate/', include('impersonate.urls')), - path('cdhcore/', include('cdh.core.urls')), - path('i18n/', include('django.conf.urls.i18n')), + path("admin/", admin.site.urls), + path("saml/", include("djangosaml2.urls")), + path("", include("main.urls")), + path("files/", include("dev_files.urls")), + path("vue/", include("dev_vue.urls")), + path("integration_platform/", include("dev_integration_platform.urls")), + path("impersonate/", include("impersonate.urls")), + path("cdhcore/", include("cdh.core.urls")), + path("i18n/", include("django.conf.urls.i18n")), ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT, show_indexes=True) -admin.site.site_header = '' -admin.site.site_title = '' -admin.site.index_title = '' +admin.site.site_header = "" +admin.site.site_title = "" +admin.site.index_title = "" if settings.DEBUG: import debug_toolbar - urlpatterns = [ - path('__debug__/', include(debug_toolbar.urls)), + urlpatterns = [ + path("__debug__/", include(debug_toolbar.urls)), ] + urlpatterns diff --git a/dev/dev_vue/__init__.py b/dev/dev_vue/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dev/dev_vue/admin.py b/dev/dev_vue/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/dev/dev_vue/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/dev/dev_vue/apps.py b/dev/dev_vue/apps.py new file mode 100644 index 00000000..9ffe0bab --- /dev/null +++ b/dev/dev_vue/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class DevRestConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'dev_vue' diff --git a/dev/dev_vue/management/__init__.py b/dev/dev_vue/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dev/dev_vue/management/commands/__init__.py b/dev/dev_vue/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dev/dev_vue/management/commands/create_test_data.py b/dev/dev_vue/management/commands/create_test_data.py new file mode 100644 index 00000000..d4c29a5b --- /dev/null +++ b/dev/dev_vue/management/commands/create_test_data.py @@ -0,0 +1,50 @@ +""" +Creates one million bs data entries for testing + +Not a fixture because it would be a very large file full of bs +""" + +import logging + +from django.core.management.base import BaseCommand +from django.db import transaction +from django.utils.timezone import make_aware +from faker import Faker +from random import choice + +from dev_vue.models import ExampleData + +logger = logging.getLogger(__name__) + + +class Command(BaseCommand): + + def handle(self, *args, **options): + print("Sit back, this will take a while. Up to half an hour depending on your PC.") + faker = Faker() + + # The transaction is not needed, but does speed up SQLite performance + # as everything is done in the one connection, reducing overhead + with transaction.atomic(): + for i in range(1, 1000000): + progress(i, 1000000) + ExampleData.objects.create(**{ + 'project_name': faker.bs(), + 'project_owner': faker.name(), + 'reference_number': i, + 'created': make_aware(faker.date_time_between()), + 'project_type': choice(ExampleData.TypeOptions.values), + 'status': choice(ExampleData.StatusOptions.values) + }) + + +def progress(iteration, total, width=80, start="\r", newline_on_complete=True): + width = width - 2 + tally = f" {iteration}/{total}" + width -= len(tally) + filledLength = int(width * iteration // total) + bar = "█" * filledLength + "-" * (width - filledLength) + print(f"{start}|{bar}|{tally}", end="") + # Print New Line on Complete + if newline_on_complete and iteration == total: + print() diff --git a/dev/dev_vue/menus.py b/dev/dev_vue/menus.py new file mode 100644 index 00000000..f1036615 --- /dev/null +++ b/dev/dev_vue/menus.py @@ -0,0 +1,19 @@ +from django.urls import reverse +from menu import Menu, MenuItem + + +sub_menus = [] + +sub_menus.append( + MenuItem( + 'UU-List', + reverse('dev_vue:list'), + exact_url=True, + ) +) + +Menu.add_item("main", MenuItem('Vue', + '#', + exact_url=True, + children=sub_menus, +)) diff --git a/dev/dev_vue/migrations/0001_initial.py b/dev/dev_vue/migrations/0001_initial.py new file mode 100644 index 00000000..2d1195f5 --- /dev/null +++ b/dev/dev_vue/migrations/0001_initial.py @@ -0,0 +1,25 @@ +# Generated by Django 4.0.8 on 2023-08-07 10:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='ExampleData', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('project_name', models.TextField()), + ('project_owner', models.TextField()), + ('reference_number', models.TextField()), + ('status', models.CharField(choices=[('O', 'Open'), ('R', 'In review'), ('C', 'Concluded')], default='O', max_length=2)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + ] diff --git a/dev/dev_vue/migrations/0002_exampledata_project_type.py b/dev/dev_vue/migrations/0002_exampledata_project_type.py new file mode 100644 index 00000000..8c1e854c --- /dev/null +++ b/dev/dev_vue/migrations/0002_exampledata_project_type.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.8 on 2023-08-11 11:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dev_vue', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='exampledata', + name='project_type', + field=models.CharField(choices=[('S', 'Standard'), ('E', 'External'), ('TS', 'Top secret'), ('TK', 'Topsy Kretts')], default='S', max_length=2), + ), + ] diff --git a/dev/dev_vue/migrations/0003_alter_exampledata_created.py b/dev/dev_vue/migrations/0003_alter_exampledata_created.py new file mode 100644 index 00000000..bcb9ebb5 --- /dev/null +++ b/dev/dev_vue/migrations/0003_alter_exampledata_created.py @@ -0,0 +1,19 @@ +# Generated by Django 4.0.8 on 2023-08-11 13:37 + +import datetime +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('dev_vue', '0002_exampledata_project_type'), + ] + + operations = [ + migrations.AlterField( + model_name='exampledata', + name='created', + field=models.DateTimeField(default=datetime.datetime.now), + ), + ] diff --git a/dev/dev_vue/migrations/__init__.py b/dev/dev_vue/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/dev/dev_vue/models.py b/dev/dev_vue/models.py new file mode 100644 index 00000000..afb0542d --- /dev/null +++ b/dev/dev_vue/models.py @@ -0,0 +1,38 @@ +from datetime import datetime + +from django.db import models + + +class ExampleData(models.Model): + class StatusOptions(models.TextChoices): + OPEN = "O", "Open" + IN_REVIEW = "R", "In review" + CONCLUDED = "C", "Concluded" + + class TypeOptions(models.TextChoices): + STANDARD = "S", "Standard" + EXTERNAL = "E", "External" + TOP_SECRET = "TS", "Top secret" + # This is a reference to the movie 'The number 23'. Can highly + # recommend that movie... if you are less than sober + TOPSY_KRETTS = "TK", "Topsy Kretts" + + project_name = models.TextField() + + project_owner = models.TextField() + + reference_number = models.TextField() + + status = models.CharField( + choices=StatusOptions.choices, + default=StatusOptions.OPEN, + max_length=2, + ) + + project_type = models.CharField( + choices=TypeOptions.choices, + default=TypeOptions.STANDARD, + max_length=2, + ) + + created = models.DateTimeField(default=datetime.now) diff --git a/dev/dev_vue/serializers.py b/dev/dev_vue/serializers.py new file mode 100644 index 00000000..da373ad1 --- /dev/null +++ b/dev/dev_vue/serializers.py @@ -0,0 +1,56 @@ +from cdh.vue3.components.uu_list import ( + DDVActionDividerField, + DDVLinkField, + DDVActionsField, +) +from cdh.rest.server.serializers import ModelDisplaySerializer +from dev_vue.models import ExampleData + + +class ExampleDataSerializer(ModelDisplaySerializer): + """This is the demo/test serializer for UU-List""" + + edit_button = DDVLinkField( + text="Edit", + link="dev_vue:dummy", + link_attr="pk", + check=lambda o: o.status == ExampleData.StatusOptions.OPEN, + ) + actions = DDVActionsField( + [ + DDVLinkField( + text="Edit", + link="dev_vue:dummy", + link_attr="pk", + check=lambda o: o.status == ExampleData.StatusOptions.OPEN, + ), + DDVLinkField( + text="Review", + link="dev_vue:list", + check=lambda o: o.status == ExampleData.StatusOptions.IN_REVIEW, + ), + DDVLinkField( + text="Assign", + link="https://www.youtube.com/watch?v=dQw4w9WgXcQ", + new_tab=True, + check=lambda o: o.status == ExampleData.StatusOptions.IN_REVIEW, + ), + DDVLinkField( + text="Print", + link="dev_vue:list", + ), + DDVActionDividerField( + check=lambda o: o.status == ExampleData.StatusOptions.OPEN, + ), + DDVLinkField( + text="Delete", + link="dev_vue:list", + classes="text-danger fw-bold", + check=lambda o: o.status == ExampleData.StatusOptions.OPEN, + ), + ] + ) + + class Meta: + model = ExampleData + fields = "__all__" diff --git a/dev/dev_vue/templates/dev_vue/list.html b/dev/dev_vue/templates/dev_vue/list.html new file mode 100644 index 00000000..2e4c0535 --- /dev/null +++ b/dev/dev_vue/templates/dev_vue/list.html @@ -0,0 +1,13 @@ +{% extends "base/base.html" %} +{% load static %} +{% load vue3 %} + +{% block html_head %} + {% load_vue_libs %} + + +{% endblock %} + +{% block content %} + {% vue UUList :config=uu_list_config %} +{% endblock %} diff --git a/dev/dev_vue/tests.py b/dev/dev_vue/tests.py new file mode 100644 index 00000000..7ce503c2 --- /dev/null +++ b/dev/dev_vue/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/dev/dev_vue/urls.py b/dev/dev_vue/urls.py new file mode 100644 index 00000000..6c1babda --- /dev/null +++ b/dev/dev_vue/urls.py @@ -0,0 +1,11 @@ +from django.urls import path + +from .views import ExampleDataListView, ListView + +app_name = "dev_vue" + +urlpatterns = [ + path("uu-list/", ListView.as_view(), name="list"), + path("uu-list//", ListView.as_view(), name="dummy"), + path("api/data/", ExampleDataListView.as_view(), name="data"), +] diff --git a/dev/dev_vue/views.py b/dev/dev_vue/views.py new file mode 100644 index 00000000..7d73db14 --- /dev/null +++ b/dev/dev_vue/views.py @@ -0,0 +1,132 @@ +import time + +from django.urls import reverse_lazy +from django_filters import rest_framework as filters +from rest_framework.filters import OrderingFilter, SearchFilter + +from cdh.vue3.components.uu_list import ( + DDVActions, + DDVButton, + DDVDate, + DDVString, + DDVListView, + UUListAPIView, +) + +from .models import ExampleData +from .serializers import ExampleDataSerializer + +# +# DDV UU-List example +# This contains all Python code needed for the DDV UU-List, +# except the serializer 'ExampleDataSerializer' imported above +# + + +class ExampleDataFilterSet(filters.FilterSet): + """This is a Django-filters filterset. + + This class is used to create GET-parameter based filter fields, which + will be read by the API view to enable advanced filtering. You don't need + to do anything special related to filters aside from this class. + + These filters will be transformed to QS filters under the hood. + If a filter was not set in the request, the filter will be no-op + + See Django-filters docs for detailed docs. + """ + + # This is a filter acting on the created field of ExampleData + # The resulting QS filter would be 'created__lte={value}' + created_before = filters.DateFilter( + label="Created before", + field_name="created", + lookup_expr="lte", + ) + # This is a filter acting on the created field of ExampleData + # The resulting QS filter would be 'created__gte={value}' + created_after = filters.DateFilter( + label="Created after", + field_name="created", + lookup_expr="gte", + ) + + # Will filter the status filter on a set of N given choices + # The resulting QS filter would be `status__in=[...]` + status = filters.MultipleChoiceFilter( + label="Status", + field_name="status", + choices=ExampleData.StatusOptions.choices, + ) + + # Will filter the status filter on a given choice + # The resulting QS filter would be `project_type={value}` + project_type = filters.ChoiceFilter( + label="Type", + field_name="project_type", + choices=ExampleData.TypeOptions.choices, + ) + + class Meta: + model = ExampleData + fields = ["status", "project_type"] + + +class ExampleDataListView(UUListAPIView): + """ + See the base class(es) for information on what these fields are + """ + + queryset = ExampleData.objects.all() + serializer_class = ExampleDataSerializer + filter_backends = [OrderingFilter, SearchFilter, filters.DjangoFilterBackend] + filterset_class = ExampleDataFilterSet + search_fields = ["project_name", "project_owner", "reference_number"] + ordering_fields = [ + "id", + "reference_number", + "project_name", + "project_owner", + "created", + ] + ordering = ["project_name"] + + +class ListView(DDVListView): + template_name = "dev_vue/list.html" + model = ExampleData + data_uri = reverse_lazy("dev_vue:data") + data_view = ExampleDataListView + initial_filter_values = {"project_type": ExampleData.TypeOptions.EXTERNAL} + columns = [ + DDVString( + field="project_name", + label="Project", + ), + DDVString( + field="reference_number", + label="Ref.Num", + css_classes="fw-bold text-danger", + ), + DDVString( + field="project_owner", + label="Project Owner", + ), + DDVString( + field="get_status_display", + label="Status", + ), + DDVDate( + field="created", + label="Created on", + ), + DDVButton( + field="edit_button", + label="", + size="small", + ), + DDVActions( + field="actions", + label="", + ), + ] diff --git a/src/cdh/vue3/components/__init__.py b/src/cdh/vue3/components/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/cdh/vue3/components/uu_list/__init__.py b/src/cdh/vue3/components/uu_list/__init__.py new file mode 100644 index 00000000..775df459 --- /dev/null +++ b/src/cdh/vue3/components/uu_list/__init__.py @@ -0,0 +1,32 @@ +"""UU-List is a Vue component implementing a UU-designed list view +with filtering, searching, ordering and pagination support. + +The base UU-List component (from cdh-vue-lib) is UI only, requiring +any user to implement data fetching on their own. + +In addition, the UU-List does not, by default, have any way of +visualizing the data. Instead, this is left to a 'Visualizer' +component. It does, however, provide the Data-Defined Visualizer +(DDV) as a pre-written visualizer that can be used. + +This package provides a pre-compiled implementation of UU-List using +the DDV, already setup to fetch and process data from Django. +It also provides the necessary backend code to easily provide the +required views for this pre-compiled version of UU-List. + +Any implementer should be able to use both to quickly set up a page +using UU-List, without any custom JS required. An example of a complete +setup can be found in the DSC dev project. +The source code of this pre-compiled version can be found in assets/vue/uu-list. + +However, the DDV is limited in its configurability. If you need to +implement more advanced visualisation, you will need to compile +your own version of UU-List. The assets dir in the DSC project +provides an example to get you started. This example already +contains all the hooks needed to tap into the provided backend classes, +you will only eed to write a custom visualizer. +""" +from .columns import * +from .paginator import * +from .serializers import * +from .views import * diff --git a/src/cdh/vue3/components/uu_list/columns.py b/src/cdh/vue3/components/uu_list/columns.py new file mode 100644 index 00000000..c4b890e8 --- /dev/null +++ b/src/cdh/vue3/components/uu_list/columns.py @@ -0,0 +1,151 @@ +"""A collection of column definition classes used by the Data-Defined +Visualizer variant of the UU-List. +""" +from typing import Optional, Union + +from django.utils.translation import get_language + + +class _DDVColumn: + """Base class for all DDV columns, should not be used directly""" + + type: str = None + + def __init__(self, field: str, label: str, css_classes: Optional[str] = None): + """ + :param field: The key of the field used in the serializer to pull + data from.If you are unsure, view the output of your + API view and copy the key. + :param label: The text shown as the table header for this column + :param css_classes: Any CSS classes to add to the item in the table cell + """ + self.field = field + self.label = label + self.classes = css_classes + + def get_config(self): + return { + "type": self.type, + "field": self.field, + "label": self.label, + "classes": self.classes, + } + + +class DDVString(_DDVColumn): + """Will simply display the contents of the given field as a string. + + Note: HTML will be escaped! If you really want HTML, use DDVHtml. + Or, you know, use a custom UU-List implementation. + """ + + type = "string" + + +class DDVHtml(_DDVColumn): + """Will display the contents of the given field without escaping HTML + + NOTE: THIS IS POTENTIALLY UNSAFE! ALWAYS SANITIZE USER INPUT YOURSELF + Note 2: If you end up using this column a lot, it's probably better to + create a custom UU-List implementation over using the default DDV + implementation. + """ + + type = "html" + + +class DDVDate(_DDVColumn): + """Will format a ISO 8601 formatted date(time) into a localized date(time). + + Use DRF's Date(Time)Field in your serializer. (THis will be automatically + be the case if you use a ModelSerializer with the `fields` option) + """ + + type = "date" + + def __init__( + self, + field: str, + label: str, + css_classes: Optional[str] = None, + format: Optional[Union[str, dict]] = None, + # Default to NL, even for EN languages to be consistent in format + language: Optional[str] = "nl", + ): + super().__init__(field, label, css_classes) + self.format = format + self.language = language + + def get_config(self): + config = super().get_config() + config["format"] = self.format + + # if locale is none, retrieve the current activated language + language = self.language or get_language() + + config["language"] = language + return config + + +class DDVLink(_DDVColumn): + """Will display a simple link in the table. + + Use DDVLinkField in your serializer to populate the field that will be used + + Note: this will display only a link. If you need a link inside a larger + text, use DDVHtml or create a custom UU-List implementation + """ + + type = "link" + + +class DDVActions(_DDVColumn): + """Will display a list of actions inside a dropdown + + Use DDVActionsField in your serializer to populate the field that will be used + """ + + type = "actions" + + +class DDVButton(_DDVColumn): + """Will display a button in the table. + + Use DDVLinkField in your serializer to populate the field that will be used + """ + + type = "button" + + def __init__( + self, + field: str, + label: str, + variant: Optional[str] = None, + size: Optional[str] = None, + ): + """ + + :param field: The key of the field used in the serializer to pull + data from.If you are unsure, view the output of your + API view and copy the key. + :param label: The text shown as the table header for this column + :param variant: The BS button variant to use. See UU-Bootstrap for + info on the options. Defaults to 'primary'. + :param size: small, normal or large. Defaults to 'normal' + """ + super().__init__(field, label) + self.variant = variant + self.size = size + + def get_config(self): + config = { + "type": self.type, + "field": self.field, + "label": self.label, + } + if self.variant: + config["variant"] = self.variant + if self.size: + config["size"] = self.size + + return config diff --git a/src/cdh/vue3/components/uu_list/paginator.py b/src/cdh/vue3/components/uu_list/paginator.py new file mode 100644 index 00000000..cc874692 --- /dev/null +++ b/src/cdh/vue3/components/uu_list/paginator.py @@ -0,0 +1,38 @@ +from collections import OrderedDict + +from rest_framework.pagination import PageNumberPagination + + +class StandardResultsSetPagination(PageNumberPagination): + page_size = 25 + page_size_query_param = "page_size" + max_page_size = 1000 + + def get_paginated_response(self, data): + return OrderedDict( + [ + ("count", self.page.paginator.count), + ("page_size", self.page.paginator.per_page), + ("pages", self.page.paginator.num_pages), + ("results", data), + ] + ) + + def get_paginated_response_schema(self, schema): + schema["properties"].extend( + { + "count": { + "type": "integer", + "example": 123, + }, + "page_size": { + "type": "integer", + "example": 123, + }, + "pages": { + "type": "integer", + "example": 123, + }, + } + ) + return schema diff --git a/src/cdh/vue3/components/uu_list/serializers.py b/src/cdh/vue3/components/uu_list/serializers.py new file mode 100644 index 00000000..89d6728d --- /dev/null +++ b/src/cdh/vue3/components/uu_list/serializers.py @@ -0,0 +1,152 @@ +"""A collection of serializer fields needed for the proper operation of some +columns in the Data-Defined Visualizer variant of the UU-List. +""" +from typing import List, Optional, Union + +from django.shortcuts import resolve_url +from rest_framework import serializers + + +class DDVLinkField(serializers.Field): + """DDVLinkField is a custom DRF serializer, which will format its + output for use in DDVLink, DDVButton and DDVAction DDV columns. + + When using this field for DDVLink or DDVButton, you can use this class as + the serializer. + DDVAction columns should use the DDVActionsField serializer instead. + + Note: classes is ignored when using DDVLink; use the column classes + argument instead + """ + + def __init__( + self, + *, + text: Union[str, callable], + link: Union[str, callable], + link_attr: Optional[str] = None, + new_tab: bool = False, + check: Optional[callable] = None, + classes: Optional[str] = None, + **kwargs, + ): + """Init + + 'The object' will refer to 'the object currently being serialized'. + + :param text: The text on the action. Either a (trans)string or a + callable, which accepts the object as a param and returns + a string. + :type text: str | callable + :param link: The link the user should be navigated to when clicking + the action. Either a string (both full urls as django + named urls are supported) or a callable returning said + string. + :type link: str | callable + :param link_attr: If supplied, the attribute given will be retrieved + from the object and passed to the link resolver. + Use this to supply things like the 'pk' to django + named urls. + :type link_attr: str + :param check: If supplied, this callable will be used to check if + this action should be displayed for the current object. + The callable should accept one parameter, the object. + :type check: callable + :param classes: Any CSS classes to be applied to the action root-element + :type classes: str + :param kwargs: see DRF Field + """ + self.text = text + self.link = link + self.link_attr = link_attr + self.new_tab = new_tab + self.check = check + self.classes = classes + kwargs["source"] = "*" + kwargs["read_only"] = True + super().__init__(**kwargs) + + def to_representation(self, value): + if self.check is not None: + if not self.check(value): + return None + + args = [] + if self.link_attr is not None: + args.append(getattr(value, self.link_attr, None)) + + text = self.text + if callable(text): + text = text(value) + + link = resolve_url(self.link, *args) + return { + "link": link, + "text": text, + "classes": self.classes, + "new_tab": self.new_tab, + } + + +class DDVActionDividerField(serializers.Field): + """This is a simple class to add dividers between actions in + DDVActionsField""" + + def __init__(self, check: Optional[callable] = None, **kwargs): + """ + 'The object' will refer to 'the object currently being serialized'. + + :param check: If supplied, this callable will be used to check if + this action should be displayed for the current object. + The callable should accept one parameter, the object. + :type check: callable + """ + self.check = check + kwargs["source"] = "*" + kwargs["read_only"] = True + super().__init__(**kwargs) + + def to_representation(self, value): + if self.check is not None: + if not self.check(value): + return None + + return { + "divider": True, + } + + +class DDVActionsField(serializers.Field): + """A custom serializer to use for the DDVActions column.""" + + def __init__( + self, actions: List[Union[DDVLinkField, DDVActionDividerField]], **kwargs + ): + """ + :param actions: a list of items to add to the actions dropdown. If no + actions are defined (after checks are run), the column + will automagically hide itself for this object. + :type actions: DDVLinkField | DDVActionDividerField + :param kwargs: see DRF Field + """ + self.actions = actions + kwargs["source"] = "*" + kwargs["read_only"] = True + super().__init__(**kwargs) + + def bind(self, field_name, parent): + for action in self.actions: + action.bind(field_name, parent) + super().bind(field_name, parent) + + def to_representation(self, value): + values = [] + + for action in self.actions: + if action_representation := action.to_representation(value): + values.append(action_representation) + + if len(values) == 0: + return None + + return values diff --git a/src/cdh/vue3/components/uu_list/views.py b/src/cdh/vue3/components/uu_list/views.py new file mode 100644 index 00000000..3bada373 --- /dev/null +++ b/src/cdh/vue3/components/uu_list/views.py @@ -0,0 +1,269 @@ +from django.core.exceptions import ImproperlyConfigured +from django.utils.translation import get_language +from django.views import generic +from django_filters import rest_framework as filters +from rest_framework import generics +from rest_framework.filters import SearchFilter, OrderingFilter +from rest_framework.response import Response + +from .paginator import StandardResultsSetPagination + + +class UUListAPIView(generics.ListAPIView): + """This is the API view, used by UU-List to retrieve its data + + This class can be used by both the default DDV UU-List, and a custom UU-List + implementation. + """ + + # These filter backends determine what functionality is available + # The DDVListView and UUListView classes will automagically enable the + # frontend features depending on what filter types are enabled. + # There three are the only ones supported, but any (or all) may be omitted + # Note: there are two similarly named mechanisms at play here; In the docs + # we mostly use 'filters' to refer to django-filters; but this var refers + # to DRF's filter system. (And we enable django-filters here) + # OrderingFilter: enables sorting support + # SearchFilter: Enables the search bar + # filters.DjangoFilterBackend: enables advanced filters using django-filters + filter_backends = [OrderingFilter, SearchFilter, filters.DjangoFilterBackend] + # The Django-filters filterset class to use. Can be left None if + # django-filters is not enabled + filterset_class = None + # The fields on the QS that can be used to sort + # Labels will be taken from the fields verbose_name, unless overriden in + # UUListView/DDVListView + ordering = ["id"] + # Leave this alone unless you know what to do with it + # This overrides to pagination class to one that produces the format + # expected by UU-List + pagination_class = StandardResultsSetPagination + + def get_paginated_response(self, data): + data = super().get_paginated_response(data) + data["ordering"] = self.ordering + + return Response(data) + + +class UUListView(generic.TemplateView): + """A base class for _custom_ UU-List pages. + + This custom view generates the initial configuration used by all UU-List + implementations. + + Your template can then initiate the component in the template using: + {% vue UUList :config=uu_list_config %} + + Is extended by DDVListView, thus the variables here also apply to that + class. + + This class has multiple methods that may be overriden to modify the + automagical config generation. + """ + + # Page size options, should contain 25 + page_size_options = [10, 25, 50, 100] + # The model viewed, should be exactly the same one as used in + # UUListApiView's serializer + # May also be set by overriding the get_model method + model = None + # The URL of the UUListApiView to retrieve actual data from + # Note: you should use reverse_lazy! + # May also be set by overriding the get_data_uri method + data_uri = None + # Should be a direct reference to the class that handles the url + # set in `data_uri`. This is used to probe what capabilities that + # class has enabled + data_view = None + # The name of the template context variable used to store the initial config + # If you change this, make sure to modify your template accordingly + context_config_var = "uu_list_config" + # Determines the visual layout used; default is the newer design. + # Alternatively, use 'sidebar' to use a UU-Sidebar based design. + # Note: sidebar only makes sense if the django-filters backend and/or search + # is enabled. + container = "default" + # This will set the initial value for any filter. Key should be the 'field' + # name. + # Multiple-choice filters need the value to be in list-form, others a plain + # value + # Single-choice filters without a defined initial value will use the + # first option available. + initial_filter_values = {} + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + if self.get_model() is None: + raise ImproperlyConfigured( + "UUListView classes must define the (root) model as " + ".model or override .get_model()" + ) + if self.get_data_uri() is None: + raise ImproperlyConfigured( + "UUListView classes must define the uri of the API view as " + ".data_uri. (Preferably using reverse_lazy) " + "Alternatively, override .get_data_uri()." + ) + if self.get_data_view() is None: + raise ImproperlyConfigured( + "UUListView classes must define the used API view as " + ".data_view. " + ) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context[self.context_config_var] = { + "dataUri": self.get_data_uri(), + "filtersEnabled": self.get_filters_enabled(), + "filters": self.get_filters(), + "pageSize": self.get_page_size(), + "pageSizeOptions": self.get_page_size_options(), + "sortEnabled": self.get_sort_enabled(), + "sortOptions": self.get_sort_options(), + "searchEnabled": self.get_search_enabled(), + "locale": self.get_locale(), + "container": self.get_container(), + } + + return context + + def get_locale(self): + """Modify this method to return 'en'|'nl' if your app does not use + those labels for the languages. (In other words, if your app uses + 'en-US' instead of 'en', etc). + """ + return get_language() + + def get_model(self): + return self.model + + def get_data_view(self): + return self.data_view + + def get_data_uri(self): + # Cast to string, as it's probably a lazy value and the vue tag + # DOES NOT like lazy values.... Ugh + return str(self.data_uri) + + def get_page_size(self): + return self.get_data_view().pagination_class.page_size + + def get_page_size_options(self): + return self.page_size_options + + def get_search_enabled(self): + return SearchFilter in self.get_data_view().filter_backends + + def get_sort_enabled(self): + return OrderingFilter in self.get_data_view().filter_backends + + def get_filters_enabled(self): + return filters.DjangoFilterBackend in self.get_data_view().filter_backends + + def get_initial_filter_values(self): + return self.initial_filter_values + + def get_filters(self): + if not self.get_filters_enabled(): + return [] + + from django_filters.rest_framework import ( + ChoiceFilter, + MultipleChoiceFilter, + DateFilter, + ) + + initial_filter_values = self.get_initial_filter_values() + + filter_map = { + ChoiceFilter: "radio", + MultipleChoiceFilter: "checkbox", + DateFilter: "date", + } + filter_defs = [] + dataview_filters = self.get_data_view().filterset_class.get_filters().items() + for field, filter_object in dataview_filters: + if type(filter_object) not in filter_map: + continue + + filter_def = { + "field": field, + "label": filter_object.label, + "type": filter_map.get(type(filter_object)), + } + + if filter_def["type"] in ["checkbox", "radio"]: + filter_def["options"] = filter_object.extra["choices"] + + if field in initial_filter_values: + filter_def["initial"] = initial_filter_values[field] + + filter_defs.append(filter_def) + + return filter_defs + + def get_sort_options(self): + """Override this method if you want to customize the labels used for + the sorting options. + """ + if not self.get_sort_enabled(): + return [] + + def get_field_name(field): + return self.get_model()._meta.get_field(field).verbose_name + + options = [] + + for field in self.get_data_view().ordering_fields: + options.append({"field": field, "label": f"{get_field_name(field)} ↑"}) + options.append( + {"field": f"-{field}", "label": f"{get_field_name(field)} ↓"} + ) + + return options + + def get_container(self): + return self.container + + +class DDVListView(UUListView): + """Extension of UUListView which will also add DDV configuration. + + The DDV, or Data-Defined Visualizer variant of UU-List is the default + UU-List implementation of DSC, and allows for fully-backend defined usage + of UU-List. (Read: no custom JS required). + + It uses a preset defined list of 'columns' to build a table. The order + of 'self.columns' will also be the order of the columns in the table. + + See ./columns.py for information on what columns are available. + + Some columns need a custom serializer field to be used, which is documented + on the relevant column classes. + """ + + columns = None + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if self.get_columns() is None: + raise ImproperlyConfigured( + "UUListView classes must define columns as " + ".columns or override .get_columns" + ) + + def get_columns(self): + return self.columns + + def get_columns_config(self): + return [column.get_config() for column in self.get_columns()] + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + + context[self.context_config_var]["columns"] = self.get_columns_config() + + return context diff --git a/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js b/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js new file mode 100644 index 00000000..d249c360 --- /dev/null +++ b/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js @@ -0,0 +1,5630 @@ +var UUList = function(vue) { + "use strict"; + let getRandomValues; + const rnds8 = new Uint8Array(16); + function rng() { + if (!getRandomValues) { + getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); + if (!getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + } + return getRandomValues(rnds8); + } + const byteToHex = []; + for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).slice(1)); + } + function unsafeStringify(arr, offset = 0) { + return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); + } + const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); + const native = { + randomUUID + }; + function v4(options, buf, offset) { + if (native.randomUUID && !buf && !options) { + return native.randomUUID(); + } + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return unsafeStringify(rnds); + } + /*! + * shared v9.5.0 + * (c) 2023 kazuya kawaguchi + * Released under the MIT License. + */ + const inBrowser = typeof window !== "undefined"; + let mark; + let measure; + if ({}.NODE_ENV !== "production") { + const perf = inBrowser && window.performance; + if (perf && perf.mark && perf.measure && perf.clearMarks && // @ts-ignore browser compat + perf.clearMeasures) { + mark = (tag) => { + perf.mark(tag); + }; + measure = (name, startTag, endTag) => { + perf.measure(name, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + }; + } + } + const RE_ARGS$1 = /\{([0-9a-zA-Z]+)\}/g; + function format$2(message, ...args) { + if (args.length === 1 && isObject$1(args[0])) { + args = args[0]; + } + if (!args || !args.hasOwnProperty) { + args = {}; + } + return message.replace(RE_ARGS$1, (match, identifier) => { + return args.hasOwnProperty(identifier) ? args[identifier] : ""; + }); + } + const makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name); + const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source }); + const friendlyJSONstringify = (json) => JSON.stringify(json).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/\u0027/g, "\\u0027"); + const isNumber = (val) => typeof val === "number" && isFinite(val); + const isDate = (val) => toTypeString(val) === "[object Date]"; + const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; + const isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0; + const assign$1 = Object.assign; + let _globalThis; + const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); + }; + function escapeHtml(rawText) { + return rawText.replace(//g, ">").replace(/"/g, """).replace(/'/g, "'"); + } + const hasOwnProperty = Object.prototype.hasOwnProperty; + function hasOwn(obj, key) { + return hasOwnProperty.call(obj, key); + } + const isArray = Array.isArray; + const isFunction = (val) => typeof val === "function"; + const isString$1 = (val) => typeof val === "string"; + const isBoolean = (val) => typeof val === "boolean"; + const isObject$1 = (val) => val !== null && typeof val === "object"; + const objectToString = Object.prototype.toString; + const toTypeString = (value) => objectToString.call(value); + const isPlainObject = (val) => { + if (!isObject$1(val)) + return false; + const proto = Object.getPrototypeOf(val); + return proto === null || proto.constructor === Object; + }; + const toDisplayString = (val) => { + return val == null ? "" : isArray(val) || isPlainObject(val) && val.toString === objectToString ? JSON.stringify(val, null, 2) : String(val); + }; + function join$1(items, separator = "") { + return items.reduce((str, item, index) => index === 0 ? str + item : str + separator + item, ""); + } + const RANGE = 2; + function generateCodeFrame(source, start = 0, end = source.length) { + const lines = source.split(/\r?\n/); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + 1; + if (count >= start) { + for (let j2 = i - RANGE; j2 <= i + RANGE || end > count; j2++) { + if (j2 < 0 || j2 >= lines.length) + continue; + const line = j2 + 1; + res.push(`${line}${" ".repeat(3 - String(line).length)}| ${lines[j2]}`); + const lineLength = lines[j2].length; + if (j2 === i) { + const pad = start - (count - lineLength) + 1; + const length = Math.max(1, end > count ? lineLength - pad : end - start); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j2 > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + 1; + } + } + break; + } + } + return res.join("\n"); + } + function incrementer(code2) { + let current = code2; + return () => ++current; + } + function warn(msg, err) { + if (typeof console !== "undefined") { + console.warn(`[intlify] ` + msg); + if (err) { + console.warn(err.stack); + } + } + } + const hasWarned = {}; + function warnOnce(msg) { + if (!hasWarned[msg]) { + hasWarned[msg] = true; + warn(msg); + } + } + function createEmitter() { + const events = /* @__PURE__ */ new Map(); + const emitter = { + events, + on(event, handler) { + const handlers = events.get(event); + const added = handlers && handlers.push(handler); + if (!added) { + events.set(event, [handler]); + } + }, + off(event, handler) { + const handlers = events.get(event); + if (handlers) { + handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } + }, + emit(event, payload) { + (events.get(event) || []).slice().map((handler) => handler(payload)); + (events.get("*") || []).slice().map((handler) => handler(event, payload)); + } + }; + return emitter; + } + /*! + * message-compiler v9.5.0 + * (c) 2023 kazuya kawaguchi + * Released under the MIT License. + */ + function createPosition(line, column, offset) { + return { line, column, offset }; + } + function createLocation(start, end, source) { + const loc = { start, end }; + if (source != null) { + loc.source = source; + } + return loc; + } + const RE_ARGS = /\{([0-9a-zA-Z]+)\}/g; + function format$1(message, ...args) { + if (args.length === 1 && isObject(args[0])) { + args = args[0]; + } + if (!args || !args.hasOwnProperty) { + args = {}; + } + return message.replace(RE_ARGS, (match, identifier) => { + return args.hasOwnProperty(identifier) ? args[identifier] : ""; + }); + } + const assign = Object.assign; + const isString = (val) => typeof val === "string"; + const isObject = (val) => val !== null && typeof val === "object"; + function join(items, separator = "") { + return items.reduce((str, item, index) => index === 0 ? str + item : str + separator + item, ""); + } + const CompileErrorCodes = { + // tokenizer error codes + EXPECTED_TOKEN: 1, + INVALID_TOKEN_IN_PLACEHOLDER: 2, + UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3, + UNKNOWN_ESCAPE_SEQUENCE: 4, + INVALID_UNICODE_ESCAPE_SEQUENCE: 5, + UNBALANCED_CLOSING_BRACE: 6, + UNTERMINATED_CLOSING_BRACE: 7, + EMPTY_PLACEHOLDER: 8, + NOT_ALLOW_NEST_PLACEHOLDER: 9, + INVALID_LINKED_FORMAT: 10, + // parser error codes + MUST_HAVE_MESSAGES_IN_PLURAL: 11, + UNEXPECTED_EMPTY_LINKED_MODIFIER: 12, + UNEXPECTED_EMPTY_LINKED_KEY: 13, + UNEXPECTED_LEXICAL_ANALYSIS: 14, + // generator error codes + UNHANDLED_CODEGEN_NODE_TYPE: 15, + // minifier error codes + UNHANDLED_MINIFIER_NODE_TYPE: 16, + // Special value for higher-order compilers to pick up the last code + // to avoid collision of error codes. This should always be kept as the last + // item. + __EXTEND_POINT__: 17 + }; + const errorMessages$2 = { + // tokenizer error messages + [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`, + [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`, + [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`, + [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\{0}`, + [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`, + [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`, + [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`, + [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`, + [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`, + [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`, + // parser error messages + [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`, + [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`, + [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`, + [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`, + // generator error messages + [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`, + // minimizer error messages + [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'` + }; + function createCompileError(code2, loc, options = {}) { + const { domain, messages, args } = options; + const msg = format$1((messages || errorMessages$2)[code2] || "", ...args || []); + const error = new SyntaxError(String(msg)); + error.code = code2; + if (loc) { + error.location = loc; + } + error.domain = domain; + return error; + } + function defaultOnError(error) { + throw error; + } + const RE_HTML_TAG = /<\/?[\w\s="/.':;#-\/]+>/; + const detectHtmlTag = (source) => RE_HTML_TAG.test(source); + const CHAR_SP = " "; + const CHAR_CR = "\r"; + const CHAR_LF = "\n"; + const CHAR_LS = String.fromCharCode(8232); + const CHAR_PS = String.fromCharCode(8233); + function createScanner(str) { + const _buf = str; + let _index = 0; + let _line = 1; + let _column = 1; + let _peekOffset = 0; + const isCRLF = (index2) => _buf[index2] === CHAR_CR && _buf[index2 + 1] === CHAR_LF; + const isLF = (index2) => _buf[index2] === CHAR_LF; + const isPS = (index2) => _buf[index2] === CHAR_PS; + const isLS = (index2) => _buf[index2] === CHAR_LS; + const isLineEnd = (index2) => isCRLF(index2) || isLF(index2) || isPS(index2) || isLS(index2); + const index = () => _index; + const line = () => _line; + const column = () => _column; + const peekOffset = () => _peekOffset; + const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset]; + const currentChar = () => charAt(_index); + const currentPeek = () => charAt(_index + _peekOffset); + function next() { + _peekOffset = 0; + if (isLineEnd(_index)) { + _line++; + _column = 0; + } + if (isCRLF(_index)) { + _index++; + } + _index++; + _column++; + return _buf[_index]; + } + function peek() { + if (isCRLF(_index + _peekOffset)) { + _peekOffset++; + } + _peekOffset++; + return _buf[_index + _peekOffset]; + } + function reset() { + _index = 0; + _line = 1; + _column = 1; + _peekOffset = 0; + } + function resetPeek(offset = 0) { + _peekOffset = offset; + } + function skipToPeek() { + const target = _index + _peekOffset; + while (target !== _index) { + next(); + } + _peekOffset = 0; + } + return { + index, + line, + column, + peekOffset, + charAt, + currentChar, + currentPeek, + next, + peek, + reset, + resetPeek, + skipToPeek + }; + } + const EOF = void 0; + const DOT = "."; + const LITERAL_DELIMITER = "'"; + const ERROR_DOMAIN$3 = "tokenizer"; + function createTokenizer(source, options = {}) { + const location = options.location !== false; + const _scnr = createScanner(source); + const currentOffset = () => _scnr.index(); + const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index()); + const _initLoc = currentPosition(); + const _initOffset = currentOffset(); + const _context = { + currentType: 14, + offset: _initOffset, + startLoc: _initLoc, + endLoc: _initLoc, + lastType: 14, + lastOffset: _initOffset, + lastStartLoc: _initLoc, + lastEndLoc: _initLoc, + braceNest: 0, + inLinked: false, + text: "" + }; + const context = () => _context; + const { onError } = options; + function emitError(code2, pos, offset, ...args) { + const ctx = context(); + pos.column += offset; + pos.offset += offset; + if (onError) { + const loc = location ? createLocation(ctx.startLoc, pos) : null; + const err = createCompileError(code2, loc, { + domain: ERROR_DOMAIN$3, + args + }); + onError(err); + } + } + function getToken(context2, type, value) { + context2.endLoc = currentPosition(); + context2.currentType = type; + const token = { type }; + if (location) { + token.loc = createLocation(context2.startLoc, context2.endLoc); + } + if (value != null) { + token.value = value; + } + return token; + } + const getEndToken = (context2) => getToken( + context2, + 14 + /* TokenTypes.EOF */ + ); + function eat(scnr, ch) { + if (scnr.currentChar() === ch) { + scnr.next(); + return ch; + } else { + emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch); + return ""; + } + } + function peekSpaces(scnr) { + let buf = ""; + while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) { + buf += scnr.currentPeek(); + scnr.peek(); + } + return buf; + } + function skipSpaces(scnr) { + const buf = peekSpaces(scnr); + scnr.skipToPeek(); + return buf; + } + function isIdentifierStart(ch) { + if (ch === EOF) { + return false; + } + const cc = ch.charCodeAt(0); + return cc >= 97 && cc <= 122 || // a-z + cc >= 65 && cc <= 90 || // A-Z + cc === 95; + } + function isNumberStart(ch) { + if (ch === EOF) { + return false; + } + const cc = ch.charCodeAt(0); + return cc >= 48 && cc <= 57; + } + function isNamedIdentifierStart(scnr, context2) { + const { currentType } = context2; + if (currentType !== 2) { + return false; + } + peekSpaces(scnr); + const ret = isIdentifierStart(scnr.currentPeek()); + scnr.resetPeek(); + return ret; + } + function isListIdentifierStart(scnr, context2) { + const { currentType } = context2; + if (currentType !== 2) { + return false; + } + peekSpaces(scnr); + const ch = scnr.currentPeek() === "-" ? scnr.peek() : scnr.currentPeek(); + const ret = isNumberStart(ch); + scnr.resetPeek(); + return ret; + } + function isLiteralStart(scnr, context2) { + const { currentType } = context2; + if (currentType !== 2) { + return false; + } + peekSpaces(scnr); + const ret = scnr.currentPeek() === LITERAL_DELIMITER; + scnr.resetPeek(); + return ret; + } + function isLinkedDotStart(scnr, context2) { + const { currentType } = context2; + if (currentType !== 8) { + return false; + } + peekSpaces(scnr); + const ret = scnr.currentPeek() === "."; + scnr.resetPeek(); + return ret; + } + function isLinkedModifierStart(scnr, context2) { + const { currentType } = context2; + if (currentType !== 9) { + return false; + } + peekSpaces(scnr); + const ret = isIdentifierStart(scnr.currentPeek()); + scnr.resetPeek(); + return ret; + } + function isLinkedDelimiterStart(scnr, context2) { + const { currentType } = context2; + if (!(currentType === 8 || currentType === 12)) { + return false; + } + peekSpaces(scnr); + const ret = scnr.currentPeek() === ":"; + scnr.resetPeek(); + return ret; + } + function isLinkedReferStart(scnr, context2) { + const { currentType } = context2; + if (currentType !== 10) { + return false; + } + const fn = () => { + const ch = scnr.currentPeek(); + if (ch === "{") { + return isIdentifierStart(scnr.peek()); + } else if (ch === "@" || ch === "%" || ch === "|" || ch === ":" || ch === "." || ch === CHAR_SP || !ch) { + return false; + } else if (ch === CHAR_LF) { + scnr.peek(); + return fn(); + } else { + return isIdentifierStart(ch); + } + }; + const ret = fn(); + scnr.resetPeek(); + return ret; + } + function isPluralStart(scnr) { + peekSpaces(scnr); + const ret = scnr.currentPeek() === "|"; + scnr.resetPeek(); + return ret; + } + function detectModuloStart(scnr) { + const spaces = peekSpaces(scnr); + const ret = scnr.currentPeek() === "%" && scnr.peek() === "{"; + scnr.resetPeek(); + return { + isModulo: ret, + hasSpace: spaces.length > 0 + }; + } + function isTextStart(scnr, reset = true) { + const fn = (hasSpace = false, prev = "", detectModulo = false) => { + const ch = scnr.currentPeek(); + if (ch === "{") { + return prev === "%" ? false : hasSpace; + } else if (ch === "@" || !ch) { + return prev === "%" ? true : hasSpace; + } else if (ch === "%") { + scnr.peek(); + return fn(hasSpace, "%", true); + } else if (ch === "|") { + return prev === "%" || detectModulo ? true : !(prev === CHAR_SP || prev === CHAR_LF); + } else if (ch === CHAR_SP) { + scnr.peek(); + return fn(true, CHAR_SP, detectModulo); + } else if (ch === CHAR_LF) { + scnr.peek(); + return fn(true, CHAR_LF, detectModulo); + } else { + return true; + } + }; + const ret = fn(); + reset && scnr.resetPeek(); + return ret; + } + function takeChar(scnr, fn) { + const ch = scnr.currentChar(); + if (ch === EOF) { + return EOF; + } + if (fn(ch)) { + scnr.next(); + return ch; + } + return null; + } + function takeIdentifierChar(scnr) { + const closure = (ch) => { + const cc = ch.charCodeAt(0); + return cc >= 97 && cc <= 122 || // a-z + cc >= 65 && cc <= 90 || // A-Z + cc >= 48 && cc <= 57 || // 0-9 + cc === 95 || // _ + cc === 36; + }; + return takeChar(scnr, closure); + } + function takeDigit(scnr) { + const closure = (ch) => { + const cc = ch.charCodeAt(0); + return cc >= 48 && cc <= 57; + }; + return takeChar(scnr, closure); + } + function takeHexDigit(scnr) { + const closure = (ch) => { + const cc = ch.charCodeAt(0); + return cc >= 48 && cc <= 57 || // 0-9 + cc >= 65 && cc <= 70 || // A-F + cc >= 97 && cc <= 102; + }; + return takeChar(scnr, closure); + } + function getDigits(scnr) { + let ch = ""; + let num = ""; + while (ch = takeDigit(scnr)) { + num += ch; + } + return num; + } + function readModulo(scnr) { + skipSpaces(scnr); + const ch = scnr.currentChar(); + if (ch !== "%") { + emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch); + } + scnr.next(); + return "%"; + } + function readText(scnr) { + let buf = ""; + while (true) { + const ch = scnr.currentChar(); + if (ch === "{" || ch === "}" || ch === "@" || ch === "|" || !ch) { + break; + } else if (ch === "%") { + if (isTextStart(scnr)) { + buf += ch; + scnr.next(); + } else { + break; + } + } else if (ch === CHAR_SP || ch === CHAR_LF) { + if (isTextStart(scnr)) { + buf += ch; + scnr.next(); + } else if (isPluralStart(scnr)) { + break; + } else { + buf += ch; + scnr.next(); + } + } else { + buf += ch; + scnr.next(); + } + } + return buf; + } + function readNamedIdentifier(scnr) { + skipSpaces(scnr); + let ch = ""; + let name = ""; + while (ch = takeIdentifierChar(scnr)) { + name += ch; + } + if (scnr.currentChar() === EOF) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + return name; + } + function readListIdentifier(scnr) { + skipSpaces(scnr); + let value = ""; + if (scnr.currentChar() === "-") { + scnr.next(); + value += `-${getDigits(scnr)}`; + } else { + value += getDigits(scnr); + } + if (scnr.currentChar() === EOF) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + return value; + } + function readLiteral(scnr) { + skipSpaces(scnr); + eat(scnr, `'`); + let ch = ""; + let literal = ""; + const fn = (x2) => x2 !== LITERAL_DELIMITER && x2 !== CHAR_LF; + while (ch = takeChar(scnr, fn)) { + if (ch === "\\") { + literal += readEscapeSequence(scnr); + } else { + literal += ch; + } + } + const current = scnr.currentChar(); + if (current === CHAR_LF || current === EOF) { + emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0); + if (current === CHAR_LF) { + scnr.next(); + eat(scnr, `'`); + } + return literal; + } + eat(scnr, `'`); + return literal; + } + function readEscapeSequence(scnr) { + const ch = scnr.currentChar(); + switch (ch) { + case "\\": + case `'`: + scnr.next(); + return `\\${ch}`; + case "u": + return readUnicodeEscapeSequence(scnr, ch, 4); + case "U": + return readUnicodeEscapeSequence(scnr, ch, 6); + default: + emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch); + return ""; + } + } + function readUnicodeEscapeSequence(scnr, unicode, digits) { + eat(scnr, unicode); + let sequence = ""; + for (let i = 0; i < digits; i++) { + const ch = takeHexDigit(scnr); + if (!ch) { + emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\${unicode}${sequence}${scnr.currentChar()}`); + break; + } + sequence += ch; + } + return `\\${unicode}${sequence}`; + } + function readInvalidIdentifier(scnr) { + skipSpaces(scnr); + let ch = ""; + let identifiers = ""; + const closure = (ch2) => ch2 !== "{" && ch2 !== "}" && ch2 !== CHAR_SP && ch2 !== CHAR_LF; + while (ch = takeChar(scnr, closure)) { + identifiers += ch; + } + return identifiers; + } + function readLinkedModifier(scnr) { + let ch = ""; + let name = ""; + while (ch = takeIdentifierChar(scnr)) { + name += ch; + } + return name; + } + function readLinkedRefer(scnr) { + const fn = (detect = false, buf) => { + const ch = scnr.currentChar(); + if (ch === "{" || ch === "%" || ch === "@" || ch === "|" || ch === "(" || ch === ")" || !ch) { + return buf; + } else if (ch === CHAR_SP) { + return buf; + } else if (ch === CHAR_LF || ch === DOT) { + buf += ch; + scnr.next(); + return fn(detect, buf); + } else { + buf += ch; + scnr.next(); + return fn(true, buf); + } + }; + return fn(false, ""); + } + function readPlural(scnr) { + skipSpaces(scnr); + const plural = eat( + scnr, + "|" + /* TokenChars.Pipe */ + ); + skipSpaces(scnr); + return plural; + } + function readTokenInPlaceholder(scnr, context2) { + let token = null; + const ch = scnr.currentChar(); + switch (ch) { + case "{": + if (context2.braceNest >= 1) { + emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0); + } + scnr.next(); + token = getToken( + context2, + 2, + "{" + /* TokenChars.BraceLeft */ + ); + skipSpaces(scnr); + context2.braceNest++; + return token; + case "}": + if (context2.braceNest > 0 && context2.currentType === 2) { + emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0); + } + scnr.next(); + token = getToken( + context2, + 3, + "}" + /* TokenChars.BraceRight */ + ); + context2.braceNest--; + context2.braceNest > 0 && skipSpaces(scnr); + if (context2.inLinked && context2.braceNest === 0) { + context2.inLinked = false; + } + return token; + case "@": + if (context2.braceNest > 0) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + token = readTokenInLinked(scnr, context2) || getEndToken(context2); + context2.braceNest = 0; + return token; + default: + let validNamedIdentifier = true; + let validListIdentifier = true; + let validLiteral = true; + if (isPluralStart(scnr)) { + if (context2.braceNest > 0) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + token = getToken(context2, 1, readPlural(scnr)); + context2.braceNest = 0; + context2.inLinked = false; + return token; + } + if (context2.braceNest > 0 && (context2.currentType === 5 || context2.currentType === 6 || context2.currentType === 7)) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + context2.braceNest = 0; + return readToken(scnr, context2); + } + if (validNamedIdentifier = isNamedIdentifierStart(scnr, context2)) { + token = getToken(context2, 5, readNamedIdentifier(scnr)); + skipSpaces(scnr); + return token; + } + if (validListIdentifier = isListIdentifierStart(scnr, context2)) { + token = getToken(context2, 6, readListIdentifier(scnr)); + skipSpaces(scnr); + return token; + } + if (validLiteral = isLiteralStart(scnr, context2)) { + token = getToken(context2, 7, readLiteral(scnr)); + skipSpaces(scnr); + return token; + } + if (!validNamedIdentifier && !validListIdentifier && !validLiteral) { + token = getToken(context2, 13, readInvalidIdentifier(scnr)); + emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value); + skipSpaces(scnr); + return token; + } + break; + } + return token; + } + function readTokenInLinked(scnr, context2) { + const { currentType } = context2; + let token = null; + const ch = scnr.currentChar(); + if ((currentType === 8 || currentType === 9 || currentType === 12 || currentType === 10) && (ch === CHAR_LF || ch === CHAR_SP)) { + emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0); + } + switch (ch) { + case "@": + scnr.next(); + token = getToken( + context2, + 8, + "@" + /* TokenChars.LinkedAlias */ + ); + context2.inLinked = true; + return token; + case ".": + skipSpaces(scnr); + scnr.next(); + return getToken( + context2, + 9, + "." + /* TokenChars.LinkedDot */ + ); + case ":": + skipSpaces(scnr); + scnr.next(); + return getToken( + context2, + 10, + ":" + /* TokenChars.LinkedDelimiter */ + ); + default: + if (isPluralStart(scnr)) { + token = getToken(context2, 1, readPlural(scnr)); + context2.braceNest = 0; + context2.inLinked = false; + return token; + } + if (isLinkedDotStart(scnr, context2) || isLinkedDelimiterStart(scnr, context2)) { + skipSpaces(scnr); + return readTokenInLinked(scnr, context2); + } + if (isLinkedModifierStart(scnr, context2)) { + skipSpaces(scnr); + return getToken(context2, 12, readLinkedModifier(scnr)); + } + if (isLinkedReferStart(scnr, context2)) { + skipSpaces(scnr); + if (ch === "{") { + return readTokenInPlaceholder(scnr, context2) || token; + } else { + return getToken(context2, 11, readLinkedRefer(scnr)); + } + } + if (currentType === 8) { + emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0); + } + context2.braceNest = 0; + context2.inLinked = false; + return readToken(scnr, context2); + } + } + function readToken(scnr, context2) { + let token = { + type: 14 + /* TokenTypes.EOF */ + }; + if (context2.braceNest > 0) { + return readTokenInPlaceholder(scnr, context2) || getEndToken(context2); + } + if (context2.inLinked) { + return readTokenInLinked(scnr, context2) || getEndToken(context2); + } + const ch = scnr.currentChar(); + switch (ch) { + case "{": + return readTokenInPlaceholder(scnr, context2) || getEndToken(context2); + case "}": + emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0); + scnr.next(); + return getToken( + context2, + 3, + "}" + /* TokenChars.BraceRight */ + ); + case "@": + return readTokenInLinked(scnr, context2) || getEndToken(context2); + default: + if (isPluralStart(scnr)) { + token = getToken(context2, 1, readPlural(scnr)); + context2.braceNest = 0; + context2.inLinked = false; + return token; + } + const { isModulo, hasSpace } = detectModuloStart(scnr); + if (isModulo) { + return hasSpace ? getToken(context2, 0, readText(scnr)) : getToken(context2, 4, readModulo(scnr)); + } + if (isTextStart(scnr)) { + return getToken(context2, 0, readText(scnr)); + } + break; + } + return token; + } + function nextToken() { + const { currentType, offset, startLoc, endLoc } = _context; + _context.lastType = currentType; + _context.lastOffset = offset; + _context.lastStartLoc = startLoc; + _context.lastEndLoc = endLoc; + _context.offset = currentOffset(); + _context.startLoc = currentPosition(); + if (_scnr.currentChar() === EOF) { + return getToken( + _context, + 14 + /* TokenTypes.EOF */ + ); + } + return readToken(_scnr, _context); + } + return { + nextToken, + currentOffset, + currentPosition, + context + }; + } + const ERROR_DOMAIN$2 = "parser"; + const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g; + function fromEscapeSequence(match, codePoint4, codePoint6) { + switch (match) { + case `\\\\`: + return `\\`; + case `\\'`: + return `'`; + default: { + const codePoint = parseInt(codePoint4 || codePoint6, 16); + if (codePoint <= 55295 || codePoint >= 57344) { + return String.fromCodePoint(codePoint); + } + return "�"; + } + } + } + function createParser(options = {}) { + const location = options.location !== false; + const { onError } = options; + function emitError(tokenzer, code2, start, offset, ...args) { + const end = tokenzer.currentPosition(); + end.offset += offset; + end.column += offset; + if (onError) { + const loc = location ? createLocation(start, end) : null; + const err = createCompileError(code2, loc, { + domain: ERROR_DOMAIN$2, + args + }); + onError(err); + } + } + function startNode(type, offset, loc) { + const node = { type }; + if (location) { + node.start = offset; + node.end = offset; + node.loc = { start: loc, end: loc }; + } + return node; + } + function endNode(node, offset, pos, type) { + if (type) { + node.type = type; + } + if (location) { + node.end = offset; + if (node.loc) { + node.loc.end = pos; + } + } + } + function parseText(tokenizer, value) { + const context = tokenizer.context(); + const node = startNode(3, context.offset, context.startLoc); + node.value = value; + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseList(tokenizer, index) { + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; + const node = startNode(5, offset, loc); + node.index = parseInt(index, 10); + tokenizer.nextToken(); + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseNamed(tokenizer, key) { + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; + const node = startNode(4, offset, loc); + node.key = key; + tokenizer.nextToken(); + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseLiteral(tokenizer, value) { + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; + const node = startNode(9, offset, loc); + node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence); + tokenizer.nextToken(); + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseLinkedModifier(tokenizer) { + const token = tokenizer.nextToken(); + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; + const node = startNode(8, offset, loc); + if (token.type !== 12) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0); + node.value = ""; + endNode(node, offset, loc); + return { + nextConsumeToken: token, + node + }; + } + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.value = token.value || ""; + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return { + node + }; + } + function parseLinkedKey(tokenizer, value) { + const context = tokenizer.context(); + const node = startNode(7, context.offset, context.startLoc); + node.value = value; + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseLinked(tokenizer) { + const context = tokenizer.context(); + const linkedNode = startNode(6, context.offset, context.startLoc); + let token = tokenizer.nextToken(); + if (token.type === 9) { + const parsed = parseLinkedModifier(tokenizer); + linkedNode.modifier = parsed.node; + token = parsed.nextConsumeToken || tokenizer.nextToken(); + } + if (token.type !== 10) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + token = tokenizer.nextToken(); + if (token.type === 2) { + token = tokenizer.nextToken(); + } + switch (token.type) { + case 11: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseLinkedKey(tokenizer, token.value || ""); + break; + case 5: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseNamed(tokenizer, token.value || ""); + break; + case 6: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseList(tokenizer, token.value || ""); + break; + case 7: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseLiteral(tokenizer, token.value || ""); + break; + default: + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0); + const nextContext = tokenizer.context(); + const emptyLinkedKeyNode = startNode(7, nextContext.offset, nextContext.startLoc); + emptyLinkedKeyNode.value = ""; + endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc); + linkedNode.key = emptyLinkedKeyNode; + endNode(linkedNode, nextContext.offset, nextContext.startLoc); + return { + nextConsumeToken: token, + node: linkedNode + }; + } + endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition()); + return { + node: linkedNode + }; + } + function parseMessage(tokenizer) { + const context = tokenizer.context(); + const startOffset = context.currentType === 1 ? tokenizer.currentOffset() : context.offset; + const startLoc = context.currentType === 1 ? context.endLoc : context.startLoc; + const node = startNode(2, startOffset, startLoc); + node.items = []; + let nextToken = null; + do { + const token = nextToken || tokenizer.nextToken(); + nextToken = null; + switch (token.type) { + case 0: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseText(tokenizer, token.value || "")); + break; + case 6: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseList(tokenizer, token.value || "")); + break; + case 5: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseNamed(tokenizer, token.value || "")); + break; + case 7: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseLiteral(tokenizer, token.value || "")); + break; + case 8: + const parsed = parseLinked(tokenizer); + node.items.push(parsed.node); + nextToken = parsed.nextConsumeToken || null; + break; + } + } while (context.currentType !== 14 && context.currentType !== 1); + const endOffset = context.currentType === 1 ? context.lastOffset : tokenizer.currentOffset(); + const endLoc = context.currentType === 1 ? context.lastEndLoc : tokenizer.currentPosition(); + endNode(node, endOffset, endLoc); + return node; + } + function parsePlural(tokenizer, offset, loc, msgNode) { + const context = tokenizer.context(); + let hasEmptyMessage = msgNode.items.length === 0; + const node = startNode(1, offset, loc); + node.cases = []; + node.cases.push(msgNode); + do { + const msg = parseMessage(tokenizer); + if (!hasEmptyMessage) { + hasEmptyMessage = msg.items.length === 0; + } + node.cases.push(msg); + } while (context.currentType !== 14); + if (hasEmptyMessage) { + emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0); + } + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseResource(tokenizer) { + const context = tokenizer.context(); + const { offset, startLoc } = context; + const msgNode = parseMessage(tokenizer); + if (context.currentType === 14) { + return msgNode; + } else { + return parsePlural(tokenizer, offset, startLoc, msgNode); + } + } + function parse2(source) { + const tokenizer = createTokenizer(source, assign({}, options)); + const context = tokenizer.context(); + const node = startNode(0, context.offset, context.startLoc); + if (location && node.loc) { + node.loc.source = source; + } + node.body = parseResource(tokenizer); + if (options.onCacheKey) { + node.cacheKey = options.onCacheKey(source); + } + if (context.currentType !== 14) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || ""); + } + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + return { parse: parse2 }; + } + function getTokenCaption(token) { + if (token.type === 14) { + return "EOF"; + } + const name = (token.value || "").replace(/\r?\n/gu, "\\n"); + return name.length > 10 ? name.slice(0, 9) + "…" : name; + } + function createTransformer(ast, options = {}) { + const _context = { + ast, + helpers: /* @__PURE__ */ new Set() + }; + const context = () => _context; + const helper = (name) => { + _context.helpers.add(name); + return name; + }; + return { context, helper }; + } + function traverseNodes(nodes, transformer) { + for (let i = 0; i < nodes.length; i++) { + traverseNode(nodes[i], transformer); + } + } + function traverseNode(node, transformer) { + switch (node.type) { + case 1: + traverseNodes(node.cases, transformer); + transformer.helper( + "plural" + /* HelperNameMap.PLURAL */ + ); + break; + case 2: + traverseNodes(node.items, transformer); + break; + case 6: + const linked = node; + traverseNode(linked.key, transformer); + transformer.helper( + "linked" + /* HelperNameMap.LINKED */ + ); + transformer.helper( + "type" + /* HelperNameMap.TYPE */ + ); + break; + case 5: + transformer.helper( + "interpolate" + /* HelperNameMap.INTERPOLATE */ + ); + transformer.helper( + "list" + /* HelperNameMap.LIST */ + ); + break; + case 4: + transformer.helper( + "interpolate" + /* HelperNameMap.INTERPOLATE */ + ); + transformer.helper( + "named" + /* HelperNameMap.NAMED */ + ); + break; + } + } + function transform(ast, options = {}) { + const transformer = createTransformer(ast); + transformer.helper( + "normalize" + /* HelperNameMap.NORMALIZE */ + ); + ast.body && traverseNode(ast.body, transformer); + const context = transformer.context(); + ast.helpers = Array.from(context.helpers); + } + function optimize(ast) { + const body = ast.body; + if (body.type === 2) { + optimizeMessageNode(body); + } else { + body.cases.forEach((c) => optimizeMessageNode(c)); + } + return ast; + } + function optimizeMessageNode(message) { + if (message.items.length === 1) { + const item = message.items[0]; + if (item.type === 3 || item.type === 9) { + message.static = item.value; + delete item.value; + } + } else { + const values = []; + for (let i = 0; i < message.items.length; i++) { + const item = message.items[i]; + if (!(item.type === 3 || item.type === 9)) { + break; + } + if (item.value == null) { + break; + } + values.push(item.value); + } + if (values.length === message.items.length) { + message.static = join(values); + for (let i = 0; i < message.items.length; i++) { + const item = message.items[i]; + if (item.type === 3 || item.type === 9) { + delete item.value; + } + } + } + } + } + const ERROR_DOMAIN$1 = "minifier"; + function minify(node) { + node.t = node.type; + switch (node.type) { + case 0: + const resource = node; + minify(resource.body); + resource.b = resource.body; + delete resource.body; + break; + case 1: + const plural = node; + const cases = plural.cases; + for (let i = 0; i < cases.length; i++) { + minify(cases[i]); + } + plural.c = cases; + delete plural.cases; + break; + case 2: + const message = node; + const items = message.items; + for (let i = 0; i < items.length; i++) { + minify(items[i]); + } + message.i = items; + delete message.items; + if (message.static) { + message.s = message.static; + delete message.static; + } + break; + case 3: + case 9: + case 8: + case 7: + const valueNode = node; + if (valueNode.value) { + valueNode.v = valueNode.value; + delete valueNode.value; + } + break; + case 6: + const linked = node; + minify(linked.key); + linked.k = linked.key; + delete linked.key; + if (linked.modifier) { + minify(linked.modifier); + linked.m = linked.modifier; + delete linked.modifier; + } + break; + case 5: + const list = node; + list.i = list.index; + delete list.index; + break; + case 4: + const named = node; + named.k = named.key; + delete named.key; + break; + default: { + throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, { + domain: ERROR_DOMAIN$1, + args: [node.type] + }); + } + } + delete node.type; + } + const ERROR_DOMAIN = "parser"; + function createCodeGenerator(ast, options) { + const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options; + const location = options.location !== false; + const _context = { + filename, + code: "", + column: 1, + line: 1, + offset: 0, + map: void 0, + breakLineCode, + needIndent: _needIndent, + indentLevel: 0 + }; + if (location && ast.loc) { + _context.source = ast.loc.source; + } + const context = () => _context; + function push(code2, node) { + _context.code += code2; + } + function _newline(n, withBreakLine = true) { + const _breakLineCode = withBreakLine ? breakLineCode : ""; + push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode); + } + function indent(withNewLine = true) { + const level = ++_context.indentLevel; + withNewLine && _newline(level); + } + function deindent(withNewLine = true) { + const level = --_context.indentLevel; + withNewLine && _newline(level); + } + function newline() { + _newline(_context.indentLevel); + } + const helper = (key) => `_${key}`; + const needIndent = () => _context.needIndent; + return { + context, + push, + indent, + deindent, + newline, + helper, + needIndent + }; + } + function generateLinkedNode(generator, node) { + const { helper } = generator; + generator.push(`${helper( + "linked" + /* HelperNameMap.LINKED */ + )}(`); + generateNode(generator, node.key); + if (node.modifier) { + generator.push(`, `); + generateNode(generator, node.modifier); + generator.push(`, _type`); + } else { + generator.push(`, undefined, _type`); + } + generator.push(`)`); + } + function generateMessageNode(generator, node) { + const { helper, needIndent } = generator; + generator.push(`${helper( + "normalize" + /* HelperNameMap.NORMALIZE */ + )}([`); + generator.indent(needIndent()); + const length = node.items.length; + for (let i = 0; i < length; i++) { + generateNode(generator, node.items[i]); + if (i === length - 1) { + break; + } + generator.push(", "); + } + generator.deindent(needIndent()); + generator.push("])"); + } + function generatePluralNode(generator, node) { + const { helper, needIndent } = generator; + if (node.cases.length > 1) { + generator.push(`${helper( + "plural" + /* HelperNameMap.PLURAL */ + )}([`); + generator.indent(needIndent()); + const length = node.cases.length; + for (let i = 0; i < length; i++) { + generateNode(generator, node.cases[i]); + if (i === length - 1) { + break; + } + generator.push(", "); + } + generator.deindent(needIndent()); + generator.push(`])`); + } + } + function generateResource(generator, node) { + if (node.body) { + generateNode(generator, node.body); + } else { + generator.push("null"); + } + } + function generateNode(generator, node) { + const { helper } = generator; + switch (node.type) { + case 0: + generateResource(generator, node); + break; + case 1: + generatePluralNode(generator, node); + break; + case 2: + generateMessageNode(generator, node); + break; + case 6: + generateLinkedNode(generator, node); + break; + case 8: + generator.push(JSON.stringify(node.value), node); + break; + case 7: + generator.push(JSON.stringify(node.value), node); + break; + case 5: + generator.push(`${helper( + "interpolate" + /* HelperNameMap.INTERPOLATE */ + )}(${helper( + "list" + /* HelperNameMap.LIST */ + )}(${node.index}))`, node); + break; + case 4: + generator.push(`${helper( + "interpolate" + /* HelperNameMap.INTERPOLATE */ + )}(${helper( + "named" + /* HelperNameMap.NAMED */ + )}(${JSON.stringify(node.key)}))`, node); + break; + case 9: + generator.push(JSON.stringify(node.value), node); + break; + case 3: + generator.push(JSON.stringify(node.value), node); + break; + default: { + throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, { + domain: ERROR_DOMAIN, + args: [node.type] + }); + } + } + } + const generate = (ast, options = {}) => { + const mode = isString(options.mode) ? options.mode : "normal"; + const filename = isString(options.filename) ? options.filename : "message.intl"; + const sourceMap = !!options.sourceMap; + const breakLineCode = options.breakLineCode != null ? options.breakLineCode : mode === "arrow" ? ";" : "\n"; + const needIndent = options.needIndent ? options.needIndent : mode !== "arrow"; + const helpers = ast.helpers || []; + const generator = createCodeGenerator(ast, { + mode, + filename, + sourceMap, + breakLineCode, + needIndent + }); + generator.push(mode === "normal" ? `function __msg__ (ctx) {` : `(ctx) => {`); + generator.indent(needIndent); + if (helpers.length > 0) { + generator.push(`const { ${join(helpers.map((s) => `${s}: _${s}`), ", ")} } = ctx`); + generator.newline(); + } + generator.push(`return `); + generateNode(generator, ast); + generator.deindent(needIndent); + generator.push(`}`); + delete ast.helpers; + const { code: code2, map } = generator.context(); + return { + ast, + code: code2, + map: map ? map.toJSON() : void 0 + // eslint-disable-line @typescript-eslint/no-explicit-any + }; + }; + function baseCompile$1(source, options = {}) { + const assignedOptions = assign({}, options); + const jit = !!assignedOptions.jit; + const enalbeMinify = !!assignedOptions.minify; + const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize; + const parser = createParser(assignedOptions); + const ast = parser.parse(source); + if (!jit) { + transform(ast, assignedOptions); + return generate(ast, assignedOptions); + } else { + enambeOptimize && optimize(ast); + enalbeMinify && minify(ast); + return { ast, code: "" }; + } + } + /*! + * core-base v9.5.0 + * (c) 2023 kazuya kawaguchi + * Released under the MIT License. + */ + function initFeatureFlags$1() { + if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") { + getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false; + } + if (typeof __INTLIFY_JIT_COMPILATION__ !== "boolean") { + getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false; + } + if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== "boolean") { + getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false; + } + } + const pathStateMachine = []; + pathStateMachine[ + 0 + /* States.BEFORE_PATH */ + ] = { + [ + "w" + /* PathCharTypes.WORKSPACE */ + ]: [ + 0 + /* States.BEFORE_PATH */ + ], + [ + "i" + /* PathCharTypes.IDENT */ + ]: [ + 3, + 0 + /* Actions.APPEND */ + ], + [ + "[" + /* PathCharTypes.LEFT_BRACKET */ + ]: [ + 4 + /* States.IN_SUB_PATH */ + ], + [ + "o" + /* PathCharTypes.END_OF_FAIL */ + ]: [ + 7 + /* States.AFTER_PATH */ + ] + }; + pathStateMachine[ + 1 + /* States.IN_PATH */ + ] = { + [ + "w" + /* PathCharTypes.WORKSPACE */ + ]: [ + 1 + /* States.IN_PATH */ + ], + [ + "." + /* PathCharTypes.DOT */ + ]: [ + 2 + /* States.BEFORE_IDENT */ + ], + [ + "[" + /* PathCharTypes.LEFT_BRACKET */ + ]: [ + 4 + /* States.IN_SUB_PATH */ + ], + [ + "o" + /* PathCharTypes.END_OF_FAIL */ + ]: [ + 7 + /* States.AFTER_PATH */ + ] + }; + pathStateMachine[ + 2 + /* States.BEFORE_IDENT */ + ] = { + [ + "w" + /* PathCharTypes.WORKSPACE */ + ]: [ + 2 + /* States.BEFORE_IDENT */ + ], + [ + "i" + /* PathCharTypes.IDENT */ + ]: [ + 3, + 0 + /* Actions.APPEND */ + ], + [ + "0" + /* PathCharTypes.ZERO */ + ]: [ + 3, + 0 + /* Actions.APPEND */ + ] + }; + pathStateMachine[ + 3 + /* States.IN_IDENT */ + ] = { + [ + "i" + /* PathCharTypes.IDENT */ + ]: [ + 3, + 0 + /* Actions.APPEND */ + ], + [ + "0" + /* PathCharTypes.ZERO */ + ]: [ + 3, + 0 + /* Actions.APPEND */ + ], + [ + "w" + /* PathCharTypes.WORKSPACE */ + ]: [ + 1, + 1 + /* Actions.PUSH */ + ], + [ + "." + /* PathCharTypes.DOT */ + ]: [ + 2, + 1 + /* Actions.PUSH */ + ], + [ + "[" + /* PathCharTypes.LEFT_BRACKET */ + ]: [ + 4, + 1 + /* Actions.PUSH */ + ], + [ + "o" + /* PathCharTypes.END_OF_FAIL */ + ]: [ + 7, + 1 + /* Actions.PUSH */ + ] + }; + pathStateMachine[ + 4 + /* States.IN_SUB_PATH */ + ] = { + [ + "'" + /* PathCharTypes.SINGLE_QUOTE */ + ]: [ + 5, + 0 + /* Actions.APPEND */ + ], + [ + '"' + /* PathCharTypes.DOUBLE_QUOTE */ + ]: [ + 6, + 0 + /* Actions.APPEND */ + ], + [ + "[" + /* PathCharTypes.LEFT_BRACKET */ + ]: [ + 4, + 2 + /* Actions.INC_SUB_PATH_DEPTH */ + ], + [ + "]" + /* PathCharTypes.RIGHT_BRACKET */ + ]: [ + 1, + 3 + /* Actions.PUSH_SUB_PATH */ + ], + [ + "o" + /* PathCharTypes.END_OF_FAIL */ + ]: 8, + [ + "l" + /* PathCharTypes.ELSE */ + ]: [ + 4, + 0 + /* Actions.APPEND */ + ] + }; + pathStateMachine[ + 5 + /* States.IN_SINGLE_QUOTE */ + ] = { + [ + "'" + /* PathCharTypes.SINGLE_QUOTE */ + ]: [ + 4, + 0 + /* Actions.APPEND */ + ], + [ + "o" + /* PathCharTypes.END_OF_FAIL */ + ]: 8, + [ + "l" + /* PathCharTypes.ELSE */ + ]: [ + 5, + 0 + /* Actions.APPEND */ + ] + }; + pathStateMachine[ + 6 + /* States.IN_DOUBLE_QUOTE */ + ] = { + [ + '"' + /* PathCharTypes.DOUBLE_QUOTE */ + ]: [ + 4, + 0 + /* Actions.APPEND */ + ], + [ + "o" + /* PathCharTypes.END_OF_FAIL */ + ]: 8, + [ + "l" + /* PathCharTypes.ELSE */ + ]: [ + 6, + 0 + /* Actions.APPEND */ + ] + }; + const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/; + function isLiteral(exp) { + return literalValueRE.test(exp); + } + function stripQuotes(str) { + const a = str.charCodeAt(0); + const b = str.charCodeAt(str.length - 1); + return a === b && (a === 34 || a === 39) ? str.slice(1, -1) : str; + } + function getPathCharType(ch) { + if (ch === void 0 || ch === null) { + return "o"; + } + const code2 = ch.charCodeAt(0); + switch (code2) { + case 91: + case 93: + case 46: + case 34: + case 39: + return ch; + case 95: + case 36: + case 45: + return "i"; + case 9: + case 10: + case 13: + case 160: + case 65279: + case 8232: + case 8233: + return "w"; + } + return "i"; + } + function formatSubPath(path) { + const trimmed = path.trim(); + if (path.charAt(0) === "0" && isNaN(parseInt(path))) { + return false; + } + return isLiteral(trimmed) ? stripQuotes(trimmed) : "*" + trimmed; + } + function parse(path) { + const keys = []; + let index = -1; + let mode = 0; + let subPathDepth = 0; + let c; + let key; + let newChar; + let type; + let transition; + let action; + let typeMap; + const actions = []; + actions[ + 0 + /* Actions.APPEND */ + ] = () => { + if (key === void 0) { + key = newChar; + } else { + key += newChar; + } + }; + actions[ + 1 + /* Actions.PUSH */ + ] = () => { + if (key !== void 0) { + keys.push(key); + key = void 0; + } + }; + actions[ + 2 + /* Actions.INC_SUB_PATH_DEPTH */ + ] = () => { + actions[ + 0 + /* Actions.APPEND */ + ](); + subPathDepth++; + }; + actions[ + 3 + /* Actions.PUSH_SUB_PATH */ + ] = () => { + if (subPathDepth > 0) { + subPathDepth--; + mode = 4; + actions[ + 0 + /* Actions.APPEND */ + ](); + } else { + subPathDepth = 0; + if (key === void 0) { + return false; + } + key = formatSubPath(key); + if (key === false) { + return false; + } else { + actions[ + 1 + /* Actions.PUSH */ + ](); + } + } + }; + function maybeUnescapeQuote() { + const nextChar = path[index + 1]; + if (mode === 5 && nextChar === "'" || mode === 6 && nextChar === '"') { + index++; + newChar = "\\" + nextChar; + actions[ + 0 + /* Actions.APPEND */ + ](); + return true; + } + } + while (mode !== null) { + index++; + c = path[index]; + if (c === "\\" && maybeUnescapeQuote()) { + continue; + } + type = getPathCharType(c); + typeMap = pathStateMachine[mode]; + transition = typeMap[type] || typeMap[ + "l" + /* PathCharTypes.ELSE */ + ] || 8; + if (transition === 8) { + return; + } + mode = transition[0]; + if (transition[1] !== void 0) { + action = actions[transition[1]]; + if (action) { + newChar = c; + if (action() === false) { + return; + } + } + } + if (mode === 7) { + return keys; + } + } + } + const cache = /* @__PURE__ */ new Map(); + function resolveWithKeyValue(obj, path) { + return isObject$1(obj) ? obj[path] : null; + } + function resolveValue(obj, path) { + if (!isObject$1(obj)) { + return null; + } + let hit = cache.get(path); + if (!hit) { + hit = parse(path); + if (hit) { + cache.set(path, hit); + } + } + if (!hit) { + return null; + } + const len = hit.length; + let last = obj; + let i = 0; + while (i < len) { + const val = last[hit[i]]; + if (val === void 0) { + return null; + } + last = val; + i++; + } + return last; + } + const DEFAULT_MODIFIER = (str) => str; + const DEFAULT_MESSAGE = (ctx) => ""; + const DEFAULT_MESSAGE_DATA_TYPE = "text"; + const DEFAULT_NORMALIZE = (values) => values.length === 0 ? "" : join$1(values); + const DEFAULT_INTERPOLATE = toDisplayString; + function pluralDefault(choice, choicesLength) { + choice = Math.abs(choice); + if (choicesLength === 2) { + return choice ? choice > 1 ? 1 : 0 : 1; + } + return choice ? Math.min(choice, 2) : 0; + } + function getPluralIndex(options) { + const index = isNumber(options.pluralIndex) ? options.pluralIndex : -1; + return options.named && (isNumber(options.named.count) || isNumber(options.named.n)) ? isNumber(options.named.count) ? options.named.count : isNumber(options.named.n) ? options.named.n : index : index; + } + function normalizeNamed(pluralIndex, props) { + if (!props.count) { + props.count = pluralIndex; + } + if (!props.n) { + props.n = pluralIndex; + } + } + function createMessageContext(options = {}) { + const locale = options.locale; + const pluralIndex = getPluralIndex(options); + const pluralRule = isObject$1(options.pluralRules) && isString$1(locale) && isFunction(options.pluralRules[locale]) ? options.pluralRules[locale] : pluralDefault; + const orgPluralRule = isObject$1(options.pluralRules) && isString$1(locale) && isFunction(options.pluralRules[locale]) ? pluralDefault : void 0; + const plural = (messages) => { + return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)]; + }; + const _list = options.list || []; + const list = (index) => _list[index]; + const _named = options.named || {}; + isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named); + const named = (key) => _named[key]; + function message(key) { + const msg = isFunction(options.messages) ? options.messages(key) : isObject$1(options.messages) ? options.messages[key] : false; + return !msg ? options.parent ? options.parent.message(key) : DEFAULT_MESSAGE : msg; + } + const _modifier = (name) => options.modifiers ? options.modifiers[name] : DEFAULT_MODIFIER; + const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize) ? options.processor.normalize : DEFAULT_NORMALIZE; + const interpolate = isPlainObject(options.processor) && isFunction(options.processor.interpolate) ? options.processor.interpolate : DEFAULT_INTERPOLATE; + const type = isPlainObject(options.processor) && isString$1(options.processor.type) ? options.processor.type : DEFAULT_MESSAGE_DATA_TYPE; + const linked = (key, ...args) => { + const [arg1, arg2] = args; + let type2 = "text"; + let modifier = ""; + if (args.length === 1) { + if (isObject$1(arg1)) { + modifier = arg1.modifier || modifier; + type2 = arg1.type || type2; + } else if (isString$1(arg1)) { + modifier = arg1 || modifier; + } + } else if (args.length === 2) { + if (isString$1(arg1)) { + modifier = arg1 || modifier; + } + if (isString$1(arg2)) { + type2 = arg2 || type2; + } + } + const ret = message(key)(ctx); + const msg = ( + // The message in vnode resolved with linked are returned as an array by processor.nomalize + type2 === "vnode" && isArray(ret) && modifier ? ret[0] : ret + ); + return modifier ? _modifier(modifier)(msg, type2) : msg; + }; + const ctx = { + [ + "list" + /* HelperNameMap.LIST */ + ]: list, + [ + "named" + /* HelperNameMap.NAMED */ + ]: named, + [ + "plural" + /* HelperNameMap.PLURAL */ + ]: plural, + [ + "linked" + /* HelperNameMap.LINKED */ + ]: linked, + [ + "message" + /* HelperNameMap.MESSAGE */ + ]: message, + [ + "type" + /* HelperNameMap.TYPE */ + ]: type, + [ + "interpolate" + /* HelperNameMap.INTERPOLATE */ + ]: interpolate, + [ + "normalize" + /* HelperNameMap.NORMALIZE */ + ]: normalize, + [ + "values" + /* HelperNameMap.VALUES */ + ]: assign$1({}, _list, _named) + }; + return ctx; + } + let devtools = null; + function setDevToolsHook(hook) { + devtools = hook; + } + function initI18nDevTools(i18n, version, meta) { + devtools && devtools.emit("i18n:init", { + timestamp: Date.now(), + i18n, + version, + meta + }); + } + const translateDevTools = /* @__PURE__ */ createDevToolsHook( + "function:translate" + /* IntlifyDevToolsHooks.FunctionTranslate */ + ); + function createDevToolsHook(hook) { + return (payloads) => devtools && devtools.emit(hook, payloads); + } + const CoreWarnCodes = { + NOT_FOUND_KEY: 1, + FALLBACK_TO_TRANSLATE: 2, + CANNOT_FORMAT_NUMBER: 3, + FALLBACK_TO_NUMBER_FORMAT: 4, + CANNOT_FORMAT_DATE: 5, + FALLBACK_TO_DATE_FORMAT: 6, + EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7, + __EXTEND_POINT__: 8 + }; + const warnMessages$1 = { + [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`, + [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`, + [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`, + [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`, + [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`, + [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`, + [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.` + }; + function getWarnMessage$1(code2, ...args) { + return format$2(warnMessages$1[code2], ...args); + } + function getLocale(context, options) { + return options.locale != null ? resolveLocale(options.locale) : resolveLocale(context.locale); + } + let _resolveLocale; + function resolveLocale(locale) { + return isString$1(locale) ? locale : _resolveLocale != null && locale.resolvedOnce ? _resolveLocale : _resolveLocale = locale(); + } + function fallbackWithSimple(ctx, fallback, start) { + return [.../* @__PURE__ */ new Set([ + start, + ...isArray(fallback) ? fallback : isObject$1(fallback) ? Object.keys(fallback) : isString$1(fallback) ? [fallback] : [start] + ])]; + } + function fallbackWithLocaleChain(ctx, fallback, start) { + const startLocale = isString$1(start) ? start : DEFAULT_LOCALE; + const context = ctx; + if (!context.__localeChainCache) { + context.__localeChainCache = /* @__PURE__ */ new Map(); + } + let chain = context.__localeChainCache.get(startLocale); + if (!chain) { + chain = []; + let block = [start]; + while (isArray(block)) { + block = appendBlockToChain(chain, block, fallback); + } + const defaults = isArray(fallback) || !isPlainObject(fallback) ? fallback : fallback["default"] ? fallback["default"] : null; + block = isString$1(defaults) ? [defaults] : defaults; + if (isArray(block)) { + appendBlockToChain(chain, block, false); + } + context.__localeChainCache.set(startLocale, chain); + } + return chain; + } + function appendBlockToChain(chain, block, blocks) { + let follow = true; + for (let i = 0; i < block.length && isBoolean(follow); i++) { + const locale = block[i]; + if (isString$1(locale)) { + follow = appendLocaleToChain(chain, block[i], blocks); + } + } + return follow; + } + function appendLocaleToChain(chain, locale, blocks) { + let follow; + const tokens = locale.split("-"); + do { + const target = tokens.join("-"); + follow = appendItemToChain(chain, target, blocks); + tokens.splice(-1, 1); + } while (tokens.length && follow === true); + return follow; + } + function appendItemToChain(chain, target, blocks) { + let follow = false; + if (!chain.includes(target)) { + follow = true; + if (target) { + follow = target[target.length - 1] !== "!"; + const locale = target.replace(/!/g, ""); + chain.push(locale); + if ((isArray(blocks) || isPlainObject(blocks)) && blocks[locale]) { + follow = blocks[locale]; + } + } + } + return follow; + } + const VERSION$1 = "9.5.0"; + const NOT_REOSLVED = -1; + const DEFAULT_LOCALE = "en-US"; + const MISSING_RESOLVE_VALUE = ""; + const capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`; + function getDefaultLinkedModifiers() { + return { + upper: (val, type) => { + return type === "text" && isString$1(val) ? val.toUpperCase() : type === "vnode" && isObject$1(val) && "__v_isVNode" in val ? val.children.toUpperCase() : val; + }, + lower: (val, type) => { + return type === "text" && isString$1(val) ? val.toLowerCase() : type === "vnode" && isObject$1(val) && "__v_isVNode" in val ? val.children.toLowerCase() : val; + }, + capitalize: (val, type) => { + return type === "text" && isString$1(val) ? capitalize(val) : type === "vnode" && isObject$1(val) && "__v_isVNode" in val ? capitalize(val.children) : val; + } + }; + } + let _compiler; + function registerMessageCompiler(compiler) { + _compiler = compiler; + } + let _resolver; + function registerMessageResolver(resolver) { + _resolver = resolver; + } + let _fallbacker; + function registerLocaleFallbacker(fallbacker) { + _fallbacker = fallbacker; + } + let _additionalMeta = null; + const setAdditionalMeta = (meta) => { + _additionalMeta = meta; + }; + const getAdditionalMeta = () => _additionalMeta; + let _fallbackContext = null; + const setFallbackContext = (context) => { + _fallbackContext = context; + }; + const getFallbackContext = () => _fallbackContext; + let _cid = 0; + function createCoreContext(options = {}) { + const onWarn = isFunction(options.onWarn) ? options.onWarn : warn; + const version = isString$1(options.version) ? options.version : VERSION$1; + const locale = isString$1(options.locale) || isFunction(options.locale) ? options.locale : DEFAULT_LOCALE; + const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale; + const fallbackLocale = isArray(options.fallbackLocale) || isPlainObject(options.fallbackLocale) || isString$1(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : _locale; + const messages = isPlainObject(options.messages) ? options.messages : { [_locale]: {} }; + const datetimeFormats = isPlainObject(options.datetimeFormats) ? options.datetimeFormats : { [_locale]: {} }; + const numberFormats = isPlainObject(options.numberFormats) ? options.numberFormats : { [_locale]: {} }; + const modifiers = assign$1({}, options.modifiers || {}, getDefaultLinkedModifiers()); + const pluralRules = options.pluralRules || {}; + const missing = isFunction(options.missing) ? options.missing : null; + const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn) ? options.missingWarn : true; + const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) ? options.fallbackWarn : true; + const fallbackFormat = !!options.fallbackFormat; + const unresolving = !!options.unresolving; + const postTranslation = isFunction(options.postTranslation) ? options.postTranslation : null; + const processor = isPlainObject(options.processor) ? options.processor : null; + const warnHtmlMessage = isBoolean(options.warnHtmlMessage) ? options.warnHtmlMessage : true; + const escapeParameter = !!options.escapeParameter; + const messageCompiler = isFunction(options.messageCompiler) ? options.messageCompiler : _compiler; + if ({}.NODE_ENV !== "production" && true && true && isFunction(options.messageCompiler)) { + warnOnce(getWarnMessage$1(CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER)); + } + const messageResolver = isFunction(options.messageResolver) ? options.messageResolver : _resolver || resolveWithKeyValue; + const localeFallbacker = isFunction(options.localeFallbacker) ? options.localeFallbacker : _fallbacker || fallbackWithSimple; + const fallbackContext = isObject$1(options.fallbackContext) ? options.fallbackContext : void 0; + const internalOptions = options; + const __datetimeFormatters = isObject$1(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : /* @__PURE__ */ new Map(); + const __numberFormatters = isObject$1(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : /* @__PURE__ */ new Map(); + const __meta = isObject$1(internalOptions.__meta) ? internalOptions.__meta : {}; + _cid++; + const context = { + version, + cid: _cid, + locale, + fallbackLocale, + messages, + modifiers, + pluralRules, + missing, + missingWarn, + fallbackWarn, + fallbackFormat, + unresolving, + postTranslation, + processor, + warnHtmlMessage, + escapeParameter, + messageCompiler, + messageResolver, + localeFallbacker, + fallbackContext, + onWarn, + __meta + }; + { + context.datetimeFormats = datetimeFormats; + context.numberFormats = numberFormats; + context.__datetimeFormatters = __datetimeFormatters; + context.__numberFormatters = __numberFormatters; + } + if ({}.NODE_ENV !== "production") { + context.__v_emitter = internalOptions.__v_emitter != null ? internalOptions.__v_emitter : void 0; + } + if ({}.NODE_ENV !== "production" || __INTLIFY_PROD_DEVTOOLS__) { + initI18nDevTools(context, version, __meta); + } + return context; + } + function isTranslateFallbackWarn(fallback, key) { + return fallback instanceof RegExp ? fallback.test(key) : fallback; + } + function isTranslateMissingWarn(missing, key) { + return missing instanceof RegExp ? missing.test(key) : missing; + } + function handleMissing(context, key, locale, missingWarn, type) { + const { missing, onWarn } = context; + if ({}.NODE_ENV !== "production") { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("missing", { + locale, + key, + type, + groupId: `${type}:${key}` + }); + } + } + if (missing !== null) { + const ret = missing(context, locale, key, type); + return isString$1(ret) ? ret : key; + } else { + if ({}.NODE_ENV !== "production" && isTranslateMissingWarn(missingWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.NOT_FOUND_KEY, { key, locale })); + } + return key; + } + } + function updateFallbackLocale(ctx, locale, fallback) { + const context = ctx; + context.__localeChainCache = /* @__PURE__ */ new Map(); + ctx.localeFallbacker(ctx, fallback, locale); + } + function format(ast) { + const msg = (ctx) => formatParts(ctx, ast); + return msg; + } + function formatParts(ctx, ast) { + const body = ast.b || ast.body; + if ((body.t || body.type) === 1) { + const plural = body; + const cases = plural.c || plural.cases; + return ctx.plural(cases.reduce((messages, c) => [ + ...messages, + formatMessageParts(ctx, c) + ], [])); + } else { + return formatMessageParts(ctx, body); + } + } + function formatMessageParts(ctx, node) { + const _static = node.s || node.static; + if (_static) { + return ctx.type === "text" ? _static : ctx.normalize([_static]); + } else { + const messages = (node.i || node.items).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []); + return ctx.normalize(messages); + } + } + function formatMessagePart(ctx, node) { + const type = node.t || node.type; + switch (type) { + case 3: + const text = node; + return text.v || text.value; + case 9: + const literal = node; + return literal.v || literal.value; + case 4: + const named = node; + return ctx.interpolate(ctx.named(named.k || named.key)); + case 5: + const list = node; + return ctx.interpolate(ctx.list(list.i != null ? list.i : list.index)); + case 6: + const linked = node; + const modifier = linked.m || linked.modifier; + return ctx.linked(formatMessagePart(ctx, linked.k || linked.key), modifier ? formatMessagePart(ctx, modifier) : void 0, ctx.type); + case 7: + const linkedKey = node; + return linkedKey.v || linkedKey.value; + case 8: + const linkedModifier = node; + return linkedModifier.v || linkedModifier.value; + default: + throw new Error(`unhandled node type on format message part: ${type}`); + } + } + const code$2 = CompileErrorCodes.__EXTEND_POINT__; + const inc$2 = incrementer(code$2); + const CoreErrorCodes = { + INVALID_ARGUMENT: code$2, + INVALID_DATE_ARGUMENT: inc$2(), + INVALID_ISO_DATE_ARGUMENT: inc$2(), + NOT_SUPPORT_NON_STRING_MESSAGE: inc$2(), + __EXTEND_POINT__: inc$2() + // 22 + }; + function createCoreError(code2) { + return createCompileError(code2, null, {}.NODE_ENV !== "production" ? { messages: errorMessages$1 } : void 0); + } + const errorMessages$1 = { + [CoreErrorCodes.INVALID_ARGUMENT]: "Invalid arguments", + [CoreErrorCodes.INVALID_DATE_ARGUMENT]: "The date provided is an invalid Date object.Make sure your Date represents a valid date.", + [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: "The argument provided is not a valid ISO date string", + [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: "Not support non-string message" + }; + const WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`; + function checkHtmlMessage(source, warnHtmlMessage) { + if (warnHtmlMessage && detectHtmlTag(source)) { + warn(format$2(WARN_MESSAGE, { source })); + } + } + const defaultOnCacheKey = (message) => message; + let compileCache = /* @__PURE__ */ Object.create(null); + const isMessageAST = (val) => isObject$1(val) && (val.t === 0 || val.type === 0) && ("b" in val || "body" in val); + function baseCompile(message, options = {}) { + let detectError = false; + const onError = options.onError || defaultOnError; + options.onError = (err) => { + detectError = true; + onError(err); + }; + return { ...baseCompile$1(message, options), detectError }; + } + const compileToFunction = (message, context) => { + if (!isString$1(message)) { + throw createCoreError(CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE); + } + { + const warnHtmlMessage = isBoolean(context.warnHtmlMessage) ? context.warnHtmlMessage : true; + ({}).NODE_ENV !== "production" && checkHtmlMessage(message, warnHtmlMessage); + const onCacheKey = context.onCacheKey || defaultOnCacheKey; + const cacheKey = onCacheKey(message); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + const { code: code2, detectError } = baseCompile(message, context); + const msg = new Function(`return ${code2}`)(); + return !detectError ? compileCache[cacheKey] = msg : msg; + } + }; + function compile(message, context) { + if (__INTLIFY_JIT_COMPILATION__ && !__INTLIFY_DROP_MESSAGE_COMPILER__ && isString$1(message)) { + const warnHtmlMessage = isBoolean(context.warnHtmlMessage) ? context.warnHtmlMessage : true; + ({}).NODE_ENV !== "production" && checkHtmlMessage(message, warnHtmlMessage); + const onCacheKey = context.onCacheKey || defaultOnCacheKey; + const cacheKey = onCacheKey(message); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + const { ast, detectError } = baseCompile(message, { + ...context, + location: {}.NODE_ENV !== "production", + jit: true + }); + const msg = format(ast); + return !detectError ? compileCache[cacheKey] = msg : msg; + } else { + if ({}.NODE_ENV !== "production" && !isMessageAST(message)) { + warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`); + return () => message; + } + const cacheKey = message.cacheKey; + if (cacheKey) { + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + return compileCache[cacheKey] = format(message); + } else { + return format(message); + } + } + } + const NOOP_MESSAGE_FUNCTION = () => ""; + const isMessageFunction = (val) => isFunction(val); + function translate(context, ...args) { + const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context; + const [key, options] = parseTranslateArgs(...args); + const missingWarn = isBoolean(options.missingWarn) ? options.missingWarn : context.missingWarn; + const fallbackWarn = isBoolean(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn; + const escapeParameter = isBoolean(options.escapeParameter) ? options.escapeParameter : context.escapeParameter; + const resolvedMessage = !!options.resolvedMessage; + const defaultMsgOrKey = isString$1(options.default) || isBoolean(options.default) ? !isBoolean(options.default) ? options.default : !messageCompiler ? () => key : key : fallbackFormat ? !messageCompiler ? () => key : key : ""; + const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== ""; + const locale = getLocale(context, options); + escapeParameter && escapeParams(options); + let [formatScope, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [ + key, + locale, + messages[locale] || {} + ]; + let format2 = formatScope; + let cacheBaseKey = key; + if (!resolvedMessage && !(isString$1(format2) || isMessageAST(format2) || isMessageFunction(format2))) { + if (enableDefaultMsg) { + format2 = defaultMsgOrKey; + cacheBaseKey = format2; + } + } + if (!resolvedMessage && (!(isString$1(format2) || isMessageAST(format2) || isMessageFunction(format2)) || !isString$1(targetLocale))) { + return unresolving ? NOT_REOSLVED : key; + } + if ({}.NODE_ENV !== "production" && isString$1(format2) && context.messageCompiler == null) { + warn(`The message format compilation is not supported in this build. Because message compiler isn't included. You need to pre-compilation all message format. So translate function return '${key}'.`); + return key; + } + let occurred = false; + const onError = () => { + occurred = true; + }; + const msg = !isMessageFunction(format2) ? compileMessageFormat(context, key, targetLocale, format2, cacheBaseKey, onError) : format2; + if (occurred) { + return format2; + } + const ctxOptions = getMessageContextOptions(context, targetLocale, message, options); + const msgContext = createMessageContext(ctxOptions); + const messaged = evaluateMessage(context, msg, msgContext); + const ret = postTranslation ? postTranslation(messaged, key) : messaged; + if ({}.NODE_ENV !== "production" || __INTLIFY_PROD_DEVTOOLS__) { + const payloads = { + timestamp: Date.now(), + key: isString$1(key) ? key : isMessageFunction(format2) ? format2.key : "", + locale: targetLocale || (isMessageFunction(format2) ? format2.locale : ""), + format: isString$1(format2) ? format2 : isMessageFunction(format2) ? format2.source : "", + message: ret + }; + payloads.meta = assign$1({}, context.__meta, getAdditionalMeta() || {}); + translateDevTools(payloads); + } + return ret; + } + function escapeParams(options) { + if (isArray(options.list)) { + options.list = options.list.map((item) => isString$1(item) ? escapeHtml(item) : item); + } else if (isObject$1(options.named)) { + Object.keys(options.named).forEach((key) => { + if (isString$1(options.named[key])) { + options.named[key] = escapeHtml(options.named[key]); + } + }); + } + } + function resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) { + const { messages, onWarn, messageResolver: resolveValue2, localeFallbacker } = context; + const locales = localeFallbacker(context, fallbackLocale, locale); + let message = {}; + let targetLocale; + let format2 = null; + let from = locale; + let to = null; + const type = "translate"; + for (let i = 0; i < locales.length; i++) { + targetLocale = to = locales[i]; + if ({}.NODE_ENV !== "production" && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.FALLBACK_TO_TRANSLATE, { + key, + target: targetLocale + })); + } + if ({}.NODE_ENV !== "production" && locale !== targetLocale) { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("fallback", { + type, + key, + from, + to, + groupId: `${type}:${key}` + }); + } + } + message = messages[targetLocale] || {}; + let start = null; + let startTag; + let endTag; + if ({}.NODE_ENV !== "production" && inBrowser) { + start = window.performance.now(); + startTag = "intlify-message-resolve-start"; + endTag = "intlify-message-resolve-end"; + mark && mark(startTag); + } + if ((format2 = resolveValue2(message, key)) === null) { + format2 = message[key]; + } + if ({}.NODE_ENV !== "production" && inBrowser) { + const end = window.performance.now(); + const emitter = context.__v_emitter; + if (emitter && start && format2) { + emitter.emit("message-resolve", { + type: "message-resolve", + key, + message: format2, + time: end - start, + groupId: `${type}:${key}` + }); + } + if (startTag && endTag && mark && measure) { + mark(endTag); + measure("intlify message resolve", startTag, endTag); + } + } + if (isString$1(format2) || isMessageAST(format2) || isMessageFunction(format2)) { + break; + } + const missingRet = handleMissing( + context, + // eslint-disable-line @typescript-eslint/no-explicit-any + key, + targetLocale, + missingWarn, + type + ); + if (missingRet !== key) { + format2 = missingRet; + } + from = to; + } + return [format2, targetLocale, message]; + } + function compileMessageFormat(context, key, targetLocale, format2, cacheBaseKey, onError) { + const { messageCompiler, warnHtmlMessage } = context; + if (isMessageFunction(format2)) { + const msg2 = format2; + msg2.locale = msg2.locale || targetLocale; + msg2.key = msg2.key || key; + return msg2; + } + if (messageCompiler == null) { + const msg2 = () => format2; + msg2.locale = targetLocale; + msg2.key = key; + return msg2; + } + let start = null; + let startTag; + let endTag; + if ({}.NODE_ENV !== "production" && inBrowser) { + start = window.performance.now(); + startTag = "intlify-message-compilation-start"; + endTag = "intlify-message-compilation-end"; + mark && mark(startTag); + } + const msg = messageCompiler(format2, getCompileContext(context, targetLocale, cacheBaseKey, format2, warnHtmlMessage, onError)); + if ({}.NODE_ENV !== "production" && inBrowser) { + const end = window.performance.now(); + const emitter = context.__v_emitter; + if (emitter && start) { + emitter.emit("message-compilation", { + type: "message-compilation", + message: format2, + time: end - start, + groupId: `${"translate"}:${key}` + }); + } + if (startTag && endTag && mark && measure) { + mark(endTag); + measure("intlify message compilation", startTag, endTag); + } + } + msg.locale = targetLocale; + msg.key = key; + msg.source = format2; + return msg; + } + function evaluateMessage(context, msg, msgCtx) { + let start = null; + let startTag; + let endTag; + if ({}.NODE_ENV !== "production" && inBrowser) { + start = window.performance.now(); + startTag = "intlify-message-evaluation-start"; + endTag = "intlify-message-evaluation-end"; + mark && mark(startTag); + } + const messaged = msg(msgCtx); + if ({}.NODE_ENV !== "production" && inBrowser) { + const end = window.performance.now(); + const emitter = context.__v_emitter; + if (emitter && start) { + emitter.emit("message-evaluation", { + type: "message-evaluation", + value: messaged, + time: end - start, + groupId: `${"translate"}:${msg.key}` + }); + } + if (startTag && endTag && mark && measure) { + mark(endTag); + measure("intlify message evaluation", startTag, endTag); + } + } + return messaged; + } + function parseTranslateArgs(...args) { + const [arg1, arg2, arg3] = args; + const options = {}; + if (!isString$1(arg1) && !isNumber(arg1) && !isMessageFunction(arg1) && !isMessageAST(arg1)) { + throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); + } + const key = isNumber(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1; + if (isNumber(arg2)) { + options.plural = arg2; + } else if (isString$1(arg2)) { + options.default = arg2; + } else if (isPlainObject(arg2) && !isEmptyObject(arg2)) { + options.named = arg2; + } else if (isArray(arg2)) { + options.list = arg2; + } + if (isNumber(arg3)) { + options.plural = arg3; + } else if (isString$1(arg3)) { + options.default = arg3; + } else if (isPlainObject(arg3)) { + assign$1(options, arg3); + } + return [key, options]; + } + function getCompileContext(context, locale, key, source, warnHtmlMessage, onError) { + return { + locale, + key, + warnHtmlMessage, + onError: (err) => { + onError && onError(err); + if ({}.NODE_ENV !== "production") { + const _source = getSourceForCodeFrame(source); + const message = `Message compilation error: ${err.message}`; + const codeFrame = err.location && _source && generateCodeFrame(_source, err.location.start.offset, err.location.end.offset); + const emitter = context.__v_emitter; + if (emitter && _source) { + emitter.emit("compile-error", { + message: _source, + error: err.message, + start: err.location && err.location.start.offset, + end: err.location && err.location.end.offset, + groupId: `${"translate"}:${key}` + }); + } + console.error(codeFrame ? `${message} +${codeFrame}` : message); + } else { + throw err; + } + }, + onCacheKey: (source2) => generateFormatCacheKey(locale, key, source2) + }; + } + function getSourceForCodeFrame(source) { + var _a; + if (isString$1(source)) + ; + else { + if ((_a = source.loc) == null ? void 0 : _a.source) { + return source.loc.source; + } + } + } + function getMessageContextOptions(context, locale, message, options) { + const { modifiers, pluralRules, messageResolver: resolveValue2, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context; + const resolveMessage = (key) => { + let val = resolveValue2(message, key); + if (val == null && fallbackContext) { + const [, , message2] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn); + val = resolveValue2(message2, key); + } + if (isString$1(val) || isMessageAST(val)) { + let occurred = false; + const onError = () => { + occurred = true; + }; + const msg = compileMessageFormat(context, key, locale, val, key, onError); + return !occurred ? msg : NOOP_MESSAGE_FUNCTION; + } else if (isMessageFunction(val)) { + return val; + } else { + return NOOP_MESSAGE_FUNCTION; + } + }; + const ctxOptions = { + locale, + modifiers, + pluralRules, + messages: resolveMessage + }; + if (context.processor) { + ctxOptions.processor = context.processor; + } + if (options.list) { + ctxOptions.list = options.list; + } + if (options.named) { + ctxOptions.named = options.named; + } + if (isNumber(options.plural)) { + ctxOptions.pluralIndex = options.plural; + } + return ctxOptions; + } + const intlDefined = typeof Intl !== "undefined"; + const Availabilities = { + dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== "undefined", + numberFormat: intlDefined && typeof Intl.NumberFormat !== "undefined" + }; + function datetime(context, ...args) { + const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context; + const { __datetimeFormatters } = context; + if ({}.NODE_ENV !== "production" && !Availabilities.dateTimeFormat) { + onWarn(getWarnMessage$1(CoreWarnCodes.CANNOT_FORMAT_DATE)); + return MISSING_RESOLVE_VALUE; + } + const [key, value, options, overrides] = parseDateTimeArgs(...args); + const missingWarn = isBoolean(options.missingWarn) ? options.missingWarn : context.missingWarn; + const fallbackWarn = isBoolean(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn; + const part = !!options.part; + const locale = getLocale(context, options); + const locales = localeFallbacker( + context, + // eslint-disable-line @typescript-eslint/no-explicit-any + fallbackLocale, + locale + ); + if (!isString$1(key) || key === "") { + return new Intl.DateTimeFormat(locale, overrides).format(value); + } + let datetimeFormat = {}; + let targetLocale; + let format2 = null; + let from = locale; + let to = null; + const type = "datetime format"; + for (let i = 0; i < locales.length; i++) { + targetLocale = to = locales[i]; + if ({}.NODE_ENV !== "production" && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, { + key, + target: targetLocale + })); + } + if ({}.NODE_ENV !== "production" && locale !== targetLocale) { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("fallback", { + type, + key, + from, + to, + groupId: `${type}:${key}` + }); + } + } + datetimeFormat = datetimeFormats[targetLocale] || {}; + format2 = datetimeFormat[key]; + if (isPlainObject(format2)) + break; + handleMissing(context, key, targetLocale, missingWarn, type); + from = to; + } + if (!isPlainObject(format2) || !isString$1(targetLocale)) { + return unresolving ? NOT_REOSLVED : key; + } + let id = `${targetLocale}__${key}`; + if (!isEmptyObject(overrides)) { + id = `${id}__${JSON.stringify(overrides)}`; + } + let formatter = __datetimeFormatters.get(id); + if (!formatter) { + formatter = new Intl.DateTimeFormat(targetLocale, assign$1({}, format2, overrides)); + __datetimeFormatters.set(id, formatter); + } + return !part ? formatter.format(value) : formatter.formatToParts(value); + } + const DATETIME_FORMAT_OPTIONS_KEYS = [ + "localeMatcher", + "weekday", + "era", + "year", + "month", + "day", + "hour", + "minute", + "second", + "timeZoneName", + "formatMatcher", + "hour12", + "timeZone", + "dateStyle", + "timeStyle", + "calendar", + "dayPeriod", + "numberingSystem", + "hourCycle", + "fractionalSecondDigits" + ]; + function parseDateTimeArgs(...args) { + const [arg1, arg2, arg3, arg4] = args; + const options = {}; + let overrides = {}; + let value; + if (isString$1(arg1)) { + const matches = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/); + if (!matches) { + throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT); + } + const dateTime = matches[3] ? matches[3].trim().startsWith("T") ? `${matches[1].trim()}${matches[3].trim()}` : `${matches[1].trim()}T${matches[3].trim()}` : matches[1].trim(); + value = new Date(dateTime); + try { + value.toISOString(); + } catch (e) { + throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT); + } + } else if (isDate(arg1)) { + if (isNaN(arg1.getTime())) { + throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT); + } + value = arg1; + } else if (isNumber(arg1)) { + value = arg1; + } else { + throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); + } + if (isString$1(arg2)) { + options.key = arg2; + } else if (isPlainObject(arg2)) { + Object.keys(arg2).forEach((key) => { + if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) { + overrides[key] = arg2[key]; + } else { + options[key] = arg2[key]; + } + }); + } + if (isString$1(arg3)) { + options.locale = arg3; + } else if (isPlainObject(arg3)) { + overrides = arg3; + } + if (isPlainObject(arg4)) { + overrides = arg4; + } + return [options.key || "", value, options, overrides]; + } + function clearDateTimeFormat(ctx, locale, format2) { + const context = ctx; + for (const key in format2) { + const id = `${locale}__${key}`; + if (!context.__datetimeFormatters.has(id)) { + continue; + } + context.__datetimeFormatters.delete(id); + } + } + function number(context, ...args) { + const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context; + const { __numberFormatters } = context; + if ({}.NODE_ENV !== "production" && !Availabilities.numberFormat) { + onWarn(getWarnMessage$1(CoreWarnCodes.CANNOT_FORMAT_NUMBER)); + return MISSING_RESOLVE_VALUE; + } + const [key, value, options, overrides] = parseNumberArgs(...args); + const missingWarn = isBoolean(options.missingWarn) ? options.missingWarn : context.missingWarn; + const fallbackWarn = isBoolean(options.fallbackWarn) ? options.fallbackWarn : context.fallbackWarn; + const part = !!options.part; + const locale = getLocale(context, options); + const locales = localeFallbacker( + context, + // eslint-disable-line @typescript-eslint/no-explicit-any + fallbackLocale, + locale + ); + if (!isString$1(key) || key === "") { + return new Intl.NumberFormat(locale, overrides).format(value); + } + let numberFormat = {}; + let targetLocale; + let format2 = null; + let from = locale; + let to = null; + const type = "number format"; + for (let i = 0; i < locales.length; i++) { + targetLocale = to = locales[i]; + if ({}.NODE_ENV !== "production" && locale !== targetLocale && isTranslateFallbackWarn(fallbackWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, { + key, + target: targetLocale + })); + } + if ({}.NODE_ENV !== "production" && locale !== targetLocale) { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("fallback", { + type, + key, + from, + to, + groupId: `${type}:${key}` + }); + } + } + numberFormat = numberFormats[targetLocale] || {}; + format2 = numberFormat[key]; + if (isPlainObject(format2)) + break; + handleMissing(context, key, targetLocale, missingWarn, type); + from = to; + } + if (!isPlainObject(format2) || !isString$1(targetLocale)) { + return unresolving ? NOT_REOSLVED : key; + } + let id = `${targetLocale}__${key}`; + if (!isEmptyObject(overrides)) { + id = `${id}__${JSON.stringify(overrides)}`; + } + let formatter = __numberFormatters.get(id); + if (!formatter) { + formatter = new Intl.NumberFormat(targetLocale, assign$1({}, format2, overrides)); + __numberFormatters.set(id, formatter); + } + return !part ? formatter.format(value) : formatter.formatToParts(value); + } + const NUMBER_FORMAT_OPTIONS_KEYS = [ + "localeMatcher", + "style", + "currency", + "currencyDisplay", + "currencySign", + "useGrouping", + "minimumIntegerDigits", + "minimumFractionDigits", + "maximumFractionDigits", + "minimumSignificantDigits", + "maximumSignificantDigits", + "compactDisplay", + "notation", + "signDisplay", + "unit", + "unitDisplay", + "roundingMode", + "roundingPriority", + "roundingIncrement", + "trailingZeroDisplay" + ]; + function parseNumberArgs(...args) { + const [arg1, arg2, arg3, arg4] = args; + const options = {}; + let overrides = {}; + if (!isNumber(arg1)) { + throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); + } + const value = arg1; + if (isString$1(arg2)) { + options.key = arg2; + } else if (isPlainObject(arg2)) { + Object.keys(arg2).forEach((key) => { + if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) { + overrides[key] = arg2[key]; + } else { + options[key] = arg2[key]; + } + }); + } + if (isString$1(arg3)) { + options.locale = arg3; + } else if (isPlainObject(arg3)) { + overrides = arg3; + } + if (isPlainObject(arg4)) { + overrides = arg4; + } + return [options.key || "", value, options, overrides]; + } + function clearNumberFormat(ctx, locale, format2) { + const context = ctx; + for (const key in format2) { + const id = `${locale}__${key}`; + if (!context.__numberFormatters.has(id)) { + continue; + } + context.__numberFormatters.delete(id); + } + } + { + initFeatureFlags$1(); + } + /*! + * vue-i18n v9.5.0 + * (c) 2023 kazuya kawaguchi + * Released under the MIT License. + */ + const VERSION = "9.5.0"; + function initFeatureFlags() { + if (typeof __VUE_I18N_FULL_INSTALL__ !== "boolean") { + getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true; + } + if (typeof __VUE_I18N_LEGACY_API__ !== "boolean") { + getGlobalThis().__VUE_I18N_LEGACY_API__ = true; + } + if (typeof __INTLIFY_JIT_COMPILATION__ !== "boolean") { + getGlobalThis().__INTLIFY_JIT_COMPILATION__ = false; + } + if (typeof __INTLIFY_DROP_MESSAGE_COMPILER__ !== "boolean") { + getGlobalThis().__INTLIFY_DROP_MESSAGE_COMPILER__ = false; + } + if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") { + getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false; + } + } + const code$1 = CoreWarnCodes.__EXTEND_POINT__; + const inc$1 = incrementer(code$1); + const I18nWarnCodes = { + FALLBACK_TO_ROOT: code$1, + NOT_SUPPORTED_PRESERVE: inc$1(), + NOT_SUPPORTED_FORMATTER: inc$1(), + NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(), + NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(), + COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(), + NOT_FOUND_PARENT_SCOPE: inc$1(), + IGNORE_OBJ_FLATTEN: inc$1(), + NOTICE_DROP_ALLOW_COMPOSITION: inc$1() + // 17 + }; + const warnMessages = { + [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`, + [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`, + [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`, + [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`, + [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`, + [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`, + [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`, + [I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`, + [I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION]: `'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze` + }; + function getWarnMessage(code2, ...args) { + return format$2(warnMessages[code2], ...args); + } + const code = CoreErrorCodes.__EXTEND_POINT__; + const inc = incrementer(code); + const I18nErrorCodes = { + // composer module errors + UNEXPECTED_RETURN_TYPE: code, + // legacy module errors + INVALID_ARGUMENT: inc(), + // i18n module errors + MUST_BE_CALL_SETUP_TOP: inc(), + NOT_INSTALLED: inc(), + NOT_AVAILABLE_IN_LEGACY_MODE: inc(), + // directive module errors + REQUIRED_VALUE: inc(), + INVALID_VALUE: inc(), + // vue-devtools errors + CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(), + NOT_INSTALLED_WITH_PROVIDE: inc(), + // unexpected error + UNEXPECTED_ERROR: inc(), + // not compatible legacy vue-i18n constructor + NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(), + // bridge support vue 2.x only + BRIDGE_SUPPORT_VUE_2_ONLY: inc(), + // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n`` + MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(), + // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly + NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(), + // for enhancement + __EXTEND_POINT__: inc() + // 37 + }; + function createI18nError(code2, ...args) { + return createCompileError(code2, null, {}.NODE_ENV !== "production" ? { messages: errorMessages, args } : void 0); + } + const errorMessages = { + [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: "Unexpected return type in composer", + [I18nErrorCodes.INVALID_ARGUMENT]: "Invalid argument", + [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: "Must be called at the top of a `setup` function", + [I18nErrorCodes.NOT_INSTALLED]: "Need to install with `app.use` function", + [I18nErrorCodes.UNEXPECTED_ERROR]: "Unexpected error", + [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: "Not available in legacy mode", + [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`, + [I18nErrorCodes.INVALID_VALUE]: `Invalid value`, + [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`, + [I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: "Need to install with `provide` function", + [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: "Not compatible legacy VueI18n.", + [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: "vue-i18n-bridge support Vue 2.x only", + [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: "Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode", + [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: "Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly" + }; + const TranslateVNodeSymbol = /* @__PURE__ */ makeSymbol("__translateVNode"); + const DatetimePartsSymbol = /* @__PURE__ */ makeSymbol("__datetimeParts"); + const NumberPartsSymbol = /* @__PURE__ */ makeSymbol("__numberParts"); + const EnableEmitter = /* @__PURE__ */ makeSymbol("__enableEmitter"); + const DisableEmitter = /* @__PURE__ */ makeSymbol("__disableEmitter"); + const SetPluralRulesSymbol = makeSymbol("__setPluralRules"); + const InejctWithOptionSymbol = /* @__PURE__ */ makeSymbol("__injectWithOption"); + const DisposeSymbol = /* @__PURE__ */ makeSymbol("__dispose"); + function handleFlatJson(obj) { + if (!isObject$1(obj)) { + return obj; + } + for (const key in obj) { + if (!hasOwn(obj, key)) { + continue; + } + if (!key.includes(".")) { + if (isObject$1(obj[key])) { + handleFlatJson(obj[key]); + } + } else { + const subKeys = key.split("."); + const lastIndex = subKeys.length - 1; + let currentObj = obj; + let hasStringValue = false; + for (let i = 0; i < lastIndex; i++) { + if (!(subKeys[i] in currentObj)) { + currentObj[subKeys[i]] = {}; + } + if (!isObject$1(currentObj[subKeys[i]])) { + ({}).NODE_ENV !== "production" && warn(getWarnMessage(I18nWarnCodes.IGNORE_OBJ_FLATTEN, { + key: subKeys[i] + })); + hasStringValue = true; + break; + } + currentObj = currentObj[subKeys[i]]; + } + if (!hasStringValue) { + currentObj[subKeys[lastIndex]] = obj[key]; + delete obj[key]; + } + if (isObject$1(currentObj[subKeys[lastIndex]])) { + handleFlatJson(currentObj[subKeys[lastIndex]]); + } + } + } + return obj; + } + function getLocaleMessages(locale, options) { + const { messages, __i18n, messageResolver, flatJson } = options; + const ret = isPlainObject(messages) ? messages : isArray(__i18n) ? {} : { [locale]: {} }; + if (isArray(__i18n)) { + __i18n.forEach((custom) => { + if ("locale" in custom && "resource" in custom) { + const { locale: locale2, resource } = custom; + if (locale2) { + ret[locale2] = ret[locale2] || {}; + deepCopy(resource, ret[locale2]); + } else { + deepCopy(resource, ret); + } + } else { + isString$1(custom) && deepCopy(JSON.parse(custom), ret); + } + }); + } + if (messageResolver == null && flatJson) { + for (const key in ret) { + if (hasOwn(ret, key)) { + handleFlatJson(ret[key]); + } + } + } + return ret; + } + const isNotObjectOrIsArray = (val) => !isObject$1(val) || isArray(val); + function deepCopy(src, des) { + if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) { + throw createI18nError(I18nErrorCodes.INVALID_VALUE); + } + for (const key in src) { + if (hasOwn(src, key)) { + if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) { + des[key] = src[key]; + } else { + deepCopy(src[key], des[key]); + } + } + } + } + function getComponentOptions(instance) { + return instance.type; + } + function adjustI18nResources(gl, options, componentOptions) { + let messages = isObject$1(options.messages) ? options.messages : {}; + if ("__i18nGlobal" in componentOptions) { + messages = getLocaleMessages(gl.locale.value, { + messages, + __i18n: componentOptions.__i18nGlobal + }); + } + const locales = Object.keys(messages); + if (locales.length) { + locales.forEach((locale) => { + gl.mergeLocaleMessage(locale, messages[locale]); + }); + } + { + if (isObject$1(options.datetimeFormats)) { + const locales2 = Object.keys(options.datetimeFormats); + if (locales2.length) { + locales2.forEach((locale) => { + gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]); + }); + } + } + if (isObject$1(options.numberFormats)) { + const locales2 = Object.keys(options.numberFormats); + if (locales2.length) { + locales2.forEach((locale) => { + gl.mergeNumberFormat(locale, options.numberFormats[locale]); + }); + } + } + } + } + function createTextNode(key) { + return vue.createVNode(vue.Text, null, key, 0); + } + const DEVTOOLS_META = "__INTLIFY_META__"; + let composerID = 0; + function defineCoreMissingHandler(missing) { + return (ctx, locale, key, type) => { + return missing(locale, key, vue.getCurrentInstance() || void 0, type); + }; + } + const getMetaInfo = () => { + const instance = vue.getCurrentInstance(); + let meta = null; + return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META]) ? { [DEVTOOLS_META]: meta } : null; + }; + function createComposer(options = {}, VueI18nLegacy) { + const { __root, __injectWithOption } = options; + const _isGlobal = __root === void 0; + let _inheritLocale = isBoolean(options.inheritLocale) ? options.inheritLocale : true; + const _locale = vue.ref( + // prettier-ignore + __root && _inheritLocale ? __root.locale.value : isString$1(options.locale) ? options.locale : DEFAULT_LOCALE + ); + const _fallbackLocale = vue.ref( + // prettier-ignore + __root && _inheritLocale ? __root.fallbackLocale.value : isString$1(options.fallbackLocale) || isArray(options.fallbackLocale) || isPlainObject(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : _locale.value + ); + const _messages = vue.ref(getLocaleMessages(_locale.value, options)); + const _datetimeFormats = vue.ref(isPlainObject(options.datetimeFormats) ? options.datetimeFormats : { [_locale.value]: {} }); + const _numberFormats = vue.ref(isPlainObject(options.numberFormats) ? options.numberFormats : { [_locale.value]: {} }); + let _missingWarn = __root ? __root.missingWarn : isBoolean(options.missingWarn) || isRegExp(options.missingWarn) ? options.missingWarn : true; + let _fallbackWarn = __root ? __root.fallbackWarn : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) ? options.fallbackWarn : true; + let _fallbackRoot = __root ? __root.fallbackRoot : isBoolean(options.fallbackRoot) ? options.fallbackRoot : true; + let _fallbackFormat = !!options.fallbackFormat; + let _missing = isFunction(options.missing) ? options.missing : null; + let _runtimeMissing = isFunction(options.missing) ? defineCoreMissingHandler(options.missing) : null; + let _postTranslation = isFunction(options.postTranslation) ? options.postTranslation : null; + let _warnHtmlMessage = __root ? __root.warnHtmlMessage : isBoolean(options.warnHtmlMessage) ? options.warnHtmlMessage : true; + let _escapeParameter = !!options.escapeParameter; + const _modifiers = __root ? __root.modifiers : isPlainObject(options.modifiers) ? options.modifiers : {}; + let _pluralRules = options.pluralRules || __root && __root.pluralRules; + let _context; + const getCoreContext = () => { + _isGlobal && setFallbackContext(null); + const ctxOptions = { + version: VERSION, + locale: _locale.value, + fallbackLocale: _fallbackLocale.value, + messages: _messages.value, + modifiers: _modifiers, + pluralRules: _pluralRules, + missing: _runtimeMissing === null ? void 0 : _runtimeMissing, + missingWarn: _missingWarn, + fallbackWarn: _fallbackWarn, + fallbackFormat: _fallbackFormat, + unresolving: true, + postTranslation: _postTranslation === null ? void 0 : _postTranslation, + warnHtmlMessage: _warnHtmlMessage, + escapeParameter: _escapeParameter, + messageResolver: options.messageResolver, + messageCompiler: options.messageCompiler, + __meta: { framework: "vue" } + }; + { + ctxOptions.datetimeFormats = _datetimeFormats.value; + ctxOptions.numberFormats = _numberFormats.value; + ctxOptions.__datetimeFormatters = isPlainObject(_context) ? _context.__datetimeFormatters : void 0; + ctxOptions.__numberFormatters = isPlainObject(_context) ? _context.__numberFormatters : void 0; + } + if ({}.NODE_ENV !== "production") { + ctxOptions.__v_emitter = isPlainObject(_context) ? _context.__v_emitter : void 0; + } + const ctx = createCoreContext(ctxOptions); + _isGlobal && setFallbackContext(ctx); + return ctx; + }; + _context = getCoreContext(); + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + function trackReactivityValues() { + return [ + _locale.value, + _fallbackLocale.value, + _messages.value, + _datetimeFormats.value, + _numberFormats.value + ]; + } + const locale = vue.computed({ + get: () => _locale.value, + set: (val) => { + _locale.value = val; + _context.locale = _locale.value; + } + }); + const fallbackLocale = vue.computed({ + get: () => _fallbackLocale.value, + set: (val) => { + _fallbackLocale.value = val; + _context.fallbackLocale = _fallbackLocale.value; + updateFallbackLocale(_context, _locale.value, val); + } + }); + const messages = vue.computed(() => _messages.value); + const datetimeFormats = /* @__PURE__ */ vue.computed(() => _datetimeFormats.value); + const numberFormats = /* @__PURE__ */ vue.computed(() => _numberFormats.value); + function getPostTranslationHandler() { + return isFunction(_postTranslation) ? _postTranslation : null; + } + function setPostTranslationHandler(handler) { + _postTranslation = handler; + _context.postTranslation = handler; + } + function getMissingHandler() { + return _missing; + } + function setMissingHandler(handler) { + if (handler !== null) { + _runtimeMissing = defineCoreMissingHandler(handler); + } + _missing = handler; + _context.missing = _runtimeMissing; + } + function isResolvedTranslateMessage(type, arg) { + return type !== "translate" || !arg.resolvedMessage; + } + const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => { + trackReactivityValues(); + let ret; + try { + if ({}.NODE_ENV !== "production" || __INTLIFY_PROD_DEVTOOLS__) { + setAdditionalMeta(getMetaInfo()); + } + if (!_isGlobal) { + _context.fallbackContext = __root ? getFallbackContext() : void 0; + } + ret = fn(_context); + } finally { + if ({}.NODE_ENV !== "production" || __INTLIFY_PROD_DEVTOOLS__) { + setAdditionalMeta(null); + } + if (!_isGlobal) { + _context.fallbackContext = void 0; + } + } + if (isNumber(ret) && ret === NOT_REOSLVED) { + const [key, arg2] = argumentParser(); + if ({}.NODE_ENV !== "production" && __root && isString$1(key) && isResolvedTranslateMessage(warnType, arg2)) { + if (_fallbackRoot && (isTranslateFallbackWarn(_fallbackWarn, key) || isTranslateMissingWarn(_missingWarn, key))) { + warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, { + key, + type: warnType + })); + } + if ({}.NODE_ENV !== "production") { + const { __v_emitter: emitter } = _context; + if (emitter && _fallbackRoot) { + emitter.emit("fallback", { + type: warnType, + key, + to: "global", + groupId: `${warnType}:${key}` + }); + } + } + } + return __root && _fallbackRoot ? fallbackSuccess(__root) : fallbackFail(key); + } else if (successCondition(ret)) { + return ret; + } else { + throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE); + } + }; + function t2(...args) { + return wrapWithDeps((context) => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), "translate", (root) => Reflect.apply(root.t, root, [...args]), (key) => key, (val) => isString$1(val)); + } + function rt2(...args) { + const [arg1, arg2, arg3] = args; + if (arg3 && !isObject$1(arg3)) { + throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT); + } + return t2(...[arg1, arg2, assign$1({ resolvedMessage: true }, arg3 || {})]); + } + function d(...args) { + return wrapWithDeps((context) => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root) => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$1(val)); + } + function n(...args) { + return wrapWithDeps((context) => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), "number format", (root) => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$1(val)); + } + function normalize(values) { + return values.map((val) => isString$1(val) || isNumber(val) || isBoolean(val) ? createTextNode(String(val)) : val); + } + const interpolate = (val) => val; + const processor = { + normalize, + interpolate, + type: "vnode" + }; + function translateVNode(...args) { + return wrapWithDeps( + (context) => { + let ret; + const _context2 = context; + try { + _context2.processor = processor; + ret = Reflect.apply(translate, null, [_context2, ...args]); + } finally { + _context2.processor = null; + } + return ret; + }, + () => parseTranslateArgs(...args), + "translate", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (root) => root[TranslateVNodeSymbol](...args), + (key) => [createTextNode(key)], + (val) => isArray(val) + ); + } + function numberParts(...args) { + return wrapWithDeps( + (context) => Reflect.apply(number, null, [context, ...args]), + () => parseNumberArgs(...args), + "number format", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (root) => root[NumberPartsSymbol](...args), + () => [], + (val) => isString$1(val) || isArray(val) + ); + } + function datetimeParts(...args) { + return wrapWithDeps( + (context) => Reflect.apply(datetime, null, [context, ...args]), + () => parseDateTimeArgs(...args), + "datetime format", + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (root) => root[DatetimePartsSymbol](...args), + () => [], + (val) => isString$1(val) || isArray(val) + ); + } + function setPluralRules(rules) { + _pluralRules = rules; + _context.pluralRules = _pluralRules; + } + function te2(key, locale2) { + if (!key) + return false; + const targetLocale = isString$1(locale2) ? locale2 : _locale.value; + const message = getLocaleMessage(targetLocale); + return _context.messageResolver(message, key) !== null; + } + function resolveMessages(key) { + let messages2 = null; + const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value); + for (let i = 0; i < locales.length; i++) { + const targetLocaleMessages = _messages.value[locales[i]] || {}; + const messageValue = _context.messageResolver(targetLocaleMessages, key); + if (messageValue != null) { + messages2 = messageValue; + break; + } + } + return messages2; + } + function tm(key) { + const messages2 = resolveMessages(key); + return messages2 != null ? messages2 : __root ? __root.tm(key) || {} : {}; + } + function getLocaleMessage(locale2) { + return _messages.value[locale2] || {}; + } + function setLocaleMessage(locale2, message) { + _messages.value[locale2] = message; + _context.messages = _messages.value; + } + function mergeLocaleMessage(locale2, message) { + _messages.value[locale2] = _messages.value[locale2] || {}; + deepCopy(message, _messages.value[locale2]); + _context.messages = _messages.value; + } + function getDateTimeFormat(locale2) { + return _datetimeFormats.value[locale2] || {}; + } + function setDateTimeFormat(locale2, format2) { + _datetimeFormats.value[locale2] = format2; + _context.datetimeFormats = _datetimeFormats.value; + clearDateTimeFormat(_context, locale2, format2); + } + function mergeDateTimeFormat(locale2, format2) { + _datetimeFormats.value[locale2] = assign$1(_datetimeFormats.value[locale2] || {}, format2); + _context.datetimeFormats = _datetimeFormats.value; + clearDateTimeFormat(_context, locale2, format2); + } + function getNumberFormat(locale2) { + return _numberFormats.value[locale2] || {}; + } + function setNumberFormat(locale2, format2) { + _numberFormats.value[locale2] = format2; + _context.numberFormats = _numberFormats.value; + clearNumberFormat(_context, locale2, format2); + } + function mergeNumberFormat(locale2, format2) { + _numberFormats.value[locale2] = assign$1(_numberFormats.value[locale2] || {}, format2); + _context.numberFormats = _numberFormats.value; + clearNumberFormat(_context, locale2, format2); + } + composerID++; + if (__root && inBrowser) { + vue.watch(__root.locale, (val) => { + if (_inheritLocale) { + _locale.value = val; + _context.locale = val; + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + } + }); + vue.watch(__root.fallbackLocale, (val) => { + if (_inheritLocale) { + _fallbackLocale.value = val; + _context.fallbackLocale = val; + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + } + }); + } + const composer = { + id: composerID, + locale, + fallbackLocale, + get inheritLocale() { + return _inheritLocale; + }, + set inheritLocale(val) { + _inheritLocale = val; + if (val && __root) { + _locale.value = __root.locale.value; + _fallbackLocale.value = __root.fallbackLocale.value; + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + } + }, + get availableLocales() { + return Object.keys(_messages.value).sort(); + }, + messages, + get modifiers() { + return _modifiers; + }, + get pluralRules() { + return _pluralRules || {}; + }, + get isGlobal() { + return _isGlobal; + }, + get missingWarn() { + return _missingWarn; + }, + set missingWarn(val) { + _missingWarn = val; + _context.missingWarn = _missingWarn; + }, + get fallbackWarn() { + return _fallbackWarn; + }, + set fallbackWarn(val) { + _fallbackWarn = val; + _context.fallbackWarn = _fallbackWarn; + }, + get fallbackRoot() { + return _fallbackRoot; + }, + set fallbackRoot(val) { + _fallbackRoot = val; + }, + get fallbackFormat() { + return _fallbackFormat; + }, + set fallbackFormat(val) { + _fallbackFormat = val; + _context.fallbackFormat = _fallbackFormat; + }, + get warnHtmlMessage() { + return _warnHtmlMessage; + }, + set warnHtmlMessage(val) { + _warnHtmlMessage = val; + _context.warnHtmlMessage = val; + }, + get escapeParameter() { + return _escapeParameter; + }, + set escapeParameter(val) { + _escapeParameter = val; + _context.escapeParameter = val; + }, + t: t2, + getLocaleMessage, + setLocaleMessage, + mergeLocaleMessage, + getPostTranslationHandler, + setPostTranslationHandler, + getMissingHandler, + setMissingHandler, + [SetPluralRulesSymbol]: setPluralRules + }; + { + composer.datetimeFormats = datetimeFormats; + composer.numberFormats = numberFormats; + composer.rt = rt2; + composer.te = te2; + composer.tm = tm; + composer.d = d; + composer.n = n; + composer.getDateTimeFormat = getDateTimeFormat; + composer.setDateTimeFormat = setDateTimeFormat; + composer.mergeDateTimeFormat = mergeDateTimeFormat; + composer.getNumberFormat = getNumberFormat; + composer.setNumberFormat = setNumberFormat; + composer.mergeNumberFormat = mergeNumberFormat; + composer[InejctWithOptionSymbol] = __injectWithOption; + composer[TranslateVNodeSymbol] = translateVNode; + composer[DatetimePartsSymbol] = datetimeParts; + composer[NumberPartsSymbol] = numberParts; + } + if ({}.NODE_ENV !== "production") { + composer[EnableEmitter] = (emitter) => { + _context.__v_emitter = emitter; + }; + composer[DisableEmitter] = () => { + _context.__v_emitter = void 0; + }; + } + return composer; + } + const baseFormatProps = { + tag: { + type: [String, Object] + }, + locale: { + type: String + }, + scope: { + type: String, + // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050 + validator: (val) => val === "parent" || val === "global", + default: "parent" + /* ComponentI18nScope */ + }, + i18n: { + type: Object + } + }; + function getInterpolateArg({ slots }, keys) { + if (keys.length === 1 && keys[0] === "default") { + const ret = slots.default ? slots.default() : []; + return ret.reduce((slot, current) => { + return [ + ...slot, + // prettier-ignore + ...current.type === vue.Fragment ? current.children : [current] + ]; + }, []); + } else { + return keys.reduce((arg, key) => { + const slot = slots[key]; + if (slot) { + arg[key] = slot(); + } + return arg; + }, {}); + } + } + function getFragmentableTag(tag) { + return vue.Fragment; + } + /* @__PURE__ */ vue.defineComponent({ + /* eslint-disable */ + name: "i18n-t", + props: assign$1({ + keypath: { + type: String, + required: true + }, + plural: { + type: [Number, String], + // eslint-disable-next-line @typescript-eslint/no-explicit-any + validator: (val) => isNumber(val) || !isNaN(val) + } + }, baseFormatProps), + /* eslint-enable */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setup(props, context) { + const { slots, attrs } = context; + const i18n = props.i18n || useI18n({ + useScope: props.scope, + __useComponent: true + }); + return () => { + const keys = Object.keys(slots).filter((key) => key !== "_"); + const options = {}; + if (props.locale) { + options.locale = props.locale; + } + if (props.plural !== void 0) { + options.plural = isString$1(props.plural) ? +props.plural : props.plural; + } + const arg = getInterpolateArg(context, keys); + const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options); + const assignedAttrs = assign$1({}, attrs); + const tag = isString$1(props.tag) || isObject$1(props.tag) ? props.tag : getFragmentableTag(); + return vue.h(tag, assignedAttrs, children); + }; + } + }); + function isVNode(target) { + return isArray(target) && !isString$1(target[0]); + } + function renderFormatter(props, context, slotKeys, partFormatter) { + const { slots, attrs } = context; + return () => { + const options = { part: true }; + let overrides = {}; + if (props.locale) { + options.locale = props.locale; + } + if (isString$1(props.format)) { + options.key = props.format; + } else if (isObject$1(props.format)) { + if (isString$1(props.format.key)) { + options.key = props.format.key; + } + overrides = Object.keys(props.format).reduce((options2, prop) => { + return slotKeys.includes(prop) ? assign$1({}, options2, { [prop]: props.format[prop] }) : options2; + }, {}); + } + const parts = partFormatter(...[props.value, options, overrides]); + let children = [options.key]; + if (isArray(parts)) { + children = parts.map((part, index) => { + const slot = slots[part.type]; + const node = slot ? slot({ [part.type]: part.value, index, parts }) : [part.value]; + if (isVNode(node)) { + node[0].key = `${part.type}-${index}`; + } + return node; + }); + } else if (isString$1(parts)) { + children = [parts]; + } + const assignedAttrs = assign$1({}, attrs); + const tag = isString$1(props.tag) || isObject$1(props.tag) ? props.tag : getFragmentableTag(); + return vue.h(tag, assignedAttrs, children); + }; + } + /* @__PURE__ */ vue.defineComponent({ + /* eslint-disable */ + name: "i18n-n", + props: assign$1({ + value: { + type: Number, + required: true + }, + format: { + type: [String, Object] + } + }, baseFormatProps), + /* eslint-enable */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setup(props, context) { + const i18n = props.i18n || useI18n({ + useScope: "parent", + __useComponent: true + }); + return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + i18n[NumberPartsSymbol](...args) + )); + } + }); + /* @__PURE__ */ vue.defineComponent({ + /* eslint-disable */ + name: "i18n-d", + props: assign$1({ + value: { + type: [Number, Date], + required: true + }, + format: { + type: [String, Object] + } + }, baseFormatProps), + /* eslint-enable */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setup(props, context) { + const i18n = props.i18n || useI18n({ + useScope: "parent", + __useComponent: true + }); + return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => ( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + i18n[DatetimePartsSymbol](...args) + )); + } + }); + function addTimelineEvent(event, payload) { + } + const I18nInjectionKey = /* @__PURE__ */ makeSymbol("global-vue-i18n"); + function useI18n(options = {}) { + const instance = vue.getCurrentInstance(); + if (instance == null) { + throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP); + } + if (!instance.isCE && instance.appContext.app != null && !instance.appContext.app.__VUE_I18N_SYMBOL__) { + throw createI18nError(I18nErrorCodes.NOT_INSTALLED); + } + const i18n = getI18nInstance(instance); + const gl = getGlobalComposer(i18n); + const componentOptions = getComponentOptions(instance); + const scope = getScope(options, componentOptions); + if (__VUE_I18N_LEGACY_API__) { + if (i18n.mode === "legacy" && !options.__useComponent) { + if (!i18n.allowComposition) { + throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE); + } + return useI18nForLegacy(instance, scope, gl, options); + } + } + if (scope === "global") { + adjustI18nResources(gl, options, componentOptions); + return gl; + } + if (scope === "parent") { + let composer2 = getComposer(i18n, instance, options.__useComponent); + if (composer2 == null) { + if ({}.NODE_ENV !== "production") { + warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE)); + } + composer2 = gl; + } + return composer2; + } + const i18nInternal = i18n; + let composer = i18nInternal.__getInstance(instance); + if (composer == null) { + const composerOptions = assign$1({}, options); + if ("__i18n" in componentOptions) { + composerOptions.__i18n = componentOptions.__i18n; + } + if (gl) { + composerOptions.__root = gl; + } + composer = createComposer(composerOptions); + if (i18nInternal.__composerExtend) { + composer[DisposeSymbol] = i18nInternal.__composerExtend(composer); + } + setupLifeCycle(i18nInternal, instance, composer); + i18nInternal.__setInstance(instance, composer); + } + return composer; + } + function getI18nInstance(instance) { + { + const i18n = vue.inject(!instance.isCE ? instance.appContext.app.__VUE_I18N_SYMBOL__ : I18nInjectionKey); + if (!i18n) { + throw createI18nError(!instance.isCE ? I18nErrorCodes.UNEXPECTED_ERROR : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE); + } + return i18n; + } + } + function getScope(options, componentOptions) { + return isEmptyObject(options) ? "__i18n" in componentOptions ? "local" : "global" : !options.useScope ? "local" : options.useScope; + } + function getGlobalComposer(i18n) { + return i18n.mode === "composition" ? i18n.global : i18n.global.__composer; + } + function getComposer(i18n, target, useComponent = false) { + let composer = null; + const root = target.root; + let current = getParentComponentInstance(target, useComponent); + while (current != null) { + const i18nInternal = i18n; + if (i18n.mode === "composition") { + composer = i18nInternal.__getInstance(current); + } else { + if (__VUE_I18N_LEGACY_API__) { + const vueI18n = i18nInternal.__getInstance(current); + if (vueI18n != null) { + composer = vueI18n.__composer; + if (useComponent && composer && !composer[InejctWithOptionSymbol]) { + composer = null; + } + } + } + } + if (composer != null) { + break; + } + if (root === current) { + break; + } + current = current.parent; + } + return composer; + } + function getParentComponentInstance(target, useComponent = false) { + if (target == null) { + return null; + } + { + return !useComponent ? target.parent : target.vnode.ctx || target.parent; + } + } + function setupLifeCycle(i18n, target, composer) { + let emitter = null; + { + vue.onMounted(() => { + if (({}.NODE_ENV !== "production" || false) && true && target.vnode.el) { + target.vnode.el.__VUE_I18N__ = composer; + emitter = createEmitter(); + const _composer = composer; + _composer[EnableEmitter] && _composer[EnableEmitter](emitter); + emitter.on("*", addTimelineEvent); + } + }, target); + vue.onUnmounted(() => { + const _composer = composer; + if (({}.NODE_ENV !== "production" || false) && true && target.vnode.el && target.vnode.el.__VUE_I18N__) { + emitter && emitter.off("*", addTimelineEvent); + _composer[DisableEmitter] && _composer[DisableEmitter](); + delete target.vnode.el.__VUE_I18N__; + } + i18n.__deleteInstance(target); + const dispose = _composer[DisposeSymbol]; + if (dispose) { + dispose(); + delete _composer[DisposeSymbol]; + } + }, target); + } + } + function useI18nForLegacy(instance, scope, root, options = {}) { + const isLocalScope = scope === "local"; + const _composer = vue.shallowRef(null); + if (isLocalScope && instance.proxy && !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) { + throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION); + } + const _inheritLocale = isBoolean(options.inheritLocale) ? options.inheritLocale : !isString$1(options.locale); + const _locale = vue.ref( + // prettier-ignore + !isLocalScope || _inheritLocale ? root.locale.value : isString$1(options.locale) ? options.locale : DEFAULT_LOCALE + ); + const _fallbackLocale = vue.ref( + // prettier-ignore + !isLocalScope || _inheritLocale ? root.fallbackLocale.value : isString$1(options.fallbackLocale) || isArray(options.fallbackLocale) || isPlainObject(options.fallbackLocale) || options.fallbackLocale === false ? options.fallbackLocale : _locale.value + ); + const _messages = vue.ref(getLocaleMessages(_locale.value, options)); + const _datetimeFormats = vue.ref(isPlainObject(options.datetimeFormats) ? options.datetimeFormats : { [_locale.value]: {} }); + const _numberFormats = vue.ref(isPlainObject(options.numberFormats) ? options.numberFormats : { [_locale.value]: {} }); + const _missingWarn = isLocalScope ? root.missingWarn : isBoolean(options.missingWarn) || isRegExp(options.missingWarn) ? options.missingWarn : true; + const _fallbackWarn = isLocalScope ? root.fallbackWarn : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) ? options.fallbackWarn : true; + const _fallbackRoot = isLocalScope ? root.fallbackRoot : isBoolean(options.fallbackRoot) ? options.fallbackRoot : true; + const _fallbackFormat = !!options.fallbackFormat; + const _missing = isFunction(options.missing) ? options.missing : null; + const _postTranslation = isFunction(options.postTranslation) ? options.postTranslation : null; + const _warnHtmlMessage = isLocalScope ? root.warnHtmlMessage : isBoolean(options.warnHtmlMessage) ? options.warnHtmlMessage : true; + const _escapeParameter = !!options.escapeParameter; + const _modifiers = isLocalScope ? root.modifiers : isPlainObject(options.modifiers) ? options.modifiers : {}; + const _pluralRules = options.pluralRules || isLocalScope && root.pluralRules; + function trackReactivityValues() { + return [ + _locale.value, + _fallbackLocale.value, + _messages.value, + _datetimeFormats.value, + _numberFormats.value + ]; + } + const locale = vue.computed({ + get: () => { + return _composer.value ? _composer.value.locale.value : _locale.value; + }, + set: (val) => { + if (_composer.value) { + _composer.value.locale.value = val; + } + _locale.value = val; + } + }); + const fallbackLocale = vue.computed({ + get: () => { + return _composer.value ? _composer.value.fallbackLocale.value : _fallbackLocale.value; + }, + set: (val) => { + if (_composer.value) { + _composer.value.fallbackLocale.value = val; + } + _fallbackLocale.value = val; + } + }); + const messages = vue.computed(() => { + if (_composer.value) { + return _composer.value.messages.value; + } else { + return _messages.value; + } + }); + const datetimeFormats = vue.computed(() => _datetimeFormats.value); + const numberFormats = vue.computed(() => _numberFormats.value); + function getPostTranslationHandler() { + return _composer.value ? _composer.value.getPostTranslationHandler() : _postTranslation; + } + function setPostTranslationHandler(handler) { + if (_composer.value) { + _composer.value.setPostTranslationHandler(handler); + } + } + function getMissingHandler() { + return _composer.value ? _composer.value.getMissingHandler() : _missing; + } + function setMissingHandler(handler) { + if (_composer.value) { + _composer.value.setMissingHandler(handler); + } + } + function warpWithDeps(fn) { + trackReactivityValues(); + return fn(); + } + function t2(...args) { + return _composer.value ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args])) : warpWithDeps(() => ""); + } + function rt2(...args) { + return _composer.value ? Reflect.apply(_composer.value.rt, null, [...args]) : ""; + } + function d(...args) { + return _composer.value ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args])) : warpWithDeps(() => ""); + } + function n(...args) { + return _composer.value ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args])) : warpWithDeps(() => ""); + } + function tm(key) { + return _composer.value ? _composer.value.tm(key) : {}; + } + function te2(key, locale2) { + return _composer.value ? _composer.value.te(key, locale2) : false; + } + function getLocaleMessage(locale2) { + return _composer.value ? _composer.value.getLocaleMessage(locale2) : {}; + } + function setLocaleMessage(locale2, message) { + if (_composer.value) { + _composer.value.setLocaleMessage(locale2, message); + _messages.value[locale2] = message; + } + } + function mergeLocaleMessage(locale2, message) { + if (_composer.value) { + _composer.value.mergeLocaleMessage(locale2, message); + } + } + function getDateTimeFormat(locale2) { + return _composer.value ? _composer.value.getDateTimeFormat(locale2) : {}; + } + function setDateTimeFormat(locale2, format2) { + if (_composer.value) { + _composer.value.setDateTimeFormat(locale2, format2); + _datetimeFormats.value[locale2] = format2; + } + } + function mergeDateTimeFormat(locale2, format2) { + if (_composer.value) { + _composer.value.mergeDateTimeFormat(locale2, format2); + } + } + function getNumberFormat(locale2) { + return _composer.value ? _composer.value.getNumberFormat(locale2) : {}; + } + function setNumberFormat(locale2, format2) { + if (_composer.value) { + _composer.value.setNumberFormat(locale2, format2); + _numberFormats.value[locale2] = format2; + } + } + function mergeNumberFormat(locale2, format2) { + if (_composer.value) { + _composer.value.mergeNumberFormat(locale2, format2); + } + } + const wrapper = { + get id() { + return _composer.value ? _composer.value.id : -1; + }, + locale, + fallbackLocale, + messages, + datetimeFormats, + numberFormats, + get inheritLocale() { + return _composer.value ? _composer.value.inheritLocale : _inheritLocale; + }, + set inheritLocale(val) { + if (_composer.value) { + _composer.value.inheritLocale = val; + } + }, + get availableLocales() { + return _composer.value ? _composer.value.availableLocales : Object.keys(_messages.value); + }, + get modifiers() { + return _composer.value ? _composer.value.modifiers : _modifiers; + }, + get pluralRules() { + return _composer.value ? _composer.value.pluralRules : _pluralRules; + }, + get isGlobal() { + return _composer.value ? _composer.value.isGlobal : false; + }, + get missingWarn() { + return _composer.value ? _composer.value.missingWarn : _missingWarn; + }, + set missingWarn(val) { + if (_composer.value) { + _composer.value.missingWarn = val; + } + }, + get fallbackWarn() { + return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn; + }, + set fallbackWarn(val) { + if (_composer.value) { + _composer.value.missingWarn = val; + } + }, + get fallbackRoot() { + return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot; + }, + set fallbackRoot(val) { + if (_composer.value) { + _composer.value.fallbackRoot = val; + } + }, + get fallbackFormat() { + return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat; + }, + set fallbackFormat(val) { + if (_composer.value) { + _composer.value.fallbackFormat = val; + } + }, + get warnHtmlMessage() { + return _composer.value ? _composer.value.warnHtmlMessage : _warnHtmlMessage; + }, + set warnHtmlMessage(val) { + if (_composer.value) { + _composer.value.warnHtmlMessage = val; + } + }, + get escapeParameter() { + return _composer.value ? _composer.value.escapeParameter : _escapeParameter; + }, + set escapeParameter(val) { + if (_composer.value) { + _composer.value.escapeParameter = val; + } + }, + t: t2, + getPostTranslationHandler, + setPostTranslationHandler, + getMissingHandler, + setMissingHandler, + rt: rt2, + d, + n, + tm, + te: te2, + getLocaleMessage, + setLocaleMessage, + mergeLocaleMessage, + getDateTimeFormat, + setDateTimeFormat, + mergeDateTimeFormat, + getNumberFormat, + setNumberFormat, + mergeNumberFormat + }; + function sync(composer) { + composer.locale.value = _locale.value; + composer.fallbackLocale.value = _fallbackLocale.value; + Object.keys(_messages.value).forEach((locale2) => { + composer.mergeLocaleMessage(locale2, _messages.value[locale2]); + }); + Object.keys(_datetimeFormats.value).forEach((locale2) => { + composer.mergeDateTimeFormat(locale2, _datetimeFormats.value[locale2]); + }); + Object.keys(_numberFormats.value).forEach((locale2) => { + composer.mergeNumberFormat(locale2, _numberFormats.value[locale2]); + }); + composer.escapeParameter = _escapeParameter; + composer.fallbackFormat = _fallbackFormat; + composer.fallbackRoot = _fallbackRoot; + composer.fallbackWarn = _fallbackWarn; + composer.missingWarn = _missingWarn; + composer.warnHtmlMessage = _warnHtmlMessage; + } + vue.onBeforeMount(() => { + if (instance.proxy == null || instance.proxy.$i18n == null) { + throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY); + } + const composer = _composer.value = instance.proxy.$i18n.__composer; + if (scope === "global") { + _locale.value = composer.locale.value; + _fallbackLocale.value = composer.fallbackLocale.value; + _messages.value = composer.messages.value; + _datetimeFormats.value = composer.datetimeFormats.value; + _numberFormats.value = composer.numberFormats.value; + } else if (isLocalScope) { + sync(composer); + } + }); + return wrapper; + } + { + initFeatureFlags(); + } + if (__INTLIFY_JIT_COMPILATION__) { + registerMessageCompiler(compile); + } else { + registerMessageCompiler(compileToFunction); + } + registerMessageResolver(resolveValue); + registerLocaleFallbacker(fallbackWithLocaleChain); + if ({}.NODE_ENV !== "production" || __INTLIFY_PROD_DEVTOOLS__) { + const target = getGlobalThis(); + target.__INTLIFY__ = true; + setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__); + } + /*! + * Copyright 2022, 2023 Utrecht University + * + * Licensed under the EUPL, Version 1.2 only + * You may not use this work except in compliance with the + Licence. + * A copy of the Licence is provided in the 'LICENCE' file in this project. + * You may also obtain a copy of the Licence at: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Unless required by applicable law or agreed to in + writing, software distributed under the Licence is + distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. + * See the Licence for the specific language governing + permissions and limitations under the Licence. + */ + function t(e) { + return e.target.value; + } + /*! + * Copyright 2022, 2023 Utrecht University + * + * Licensed under the EUPL, Version 1.2 only + * You may not use this work except in compliance with the + Licence. + * A copy of the Licence is provided in the 'LICENCE' file in this project. + * You may also obtain a copy of the Licence at: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Unless required by applicable law or agreed to in + writing, software distributed under the Licence is + distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. + * See the Licence for the specific language governing + permissions and limitations under the Licence. + */ + const re = ["href", "target"], ie = { class: "btn-text" }, ue = ["type", "name", "disabled"], de = { class: "btn-text" }, X = /* @__PURE__ */ vue.defineComponent({ + __name: "BSButton", + props: { + id: { default: null }, + href: { default: void 0 }, + name: { default: void 0 }, + variant: { default: "dark" }, + size: { default: "normal" }, + outlined: { type: Boolean, default: false }, + active: { type: Boolean, default: false }, + disabled: { type: Boolean, default: false }, + loading: { type: Boolean, default: false }, + input: { default: "button" }, + newTab: { type: Boolean, default: false }, + cssClasses: { default: "" } + }, + setup(i) { + const t2 = i, o = vue.computed(() => { + let n = "btn "; + return t2.size === "large" ? n += "btn-lg " : t2.size === "small" && (n += "btn-sm "), t2.outlined ? n += "btn-outline-" : n += "btn-", n += `${t2.variant} `, t2.loading && (n += "btn-loading "), t2.active && (n += "active "), n; + }); + return (n, e) => n.href ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + href: n.href, + class: vue.normalizeClass(o.value), + target: n.newTab ? "_blank" : "_self" + }, [ + vue.createElementVNode("span", ie, [ + vue.renderSlot(n.$slots, "default") + ]) + ], 10, re)) : (vue.openBlock(), vue.createElementBlock("button", { + key: 1, + type: n.input, + class: vue.normalizeClass(o.value), + name: n.name, + disabled: n.disabled + }, [ + vue.createElementVNode("span", de, [ + vue.renderSlot(n.$slots, "default") + ]) + ], 10, ue)); + } + }); + const Ve = ["id", "value", "checked", "onClick"], De = ["for"], Ue = /* @__PURE__ */ vue.defineComponent({ + __name: "BSMultiSelect", + props: { + options: {}, + modelValue: {}, + containerClasses: { default: "" }, + uniqueId: { default: v4().toString() } + }, + emits: ["update:modelValue", "update:model-value"], + setup(i, { emit: t2 }) { + const o = i; + function n(e) { + const l = o.modelValue.includes(e); + let a = [...o.modelValue]; + if (!l) + a.push(e); + else { + const u = a.indexOf(e); + u > -1 && a.splice(u, 1); + } + t2("update:modelValue", a); + } + return (e, l) => (vue.openBlock(), vue.createElementBlock("div", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.options, ([a, u]) => (vue.openBlock(), vue.createElementBlock("div", { + key: a, + class: vue.normalizeClass(["form-check", e.containerClasses]) + }, [ + vue.createElementVNode("input", { + id: "id_" + a + "_" + e.uniqueId, + type: "checkbox", + class: "form-check-input", + value: a, + checked: o.modelValue.includes(a), + onClick: (_) => n(a) + }, null, 8, Ve), + vue.createElementVNode("label", { + class: "form-check-label", + for: +"_" + e.uniqueId + }, vue.toDisplayString(u), 9, De) + ], 2))), 128)) + ])); + } + }), Oe = { + class: "pagination justify-content-center", + role: "navigation", + "aria-label": "pagination" + }, Ie = ["onClick"], Pe = { + key: 1, + class: "page-link" + }, q = /* @__PURE__ */ vue.defineComponent({ + __name: "BSPagination", + props: { + maxPages: {}, + currentpage: {}, + showButtons: { type: Boolean, default: true }, + numOptions: { default: 2 } + }, + emits: ["change-page"], + setup(i, { emit: t2 }) { + const o = i; + function n(u, _, b) { + return Math.min(Math.max(u, _), b); + } + const e = vue.computed(() => { + const u = o.numOptions, _ = o.currentpage - u, b = o.currentpage + u + 1, E = [], P = []; + let D; + for (let y = 1; y <= o.maxPages; y++) + (y === 1 || y === o.maxPages || y >= _ && y < b) && E.push(y); + for (const y of E) + D && (y - D === 2 ? P.push(D + 1) : y - D !== 1 && P.push(-42)), P.push(y), D = y; + return P; + }); + function l(u) { + u = n(u, 1, o.maxPages), t2("change-page", u); + } + const { t: a } = useI18n(); + return (u, _) => (vue.openBlock(), vue.createElementBlock("ul", Oe, [ + vue.createElementVNode("li", { + class: vue.normalizeClass(["page-item page-button", u.currentpage === 1 ? "disabled" : ""]) + }, [ + u.showButtons ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + class: "page-link", + onClick: _[0] || (_[0] = (b) => l(u.currentpage - 1)) + }, vue.toDisplayString(vue.unref(a)("previous")), 1)) : vue.createCommentVNode("", true) + ], 2), + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.value, (b) => (vue.openBlock(), vue.createElementBlock("li", { + key: b, + class: vue.normalizeClass([ + "page-item", + (b === -42 ? "disabled page-ellipsis " : "") + (b === u.currentpage ? "active" : "") + ]) + }, [ + b !== -42 ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + class: "page-link", + onClick: (E) => l(b) + }, vue.toDisplayString(b), 9, Ie)) : (vue.openBlock(), vue.createElementBlock("span", Pe, "…")) + ], 2))), 128)), + vue.createElementVNode("li", { + class: vue.normalizeClass(["page-item page-button", u.currentpage >= u.maxPages ? "disabled" : ""]) + }, [ + u.showButtons ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + class: "page-link", + onClick: _[1] || (_[1] = (b) => l(u.currentpage + 1)) + }, vue.toDisplayString(vue.unref(a)("next")), 1)) : vue.createCommentVNode("", true) + ], 2) + ])); + } + }); + function G(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + next: (o) => { + const { normalize: n } = o; + return n(["Next"]); + }, + previous: (o) => { + const { normalize: n } = o; + return n(["Previous"]); + } + }, + nl: { + next: (o) => { + const { normalize: n } = o; + return n(["Volgende"]); + }, + previous: (o) => { + const { normalize: n } = o; + return n(["Vorige"]); + } + } + } + }); + } + typeof G == "function" && G(q); + const Ee = ["id", "value", "checked", "onClick"], Le = ["for"], Ne = /* @__PURE__ */ vue.defineComponent({ + __name: "BSRadioSelect", + props: { + options: {}, + modelValue: {}, + containerClasses: { default: "" } + }, + emits: ["update:modelValue", "update:model-value"], + setup(i, { emit: t2 }) { + return (o, n) => (vue.openBlock(), vue.createElementBlock("div", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(o.options, ([e, l]) => (vue.openBlock(), vue.createElementBlock("div", { + key: e, + class: vue.normalizeClass(["form-check", o.containerClasses]) + }, [ + vue.createElementVNode("input", { + id: "id_" + e, + type: "radio", + class: "form-check-input", + value: e, + checked: o.modelValue == e, + onClick: (a) => t2("update:model-value", e) + }, null, 8, Ee), + vue.createElementVNode("label", { + class: "form-check-label", + for: "id_" + e + }, vue.toDisplayString(l), 9, Le) + ], 2))), 128)) + ])); + } + }), Me = { class: "uu-sidebar" }, Te = ["data-bs-target"], qe = ["id"], Re = { class: "uu-sidebar-content" }, je = /* @__PURE__ */ vue.defineComponent({ + __name: "BSSidebar", + props: { + id: { default: null }, + placement: { default: "left" }, + mobilePlacement: { default: "top" }, + stickySidebar: { type: Boolean, default: false }, + mobileStickySidebar: { type: Boolean, default: false } + }, + setup(i) { + const t2 = i, o = vue.computed(() => t2.id !== null ? t2.id : "id_" + v4().toString().replace(/-/g, "")), n = vue.computed(() => { + let e = ""; + return t2.placement === "right" && (e += "uu-sidebar-right "), t2.mobilePlacement === "bottom" && (e += "uu-sidebar-mobile-bottom "), t2.stickySidebar && (e += "uu-sidebar-sticky "), t2.mobileStickySidebar && (e += "uu-sidebar-mobile-sticky "), e; + }); + return (e, l) => (vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["uu-sidebar-container", n.value]) + }, [ + vue.createElementVNode("aside", Me, [ + vue.createElementVNode("button", { + class: "uu-sidebar-toggle", + type: "button", + "data-bs-toggle": "collapse", + "data-bs-target": "#" + o.value, + "aria-expanded": "false" + }, [ + vue.renderSlot(e.$slots, "sidebar-button") + ], 8, Te), + vue.createElementVNode("div", { + id: o.value, + class: "uu-sidebar-collapse collapse" + }, [ + vue.renderSlot(e.$slots, "sidebar") + ], 8, qe) + ]), + vue.createElementVNode("div", Re, [ + vue.renderSlot(e.$slots, "default") + ]) + ], 2)); + } + }), Fe = { class: "uu-list-filter" }, Ze = { class: "uu-list-filter-label" }, Ge = { + key: 2, + class: "uu-list-filter-field" + }, Qe = ["value"], We = /* @__PURE__ */ vue.defineComponent({ + __name: "Filter", + props: { + filter: {}, + value: {} + }, + emits: ["update:value"], + setup(i, { emit: t$1 }) { + return (o, n) => (vue.openBlock(), vue.createElementBlock("div", Fe, [ + vue.createElementVNode("div", Ze, vue.toDisplayString(o.filter.label), 1), + o.filter.type === "checkbox" ? (vue.openBlock(), vue.createBlock(vue.unref(Ue), { + key: 0, + options: o.filter.options ?? [], + "model-value": o.value ?? [], + "onUpdate:modelValue": n[0] || (n[0] = (e) => t$1("update:value", e)) + }, null, 8, ["options", "model-value"])) : vue.createCommentVNode("", true), + o.filter.type === "radio" ? (vue.openBlock(), vue.createBlock(vue.unref(Ne), { + key: 1, + options: o.filter.options ?? [], + "model-value": o.value ?? "", + "onUpdate:modelValue": n[1] || (n[1] = (e) => t$1("update:value", e)) + }, null, 8, ["options", "model-value"])) : vue.createCommentVNode("", true), + o.filter.type === "date" ? (vue.openBlock(), vue.createElementBlock("div", Ge, [ + vue.createElementVNode("input", { + type: "date", + value: o.value, + class: "form-control", + onInput: n[2] || (n[2] = (e) => t$1("update:value", vue.unref(t)(e))) + }, null, 40, Qe) + ])) : vue.createCommentVNode("", true) + ])); + } + }), Ae = { key: 0 }, Y = /* @__PURE__ */ vue.defineComponent({ + __name: "FilterBar", + props: { + filters: {}, + filterValues: {} + }, + emits: ["update:filter-values"], + setup(i, { emit: t2 }) { + const o = i; + function n(e, l) { + let a = { ...o.filterValues }; + a[e] = l, t2("update:filter-values", a); + } + return (e, l) => e.filters ? (vue.openBlock(), vue.createElementBlock("div", Ae, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.filters, (a) => (vue.openBlock(), vue.createBlock(We, { + key: a.field, + filter: a, + value: e.filterValues[a.field] ?? void 0, + "onUpdate:value": (u) => n(a.field, u) + }, null, 8, ["filter", "value", "onUpdate:value"]))), 128)) + ])) : vue.createCommentVNode("", true); + } + }), He = { class: "search" }, Je = ["value", "placeholder"], R = /* @__PURE__ */ vue.defineComponent({ + __name: "SearchControl", + props: { + modelValue: {} + }, + emits: ["update:modelValue", "update:model-value"], + setup(i, { emit: t$1 }) { + function o(a, u = 500) { + let _; + return (...b) => { + clearTimeout(_), _ = setTimeout(() => { + a.apply(this, b); + }, u); + }; + } + function n(a) { + t$1("update:modelValue", a); + } + const e = o((a) => n(a)), { t: l } = useI18n(); + return (a, u) => (vue.openBlock(), vue.createElementBlock("div", He, [ + vue.createElementVNode("input", { + id: "search", + class: "form-control", + value: a.modelValue, + placeholder: vue.unref(l)("placeholder"), + onInput: u[0] || (u[0] = (_) => vue.unref(e)(vue.unref(t)(_))) + }, null, 40, Je) + ])); + } + }); + function Q(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + placeholder: (o) => { + const { normalize: n } = o; + return n(["Search"]); + } + }, + nl: { + placeholder: (o) => { + const { normalize: n } = o; + return n(["Zoeken"]); + } + } + } + }); + } + typeof Q == "function" && Q(R); + const Ke = ["value"], Xe = ["value"], x = /* @__PURE__ */ vue.defineComponent({ + __name: "PageSizeControl", + props: { + pageSize: {}, + pageSizeOptions: {} + }, + emits: ["update:pageSize", "update:page-size"], + setup(i, { emit: t$1 }) { + const o = i; + function n(e) { + if (typeof e == "string") + try { + e = Number(e); + } catch { + e = o.pageSizeOptions[0] ?? 10; + } + t$1("update:pageSize", e); + } + return (e, l) => (vue.openBlock(), vue.createElementBlock("select", { + value: e.pageSize, + class: "form-select", + onChange: l[0] || (l[0] = (a) => n(vue.unref(t)(a))) + }, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.pageSizeOptions, (a) => (vue.openBlock(), vue.createElementBlock("option", { + key: a, + value: a + }, vue.toDisplayString(a), 9, Xe))), 128)) + ], 40, Ke)); + } + }), Ye = ["value"], xe = ["value"], ee = /* @__PURE__ */ vue.defineComponent({ + __name: "SortControl", + props: { + currentSort: {}, + sortOptions: {} + }, + emits: ["update:current-sort", "update:currentSort"], + setup(i, { emit: t$1 }) { + return (o, n) => (vue.openBlock(), vue.createElementBlock("select", { + value: o.currentSort, + class: "form-select", + onChange: n[0] || (n[0] = (e) => o.$emit("update:current-sort", vue.unref(t)(e).trim())) + }, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(o.sortOptions, ({ field: e, label: l }) => (vue.openBlock(), vue.createElementBlock("option", { + key: e, + value: e + }, vue.toDisplayString(l), 9, xe))), 128)) + ], 40, Ye)); + } + }), et = { key: 0 }, j = /* @__PURE__ */ vue.defineComponent({ + __name: "SearchResultNum", + props: { + searchQuery: {}, + pageNum: {}, + totalNum: {} + }, + setup(i) { + const { t: t2 } = useI18n(); + return (o, n) => (vue.openBlock(), vue.createElementBlock("div", null, [ + o.searchQuery ? (vue.openBlock(), vue.createElementBlock("span", et, vue.toDisplayString(vue.unref(t2)("search", { query: o.searchQuery })), 1)) : vue.createCommentVNode("", true), + vue.createTextVNode(" " + vue.toDisplayString(vue.unref(t2)("showing", { + pageNum: o.pageNum, + totalNum: Intl.NumberFormat().format(o.totalNum) + })), 1) + ])); + } + }); + function W(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + search: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n(["Search result: ", e(l("query")), ","]); + }, + showing: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n(["showing ", e(l("pageNum")), " of ", e(l("totalNum")), " results"]); + } + }, + nl: { + search: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n(["Zoekresultaat: ", e(l("query")), ","]); + }, + showing: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n([e(l("pageNum")), " van ", e(l("totalNum")), " getoond"]); + } + } + } + }); + } + typeof W == "function" && W(j); + const tt = { class: "uu-container" }, nt = { class: "uu-list" }, ot = { class: "uu-list-controls" }, at = { + key: 1, + class: "uu-list-order-control" + }, st = { class: "uu-list-page-size-control" }, lt = { + key: 0, + class: "uu-list-filters" + }, rt = { class: "uu-list-content" }, it = /* @__PURE__ */ vue.defineComponent({ + __name: "Default", + props: { + data: {}, + isLoading: { type: Boolean }, + totalData: {}, + currentPage: {}, + searchEnabled: { type: Boolean }, + search: {}, + sortEnabled: { type: Boolean }, + currentSort: {}, + sortOptions: {}, + pageSize: {}, + pageSizeOptions: {}, + filtersEnabled: { type: Boolean }, + filters: {}, + filterValues: {} + }, + emits: ["update:current-page", "update:search", "update:current-sort", "update:page-size", "update:filter-values"], + setup(i, { emit: t2 }) { + const o = i, n = vue.computed(() => Math.ceil(o.totalData / o.pageSize)); + return (e, l) => { + var a; + return vue.openBlock(), vue.createElementBlock("div", tt, [ + vue.createElementVNode("div", nt, [ + vue.createElementVNode("div", ot, [ + e.searchEnabled ? (vue.openBlock(), vue.createBlock(R, { + key: 0, + "model-value": e.search, + class: "uu-list-search-control", + "onUpdate:modelValue": l[0] || (l[0] = (u) => e.$emit("update:search", u)) + }, null, 8, ["model-value"])) : vue.createCommentVNode("", true), + vue.createVNode(j, { + "search-query": e.search, + "page-num": ((a = e.data) == null ? void 0 : a.length) ?? 0, + "total-num": e.totalData, + class: "uu-list-search-text-control" + }, null, 8, ["search-query", "page-num", "total-num"]), + e.sortEnabled ? (vue.openBlock(), vue.createElementBlock("div", at, [ + vue.createVNode(ee, { + "current-sort": e.currentSort, + "sort-options": e.sortOptions, + "onUpdate:currentSort": l[1] || (l[1] = (u) => t2("update:current-sort", u)) + }, null, 8, ["current-sort", "sort-options"]) + ])) : vue.createCommentVNode("", true), + vue.createElementVNode("div", st, [ + vue.createVNode(x, { + "page-size-options": e.pageSizeOptions, + "page-size": e.pageSize, + "onUpdate:pageSize": l[2] || (l[2] = (u) => t2("update:page-size", u)) + }, null, 8, ["page-size-options", "page-size"]) + ]) + ]), + e.filtersEnabled ? (vue.openBlock(), vue.createElementBlock("div", lt, [ + vue.createVNode(Y, { + filters: e.filters, + "filter-values": e.filterValues, + "onUpdate:filterValues": l[3] || (l[3] = (u) => e.$emit("update:filter-values", u)) + }, null, 8, ["filters", "filter-values"]) + ])) : vue.createCommentVNode("", true), + vue.createElementVNode("div", rt, [ + vue.renderSlot(e.$slots, "data", { + data: e.data, + isLoading: e.isLoading + }), + vue.createElementVNode("div", null, [ + e.data ? (vue.openBlock(), vue.createBlock(vue.unref(q), { + key: 0, + "max-pages": n.value, + currentpage: e.currentPage, + onChangePage: l[4] || (l[4] = (u) => e.$emit("update:current-page", u)) + }, null, 8, ["max-pages", "currentpage"])) : vue.createCommentVNode("", true) + ]) + ]) + ]) + ]); + }; + } + }), ut = { class: "w-100 d-flex align-items-center gap-3 uu-list-controls" }, dt = { + key: 0, + class: "ms-auto" + }, te = /* @__PURE__ */ vue.defineComponent({ + __name: "Sidebar", + props: { + data: {}, + isLoading: { type: Boolean }, + totalData: {}, + currentPage: {}, + searchEnabled: { type: Boolean }, + search: {}, + sortEnabled: { type: Boolean }, + currentSort: {}, + sortOptions: {}, + pageSize: {}, + pageSizeOptions: {}, + filtersEnabled: { type: Boolean }, + filters: {}, + filterValues: {} + }, + emits: ["update:current-page", "update:search", "update:current-sort", "update:page-size", "update:filter-values"], + setup(i, { emit: t2 }) { + const o = i, n = vue.computed(() => Math.ceil(o.totalData / o.pageSize)); + return (e, l) => (vue.openBlock(), vue.createBlock(vue.unref(je), { class: "uu-list-sidebar" }, { + sidebar: vue.withCtx(() => [ + e.searchEnabled ? (vue.openBlock(), vue.createBlock(R, { + key: 0, + "model-value": e.search, + "onUpdate:modelValue": l[0] || (l[0] = (a) => e.$emit("update:search", a)) + }, null, 8, ["model-value"])) : vue.createCommentVNode("", true), + e.filters ? (vue.openBlock(), vue.createBlock(Y, { + key: 1, + filters: e.filters, + "filter-values": e.filterValues, + "onUpdate:filterValues": l[1] || (l[1] = (a) => e.$emit("update:filter-values", a)) + }, null, 8, ["filters", "filter-values"])) : vue.createCommentVNode("", true) + ]), + default: vue.withCtx(() => { + var a; + return [ + vue.createElementVNode("div", null, [ + vue.createElementVNode("div", ut, [ + vue.createVNode(j, { + "search-query": e.search, + "page-num": ((a = e.data) == null ? void 0 : a.length) ?? 0, + "total-num": e.totalData + }, null, 8, ["search-query", "page-num", "total-num"]), + e.sortEnabled ? (vue.openBlock(), vue.createElementBlock("div", dt, [ + vue.createVNode(ee, { + "current-sort": e.currentSort, + "sort-options": e.sortOptions, + "onUpdate:currentSort": l[2] || (l[2] = (u) => t2("update:current-sort", u)) + }, null, 8, ["current-sort", "sort-options"]) + ])) : vue.createCommentVNode("", true), + vue.createElementVNode("div", null, [ + vue.createVNode(x, { + "page-size-options": e.pageSizeOptions, + "page-size": e.pageSize, + "onUpdate:pageSize": l[3] || (l[3] = (u) => t2("update:page-size", u)) + }, null, 8, ["page-size-options", "page-size"]) + ]) + ]), + vue.renderSlot(e.$slots, "data", { + data: e.data, + isLoading: e.isLoading + }), + vue.createElementVNode("div", null, [ + e.data ? (vue.openBlock(), vue.createBlock(vue.unref(q), { + key: 0, + "max-pages": n.value, + currentpage: e.currentPage, + onChangePage: l[4] || (l[4] = (u) => e.$emit("update:current-page", u)) + }, null, 8, ["max-pages", "currentpage"])) : vue.createCommentVNode("", true) + ]) + ]) + ]; + }), + _: 3 + })); + } + }); + function A(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + loading: (o) => { + const { normalize: n } = o; + return n(["Loading...."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["No items to display"]); + } + }, + nl: { + loading: (o) => { + const { normalize: n } = o; + return n(["Gegevens worden laden..."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["Geen gegevens om te tonen"]); + } + } + } + }); + } + typeof A == "function" && A(te); + const pt = /* @__PURE__ */ vue.defineComponent({ + __name: "DebugVisualizer", + props: { + data: {}, + isLoading: { type: Boolean, default: false } + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("pre", null, vue.toDisplayString(t2.data), 1)); + } + }), ct = /* @__PURE__ */ vue.defineComponent({ + __name: "UUList", + props: { + container: { default: "default" }, + data: {}, + isLoading: { type: Boolean, default: false }, + totalData: {}, + currentPage: {}, + searchEnabled: { type: Boolean, default: false }, + search: { default: "" }, + sortEnabled: { type: Boolean, default: false }, + currentSort: { default: "" }, + sortOptions: { default: () => [] }, + pageSize: { default: 10 }, + pageSizeOptions: { default: () => [10, 25, 50] }, + filtersEnabled: { type: Boolean, default: false }, + filters: {}, + filterValues: {} + }, + emits: ["update:current-page", "update:search", "update:current-sort", "update:page-size", "update:filter-values"], + setup(i, { emit: t2 }) { + const o = i, n = vue.computed(() => { + switch (o.container) { + case "default": + return it; + case "sidebar": + return te; + } + }); + return (e, l) => (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(n.value), { + "is-loading": e.isLoading, + data: e.data, + "total-data": e.totalData, + "search-enabled": e.searchEnabled, + search: e.search, + "sort-enabled": e.sortEnabled, + "current-sort": e.currentSort, + "current-page": e.currentPage, + "page-size-options": e.pageSizeOptions, + "sort-options": e.sortOptions, + "page-size": e.pageSize, + "filters-enabled": e.filtersEnabled, + filters: e.filters, + "filter-values": e.filterValues, + "onUpdate:search": l[0] || (l[0] = (a) => t2("update:search", a)), + "onUpdate:currentSort": l[1] || (l[1] = (a) => t2("update:current-sort", a)), + "onUpdate:pageSize": l[2] || (l[2] = (a) => t2("update:page-size", a)), + "onUpdate:currentPage": l[3] || (l[3] = (a) => t2("update:current-page", a)), + "onUpdate:filterValues": l[4] || (l[4] = (a) => t2("update:filter-values", a)) + }, { + data: vue.withCtx(({ data: a, isLoading: u }) => [ + vue.renderSlot(e.$slots, "data", { + data: a, + isLoading: u + }, () => [ + vue.createVNode(pt, { + data: a, + "is-loading": u + }, null, 8, ["data", "is-loading"]) + ]) + ]), + _: 3 + }, 40, ["is-loading", "data", "total-data", "search-enabled", "search", "sort-enabled", "current-sort", "current-page", "page-size-options", "sort-options", "page-size", "filters-enabled", "filters", "filter-values"])); + } + }), mt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVString", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("span", { + class: vue.normalizeClass(t2.column.classes) + }, vue.toDisplayString(t2.item[t2.column.field]), 3)); + } + }), ft = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVDate", + props: { + item: {}, + column: {} + }, + setup(i) { + const t2 = i, o = vue.computed(() => { + let n = null; + try { + n = new Date(t2.item[t2.column.field]); + } catch (a) { + return console.error(a), ""; + } + let e; + if (t2.column.language !== void 0 && t2.column.language !== null && (e = t2.column.language), typeof t2.column.format == "string") { + let a = null; + switch (t2.column.format) { + case "date": + a = { + dateStyle: "medium" + }; + break; + case "time": + a = { + timeStyle: "short" + }; + break; + case "datetime": + a = { + dateStyle: "medium", + timeStyle: "short" + }; + break; + } + return new Intl.DateTimeFormat(e, a).format(n); + } + return typeof t2.column.format == "object" && t2.column.format !== null ? new Intl.DateTimeFormat( + e, + t2.column.format + ).format(n) : new Intl.DateTimeFormat(e).format(n); + }); + return (n, e) => (vue.openBlock(), vue.createElementBlock("span", { + class: vue.normalizeClass(n.column.classes) + }, vue.toDisplayString(o.value), 3)); + } + }), gt = { key: 0 }, ht = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVButton", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => t2.item[t2.column.field] ? (vue.openBlock(), vue.createElementBlock("span", gt, [ + vue.createVNode(vue.unref(X), { + href: t2.item[t2.column.field].link, + "css-classes": t2.item[t2.column.field].classes, + "new-tab": t2.item[t2.column.field].new_tab, + size: t2.column.size, + variant: t2.column.variant + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString(t2.item[t2.column.field].text), 1) + ]), + _: 1 + }, 8, ["href", "css-classes", "new-tab", "size", "variant"]) + ])) : vue.createCommentVNode("", true); + } + }), vt = { key: 0 }, bt = ["href", "target"], _t = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVLink", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => t2.item[t2.column.field] ? (vue.openBlock(), vue.createElementBlock("span", vt, [ + vue.createElementVNode("a", { + href: t2.item[t2.column.field].link, + class: vue.normalizeClass(t2.column.classes), + target: t2.item[t2.column.field].new_tab ? "_blank" : "_self" + }, vue.toDisplayString(t2.item[t2.column.field].text), 11, bt) + ])) : vue.createCommentVNode("", true); + } + }), yt = ["innerHTML"], $t = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVHTML", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("span", { + innerHTML: t2.item[t2.column.field] + }, null, 8, yt)); + } + }), kt = { + key: 0, + class: "dropdown" + }, zt = /* @__PURE__ */ vue.createStaticVNode('', 1), St = { class: "dropdown-menu" }, wt = { + key: 0, + class: "dropdown-divider" + }, Ct = ["href", "target"], Bt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVActions", + props: { + item: {}, + column: {} + }, + setup(i) { + const t2 = i, o = vue.computed(() => t2.item[t2.column.field].entries()); + return (n, e) => o.value ? (vue.openBlock(), vue.createElementBlock("div", kt, [ + zt, + vue.createElementVNode("ul", St, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(o.value, ([l, a]) => (vue.openBlock(), vue.createElementBlock("li", { key: l }, [ + a.divider ? (vue.openBlock(), vue.createElementBlock("hr", wt)) : (vue.openBlock(), vue.createElementBlock("a", { + key: 1, + href: a.link, + class: vue.normalizeClass(["dropdown-item", a.classes ?? ""]), + target: a.new_tab ? "_blank" : "_self" + }, vue.toDisplayString(a.text), 11, Ct)) + ]))), 128)) + ]) + ])) : vue.createCommentVNode("", true); + } + }), Vt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVColumn", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => t2.column.type == "string" ? (vue.openBlock(), vue.createBlock(mt, { + key: 0, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "date" ? (vue.openBlock(), vue.createBlock(ft, { + key: 1, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "button" ? (vue.openBlock(), vue.createBlock(ht, { + key: 2, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "link" ? (vue.openBlock(), vue.createBlock(_t, { + key: 3, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "html" ? (vue.openBlock(), vue.createBlock($t, { + key: 4, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "actions" ? (vue.openBlock(), vue.createBlock(Bt, { + key: 5, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : vue.createCommentVNode("", true); + } + }), Dt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVRow", + props: { + item: {}, + columns: {} + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("tr", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(t2.columns, (n) => (vue.openBlock(), vue.createElementBlock("td", { + key: n.field, + class: "align-middle" + }, [ + vue.createVNode(Vt, { + column: n, + item: t2.item + }, null, 8, ["column", "item"]) + ]))), 128)) + ])); + } + }), Ut = { + key: 0, + class: "alert alert-info w-100" + }, Ot = { key: 0 }, It = { key: 1 }, Pt = ["colspan"], ne = /* @__PURE__ */ vue.defineComponent({ + __name: "DataDefinedVisualizer", + props: { + data: { default: null }, + columns: {}, + isLoading: { type: Boolean, default: false } + }, + setup(i) { + const t2 = i, o = vue.computed(() => t2.data === null || t2.data === void 0 || t2.data.length === 0), { t: n } = useI18n(); + return (e, l) => e.isLoading && o.value ? (vue.openBlock(), vue.createElementBlock("div", Ut, vue.toDisplayString(vue.unref(n)("loading")), 1)) : (vue.openBlock(), vue.createElementBlock("table", { + key: 1, + class: vue.normalizeClass(["table", e.isLoading ? "loading" : ""]) + }, [ + vue.createElementVNode("thead", null, [ + vue.createElementVNode("tr", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.columns, (a) => (vue.openBlock(), vue.createElementBlock("th", { + key: a.field + }, vue.toDisplayString(a.label), 1))), 128)) + ]) + ]), + o.value ? (vue.openBlock(), vue.createElementBlock("tbody", It, [ + vue.createElementVNode("tr", null, [ + vue.createElementVNode("td", { + colspan: e.columns.length + }, vue.toDisplayString(vue.unref(n)("no_data")), 9, Pt) + ]) + ])) : (vue.openBlock(), vue.createElementBlock("tbody", Ot, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.data, (a) => (vue.openBlock(), vue.createBlock(Dt, { + key: a.id, + item: a, + columns: e.columns + }, null, 8, ["item", "columns"]))), 128)) + ])) + ], 2)); + } + }); + function H(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + loading: (o) => { + const { normalize: n } = o; + return n(["Loading...."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["No items to display"]); + } + }, + nl: { + loading: (o) => { + const { normalize: n } = o; + return n(["Gegevens worden laden..."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["Geen gegevens om te tonen"]); + } + } + } + }); + } + typeof H == "function" && H(ne); + const Ft = /* @__PURE__ */ vue.defineComponent({ + __name: "DSCList", + props: { + config: {} + }, + setup(i) { + const t2 = i, o = vue.ref(t2.config.pageSize), n = vue.ref(1), e = vue.ref(""), l = vue.ref("id"), a = vue.ref(true); + function u() { + var f; + let p = {}; + return (f = t2.config.filters) == null || f.forEach(($) => { + var O; + if ($.initial) { + p[$.field] = $.initial; + return; + } + switch ($.type) { + case "date": + p[$.field] = null; + break; + case "checkbox": + p[$.field] = []; + break; + case "radio": + ((O = $.options) == null ? void 0 : O.length) != 0 && $.options && (p[$.field] = $.options[0][0]); + break; + } + }), p; + } + const _ = vue.ref(u()); + let b = vue.ref(null); + const E = vue.computed(() => { + let p = []; + p.push("page_size=" + encodeURIComponent(o.value)); + for (const [f, $] of Object.entries(_.value)) + $ != null && (typeof $ == "object" ? $.forEach( + (O) => p.push(f + "=" + encodeURIComponent(O)) + ) : p.push(f + "=" + encodeURIComponent($))); + return e.value && p.push("search=" + encodeURIComponent(e.value)), p.push("ordering=" + encodeURIComponent(l.value)), n.value = 1, p; + }), P = vue.computed(() => { + let p = E.value, f = "page=" + encodeURIComponent(n.value); + return p.length !== 0 && (f = "&" + f), "?" + p.join("&") + f; + }), D = vue.computed(() => { + let p = new URL(window.location.protocol + "//" + window.location.host); + return p.pathname = t2.config.dataUri, p.search = P.value, console.log(p.toString()), p.toString(); + }); + vue.watch(D, () => { + F(); + }); + const y = vue.ref(null); + function F() { + y.value && y.value.abort(), y.value = new AbortController(), a.value = true, fetch(D.value, { signal: y.value.signal }).then((p) => { + p.json().then((f) => { + b.value = f, a.value = false, y.value = null; + }); + }).catch((p) => { + console.log(p); + }); + } + return vue.onMounted(() => { + F(); + }), (p, f) => { + var $, O, Z; + return vue.openBlock(), vue.createBlock(ct, { + "is-loading": a.value, + data: (($ = vue.unref(b)) == null ? void 0 : $.results) ?? void 0, + "total-data": ((O = vue.unref(b)) == null ? void 0 : O.count) ?? 0, + "search-enabled": p.config.searchEnabled, + search: e.value, + "sort-enabled": p.config.sortEnabled, + "current-sort": l.value, + "page-size-options": p.config.pageSizeOptions, + "sort-options": p.config.sortOptions ?? [], + "page-size": ((Z = vue.unref(b)) == null ? void 0 : Z.page_size) ?? 10, + "current-page": n.value, + "filters-enabled": p.config.filtersEnabled, + filters: p.config.filters ?? [], + "filter-values": _.value, + container: p.config.container, + "onUpdate:search": f[0] || (f[0] = (C) => e.value = C), + "onUpdate:currentSort": f[1] || (f[1] = (C) => l.value = C), + "onUpdate:pageSize": f[2] || (f[2] = (C) => o.value = C), + "onUpdate:currentPage": f[3] || (f[3] = (C) => n.value = C), + "onUpdate:filterValues": f[4] || (f[4] = (C) => _.value = C) + }, { + data: vue.withCtx(({ data: C, isLoading: oe }) => [ + vue.createVNode(ne, { + data: C, + columns: p.config.columns, + "is-loading": oe + }, null, 8, ["data", "columns", "is-loading"]) + ]), + _: 1 + }, 8, ["is-loading", "data", "total-data", "search-enabled", "search", "sort-enabled", "current-sort", "page-size-options", "sort-options", "page-size", "current-page", "filters-enabled", "filters", "filter-values", "container"]); + }; + } + }); + const style = ""; + return Ft; +}(Vue); diff --git a/src/cdh/vue3/static/cdh.vue3/components/uu-list/style.css b/src/cdh/vue3/static/cdh.vue3/components/uu-list/style.css new file mode 100644 index 00000000..393f0ebd --- /dev/null +++ b/src/cdh/vue3/static/cdh.vue3/components/uu-list/style.css @@ -0,0 +1,20 @@ +/*! +* Copyright 2022, 2023 Utrecht University +* +* Licensed under the EUPL, Version 1.2 only +* You may not use this work except in compliance with the +Licence. +* A copy of the Licence is provided in the 'LICENCE' file in this project. +* You may also obtain a copy of the Licence at: +* +* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +* +* Unless required by applicable law or agreed to in +writing, software distributed under the Licence is +distributed on an "AS IS" basis, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +express or implied. +* See the Licence for the specific language governing +permissions and limitations under the Licence. +*/ +.card-header-icon[data-v-06938a02]{cursor:pointer}.dropdown.dropdown-select .dropdown-menu{padding-top:0}.dropdown.dropdown-select .dropdown-item:hover{background:#ffcd00;color:#000}.dropdown.dropdown-select label{width:100%} From 5ddf5225cc9a6eb77cd3708b127052ddd7c1237c Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Thu, 19 Oct 2023 16:09:57 +0200 Subject: [PATCH 02/34] feature: setup Vue-i18n if loaded as a global --- src/cdh/vue3/templatetags/vue3.py | 80 ++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 22 deletions(-) diff --git a/src/cdh/vue3/templatetags/vue3.py b/src/cdh/vue3/templatetags/vue3.py index 90c0f6b7..f016f595 100644 --- a/src/cdh/vue3/templatetags/vue3.py +++ b/src/cdh/vue3/templatetags/vue3.py @@ -5,15 +5,18 @@ from functools import partial from django import template +from django.conf import settings +from django.templatetags.static import static from django.utils.html import format_html from django.utils.safestring import mark_safe +from django.utils.translation import get_language register = template.Library() class VueJSONEncoder(json.JSONEncoder): def encode(self, obj): - if hasattr(obj, '_wrapped'): + if hasattr(obj, "_wrapped"): return super().encode(obj._wrapped) return super().encode(obj) @@ -37,7 +40,26 @@ def prop_js(code, context): def event_prop(name): - return 'on' + name[0].upper() + name[1:] + return "on" + name[0].upper() + name[1:] + + +@register.simple_tag +def load_vue_libs(): + if settings.DEBUG: + vue = static("cdh.vue3/vue/vue.global.js") + vue_i18n = static("cdh.vue3/vue/vue-i18n.global.js") + else: + vue = static("cdh.vue3/vue/vue.global.prod.js") + vue_i18n = static("cdh.vue3/vue/vue-i18n.global.prod.js") + + return format_html( + """ + + + """, + vue=vue, + vue_i18n=vue_i18n, + ) @register.tag @@ -48,8 +70,8 @@ def vue(parser, token): # to specify an inline display style when required by adding the word # 'inline' in the tag argument list inline = False - if 'inline' in args: - args.remove('inline') + if "inline" in args: + args.remove("inline") inline = True # in props we store (per prop) a fucntion that takes a context @@ -60,10 +82,10 @@ def vue(parser, token): component = args[1] for i in range(2, len(args)): - if args[i][0] == ':': + if args[i][0] == ":": # prop binding - if '=' in args[i]: - (name, value) = args[i][1:].split('=', 1) + if "=" in args[i]: + (name, value) = args[i][1:].split("=", 1) if value[0] in ['"', "'"]: # :prop="thing", treat thing as a javascript value props[name] = partial(prop_js, value[1:-1]) @@ -75,12 +97,12 @@ def vue(parser, token): # :prop, is the same as :prop=prop (treat prop as a python value) props[name] = partial(prop_variable, name) - elif args[i][0] == '@': - (name, value) = args[i][1:].split('=', 1) + elif args[i][0] == "@": + (name, value) = args[i][1:].split("=", 1) # @event="thing", thing should be a javascript function props[event_prop(name)] = partial(prop_js, value[1:-1]) else: - (name, value) = args[i].split('=', 1) + (name, value) = args[i].split("=", 1) if value[0] in ['"', "'"]: props[name] = partial(prop_const, value[1:-1]) @@ -101,33 +123,47 @@ def render(self, context): except Exception: raise RuntimeError(f'Failed binding proeprty "{prop}"') - binding = mark_safe('\n'.join(binding_defs)) + binding = mark_safe("\n".join(binding_defs)) # add a random suffix to container id, to avoid collisions - suffix = ''.join(random.sample(string.ascii_lowercase, 5)) - container = '_'.join(self.component.split('.') + [suffix]) + suffix = "".join(random.sample(string.ascii_lowercase, 5)) + container = "_".join(self.component.split(".") + [suffix]) - style = 'display:inline' if self.inline else 'width:100%' + style = "display:inline" if self.inline else "width:100%" # Retrieve the CSP nonce if present - nonce = '' - if hasattr(context, 'request') and hasattr(context.request, - 'csp_nonce'): + nonce = "" + if hasattr(context, "request") and hasattr(context.request, "csp_nonce"): nonce = context.request.csp_nonce return format_html( - ''' + """
''', + """, binding=binding, component=self.component, container=container, style=style, nonce=nonce, + language=get_language(), ) From 87a035a06bbc51addb2f3f8618d51a8edc93fb11 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Thu, 19 Oct 2023 16:10:13 +0200 Subject: [PATCH 03/34] feature: provide global versions of Vue and Vue-i18n --- .../static/cdh.vue3/vue/vue-i18n.global.js | 6482 +++++++ .../cdh.vue3/vue/vue-i18n.global.prod.js | 6 + .../vue3/static/cdh.vue3/vue/vue.global.js | 15361 ++++++++++++++++ .../static/cdh.vue3/vue/vue.global.prod.js | 1 + 4 files changed, 21850 insertions(+) create mode 100644 src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.js create mode 100644 src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.prod.js create mode 100644 src/cdh/vue3/static/cdh.vue3/vue/vue.global.js create mode 100644 src/cdh/vue3/static/cdh.vue3/vue/vue.global.prod.js diff --git a/src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.js b/src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.js new file mode 100644 index 00000000..41df02f3 --- /dev/null +++ b/src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.js @@ -0,0 +1,6482 @@ +/*! + * vue-i18n v9.5.0 + * (c) 2023 kazuya kawaguchi + * Released under the MIT License. + */ +var VueI18n = (function (exports, vue) { + 'use strict'; + + /** + * Original Utilities + * written by kazuya kawaguchi + */ + const inBrowser = typeof window !== 'undefined'; + let mark; + let measure; + { + const perf = inBrowser && window.performance; + if (perf && + perf.mark && + perf.measure && + perf.clearMarks && + // @ts-ignore browser compat + perf.clearMeasures) { + mark = (tag) => { + perf.mark(tag); + }; + measure = (name, startTag, endTag) => { + perf.measure(name, startTag, endTag); + perf.clearMarks(startTag); + perf.clearMarks(endTag); + }; + } + } + const RE_ARGS = /\{([0-9a-zA-Z]+)\}/g; + /* eslint-disable */ + function format$1(message, ...args) { + if (args.length === 1 && isObject(args[0])) { + args = args[0]; + } + if (!args || !args.hasOwnProperty) { + args = {}; + } + return message.replace(RE_ARGS, (match, identifier) => { + return args.hasOwnProperty(identifier) ? args[identifier] : ''; + }); + } + const makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name); + const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source }); + const friendlyJSONstringify = (json) => JSON.stringify(json) + .replace(/\u2028/g, '\\u2028') + .replace(/\u2029/g, '\\u2029') + .replace(/\u0027/g, '\\u0027'); + const isNumber = (val) => typeof val === 'number' && isFinite(val); + const isDate = (val) => toTypeString(val) === '[object Date]'; + const isRegExp = (val) => toTypeString(val) === '[object RegExp]'; + const isEmptyObject = (val) => isPlainObject(val) && Object.keys(val).length === 0; + const assign = Object.assign; + let _globalThis; + const getGlobalThis = () => { + // prettier-ignore + return (_globalThis || + (_globalThis = + typeof globalThis !== 'undefined' + ? globalThis + : typeof self !== 'undefined' + ? self + : typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : {})); + }; + function escapeHtml(rawText) { + return rawText + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); + } + const hasOwnProperty = Object.prototype.hasOwnProperty; + function hasOwn(obj, key) { + return hasOwnProperty.call(obj, key); + } + /* eslint-enable */ + /** + * Useful Utilities By Evan you + * Modified by kazuya kawaguchi + * MIT License + * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/index.ts + * https://github.com/vuejs/vue-next/blob/master/packages/shared/src/codeframe.ts + */ + const isArray = Array.isArray; + const isFunction = (val) => typeof val === 'function'; + const isString = (val) => typeof val === 'string'; + const isBoolean = (val) => typeof val === 'boolean'; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const isObject = (val) => val !== null && typeof val === 'object'; + const objectToString = Object.prototype.toString; + const toTypeString = (value) => objectToString.call(value); + const isPlainObject = (val) => { + if (!isObject(val)) + return false; + const proto = Object.getPrototypeOf(val); + return proto === null || proto.constructor === Object; + }; + // for converting list and named values to displayed strings. + const toDisplayString = (val) => { + return val == null + ? '' + : isArray(val) || (isPlainObject(val) && val.toString === objectToString) + ? JSON.stringify(val, null, 2) + : String(val); + }; + function join(items, separator = '') { + return items.reduce((str, item, index) => (index === 0 ? str + item : str + separator + item), ''); + } + const RANGE = 2; + function generateCodeFrame(source, start = 0, end = source.length) { + const lines = source.split(/\r?\n/); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + 1; + if (count >= start) { + for (let j = i - RANGE; j <= i + RANGE || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push(`${line}${' '.repeat(3 - String(line).length)}| ${lines[j]}`); + const lineLength = lines[j].length; + if (j === i) { + // push underline + const pad = start - (count - lineLength) + 1; + const length = Math.max(1, end > count ? lineLength - pad : end - start); + res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length)); + } + else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + '^'.repeat(length)); + } + count += lineLength + 1; + } + } + break; + } + } + return res.join('\n'); + } + function incrementer(code) { + let current = code; + return () => ++current; + } + + function warn(msg, err) { + if (typeof console !== 'undefined') { + console.warn(`[intlify] ` + msg); + /* istanbul ignore if */ + if (err) { + console.warn(err.stack); + } + } + } + + /** + * Event emitter, forked from the below: + * - original repository url: https://github.com/developit/mitt + * - code url: https://github.com/developit/mitt/blob/master/src/index.ts + * - author: Jason Miller (https://github.com/developit) + * - license: MIT + */ + /** + * Create a event emitter + * + * @returns An event emitter + */ + function createEmitter() { + const events = new Map(); + const emitter = { + events, + on(event, handler) { + const handlers = events.get(event); + const added = handlers && handlers.push(handler); + if (!added) { + events.set(event, [handler]); + } + }, + off(event, handler) { + const handlers = events.get(event); + if (handlers) { + handlers.splice(handlers.indexOf(handler) >>> 0, 1); + } + }, + emit(event, payload) { + (events.get(event) || []) + .slice() + .map(handler => handler(payload)); + (events.get('*') || []) + .slice() + .map(handler => handler(event, payload)); + } + }; + return emitter; + } + + function createPosition(line, column, offset) { + return { line, column, offset }; + } + function createLocation(start, end, source) { + const loc = { start, end }; + if (source != null) { + loc.source = source; + } + return loc; + } + + const CompileErrorCodes = { + // tokenizer error codes + EXPECTED_TOKEN: 1, + INVALID_TOKEN_IN_PLACEHOLDER: 2, + UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3, + UNKNOWN_ESCAPE_SEQUENCE: 4, + INVALID_UNICODE_ESCAPE_SEQUENCE: 5, + UNBALANCED_CLOSING_BRACE: 6, + UNTERMINATED_CLOSING_BRACE: 7, + EMPTY_PLACEHOLDER: 8, + NOT_ALLOW_NEST_PLACEHOLDER: 9, + INVALID_LINKED_FORMAT: 10, + // parser error codes + MUST_HAVE_MESSAGES_IN_PLURAL: 11, + UNEXPECTED_EMPTY_LINKED_MODIFIER: 12, + UNEXPECTED_EMPTY_LINKED_KEY: 13, + UNEXPECTED_LEXICAL_ANALYSIS: 14, + // generator error codes + UNHANDLED_CODEGEN_NODE_TYPE: 15, + // minifier error codes + UNHANDLED_MINIFIER_NODE_TYPE: 16, + // Special value for higher-order compilers to pick up the last code + // to avoid collision of error codes. This should always be kept as the last + // item. + __EXTEND_POINT__: 17 + }; + /** @internal */ + const errorMessages$2 = { + // tokenizer error messages + [CompileErrorCodes.EXPECTED_TOKEN]: `Expected token: '{0}'`, + [CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER]: `Invalid token in placeholder: '{0}'`, + [CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER]: `Unterminated single quote in placeholder`, + [CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE]: `Unknown escape sequence: \\{0}`, + [CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE]: `Invalid unicode escape sequence: {0}`, + [CompileErrorCodes.UNBALANCED_CLOSING_BRACE]: `Unbalanced closing brace`, + [CompileErrorCodes.UNTERMINATED_CLOSING_BRACE]: `Unterminated closing brace`, + [CompileErrorCodes.EMPTY_PLACEHOLDER]: `Empty placeholder`, + [CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER]: `Not allowed nest placeholder`, + [CompileErrorCodes.INVALID_LINKED_FORMAT]: `Invalid linked format`, + // parser error messages + [CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL]: `Plural must have messages`, + [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER]: `Unexpected empty linked modifier`, + [CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY]: `Unexpected empty linked key`, + [CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS]: `Unexpected lexical analysis in token: '{0}'`, + // generator error messages + [CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE]: `unhandled codegen node type: '{0}'`, + // minimizer error messages + [CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE]: `unhandled mimifier node type: '{0}'` + }; + function createCompileError(code, loc, options = {}) { + const { domain, messages, args } = options; + const msg = format$1((messages || errorMessages$2)[code] || '', ...(args || [])) + ; + const error = new SyntaxError(String(msg)); + error.code = code; + if (loc) { + error.location = loc; + } + error.domain = domain; + return error; + } + /** @internal */ + function defaultOnError(error) { + throw error; + } + + const RE_HTML_TAG = /<\/?[\w\s="/.':;#-\/]+>/; + const detectHtmlTag = (source) => RE_HTML_TAG.test(source); + + const CHAR_SP = ' '; + const CHAR_CR = '\r'; + const CHAR_LF = '\n'; + const CHAR_LS = String.fromCharCode(0x2028); + const CHAR_PS = String.fromCharCode(0x2029); + function createScanner(str) { + const _buf = str; + let _index = 0; + let _line = 1; + let _column = 1; + let _peekOffset = 0; + const isCRLF = (index) => _buf[index] === CHAR_CR && _buf[index + 1] === CHAR_LF; + const isLF = (index) => _buf[index] === CHAR_LF; + const isPS = (index) => _buf[index] === CHAR_PS; + const isLS = (index) => _buf[index] === CHAR_LS; + const isLineEnd = (index) => isCRLF(index) || isLF(index) || isPS(index) || isLS(index); + const index = () => _index; + const line = () => _line; + const column = () => _column; + const peekOffset = () => _peekOffset; + const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset]; + const currentChar = () => charAt(_index); + const currentPeek = () => charAt(_index + _peekOffset); + function next() { + _peekOffset = 0; + if (isLineEnd(_index)) { + _line++; + _column = 0; + } + if (isCRLF(_index)) { + _index++; + } + _index++; + _column++; + return _buf[_index]; + } + function peek() { + if (isCRLF(_index + _peekOffset)) { + _peekOffset++; + } + _peekOffset++; + return _buf[_index + _peekOffset]; + } + function reset() { + _index = 0; + _line = 1; + _column = 1; + _peekOffset = 0; + } + function resetPeek(offset = 0) { + _peekOffset = offset; + } + function skipToPeek() { + const target = _index + _peekOffset; + // eslint-disable-next-line no-unmodified-loop-condition + while (target !== _index) { + next(); + } + _peekOffset = 0; + } + return { + index, + line, + column, + peekOffset, + charAt, + currentChar, + currentPeek, + next, + peek, + reset, + resetPeek, + skipToPeek + }; + } + + const EOF = undefined; + const DOT = '.'; + const LITERAL_DELIMITER = "'"; + const ERROR_DOMAIN$3 = 'tokenizer'; + function createTokenizer(source, options = {}) { + const location = options.location !== false; + const _scnr = createScanner(source); + const currentOffset = () => _scnr.index(); + const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index()); + const _initLoc = currentPosition(); + const _initOffset = currentOffset(); + const _context = { + currentType: 14 /* TokenTypes.EOF */, + offset: _initOffset, + startLoc: _initLoc, + endLoc: _initLoc, + lastType: 14 /* TokenTypes.EOF */, + lastOffset: _initOffset, + lastStartLoc: _initLoc, + lastEndLoc: _initLoc, + braceNest: 0, + inLinked: false, + text: '' + }; + const context = () => _context; + const { onError } = options; + function emitError(code, pos, offset, ...args) { + const ctx = context(); + pos.column += offset; + pos.offset += offset; + if (onError) { + const loc = location ? createLocation(ctx.startLoc, pos) : null; + const err = createCompileError(code, loc, { + domain: ERROR_DOMAIN$3, + args + }); + onError(err); + } + } + function getToken(context, type, value) { + context.endLoc = currentPosition(); + context.currentType = type; + const token = { type }; + if (location) { + token.loc = createLocation(context.startLoc, context.endLoc); + } + if (value != null) { + token.value = value; + } + return token; + } + const getEndToken = (context) => getToken(context, 14 /* TokenTypes.EOF */); + function eat(scnr, ch) { + if (scnr.currentChar() === ch) { + scnr.next(); + return ch; + } + else { + emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch); + return ''; + } + } + function peekSpaces(scnr) { + let buf = ''; + while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) { + buf += scnr.currentPeek(); + scnr.peek(); + } + return buf; + } + function skipSpaces(scnr) { + const buf = peekSpaces(scnr); + scnr.skipToPeek(); + return buf; + } + function isIdentifierStart(ch) { + if (ch === EOF) { + return false; + } + const cc = ch.charCodeAt(0); + return ((cc >= 97 && cc <= 122) || // a-z + (cc >= 65 && cc <= 90) || // A-Z + cc === 95 // _ + ); + } + function isNumberStart(ch) { + if (ch === EOF) { + return false; + } + const cc = ch.charCodeAt(0); + return cc >= 48 && cc <= 57; // 0-9 + } + function isNamedIdentifierStart(scnr, context) { + const { currentType } = context; + if (currentType !== 2 /* TokenTypes.BraceLeft */) { + return false; + } + peekSpaces(scnr); + const ret = isIdentifierStart(scnr.currentPeek()); + scnr.resetPeek(); + return ret; + } + function isListIdentifierStart(scnr, context) { + const { currentType } = context; + if (currentType !== 2 /* TokenTypes.BraceLeft */) { + return false; + } + peekSpaces(scnr); + const ch = scnr.currentPeek() === '-' ? scnr.peek() : scnr.currentPeek(); + const ret = isNumberStart(ch); + scnr.resetPeek(); + return ret; + } + function isLiteralStart(scnr, context) { + const { currentType } = context; + if (currentType !== 2 /* TokenTypes.BraceLeft */) { + return false; + } + peekSpaces(scnr); + const ret = scnr.currentPeek() === LITERAL_DELIMITER; + scnr.resetPeek(); + return ret; + } + function isLinkedDotStart(scnr, context) { + const { currentType } = context; + if (currentType !== 8 /* TokenTypes.LinkedAlias */) { + return false; + } + peekSpaces(scnr); + const ret = scnr.currentPeek() === "." /* TokenChars.LinkedDot */; + scnr.resetPeek(); + return ret; + } + function isLinkedModifierStart(scnr, context) { + const { currentType } = context; + if (currentType !== 9 /* TokenTypes.LinkedDot */) { + return false; + } + peekSpaces(scnr); + const ret = isIdentifierStart(scnr.currentPeek()); + scnr.resetPeek(); + return ret; + } + function isLinkedDelimiterStart(scnr, context) { + const { currentType } = context; + if (!(currentType === 8 /* TokenTypes.LinkedAlias */ || + currentType === 12 /* TokenTypes.LinkedModifier */)) { + return false; + } + peekSpaces(scnr); + const ret = scnr.currentPeek() === ":" /* TokenChars.LinkedDelimiter */; + scnr.resetPeek(); + return ret; + } + function isLinkedReferStart(scnr, context) { + const { currentType } = context; + if (currentType !== 10 /* TokenTypes.LinkedDelimiter */) { + return false; + } + const fn = () => { + const ch = scnr.currentPeek(); + if (ch === "{" /* TokenChars.BraceLeft */) { + return isIdentifierStart(scnr.peek()); + } + else if (ch === "@" /* TokenChars.LinkedAlias */ || + ch === "%" /* TokenChars.Modulo */ || + ch === "|" /* TokenChars.Pipe */ || + ch === ":" /* TokenChars.LinkedDelimiter */ || + ch === "." /* TokenChars.LinkedDot */ || + ch === CHAR_SP || + !ch) { + return false; + } + else if (ch === CHAR_LF) { + scnr.peek(); + return fn(); + } + else { + // other characters + return isIdentifierStart(ch); + } + }; + const ret = fn(); + scnr.resetPeek(); + return ret; + } + function isPluralStart(scnr) { + peekSpaces(scnr); + const ret = scnr.currentPeek() === "|" /* TokenChars.Pipe */; + scnr.resetPeek(); + return ret; + } + function detectModuloStart(scnr) { + const spaces = peekSpaces(scnr); + const ret = scnr.currentPeek() === "%" /* TokenChars.Modulo */ && + scnr.peek() === "{" /* TokenChars.BraceLeft */; + scnr.resetPeek(); + return { + isModulo: ret, + hasSpace: spaces.length > 0 + }; + } + function isTextStart(scnr, reset = true) { + const fn = (hasSpace = false, prev = '', detectModulo = false) => { + const ch = scnr.currentPeek(); + if (ch === "{" /* TokenChars.BraceLeft */) { + return prev === "%" /* TokenChars.Modulo */ ? false : hasSpace; + } + else if (ch === "@" /* TokenChars.LinkedAlias */ || !ch) { + return prev === "%" /* TokenChars.Modulo */ ? true : hasSpace; + } + else if (ch === "%" /* TokenChars.Modulo */) { + scnr.peek(); + return fn(hasSpace, "%" /* TokenChars.Modulo */, true); + } + else if (ch === "|" /* TokenChars.Pipe */) { + return prev === "%" /* TokenChars.Modulo */ || detectModulo + ? true + : !(prev === CHAR_SP || prev === CHAR_LF); + } + else if (ch === CHAR_SP) { + scnr.peek(); + return fn(true, CHAR_SP, detectModulo); + } + else if (ch === CHAR_LF) { + scnr.peek(); + return fn(true, CHAR_LF, detectModulo); + } + else { + return true; + } + }; + const ret = fn(); + reset && scnr.resetPeek(); + return ret; + } + function takeChar(scnr, fn) { + const ch = scnr.currentChar(); + if (ch === EOF) { + return EOF; + } + if (fn(ch)) { + scnr.next(); + return ch; + } + return null; + } + function takeIdentifierChar(scnr) { + const closure = (ch) => { + const cc = ch.charCodeAt(0); + return ((cc >= 97 && cc <= 122) || // a-z + (cc >= 65 && cc <= 90) || // A-Z + (cc >= 48 && cc <= 57) || // 0-9 + cc === 95 || // _ + cc === 36 // $ + ); + }; + return takeChar(scnr, closure); + } + function takeDigit(scnr) { + const closure = (ch) => { + const cc = ch.charCodeAt(0); + return cc >= 48 && cc <= 57; // 0-9 + }; + return takeChar(scnr, closure); + } + function takeHexDigit(scnr) { + const closure = (ch) => { + const cc = ch.charCodeAt(0); + return ((cc >= 48 && cc <= 57) || // 0-9 + (cc >= 65 && cc <= 70) || // A-F + (cc >= 97 && cc <= 102)); // a-f + }; + return takeChar(scnr, closure); + } + function getDigits(scnr) { + let ch = ''; + let num = ''; + while ((ch = takeDigit(scnr))) { + num += ch; + } + return num; + } + function readModulo(scnr) { + skipSpaces(scnr); + const ch = scnr.currentChar(); + if (ch !== "%" /* TokenChars.Modulo */) { + emitError(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch); + } + scnr.next(); + return "%" /* TokenChars.Modulo */; + } + function readText(scnr) { + let buf = ''; + while (true) { + const ch = scnr.currentChar(); + if (ch === "{" /* TokenChars.BraceLeft */ || + ch === "}" /* TokenChars.BraceRight */ || + ch === "@" /* TokenChars.LinkedAlias */ || + ch === "|" /* TokenChars.Pipe */ || + !ch) { + break; + } + else if (ch === "%" /* TokenChars.Modulo */) { + if (isTextStart(scnr)) { + buf += ch; + scnr.next(); + } + else { + break; + } + } + else if (ch === CHAR_SP || ch === CHAR_LF) { + if (isTextStart(scnr)) { + buf += ch; + scnr.next(); + } + else if (isPluralStart(scnr)) { + break; + } + else { + buf += ch; + scnr.next(); + } + } + else { + buf += ch; + scnr.next(); + } + } + return buf; + } + function readNamedIdentifier(scnr) { + skipSpaces(scnr); + let ch = ''; + let name = ''; + while ((ch = takeIdentifierChar(scnr))) { + name += ch; + } + if (scnr.currentChar() === EOF) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + return name; + } + function readListIdentifier(scnr) { + skipSpaces(scnr); + let value = ''; + if (scnr.currentChar() === '-') { + scnr.next(); + value += `-${getDigits(scnr)}`; + } + else { + value += getDigits(scnr); + } + if (scnr.currentChar() === EOF) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + return value; + } + function readLiteral(scnr) { + skipSpaces(scnr); + eat(scnr, `\'`); + let ch = ''; + let literal = ''; + const fn = (x) => x !== LITERAL_DELIMITER && x !== CHAR_LF; + while ((ch = takeChar(scnr, fn))) { + if (ch === '\\') { + literal += readEscapeSequence(scnr); + } + else { + literal += ch; + } + } + const current = scnr.currentChar(); + if (current === CHAR_LF || current === EOF) { + emitError(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0); + // TODO: Is it correct really? + if (current === CHAR_LF) { + scnr.next(); + eat(scnr, `\'`); + } + return literal; + } + eat(scnr, `\'`); + return literal; + } + function readEscapeSequence(scnr) { + const ch = scnr.currentChar(); + switch (ch) { + case '\\': + case `\'`: + scnr.next(); + return `\\${ch}`; + case 'u': + return readUnicodeEscapeSequence(scnr, ch, 4); + case 'U': + return readUnicodeEscapeSequence(scnr, ch, 6); + default: + emitError(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch); + return ''; + } + } + function readUnicodeEscapeSequence(scnr, unicode, digits) { + eat(scnr, unicode); + let sequence = ''; + for (let i = 0; i < digits; i++) { + const ch = takeHexDigit(scnr); + if (!ch) { + emitError(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\${unicode}${sequence}${scnr.currentChar()}`); + break; + } + sequence += ch; + } + return `\\${unicode}${sequence}`; + } + function readInvalidIdentifier(scnr) { + skipSpaces(scnr); + let ch = ''; + let identifiers = ''; + const closure = (ch) => ch !== "{" /* TokenChars.BraceLeft */ && + ch !== "}" /* TokenChars.BraceRight */ && + ch !== CHAR_SP && + ch !== CHAR_LF; + while ((ch = takeChar(scnr, closure))) { + identifiers += ch; + } + return identifiers; + } + function readLinkedModifier(scnr) { + let ch = ''; + let name = ''; + while ((ch = takeIdentifierChar(scnr))) { + name += ch; + } + return name; + } + function readLinkedRefer(scnr) { + const fn = (detect = false, buf) => { + const ch = scnr.currentChar(); + if (ch === "{" /* TokenChars.BraceLeft */ || + ch === "%" /* TokenChars.Modulo */ || + ch === "@" /* TokenChars.LinkedAlias */ || + ch === "|" /* TokenChars.Pipe */ || + ch === "(" /* TokenChars.ParenLeft */ || + ch === ")" /* TokenChars.ParenRight */ || + !ch) { + return buf; + } + else if (ch === CHAR_SP) { + return buf; + } + else if (ch === CHAR_LF || ch === DOT) { + buf += ch; + scnr.next(); + return fn(detect, buf); + } + else { + buf += ch; + scnr.next(); + return fn(true, buf); + } + }; + return fn(false, ''); + } + function readPlural(scnr) { + skipSpaces(scnr); + const plural = eat(scnr, "|" /* TokenChars.Pipe */); + skipSpaces(scnr); + return plural; + } + // TODO: We need refactoring of token parsing ... + function readTokenInPlaceholder(scnr, context) { + let token = null; + const ch = scnr.currentChar(); + switch (ch) { + case "{" /* TokenChars.BraceLeft */: + if (context.braceNest >= 1) { + emitError(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0); + } + scnr.next(); + token = getToken(context, 2 /* TokenTypes.BraceLeft */, "{" /* TokenChars.BraceLeft */); + skipSpaces(scnr); + context.braceNest++; + return token; + case "}" /* TokenChars.BraceRight */: + if (context.braceNest > 0 && + context.currentType === 2 /* TokenTypes.BraceLeft */) { + emitError(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0); + } + scnr.next(); + token = getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */); + context.braceNest--; + context.braceNest > 0 && skipSpaces(scnr); + if (context.inLinked && context.braceNest === 0) { + context.inLinked = false; + } + return token; + case "@" /* TokenChars.LinkedAlias */: + if (context.braceNest > 0) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + token = readTokenInLinked(scnr, context) || getEndToken(context); + context.braceNest = 0; + return token; + default: + let validNamedIdentifier = true; + let validListIdentifier = true; + let validLiteral = true; + if (isPluralStart(scnr)) { + if (context.braceNest > 0) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + } + token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr)); + // reset + context.braceNest = 0; + context.inLinked = false; + return token; + } + if (context.braceNest > 0 && + (context.currentType === 5 /* TokenTypes.Named */ || + context.currentType === 6 /* TokenTypes.List */ || + context.currentType === 7 /* TokenTypes.Literal */)) { + emitError(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0); + context.braceNest = 0; + return readToken(scnr, context); + } + if ((validNamedIdentifier = isNamedIdentifierStart(scnr, context))) { + token = getToken(context, 5 /* TokenTypes.Named */, readNamedIdentifier(scnr)); + skipSpaces(scnr); + return token; + } + if ((validListIdentifier = isListIdentifierStart(scnr, context))) { + token = getToken(context, 6 /* TokenTypes.List */, readListIdentifier(scnr)); + skipSpaces(scnr); + return token; + } + if ((validLiteral = isLiteralStart(scnr, context))) { + token = getToken(context, 7 /* TokenTypes.Literal */, readLiteral(scnr)); + skipSpaces(scnr); + return token; + } + if (!validNamedIdentifier && !validListIdentifier && !validLiteral) { + // TODO: we should be re-designed invalid cases, when we will extend message syntax near the future ... + token = getToken(context, 13 /* TokenTypes.InvalidPlace */, readInvalidIdentifier(scnr)); + emitError(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value); + skipSpaces(scnr); + return token; + } + break; + } + return token; + } + // TODO: We need refactoring of token parsing ... + function readTokenInLinked(scnr, context) { + const { currentType } = context; + let token = null; + const ch = scnr.currentChar(); + if ((currentType === 8 /* TokenTypes.LinkedAlias */ || + currentType === 9 /* TokenTypes.LinkedDot */ || + currentType === 12 /* TokenTypes.LinkedModifier */ || + currentType === 10 /* TokenTypes.LinkedDelimiter */) && + (ch === CHAR_LF || ch === CHAR_SP)) { + emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0); + } + switch (ch) { + case "@" /* TokenChars.LinkedAlias */: + scnr.next(); + token = getToken(context, 8 /* TokenTypes.LinkedAlias */, "@" /* TokenChars.LinkedAlias */); + context.inLinked = true; + return token; + case "." /* TokenChars.LinkedDot */: + skipSpaces(scnr); + scnr.next(); + return getToken(context, 9 /* TokenTypes.LinkedDot */, "." /* TokenChars.LinkedDot */); + case ":" /* TokenChars.LinkedDelimiter */: + skipSpaces(scnr); + scnr.next(); + return getToken(context, 10 /* TokenTypes.LinkedDelimiter */, ":" /* TokenChars.LinkedDelimiter */); + default: + if (isPluralStart(scnr)) { + token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr)); + // reset + context.braceNest = 0; + context.inLinked = false; + return token; + } + if (isLinkedDotStart(scnr, context) || + isLinkedDelimiterStart(scnr, context)) { + skipSpaces(scnr); + return readTokenInLinked(scnr, context); + } + if (isLinkedModifierStart(scnr, context)) { + skipSpaces(scnr); + return getToken(context, 12 /* TokenTypes.LinkedModifier */, readLinkedModifier(scnr)); + } + if (isLinkedReferStart(scnr, context)) { + skipSpaces(scnr); + if (ch === "{" /* TokenChars.BraceLeft */) { + // scan the placeholder + return readTokenInPlaceholder(scnr, context) || token; + } + else { + return getToken(context, 11 /* TokenTypes.LinkedKey */, readLinkedRefer(scnr)); + } + } + if (currentType === 8 /* TokenTypes.LinkedAlias */) { + emitError(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0); + } + context.braceNest = 0; + context.inLinked = false; + return readToken(scnr, context); + } + } + // TODO: We need refactoring of token parsing ... + function readToken(scnr, context) { + let token = { type: 14 /* TokenTypes.EOF */ }; + if (context.braceNest > 0) { + return readTokenInPlaceholder(scnr, context) || getEndToken(context); + } + if (context.inLinked) { + return readTokenInLinked(scnr, context) || getEndToken(context); + } + const ch = scnr.currentChar(); + switch (ch) { + case "{" /* TokenChars.BraceLeft */: + return readTokenInPlaceholder(scnr, context) || getEndToken(context); + case "}" /* TokenChars.BraceRight */: + emitError(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0); + scnr.next(); + return getToken(context, 3 /* TokenTypes.BraceRight */, "}" /* TokenChars.BraceRight */); + case "@" /* TokenChars.LinkedAlias */: + return readTokenInLinked(scnr, context) || getEndToken(context); + default: + if (isPluralStart(scnr)) { + token = getToken(context, 1 /* TokenTypes.Pipe */, readPlural(scnr)); + // reset + context.braceNest = 0; + context.inLinked = false; + return token; + } + const { isModulo, hasSpace } = detectModuloStart(scnr); + if (isModulo) { + return hasSpace + ? getToken(context, 0 /* TokenTypes.Text */, readText(scnr)) + : getToken(context, 4 /* TokenTypes.Modulo */, readModulo(scnr)); + } + if (isTextStart(scnr)) { + return getToken(context, 0 /* TokenTypes.Text */, readText(scnr)); + } + break; + } + return token; + } + function nextToken() { + const { currentType, offset, startLoc, endLoc } = _context; + _context.lastType = currentType; + _context.lastOffset = offset; + _context.lastStartLoc = startLoc; + _context.lastEndLoc = endLoc; + _context.offset = currentOffset(); + _context.startLoc = currentPosition(); + if (_scnr.currentChar() === EOF) { + return getToken(_context, 14 /* TokenTypes.EOF */); + } + return readToken(_scnr, _context); + } + return { + nextToken, + currentOffset, + currentPosition, + context + }; + } + + const ERROR_DOMAIN$2 = 'parser'; + // Backslash backslash, backslash quote, uHHHH, UHHHHHH. + const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g; + function fromEscapeSequence(match, codePoint4, codePoint6) { + switch (match) { + case `\\\\`: + return `\\`; + case `\\\'`: + return `\'`; + default: { + const codePoint = parseInt(codePoint4 || codePoint6, 16); + if (codePoint <= 0xd7ff || codePoint >= 0xe000) { + return String.fromCodePoint(codePoint); + } + // invalid ... + // Replace them with U+FFFD REPLACEMENT CHARACTER. + return '�'; + } + } + } + function createParser(options = {}) { + const location = options.location !== false; + const { onError } = options; + function emitError(tokenzer, code, start, offset, ...args) { + const end = tokenzer.currentPosition(); + end.offset += offset; + end.column += offset; + if (onError) { + const loc = location ? createLocation(start, end) : null; + const err = createCompileError(code, loc, { + domain: ERROR_DOMAIN$2, + args + }); + onError(err); + } + } + function startNode(type, offset, loc) { + const node = { type }; + if (location) { + node.start = offset; + node.end = offset; + node.loc = { start: loc, end: loc }; + } + return node; + } + function endNode(node, offset, pos, type) { + if (type) { + node.type = type; + } + if (location) { + node.end = offset; + if (node.loc) { + node.loc.end = pos; + } + } + } + function parseText(tokenizer, value) { + const context = tokenizer.context(); + const node = startNode(3 /* NodeTypes.Text */, context.offset, context.startLoc); + node.value = value; + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseList(tokenizer, index) { + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc + const node = startNode(5 /* NodeTypes.List */, offset, loc); + node.index = parseInt(index, 10); + tokenizer.nextToken(); // skip brach right + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseNamed(tokenizer, key) { + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc + const node = startNode(4 /* NodeTypes.Named */, offset, loc); + node.key = key; + tokenizer.nextToken(); // skip brach right + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseLiteral(tokenizer, value) { + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; // get brace left loc + const node = startNode(9 /* NodeTypes.Literal */, offset, loc); + node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence); + tokenizer.nextToken(); // skip brach right + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseLinkedModifier(tokenizer) { + const token = tokenizer.nextToken(); + const context = tokenizer.context(); + const { lastOffset: offset, lastStartLoc: loc } = context; // get linked dot loc + const node = startNode(8 /* NodeTypes.LinkedModifier */, offset, loc); + if (token.type !== 12 /* TokenTypes.LinkedModifier */) { + // empty modifier + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0); + node.value = ''; + endNode(node, offset, loc); + return { + nextConsumeToken: token, + node + }; + } + // check token + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.value = token.value || ''; + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return { + node + }; + } + function parseLinkedKey(tokenizer, value) { + const context = tokenizer.context(); + const node = startNode(7 /* NodeTypes.LinkedKey */, context.offset, context.startLoc); + node.value = value; + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseLinked(tokenizer) { + const context = tokenizer.context(); + const linkedNode = startNode(6 /* NodeTypes.Linked */, context.offset, context.startLoc); + let token = tokenizer.nextToken(); + if (token.type === 9 /* TokenTypes.LinkedDot */) { + const parsed = parseLinkedModifier(tokenizer); + linkedNode.modifier = parsed.node; + token = parsed.nextConsumeToken || tokenizer.nextToken(); + } + // asset check token + if (token.type !== 10 /* TokenTypes.LinkedDelimiter */) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + token = tokenizer.nextToken(); + // skip brace left + if (token.type === 2 /* TokenTypes.BraceLeft */) { + token = tokenizer.nextToken(); + } + switch (token.type) { + case 11 /* TokenTypes.LinkedKey */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseLinkedKey(tokenizer, token.value || ''); + break; + case 5 /* TokenTypes.Named */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseNamed(tokenizer, token.value || ''); + break; + case 6 /* TokenTypes.List */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseList(tokenizer, token.value || ''); + break; + case 7 /* TokenTypes.Literal */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + linkedNode.key = parseLiteral(tokenizer, token.value || ''); + break; + default: + // empty key + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0); + const nextContext = tokenizer.context(); + const emptyLinkedKeyNode = startNode(7 /* NodeTypes.LinkedKey */, nextContext.offset, nextContext.startLoc); + emptyLinkedKeyNode.value = ''; + endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc); + linkedNode.key = emptyLinkedKeyNode; + endNode(linkedNode, nextContext.offset, nextContext.startLoc); + return { + nextConsumeToken: token, + node: linkedNode + }; + } + endNode(linkedNode, tokenizer.currentOffset(), tokenizer.currentPosition()); + return { + node: linkedNode + }; + } + function parseMessage(tokenizer) { + const context = tokenizer.context(); + const startOffset = context.currentType === 1 /* TokenTypes.Pipe */ + ? tokenizer.currentOffset() + : context.offset; + const startLoc = context.currentType === 1 /* TokenTypes.Pipe */ + ? context.endLoc + : context.startLoc; + const node = startNode(2 /* NodeTypes.Message */, startOffset, startLoc); + node.items = []; + let nextToken = null; + do { + const token = nextToken || tokenizer.nextToken(); + nextToken = null; + switch (token.type) { + case 0 /* TokenTypes.Text */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseText(tokenizer, token.value || '')); + break; + case 6 /* TokenTypes.List */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseList(tokenizer, token.value || '')); + break; + case 5 /* TokenTypes.Named */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseNamed(tokenizer, token.value || '')); + break; + case 7 /* TokenTypes.Literal */: + if (token.value == null) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token)); + } + node.items.push(parseLiteral(tokenizer, token.value || '')); + break; + case 8 /* TokenTypes.LinkedAlias */: + const parsed = parseLinked(tokenizer); + node.items.push(parsed.node); + nextToken = parsed.nextConsumeToken || null; + break; + } + } while (context.currentType !== 14 /* TokenTypes.EOF */ && + context.currentType !== 1 /* TokenTypes.Pipe */); + // adjust message node loc + const endOffset = context.currentType === 1 /* TokenTypes.Pipe */ + ? context.lastOffset + : tokenizer.currentOffset(); + const endLoc = context.currentType === 1 /* TokenTypes.Pipe */ + ? context.lastEndLoc + : tokenizer.currentPosition(); + endNode(node, endOffset, endLoc); + return node; + } + function parsePlural(tokenizer, offset, loc, msgNode) { + const context = tokenizer.context(); + let hasEmptyMessage = msgNode.items.length === 0; + const node = startNode(1 /* NodeTypes.Plural */, offset, loc); + node.cases = []; + node.cases.push(msgNode); + do { + const msg = parseMessage(tokenizer); + if (!hasEmptyMessage) { + hasEmptyMessage = msg.items.length === 0; + } + node.cases.push(msg); + } while (context.currentType !== 14 /* TokenTypes.EOF */); + if (hasEmptyMessage) { + emitError(tokenizer, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0); + } + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + function parseResource(tokenizer) { + const context = tokenizer.context(); + const { offset, startLoc } = context; + const msgNode = parseMessage(tokenizer); + if (context.currentType === 14 /* TokenTypes.EOF */) { + return msgNode; + } + else { + return parsePlural(tokenizer, offset, startLoc, msgNode); + } + } + function parse(source) { + const tokenizer = createTokenizer(source, assign({}, options)); + const context = tokenizer.context(); + const node = startNode(0 /* NodeTypes.Resource */, context.offset, context.startLoc); + if (location && node.loc) { + node.loc.source = source; + } + node.body = parseResource(tokenizer); + if (options.onCacheKey) { + node.cacheKey = options.onCacheKey(source); + } + // assert whether achieved to EOF + if (context.currentType !== 14 /* TokenTypes.EOF */) { + emitError(tokenizer, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || ''); + } + endNode(node, tokenizer.currentOffset(), tokenizer.currentPosition()); + return node; + } + return { parse }; + } + function getTokenCaption(token) { + if (token.type === 14 /* TokenTypes.EOF */) { + return 'EOF'; + } + const name = (token.value || '').replace(/\r?\n/gu, '\\n'); + return name.length > 10 ? name.slice(0, 9) + '…' : name; + } + + function createTransformer(ast, options = {} // eslint-disable-line + ) { + const _context = { + ast, + helpers: new Set() + }; + const context = () => _context; + const helper = (name) => { + _context.helpers.add(name); + return name; + }; + return { context, helper }; + } + function traverseNodes(nodes, transformer) { + for (let i = 0; i < nodes.length; i++) { + traverseNode(nodes[i], transformer); + } + } + function traverseNode(node, transformer) { + // TODO: if we need pre-hook of transform, should be implemented to here + switch (node.type) { + case 1 /* NodeTypes.Plural */: + traverseNodes(node.cases, transformer); + transformer.helper("plural" /* HelperNameMap.PLURAL */); + break; + case 2 /* NodeTypes.Message */: + traverseNodes(node.items, transformer); + break; + case 6 /* NodeTypes.Linked */: + const linked = node; + traverseNode(linked.key, transformer); + transformer.helper("linked" /* HelperNameMap.LINKED */); + transformer.helper("type" /* HelperNameMap.TYPE */); + break; + case 5 /* NodeTypes.List */: + transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */); + transformer.helper("list" /* HelperNameMap.LIST */); + break; + case 4 /* NodeTypes.Named */: + transformer.helper("interpolate" /* HelperNameMap.INTERPOLATE */); + transformer.helper("named" /* HelperNameMap.NAMED */); + break; + } + // TODO: if we need post-hook of transform, should be implemented to here + } + // transform AST + function transform(ast, options = {} // eslint-disable-line + ) { + const transformer = createTransformer(ast); + transformer.helper("normalize" /* HelperNameMap.NORMALIZE */); + // traverse + ast.body && traverseNode(ast.body, transformer); + // set meta information + const context = transformer.context(); + ast.helpers = Array.from(context.helpers); + } + + function optimize(ast) { + const body = ast.body; + if (body.type === 2 /* NodeTypes.Message */) { + optimizeMessageNode(body); + } + else { + body.cases.forEach(c => optimizeMessageNode(c)); + } + return ast; + } + function optimizeMessageNode(message) { + if (message.items.length === 1) { + const item = message.items[0]; + if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) { + message.static = item.value; + delete item.value; // optimization for size + } + } + else { + const values = []; + for (let i = 0; i < message.items.length; i++) { + const item = message.items[i]; + if (!(item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */)) { + break; + } + if (item.value == null) { + break; + } + values.push(item.value); + } + if (values.length === message.items.length) { + message.static = join(values); + for (let i = 0; i < message.items.length; i++) { + const item = message.items[i]; + if (item.type === 3 /* NodeTypes.Text */ || item.type === 9 /* NodeTypes.Literal */) { + delete item.value; // optimization for size + } + } + } + } + } + + const ERROR_DOMAIN$1 = 'minifier'; + /* eslint-disable @typescript-eslint/no-explicit-any */ + function minify(node) { + node.t = node.type; + switch (node.type) { + case 0 /* NodeTypes.Resource */: + const resource = node; + minify(resource.body); + resource.b = resource.body; + delete resource.body; + break; + case 1 /* NodeTypes.Plural */: + const plural = node; + const cases = plural.cases; + for (let i = 0; i < cases.length; i++) { + minify(cases[i]); + } + plural.c = cases; + delete plural.cases; + break; + case 2 /* NodeTypes.Message */: + const message = node; + const items = message.items; + for (let i = 0; i < items.length; i++) { + minify(items[i]); + } + message.i = items; + delete message.items; + if (message.static) { + message.s = message.static; + delete message.static; + } + break; + case 3 /* NodeTypes.Text */: + case 9 /* NodeTypes.Literal */: + case 8 /* NodeTypes.LinkedModifier */: + case 7 /* NodeTypes.LinkedKey */: + const valueNode = node; + if (valueNode.value) { + valueNode.v = valueNode.value; + delete valueNode.value; + } + break; + case 6 /* NodeTypes.Linked */: + const linked = node; + minify(linked.key); + linked.k = linked.key; + delete linked.key; + if (linked.modifier) { + minify(linked.modifier); + linked.m = linked.modifier; + delete linked.modifier; + } + break; + case 5 /* NodeTypes.List */: + const list = node; + list.i = list.index; + delete list.index; + break; + case 4 /* NodeTypes.Named */: + const named = node; + named.k = named.key; + delete named.key; + break; + default: + { + throw createCompileError(CompileErrorCodes.UNHANDLED_MINIFIER_NODE_TYPE, null, { + domain: ERROR_DOMAIN$1, + args: [node.type] + }); + } + } + delete node.type; + } + /* eslint-enable @typescript-eslint/no-explicit-any */ + + const ERROR_DOMAIN = 'parser'; + function createCodeGenerator(ast, options) { + const { sourceMap, filename, breakLineCode, needIndent: _needIndent } = options; + const location = options.location !== false; + const _context = { + filename, + code: '', + column: 1, + line: 1, + offset: 0, + map: undefined, + breakLineCode, + needIndent: _needIndent, + indentLevel: 0 + }; + if (location && ast.loc) { + _context.source = ast.loc.source; + } + const context = () => _context; + function push(code, node) { + _context.code += code; + } + function _newline(n, withBreakLine = true) { + const _breakLineCode = withBreakLine ? breakLineCode : ''; + push(_needIndent ? _breakLineCode + ` `.repeat(n) : _breakLineCode); + } + function indent(withNewLine = true) { + const level = ++_context.indentLevel; + withNewLine && _newline(level); + } + function deindent(withNewLine = true) { + const level = --_context.indentLevel; + withNewLine && _newline(level); + } + function newline() { + _newline(_context.indentLevel); + } + const helper = (key) => `_${key}`; + const needIndent = () => _context.needIndent; + return { + context, + push, + indent, + deindent, + newline, + helper, + needIndent + }; + } + function generateLinkedNode(generator, node) { + const { helper } = generator; + generator.push(`${helper("linked" /* HelperNameMap.LINKED */)}(`); + generateNode(generator, node.key); + if (node.modifier) { + generator.push(`, `); + generateNode(generator, node.modifier); + generator.push(`, _type`); + } + else { + generator.push(`, undefined, _type`); + } + generator.push(`)`); + } + function generateMessageNode(generator, node) { + const { helper, needIndent } = generator; + generator.push(`${helper("normalize" /* HelperNameMap.NORMALIZE */)}([`); + generator.indent(needIndent()); + const length = node.items.length; + for (let i = 0; i < length; i++) { + generateNode(generator, node.items[i]); + if (i === length - 1) { + break; + } + generator.push(', '); + } + generator.deindent(needIndent()); + generator.push('])'); + } + function generatePluralNode(generator, node) { + const { helper, needIndent } = generator; + if (node.cases.length > 1) { + generator.push(`${helper("plural" /* HelperNameMap.PLURAL */)}([`); + generator.indent(needIndent()); + const length = node.cases.length; + for (let i = 0; i < length; i++) { + generateNode(generator, node.cases[i]); + if (i === length - 1) { + break; + } + generator.push(', '); + } + generator.deindent(needIndent()); + generator.push(`])`); + } + } + function generateResource(generator, node) { + if (node.body) { + generateNode(generator, node.body); + } + else { + generator.push('null'); + } + } + function generateNode(generator, node) { + const { helper } = generator; + switch (node.type) { + case 0 /* NodeTypes.Resource */: + generateResource(generator, node); + break; + case 1 /* NodeTypes.Plural */: + generatePluralNode(generator, node); + break; + case 2 /* NodeTypes.Message */: + generateMessageNode(generator, node); + break; + case 6 /* NodeTypes.Linked */: + generateLinkedNode(generator, node); + break; + case 8 /* NodeTypes.LinkedModifier */: + generator.push(JSON.stringify(node.value), node); + break; + case 7 /* NodeTypes.LinkedKey */: + generator.push(JSON.stringify(node.value), node); + break; + case 5 /* NodeTypes.List */: + generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("list" /* HelperNameMap.LIST */)}(${node.index}))`, node); + break; + case 4 /* NodeTypes.Named */: + generator.push(`${helper("interpolate" /* HelperNameMap.INTERPOLATE */)}(${helper("named" /* HelperNameMap.NAMED */)}(${JSON.stringify(node.key)}))`, node); + break; + case 9 /* NodeTypes.Literal */: + generator.push(JSON.stringify(node.value), node); + break; + case 3 /* NodeTypes.Text */: + generator.push(JSON.stringify(node.value), node); + break; + default: + { + throw createCompileError(CompileErrorCodes.UNHANDLED_CODEGEN_NODE_TYPE, null, { + domain: ERROR_DOMAIN, + args: [node.type] + }); + } + } + } + // generate code from AST + const generate = (ast, options = {} // eslint-disable-line + ) => { + const mode = isString(options.mode) ? options.mode : 'normal'; + const filename = isString(options.filename) + ? options.filename + : 'message.intl'; + const sourceMap = !!options.sourceMap; + // prettier-ignore + const breakLineCode = options.breakLineCode != null + ? options.breakLineCode + : mode === 'arrow' + ? ';' + : '\n'; + const needIndent = options.needIndent ? options.needIndent : mode !== 'arrow'; + const helpers = ast.helpers || []; + const generator = createCodeGenerator(ast, { + mode, + filename, + sourceMap, + breakLineCode, + needIndent + }); + generator.push(mode === 'normal' ? `function __msg__ (ctx) {` : `(ctx) => {`); + generator.indent(needIndent); + if (helpers.length > 0) { + generator.push(`const { ${join(helpers.map(s => `${s}: _${s}`), ', ')} } = ctx`); + generator.newline(); + } + generator.push(`return `); + generateNode(generator, ast); + generator.deindent(needIndent); + generator.push(`}`); + delete ast.helpers; + const { code, map } = generator.context(); + return { + ast, + code, + map: map ? map.toJSON() : undefined // eslint-disable-line @typescript-eslint/no-explicit-any + }; + }; + + function baseCompile$1(source, options = {}) { + const assignedOptions = assign({}, options); + const jit = !!assignedOptions.jit; + const enalbeMinify = !!assignedOptions.minify; + const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize; + // parse source codes + const parser = createParser(assignedOptions); + const ast = parser.parse(source); + if (!jit) { + // transform ASTs + transform(ast, assignedOptions); + // generate javascript codes + return generate(ast, assignedOptions); + } + else { + // optimize ASTs + enambeOptimize && optimize(ast); + // minimize ASTs + enalbeMinify && minify(ast); + // In JIT mode, no ast transform, no code generation. + return { ast, code: '' }; + } + } + + const pathStateMachine = []; + pathStateMachine[0 /* States.BEFORE_PATH */] = { + ["w" /* PathCharTypes.WORKSPACE */]: [0 /* States.BEFORE_PATH */], + ["i" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */], + ["[" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */], + ["o" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */] + }; + pathStateMachine[1 /* States.IN_PATH */] = { + ["w" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */], + ["." /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */], + ["[" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */], + ["o" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */] + }; + pathStateMachine[2 /* States.BEFORE_IDENT */] = { + ["w" /* PathCharTypes.WORKSPACE */]: [2 /* States.BEFORE_IDENT */], + ["i" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */], + ["0" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */] + }; + pathStateMachine[3 /* States.IN_IDENT */] = { + ["i" /* PathCharTypes.IDENT */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */], + ["0" /* PathCharTypes.ZERO */]: [3 /* States.IN_IDENT */, 0 /* Actions.APPEND */], + ["w" /* PathCharTypes.WORKSPACE */]: [1 /* States.IN_PATH */, 1 /* Actions.PUSH */], + ["." /* PathCharTypes.DOT */]: [2 /* States.BEFORE_IDENT */, 1 /* Actions.PUSH */], + ["[" /* PathCharTypes.LEFT_BRACKET */]: [4 /* States.IN_SUB_PATH */, 1 /* Actions.PUSH */], + ["o" /* PathCharTypes.END_OF_FAIL */]: [7 /* States.AFTER_PATH */, 1 /* Actions.PUSH */] + }; + pathStateMachine[4 /* States.IN_SUB_PATH */] = { + ["'" /* PathCharTypes.SINGLE_QUOTE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */], + ["\"" /* PathCharTypes.DOUBLE_QUOTE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */], + ["[" /* PathCharTypes.LEFT_BRACKET */]: [ + 4 /* States.IN_SUB_PATH */, + 2 /* Actions.INC_SUB_PATH_DEPTH */ + ], + ["]" /* PathCharTypes.RIGHT_BRACKET */]: [1 /* States.IN_PATH */, 3 /* Actions.PUSH_SUB_PATH */], + ["o" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */, + ["l" /* PathCharTypes.ELSE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */] + }; + pathStateMachine[5 /* States.IN_SINGLE_QUOTE */] = { + ["'" /* PathCharTypes.SINGLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */], + ["o" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */, + ["l" /* PathCharTypes.ELSE */]: [5 /* States.IN_SINGLE_QUOTE */, 0 /* Actions.APPEND */] + }; + pathStateMachine[6 /* States.IN_DOUBLE_QUOTE */] = { + ["\"" /* PathCharTypes.DOUBLE_QUOTE */]: [4 /* States.IN_SUB_PATH */, 0 /* Actions.APPEND */], + ["o" /* PathCharTypes.END_OF_FAIL */]: 8 /* States.ERROR */, + ["l" /* PathCharTypes.ELSE */]: [6 /* States.IN_DOUBLE_QUOTE */, 0 /* Actions.APPEND */] + }; + /** + * Check if an expression is a literal value. + */ + const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/; + function isLiteral(exp) { + return literalValueRE.test(exp); + } + /** + * Strip quotes from a string + */ + function stripQuotes(str) { + const a = str.charCodeAt(0); + const b = str.charCodeAt(str.length - 1); + return a === b && (a === 0x22 || a === 0x27) ? str.slice(1, -1) : str; + } + /** + * Determine the type of a character in a keypath. + */ + function getPathCharType(ch) { + if (ch === undefined || ch === null) { + return "o" /* PathCharTypes.END_OF_FAIL */; + } + const code = ch.charCodeAt(0); + switch (code) { + case 0x5b: // [ + case 0x5d: // ] + case 0x2e: // . + case 0x22: // " + case 0x27: // ' + return ch; + case 0x5f: // _ + case 0x24: // $ + case 0x2d: // - + return "i" /* PathCharTypes.IDENT */; + case 0x09: // Tab (HT) + case 0x0a: // Newline (LF) + case 0x0d: // Return (CR) + case 0xa0: // No-break space (NBSP) + case 0xfeff: // Byte Order Mark (BOM) + case 0x2028: // Line Separator (LS) + case 0x2029: // Paragraph Separator (PS) + return "w" /* PathCharTypes.WORKSPACE */; + } + return "i" /* PathCharTypes.IDENT */; + } + /** + * Format a subPath, return its plain form if it is + * a literal string or number. Otherwise prepend the + * dynamic indicator (*). + */ + function formatSubPath(path) { + const trimmed = path.trim(); + // invalid leading 0 + if (path.charAt(0) === '0' && isNaN(parseInt(path))) { + return false; + } + return isLiteral(trimmed) + ? stripQuotes(trimmed) + : "*" /* PathCharTypes.ASTARISK */ + trimmed; + } + /** + * Parse a string path into an array of segments + */ + function parse(path) { + const keys = []; + let index = -1; + let mode = 0 /* States.BEFORE_PATH */; + let subPathDepth = 0; + let c; + let key; // eslint-disable-line + let newChar; + let type; + let transition; + let action; + let typeMap; + const actions = []; + actions[0 /* Actions.APPEND */] = () => { + if (key === undefined) { + key = newChar; + } + else { + key += newChar; + } + }; + actions[1 /* Actions.PUSH */] = () => { + if (key !== undefined) { + keys.push(key); + key = undefined; + } + }; + actions[2 /* Actions.INC_SUB_PATH_DEPTH */] = () => { + actions[0 /* Actions.APPEND */](); + subPathDepth++; + }; + actions[3 /* Actions.PUSH_SUB_PATH */] = () => { + if (subPathDepth > 0) { + subPathDepth--; + mode = 4 /* States.IN_SUB_PATH */; + actions[0 /* Actions.APPEND */](); + } + else { + subPathDepth = 0; + if (key === undefined) { + return false; + } + key = formatSubPath(key); + if (key === false) { + return false; + } + else { + actions[1 /* Actions.PUSH */](); + } + } + }; + function maybeUnescapeQuote() { + const nextChar = path[index + 1]; + if ((mode === 5 /* States.IN_SINGLE_QUOTE */ && + nextChar === "'" /* PathCharTypes.SINGLE_QUOTE */) || + (mode === 6 /* States.IN_DOUBLE_QUOTE */ && + nextChar === "\"" /* PathCharTypes.DOUBLE_QUOTE */)) { + index++; + newChar = '\\' + nextChar; + actions[0 /* Actions.APPEND */](); + return true; + } + } + while (mode !== null) { + index++; + c = path[index]; + if (c === '\\' && maybeUnescapeQuote()) { + continue; + } + type = getPathCharType(c); + typeMap = pathStateMachine[mode]; + transition = typeMap[type] || typeMap["l" /* PathCharTypes.ELSE */] || 8 /* States.ERROR */; + // check parse error + if (transition === 8 /* States.ERROR */) { + return; + } + mode = transition[0]; + if (transition[1] !== undefined) { + action = actions[transition[1]]; + if (action) { + newChar = c; + if (action() === false) { + return; + } + } + } + // check parse finish + if (mode === 7 /* States.AFTER_PATH */) { + return keys; + } + } + } + // path token cache + const cache = new Map(); + /** + * key-value message resolver + * + * @remarks + * Resolves messages with the key-value structure. Note that messages with a hierarchical structure such as objects cannot be resolved + * + * @param obj - A target object to be resolved with path + * @param path - A {@link Path | path} to resolve the value of message + * + * @returns A resolved {@link PathValue | path value} + * + * @VueI18nGeneral + */ + function resolveWithKeyValue(obj, path) { + return isObject(obj) ? obj[path] : null; + } + /** + * message resolver + * + * @remarks + * Resolves messages. messages with a hierarchical structure such as objects can be resolved. This resolver is used in VueI18n as default. + * + * @param obj - A target object to be resolved with path + * @param path - A {@link Path | path} to resolve the value of message + * + * @returns A resolved {@link PathValue | path value} + * + * @VueI18nGeneral + */ + function resolveValue(obj, path) { + // check object + if (!isObject(obj)) { + return null; + } + // parse path + let hit = cache.get(path); + if (!hit) { + hit = parse(path); + if (hit) { + cache.set(path, hit); + } + } + // check hit + if (!hit) { + return null; + } + // resolve path value + const len = hit.length; + let last = obj; + let i = 0; + while (i < len) { + const val = last[hit[i]]; + if (val === undefined) { + return null; + } + last = val; + i++; + } + return last; + } + + const DEFAULT_MODIFIER = (str) => str; + const DEFAULT_MESSAGE = (ctx) => ''; // eslint-disable-line + const DEFAULT_MESSAGE_DATA_TYPE = 'text'; + const DEFAULT_NORMALIZE = (values) => values.length === 0 ? '' : join(values); + const DEFAULT_INTERPOLATE = toDisplayString; + function pluralDefault(choice, choicesLength) { + choice = Math.abs(choice); + if (choicesLength === 2) { + // prettier-ignore + return choice + ? choice > 1 + ? 1 + : 0 + : 1; + } + return choice ? Math.min(choice, 2) : 0; + } + function getPluralIndex(options) { + // prettier-ignore + const index = isNumber(options.pluralIndex) + ? options.pluralIndex + : -1; + // prettier-ignore + return options.named && (isNumber(options.named.count) || isNumber(options.named.n)) + ? isNumber(options.named.count) + ? options.named.count + : isNumber(options.named.n) + ? options.named.n + : index + : index; + } + function normalizeNamed(pluralIndex, props) { + if (!props.count) { + props.count = pluralIndex; + } + if (!props.n) { + props.n = pluralIndex; + } + } + function createMessageContext(options = {}) { + const locale = options.locale; + const pluralIndex = getPluralIndex(options); + const pluralRule = isObject(options.pluralRules) && + isString(locale) && + isFunction(options.pluralRules[locale]) + ? options.pluralRules[locale] + : pluralDefault; + const orgPluralRule = isObject(options.pluralRules) && + isString(locale) && + isFunction(options.pluralRules[locale]) + ? pluralDefault + : undefined; + const plural = (messages) => { + return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)]; + }; + const _list = options.list || []; + const list = (index) => _list[index]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const _named = options.named || {}; + isNumber(options.pluralIndex) && normalizeNamed(pluralIndex, _named); + const named = (key) => _named[key]; + function message(key) { + // prettier-ignore + const msg = isFunction(options.messages) + ? options.messages(key) + : isObject(options.messages) + ? options.messages[key] + : false; + return !msg + ? options.parent + ? options.parent.message(key) // resolve from parent messages + : DEFAULT_MESSAGE + : msg; + } + const _modifier = (name) => options.modifiers + ? options.modifiers[name] + : DEFAULT_MODIFIER; + const normalize = isPlainObject(options.processor) && isFunction(options.processor.normalize) + ? options.processor.normalize + : DEFAULT_NORMALIZE; + const interpolate = isPlainObject(options.processor) && + isFunction(options.processor.interpolate) + ? options.processor.interpolate + : DEFAULT_INTERPOLATE; + const type = isPlainObject(options.processor) && isString(options.processor.type) + ? options.processor.type + : DEFAULT_MESSAGE_DATA_TYPE; + const linked = (key, ...args) => { + const [arg1, arg2] = args; + let type = 'text'; + let modifier = ''; + if (args.length === 1) { + if (isObject(arg1)) { + modifier = arg1.modifier || modifier; + type = arg1.type || type; + } + else if (isString(arg1)) { + modifier = arg1 || modifier; + } + } + else if (args.length === 2) { + if (isString(arg1)) { + modifier = arg1 || modifier; + } + if (isString(arg2)) { + type = arg2 || type; + } + } + const ret = message(key)(ctx); + const msg = + // The message in vnode resolved with linked are returned as an array by processor.nomalize + type === 'vnode' && isArray(ret) && modifier + ? ret[0] + : ret; + return modifier ? _modifier(modifier)(msg, type) : msg; + }; + const ctx = { + ["list" /* HelperNameMap.LIST */]: list, + ["named" /* HelperNameMap.NAMED */]: named, + ["plural" /* HelperNameMap.PLURAL */]: plural, + ["linked" /* HelperNameMap.LINKED */]: linked, + ["message" /* HelperNameMap.MESSAGE */]: message, + ["type" /* HelperNameMap.TYPE */]: type, + ["interpolate" /* HelperNameMap.INTERPOLATE */]: interpolate, + ["normalize" /* HelperNameMap.NORMALIZE */]: normalize, + ["values" /* HelperNameMap.VALUES */]: assign({}, _list, _named) + }; + return ctx; + } + + let devtools = null; + function setDevToolsHook(hook) { + devtools = hook; + } + function initI18nDevTools(i18n, version, meta) { + // TODO: queue if devtools is undefined + devtools && + devtools.emit("i18n:init" /* IntlifyDevToolsHooks.I18nInit */, { + timestamp: Date.now(), + i18n, + version, + meta + }); + } + const translateDevTools = /* #__PURE__*/ createDevToolsHook("function:translate" /* IntlifyDevToolsHooks.FunctionTranslate */); + function createDevToolsHook(hook) { + return (payloads) => devtools && devtools.emit(hook, payloads); + } + + const CoreWarnCodes = { + NOT_FOUND_KEY: 1, + FALLBACK_TO_TRANSLATE: 2, + CANNOT_FORMAT_NUMBER: 3, + FALLBACK_TO_NUMBER_FORMAT: 4, + CANNOT_FORMAT_DATE: 5, + FALLBACK_TO_DATE_FORMAT: 6, + EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER: 7, + __EXTEND_POINT__: 8 + }; + /** @internal */ + const warnMessages$1 = { + [CoreWarnCodes.NOT_FOUND_KEY]: `Not found '{key}' key in '{locale}' locale messages.`, + [CoreWarnCodes.FALLBACK_TO_TRANSLATE]: `Fall back to translate '{key}' key with '{target}' locale.`, + [CoreWarnCodes.CANNOT_FORMAT_NUMBER]: `Cannot format a number value due to not supported Intl.NumberFormat.`, + [CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT]: `Fall back to number format '{key}' key with '{target}' locale.`, + [CoreWarnCodes.CANNOT_FORMAT_DATE]: `Cannot format a date value due to not supported Intl.DateTimeFormat.`, + [CoreWarnCodes.FALLBACK_TO_DATE_FORMAT]: `Fall back to datetime format '{key}' key with '{target}' locale.`, + [CoreWarnCodes.EXPERIMENTAL_CUSTOM_MESSAGE_COMPILER]: `This project is using Custom Message Compiler, which is an experimental feature. It may receive breaking changes or be removed in the future.` + }; + function getWarnMessage$1(code, ...args) { + return format$1(warnMessages$1[code], ...args); + } + + /** @internal */ + function getLocale(context, options) { + return options.locale != null + ? resolveLocale(options.locale) + : resolveLocale(context.locale); + } + let _resolveLocale; + /** @internal */ + function resolveLocale(locale) { + // prettier-ignore + return isString(locale) + ? locale + : _resolveLocale != null && locale.resolvedOnce + ? _resolveLocale + : (_resolveLocale = locale()); + } + /** + * Fallback with simple implemenation + * + * @remarks + * A fallback locale function implemented with a simple fallback algorithm. + * + * Basically, it returns the value as specified in the `fallbackLocale` props, and is processed with the fallback inside intlify. + * + * @param ctx - A {@link CoreContext | context} + * @param fallback - A {@link FallbackLocale | fallback locale} + * @param start - A starting {@link Locale | locale} + * + * @returns Fallback locales + * + * @VueI18nGeneral + */ + function fallbackWithSimple(ctx, fallback, start // eslint-disable-line @typescript-eslint/no-unused-vars + ) { + // prettier-ignore + return [...new Set([ + start, + ...(isArray(fallback) + ? fallback + : isObject(fallback) + ? Object.keys(fallback) + : isString(fallback) + ? [fallback] + : [start]) + ])]; + } + /** + * Fallback with locale chain + * + * @remarks + * A fallback locale function implemented with a fallback chain algorithm. It's used in VueI18n as default. + * + * @param ctx - A {@link CoreContext | context} + * @param fallback - A {@link FallbackLocale | fallback locale} + * @param start - A starting {@link Locale | locale} + * + * @returns Fallback locales + * + * @VueI18nSee [Fallbacking](../guide/essentials/fallback) + * + * @VueI18nGeneral + */ + function fallbackWithLocaleChain(ctx, fallback, start) { + const startLocale = isString(start) ? start : DEFAULT_LOCALE; + const context = ctx; + if (!context.__localeChainCache) { + context.__localeChainCache = new Map(); + } + let chain = context.__localeChainCache.get(startLocale); + if (!chain) { + chain = []; + // first block defined by start + let block = [start]; + // while any intervening block found + while (isArray(block)) { + block = appendBlockToChain(chain, block, fallback); + } + // prettier-ignore + // last block defined by default + const defaults = isArray(fallback) || !isPlainObject(fallback) + ? fallback + : fallback['default'] + ? fallback['default'] + : null; + // convert defaults to array + block = isString(defaults) ? [defaults] : defaults; + if (isArray(block)) { + appendBlockToChain(chain, block, false); + } + context.__localeChainCache.set(startLocale, chain); + } + return chain; + } + function appendBlockToChain(chain, block, blocks) { + let follow = true; + for (let i = 0; i < block.length && isBoolean(follow); i++) { + const locale = block[i]; + if (isString(locale)) { + follow = appendLocaleToChain(chain, block[i], blocks); + } + } + return follow; + } + function appendLocaleToChain(chain, locale, blocks) { + let follow; + const tokens = locale.split('-'); + do { + const target = tokens.join('-'); + follow = appendItemToChain(chain, target, blocks); + tokens.splice(-1, 1); + } while (tokens.length && follow === true); + return follow; + } + function appendItemToChain(chain, target, blocks) { + let follow = false; + if (!chain.includes(target)) { + follow = true; + if (target) { + follow = target[target.length - 1] !== '!'; + const locale = target.replace(/!/g, ''); + chain.push(locale); + if ((isArray(blocks) || isPlainObject(blocks)) && + blocks[locale] // eslint-disable-line @typescript-eslint/no-explicit-any + ) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + follow = blocks[locale]; + } + } + } + return follow; + } + + /* eslint-disable @typescript-eslint/no-explicit-any */ + /** + * Intlify core-base version + * @internal + */ + const VERSION$1 = '9.5.0'; + const NOT_REOSLVED = -1; + const DEFAULT_LOCALE = 'en-US'; + const MISSING_RESOLVE_VALUE = ''; + const capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`; + function getDefaultLinkedModifiers() { + return { + upper: (val, type) => { + // prettier-ignore + return type === 'text' && isString(val) + ? val.toUpperCase() + : type === 'vnode' && isObject(val) && '__v_isVNode' in val + ? val.children.toUpperCase() + : val; + }, + lower: (val, type) => { + // prettier-ignore + return type === 'text' && isString(val) + ? val.toLowerCase() + : type === 'vnode' && isObject(val) && '__v_isVNode' in val + ? val.children.toLowerCase() + : val; + }, + capitalize: (val, type) => { + // prettier-ignore + return (type === 'text' && isString(val) + ? capitalize(val) + : type === 'vnode' && isObject(val) && '__v_isVNode' in val + ? capitalize(val.children) + : val); + } + }; + } + let _compiler; + function registerMessageCompiler(compiler) { + _compiler = compiler; + } + let _resolver; + /** + * Register the message resolver + * + * @param resolver - A {@link MessageResolver} function + * + * @VueI18nGeneral + */ + function registerMessageResolver(resolver) { + _resolver = resolver; + } + let _fallbacker; + /** + * Register the locale fallbacker + * + * @param fallbacker - A {@link LocaleFallbacker} function + * + * @VueI18nGeneral + */ + function registerLocaleFallbacker(fallbacker) { + _fallbacker = fallbacker; + } + // Additional Meta for Intlify DevTools + let _additionalMeta = null; + const setAdditionalMeta = /* #__PURE__*/ (meta) => { + _additionalMeta = meta; + }; + const getAdditionalMeta = /* #__PURE__*/ () => _additionalMeta; + let _fallbackContext = null; + const setFallbackContext = (context) => { + _fallbackContext = context; + }; + const getFallbackContext = () => _fallbackContext; + // ID for CoreContext + let _cid = 0; + function createCoreContext(options = {}) { + // setup options + const onWarn = isFunction(options.onWarn) ? options.onWarn : warn; + const version = isString(options.version) ? options.version : VERSION$1; + const locale = isString(options.locale) || isFunction(options.locale) + ? options.locale + : DEFAULT_LOCALE; + const _locale = isFunction(locale) ? DEFAULT_LOCALE : locale; + const fallbackLocale = isArray(options.fallbackLocale) || + isPlainObject(options.fallbackLocale) || + isString(options.fallbackLocale) || + options.fallbackLocale === false + ? options.fallbackLocale + : _locale; + const messages = isPlainObject(options.messages) + ? options.messages + : { [_locale]: {} }; + const datetimeFormats = isPlainObject(options.datetimeFormats) + ? options.datetimeFormats + : { [_locale]: {} } + ; + const numberFormats = isPlainObject(options.numberFormats) + ? options.numberFormats + : { [_locale]: {} } + ; + const modifiers = assign({}, options.modifiers || {}, getDefaultLinkedModifiers()); + const pluralRules = options.pluralRules || {}; + const missing = isFunction(options.missing) ? options.missing : null; + const missingWarn = isBoolean(options.missingWarn) || isRegExp(options.missingWarn) + ? options.missingWarn + : true; + const fallbackWarn = isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) + ? options.fallbackWarn + : true; + const fallbackFormat = !!options.fallbackFormat; + const unresolving = !!options.unresolving; + const postTranslation = isFunction(options.postTranslation) + ? options.postTranslation + : null; + const processor = isPlainObject(options.processor) ? options.processor : null; + const warnHtmlMessage = isBoolean(options.warnHtmlMessage) + ? options.warnHtmlMessage + : true; + const escapeParameter = !!options.escapeParameter; + const messageCompiler = isFunction(options.messageCompiler) + ? options.messageCompiler + : _compiler; + const messageResolver = isFunction(options.messageResolver) + ? options.messageResolver + : _resolver || resolveWithKeyValue; + const localeFallbacker = isFunction(options.localeFallbacker) + ? options.localeFallbacker + : _fallbacker || fallbackWithSimple; + const fallbackContext = isObject(options.fallbackContext) + ? options.fallbackContext + : undefined; + // setup internal options + const internalOptions = options; + const __datetimeFormatters = isObject(internalOptions.__datetimeFormatters) + ? internalOptions.__datetimeFormatters + : new Map() + ; + const __numberFormatters = isObject(internalOptions.__numberFormatters) + ? internalOptions.__numberFormatters + : new Map() + ; + const __meta = isObject(internalOptions.__meta) ? internalOptions.__meta : {}; + _cid++; + const context = { + version, + cid: _cid, + locale, + fallbackLocale, + messages, + modifiers, + pluralRules, + missing, + missingWarn, + fallbackWarn, + fallbackFormat, + unresolving, + postTranslation, + processor, + warnHtmlMessage, + escapeParameter, + messageCompiler, + messageResolver, + localeFallbacker, + fallbackContext, + onWarn, + __meta + }; + { + context.datetimeFormats = datetimeFormats; + context.numberFormats = numberFormats; + context.__datetimeFormatters = __datetimeFormatters; + context.__numberFormatters = __numberFormatters; + } + // for vue-devtools timeline event + { + context.__v_emitter = + internalOptions.__v_emitter != null + ? internalOptions.__v_emitter + : undefined; + } + // NOTE: experimental !! + { + initI18nDevTools(context, version, __meta); + } + return context; + } + /** @internal */ + function isTranslateFallbackWarn(fallback, key) { + return fallback instanceof RegExp ? fallback.test(key) : fallback; + } + /** @internal */ + function isTranslateMissingWarn(missing, key) { + return missing instanceof RegExp ? missing.test(key) : missing; + } + /** @internal */ + function handleMissing(context, key, locale, missingWarn, type) { + const { missing, onWarn } = context; + // for vue-devtools timeline event + { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("missing" /* VueDevToolsTimelineEvents.MISSING */, { + locale, + key, + type, + groupId: `${type}:${key}` + }); + } + } + if (missing !== null) { + const ret = missing(context, locale, key, type); + return isString(ret) ? ret : key; + } + else { + if (isTranslateMissingWarn(missingWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.NOT_FOUND_KEY, { key, locale })); + } + return key; + } + } + /** @internal */ + function updateFallbackLocale(ctx, locale, fallback) { + const context = ctx; + context.__localeChainCache = new Map(); + ctx.localeFallbacker(ctx, fallback, locale); + } + /* eslint-enable @typescript-eslint/no-explicit-any */ + + function format(ast) { + const msg = (ctx) => formatParts(ctx, ast); + return msg; + } + function formatParts(ctx, ast) { + const body = ast.b || ast.body; + if ((body.t || body.type) === 1 /* NodeTypes.Plural */) { + const plural = body; + const cases = plural.c || plural.cases; + return ctx.plural(cases.reduce((messages, c) => [ + ...messages, + formatMessageParts(ctx, c) + ], [])); + } + else { + return formatMessageParts(ctx, body); + } + } + function formatMessageParts(ctx, node) { + const _static = node.s || node.static; + if (_static) { + return ctx.type === 'text' + ? _static + : ctx.normalize([_static]); + } + else { + const messages = (node.i || node.items).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []); + return ctx.normalize(messages); + } + } + function formatMessagePart(ctx, node) { + const type = node.t || node.type; + switch (type) { + case 3 /* NodeTypes.Text */: + const text = node; + return (text.v || text.value); + case 9 /* NodeTypes.Literal */: + const literal = node; + return (literal.v || literal.value); + case 4 /* NodeTypes.Named */: + const named = node; + return ctx.interpolate(ctx.named(named.k || named.key)); + case 5 /* NodeTypes.List */: + const list = node; + return ctx.interpolate(ctx.list(list.i != null ? list.i : list.index)); + case 6 /* NodeTypes.Linked */: + const linked = node; + const modifier = linked.m || linked.modifier; + return ctx.linked(formatMessagePart(ctx, linked.k || linked.key), modifier ? formatMessagePart(ctx, modifier) : undefined, ctx.type); + case 7 /* NodeTypes.LinkedKey */: + const linkedKey = node; + return (linkedKey.v || linkedKey.value); + case 8 /* NodeTypes.LinkedModifier */: + const linkedModifier = node; + return (linkedModifier.v || linkedModifier.value); + default: + throw new Error(`unhandled node type on format message part: ${type}`); + } + } + + const code$2 = CompileErrorCodes.__EXTEND_POINT__; + const inc$2 = incrementer(code$2); + const CoreErrorCodes = { + INVALID_ARGUMENT: code$2, + INVALID_DATE_ARGUMENT: inc$2(), + INVALID_ISO_DATE_ARGUMENT: inc$2(), + NOT_SUPPORT_NON_STRING_MESSAGE: inc$2(), + __EXTEND_POINT__: inc$2() // 22 + }; + function createCoreError(code) { + return createCompileError(code, null, { messages: errorMessages$1 } ); + } + /** @internal */ + const errorMessages$1 = { + [CoreErrorCodes.INVALID_ARGUMENT]: 'Invalid arguments', + [CoreErrorCodes.INVALID_DATE_ARGUMENT]: 'The date provided is an invalid Date object.' + + 'Make sure your Date represents a valid date.', + [CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT]: 'The argument provided is not a valid ISO date string', + [CoreErrorCodes.NOT_SUPPORT_NON_STRING_MESSAGE]: 'Not support non-string message' + }; + + const WARN_MESSAGE = `Detected HTML in '{source}' message. Recommend not using HTML messages to avoid XSS.`; + function checkHtmlMessage(source, warnHtmlMessage) { + if (warnHtmlMessage && detectHtmlTag(source)) { + warn(format$1(WARN_MESSAGE, { source })); + } + } + const defaultOnCacheKey = (message) => message; + let compileCache = Object.create(null); + const isMessageAST = (val) => isObject(val) && + (val.t === 0 || val.type === 0) && + ('b' in val || 'body' in val); + function baseCompile(message, options = {}) { + // error detecting on compile + let detectError = false; + const onError = options.onError || defaultOnError; + options.onError = (err) => { + detectError = true; + onError(err); + }; + // compile with mesasge-compiler + return { ...baseCompile$1(message, options), detectError }; + } + function compile(message, context) { + if (isString(message)) { + // check HTML message + const warnHtmlMessage = isBoolean(context.warnHtmlMessage) + ? context.warnHtmlMessage + : true; + checkHtmlMessage(message, warnHtmlMessage); + // check caches + const onCacheKey = context.onCacheKey || defaultOnCacheKey; + const cacheKey = onCacheKey(message); + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + // compile with JIT mode + const { ast, detectError } = baseCompile(message, { + ...context, + location: true, + jit: true + }); + // compose message function from AST + const msg = format(ast); + // if occurred compile error, don't cache + return !detectError + ? (compileCache[cacheKey] = msg) + : msg; + } + else { + if (!isMessageAST(message)) { + warn(`the message that is resolve with key '${context.key}' is not supported for jit compilation`); + return (() => message); + } + // AST case (passed from bundler) + const cacheKey = message.cacheKey; + if (cacheKey) { + const cached = compileCache[cacheKey]; + if (cached) { + return cached; + } + // compose message function from message (AST) + return (compileCache[cacheKey] = + format(message)); + } + else { + return format(message); + } + } + } + + const NOOP_MESSAGE_FUNCTION = () => ''; + const isMessageFunction = (val) => isFunction(val); + // implementation of `translate` function + function translate(context, ...args) { + const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context; + const [key, options] = parseTranslateArgs(...args); + const missingWarn = isBoolean(options.missingWarn) + ? options.missingWarn + : context.missingWarn; + const fallbackWarn = isBoolean(options.fallbackWarn) + ? options.fallbackWarn + : context.fallbackWarn; + const escapeParameter = isBoolean(options.escapeParameter) + ? options.escapeParameter + : context.escapeParameter; + const resolvedMessage = !!options.resolvedMessage; + // prettier-ignore + const defaultMsgOrKey = isString(options.default) || isBoolean(options.default) // default by function option + ? !isBoolean(options.default) + ? options.default + : (!messageCompiler ? () => key : key) + : fallbackFormat // default by `fallbackFormat` option + ? (!messageCompiler ? () => key : key) + : ''; + const enableDefaultMsg = fallbackFormat || defaultMsgOrKey !== ''; + const locale = getLocale(context, options); + // escape params + escapeParameter && escapeParams(options); + // resolve message format + // eslint-disable-next-line prefer-const + let [formatScope, targetLocale, message] = !resolvedMessage + ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) + : [ + key, + locale, + messages[locale] || {} + ]; + // NOTE: + // Fix to work around `ssrTransfrom` bug in Vite. + // https://github.com/vitejs/vite/issues/4306 + // To get around this, use temporary variables. + // https://github.com/nuxt/framework/issues/1461#issuecomment-954606243 + let format = formatScope; + // if you use default message, set it as message format! + let cacheBaseKey = key; + if (!resolvedMessage && + !(isString(format) || + isMessageAST(format) || + isMessageFunction(format))) { + if (enableDefaultMsg) { + format = defaultMsgOrKey; + cacheBaseKey = format; + } + } + // checking message format and target locale + if (!resolvedMessage && + (!(isString(format) || + isMessageAST(format) || + isMessageFunction(format)) || + !isString(targetLocale))) { + return unresolving ? NOT_REOSLVED : key; + } + // TODO: refactor + if (isString(format) && context.messageCompiler == null) { + warn(`The message format compilation is not supported in this build. ` + + `Because message compiler isn't included. ` + + `You need to pre-compilation all message format. ` + + `So translate function return '${key}'.`); + return key; + } + // setup compile error detecting + let occurred = false; + const onError = () => { + occurred = true; + }; + // compile message format + const msg = !isMessageFunction(format) + ? compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) + : format; + // if occurred compile error, return the message format + if (occurred) { + return format; + } + // evaluate message with context + const ctxOptions = getMessageContextOptions(context, targetLocale, message, options); + const msgContext = createMessageContext(ctxOptions); + const messaged = evaluateMessage(context, msg, msgContext); + // if use post translation option, proceed it with handler + const ret = postTranslation + ? postTranslation(messaged, key) + : messaged; + // NOTE: experimental !! + { + // prettier-ignore + const payloads = { + timestamp: Date.now(), + key: isString(key) + ? key + : isMessageFunction(format) + ? format.key + : '', + locale: targetLocale || (isMessageFunction(format) + ? format.locale + : ''), + format: isString(format) + ? format + : isMessageFunction(format) + ? format.source + : '', + message: ret + }; + payloads.meta = assign({}, context.__meta, getAdditionalMeta() || {}); + translateDevTools(payloads); + } + return ret; + } + function escapeParams(options) { + if (isArray(options.list)) { + options.list = options.list.map(item => isString(item) ? escapeHtml(item) : item); + } + else if (isObject(options.named)) { + Object.keys(options.named).forEach(key => { + if (isString(options.named[key])) { + options.named[key] = escapeHtml(options.named[key]); + } + }); + } + } + function resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) { + const { messages, onWarn, messageResolver: resolveValue, localeFallbacker } = context; + const locales = localeFallbacker(context, fallbackLocale, locale); // eslint-disable-line @typescript-eslint/no-explicit-any + let message = {}; + let targetLocale; + let format = null; + let from = locale; + let to = null; + const type = 'translate'; + for (let i = 0; i < locales.length; i++) { + targetLocale = to = locales[i]; + if (locale !== targetLocale && + isTranslateFallbackWarn(fallbackWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.FALLBACK_TO_TRANSLATE, { + key, + target: targetLocale + })); + } + // for vue-devtools timeline event + if (locale !== targetLocale) { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("fallback" /* VueDevToolsTimelineEvents.FALBACK */, { + type, + key, + from, + to, + groupId: `${type}:${key}` + }); + } + } + message = + messages[targetLocale] || {}; + // for vue-devtools timeline event + let start = null; + let startTag; + let endTag; + if (inBrowser) { + start = window.performance.now(); + startTag = 'intlify-message-resolve-start'; + endTag = 'intlify-message-resolve-end'; + mark && mark(startTag); + } + if ((format = resolveValue(message, key)) === null) { + // if null, resolve with object key path + format = message[key]; // eslint-disable-line @typescript-eslint/no-explicit-any + } + // for vue-devtools timeline event + if (inBrowser) { + const end = window.performance.now(); + const emitter = context.__v_emitter; + if (emitter && start && format) { + emitter.emit("message-resolve" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */, { + type: "message-resolve" /* VueDevToolsTimelineEvents.MESSAGE_RESOLVE */, + key, + message: format, + time: end - start, + groupId: `${type}:${key}` + }); + } + if (startTag && endTag && mark && measure) { + mark(endTag); + measure('intlify message resolve', startTag, endTag); + } + } + if (isString(format) || isMessageAST(format) || isMessageFunction(format)) { + break; + } + const missingRet = handleMissing(context, // eslint-disable-line @typescript-eslint/no-explicit-any + key, targetLocale, missingWarn, type); + if (missingRet !== key) { + format = missingRet; + } + from = to; + } + return [format, targetLocale, message]; + } + function compileMessageFormat(context, key, targetLocale, format, cacheBaseKey, onError) { + const { messageCompiler, warnHtmlMessage } = context; + if (isMessageFunction(format)) { + const msg = format; + msg.locale = msg.locale || targetLocale; + msg.key = msg.key || key; + return msg; + } + if (messageCompiler == null) { + const msg = (() => format); + msg.locale = targetLocale; + msg.key = key; + return msg; + } + // for vue-devtools timeline event + let start = null; + let startTag; + let endTag; + if (inBrowser) { + start = window.performance.now(); + startTag = 'intlify-message-compilation-start'; + endTag = 'intlify-message-compilation-end'; + mark && mark(startTag); + } + const msg = messageCompiler(format, getCompileContext(context, targetLocale, cacheBaseKey, format, warnHtmlMessage, onError)); + // for vue-devtools timeline event + if (inBrowser) { + const end = window.performance.now(); + const emitter = context.__v_emitter; + if (emitter && start) { + emitter.emit("message-compilation" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */, { + type: "message-compilation" /* VueDevToolsTimelineEvents.MESSAGE_COMPILATION */, + message: format, + time: end - start, + groupId: `${'translate'}:${key}` + }); + } + if (startTag && endTag && mark && measure) { + mark(endTag); + measure('intlify message compilation', startTag, endTag); + } + } + msg.locale = targetLocale; + msg.key = key; + msg.source = format; + return msg; + } + function evaluateMessage(context, msg, msgCtx) { + // for vue-devtools timeline event + let start = null; + let startTag; + let endTag; + if (inBrowser) { + start = window.performance.now(); + startTag = 'intlify-message-evaluation-start'; + endTag = 'intlify-message-evaluation-end'; + mark && mark(startTag); + } + const messaged = msg(msgCtx); + // for vue-devtools timeline event + if (inBrowser) { + const end = window.performance.now(); + const emitter = context.__v_emitter; + if (emitter && start) { + emitter.emit("message-evaluation" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */, { + type: "message-evaluation" /* VueDevToolsTimelineEvents.MESSAGE_EVALUATION */, + value: messaged, + time: end - start, + groupId: `${'translate'}:${msg.key}` + }); + } + if (startTag && endTag && mark && measure) { + mark(endTag); + measure('intlify message evaluation', startTag, endTag); + } + } + return messaged; + } + /** @internal */ + function parseTranslateArgs(...args) { + const [arg1, arg2, arg3] = args; + const options = {}; + if (!isString(arg1) && + !isNumber(arg1) && + !isMessageFunction(arg1) && + !isMessageAST(arg1)) { + throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); + } + // prettier-ignore + const key = isNumber(arg1) + ? String(arg1) + : isMessageFunction(arg1) + ? arg1 + : arg1; + if (isNumber(arg2)) { + options.plural = arg2; + } + else if (isString(arg2)) { + options.default = arg2; + } + else if (isPlainObject(arg2) && !isEmptyObject(arg2)) { + options.named = arg2; + } + else if (isArray(arg2)) { + options.list = arg2; + } + if (isNumber(arg3)) { + options.plural = arg3; + } + else if (isString(arg3)) { + options.default = arg3; + } + else if (isPlainObject(arg3)) { + assign(options, arg3); + } + return [key, options]; + } + function getCompileContext(context, locale, key, source, warnHtmlMessage, onError) { + return { + locale, + key, + warnHtmlMessage, + onError: (err) => { + onError && onError(err); + { + const _source = getSourceForCodeFrame(source); + const message = `Message compilation error: ${err.message}`; + const codeFrame = err.location && + _source && + generateCodeFrame(_source, err.location.start.offset, err.location.end.offset); + const emitter = context.__v_emitter; + if (emitter && _source) { + emitter.emit("compile-error" /* VueDevToolsTimelineEvents.COMPILE_ERROR */, { + message: _source, + error: err.message, + start: err.location && err.location.start.offset, + end: err.location && err.location.end.offset, + groupId: `${'translate'}:${key}` + }); + } + console.error(codeFrame ? `${message}\n${codeFrame}` : message); + } + }, + onCacheKey: (source) => generateFormatCacheKey(locale, key, source) + }; + } + function getSourceForCodeFrame(source) { + if (isString(source)) ; + else { + if (source.loc?.source) { + return source.loc.source; + } + } + } + function getMessageContextOptions(context, locale, message, options) { + const { modifiers, pluralRules, messageResolver: resolveValue, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context; + const resolveMessage = (key) => { + let val = resolveValue(message, key); + // fallback to root context + if (val == null && fallbackContext) { + const [, , message] = resolveMessageFormat(fallbackContext, key, locale, fallbackLocale, fallbackWarn, missingWarn); + val = resolveValue(message, key); + } + if (isString(val) || isMessageAST(val)) { + let occurred = false; + const onError = () => { + occurred = true; + }; + const msg = compileMessageFormat(context, key, locale, val, key, onError); + return !occurred + ? msg + : NOOP_MESSAGE_FUNCTION; + } + else if (isMessageFunction(val)) { + return val; + } + else { + // TODO: should be implemented warning message + return NOOP_MESSAGE_FUNCTION; + } + }; + const ctxOptions = { + locale, + modifiers, + pluralRules, + messages: resolveMessage + }; + if (context.processor) { + ctxOptions.processor = context.processor; + } + if (options.list) { + ctxOptions.list = options.list; + } + if (options.named) { + ctxOptions.named = options.named; + } + if (isNumber(options.plural)) { + ctxOptions.pluralIndex = options.plural; + } + return ctxOptions; + } + + const intlDefined = typeof Intl !== 'undefined'; + const Availabilities = { + dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined', + numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined' + }; + + // implementation of `datetime` function + function datetime(context, ...args) { + const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context; + const { __datetimeFormatters } = context; + if (!Availabilities.dateTimeFormat) { + onWarn(getWarnMessage$1(CoreWarnCodes.CANNOT_FORMAT_DATE)); + return MISSING_RESOLVE_VALUE; + } + const [key, value, options, overrides] = parseDateTimeArgs(...args); + const missingWarn = isBoolean(options.missingWarn) + ? options.missingWarn + : context.missingWarn; + const fallbackWarn = isBoolean(options.fallbackWarn) + ? options.fallbackWarn + : context.fallbackWarn; + const part = !!options.part; + const locale = getLocale(context, options); + const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any + fallbackLocale, locale); + if (!isString(key) || key === '') { + return new Intl.DateTimeFormat(locale, overrides).format(value); + } + // resolve format + let datetimeFormat = {}; + let targetLocale; + let format = null; + let from = locale; + let to = null; + const type = 'datetime format'; + for (let i = 0; i < locales.length; i++) { + targetLocale = to = locales[i]; + if (locale !== targetLocale && + isTranslateFallbackWarn(fallbackWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.FALLBACK_TO_DATE_FORMAT, { + key, + target: targetLocale + })); + } + // for vue-devtools timeline event + if (locale !== targetLocale) { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("fallback" /* VueDevToolsTimelineEvents.FALBACK */, { + type, + key, + from, + to, + groupId: `${type}:${key}` + }); + } + } + datetimeFormat = + datetimeFormats[targetLocale] || {}; + format = datetimeFormat[key]; + if (isPlainObject(format)) + break; + handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any + from = to; + } + // checking format and target locale + if (!isPlainObject(format) || !isString(targetLocale)) { + return unresolving ? NOT_REOSLVED : key; + } + let id = `${targetLocale}__${key}`; + if (!isEmptyObject(overrides)) { + id = `${id}__${JSON.stringify(overrides)}`; + } + let formatter = __datetimeFormatters.get(id); + if (!formatter) { + formatter = new Intl.DateTimeFormat(targetLocale, assign({}, format, overrides)); + __datetimeFormatters.set(id, formatter); + } + return !part ? formatter.format(value) : formatter.formatToParts(value); + } + /** @internal */ + const DATETIME_FORMAT_OPTIONS_KEYS = [ + 'localeMatcher', + 'weekday', + 'era', + 'year', + 'month', + 'day', + 'hour', + 'minute', + 'second', + 'timeZoneName', + 'formatMatcher', + 'hour12', + 'timeZone', + 'dateStyle', + 'timeStyle', + 'calendar', + 'dayPeriod', + 'numberingSystem', + 'hourCycle', + 'fractionalSecondDigits' + ]; + /** @internal */ + function parseDateTimeArgs(...args) { + const [arg1, arg2, arg3, arg4] = args; + const options = {}; + let overrides = {}; + let value; + if (isString(arg1)) { + // Only allow ISO strings - other date formats are often supported, + // but may cause different results in different browsers. + const matches = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/); + if (!matches) { + throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT); + } + // Some browsers can not parse the iso datetime separated by space, + // this is a compromise solution by replace the 'T'/' ' with 'T' + const dateTime = matches[3] + ? matches[3].trim().startsWith('T') + ? `${matches[1].trim()}${matches[3].trim()}` + : `${matches[1].trim()}T${matches[3].trim()}` + : matches[1].trim(); + value = new Date(dateTime); + try { + // This will fail if the date is not valid + value.toISOString(); + } + catch (e) { + throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT); + } + } + else if (isDate(arg1)) { + if (isNaN(arg1.getTime())) { + throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT); + } + value = arg1; + } + else if (isNumber(arg1)) { + value = arg1; + } + else { + throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); + } + if (isString(arg2)) { + options.key = arg2; + } + else if (isPlainObject(arg2)) { + Object.keys(arg2).forEach(key => { + if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) { + overrides[key] = arg2[key]; + } + else { + options[key] = arg2[key]; + } + }); + } + if (isString(arg3)) { + options.locale = arg3; + } + else if (isPlainObject(arg3)) { + overrides = arg3; + } + if (isPlainObject(arg4)) { + overrides = arg4; + } + return [options.key || '', value, options, overrides]; + } + /** @internal */ + function clearDateTimeFormat(ctx, locale, format) { + const context = ctx; + for (const key in format) { + const id = `${locale}__${key}`; + if (!context.__datetimeFormatters.has(id)) { + continue; + } + context.__datetimeFormatters.delete(id); + } + } + + // implementation of `number` function + function number(context, ...args) { + const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context; + const { __numberFormatters } = context; + if (!Availabilities.numberFormat) { + onWarn(getWarnMessage$1(CoreWarnCodes.CANNOT_FORMAT_NUMBER)); + return MISSING_RESOLVE_VALUE; + } + const [key, value, options, overrides] = parseNumberArgs(...args); + const missingWarn = isBoolean(options.missingWarn) + ? options.missingWarn + : context.missingWarn; + const fallbackWarn = isBoolean(options.fallbackWarn) + ? options.fallbackWarn + : context.fallbackWarn; + const part = !!options.part; + const locale = getLocale(context, options); + const locales = localeFallbacker(context, // eslint-disable-line @typescript-eslint/no-explicit-any + fallbackLocale, locale); + if (!isString(key) || key === '') { + return new Intl.NumberFormat(locale, overrides).format(value); + } + // resolve format + let numberFormat = {}; + let targetLocale; + let format = null; + let from = locale; + let to = null; + const type = 'number format'; + for (let i = 0; i < locales.length; i++) { + targetLocale = to = locales[i]; + if (locale !== targetLocale && + isTranslateFallbackWarn(fallbackWarn, key)) { + onWarn(getWarnMessage$1(CoreWarnCodes.FALLBACK_TO_NUMBER_FORMAT, { + key, + target: targetLocale + })); + } + // for vue-devtools timeline event + if (locale !== targetLocale) { + const emitter = context.__v_emitter; + if (emitter) { + emitter.emit("fallback" /* VueDevToolsTimelineEvents.FALBACK */, { + type, + key, + from, + to, + groupId: `${type}:${key}` + }); + } + } + numberFormat = + numberFormats[targetLocale] || {}; + format = numberFormat[key]; + if (isPlainObject(format)) + break; + handleMissing(context, key, targetLocale, missingWarn, type); // eslint-disable-line @typescript-eslint/no-explicit-any + from = to; + } + // checking format and target locale + if (!isPlainObject(format) || !isString(targetLocale)) { + return unresolving ? NOT_REOSLVED : key; + } + let id = `${targetLocale}__${key}`; + if (!isEmptyObject(overrides)) { + id = `${id}__${JSON.stringify(overrides)}`; + } + let formatter = __numberFormatters.get(id); + if (!formatter) { + formatter = new Intl.NumberFormat(targetLocale, assign({}, format, overrides)); + __numberFormatters.set(id, formatter); + } + return !part ? formatter.format(value) : formatter.formatToParts(value); + } + /** @internal */ + const NUMBER_FORMAT_OPTIONS_KEYS = [ + 'localeMatcher', + 'style', + 'currency', + 'currencyDisplay', + 'currencySign', + 'useGrouping', + 'minimumIntegerDigits', + 'minimumFractionDigits', + 'maximumFractionDigits', + 'minimumSignificantDigits', + 'maximumSignificantDigits', + 'compactDisplay', + 'notation', + 'signDisplay', + 'unit', + 'unitDisplay', + 'roundingMode', + 'roundingPriority', + 'roundingIncrement', + 'trailingZeroDisplay' + ]; + /** @internal */ + function parseNumberArgs(...args) { + const [arg1, arg2, arg3, arg4] = args; + const options = {}; + let overrides = {}; + if (!isNumber(arg1)) { + throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT); + } + const value = arg1; + if (isString(arg2)) { + options.key = arg2; + } + else if (isPlainObject(arg2)) { + Object.keys(arg2).forEach(key => { + if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) { + overrides[key] = arg2[key]; + } + else { + options[key] = arg2[key]; + } + }); + } + if (isString(arg3)) { + options.locale = arg3; + } + else if (isPlainObject(arg3)) { + overrides = arg3; + } + if (isPlainObject(arg4)) { + overrides = arg4; + } + return [options.key || '', value, options, overrides]; + } + /** @internal */ + function clearNumberFormat(ctx, locale, format) { + const context = ctx; + for (const key in format) { + const id = `${locale}__${key}`; + if (!context.__numberFormatters.has(id)) { + continue; + } + context.__numberFormatters.delete(id); + } + } + + /** + * Vue I18n Version + * + * @remarks + * Semver format. Same format as the package.json `version` field. + * + * @VueI18nGeneral + */ + const VERSION = '9.5.0'; + /** + * This is only called development env + * istanbul-ignore-next + */ + function initDev() { + { + { + console.info(`You are running a development build of vue-i18n.\n` + + `Make sure to use the production build (*.prod.js) when deploying for production.`); + } + } + } + + const code$1 = CoreWarnCodes.__EXTEND_POINT__; + const inc$1 = incrementer(code$1); + const I18nWarnCodes = { + FALLBACK_TO_ROOT: code$1, + NOT_SUPPORTED_PRESERVE: inc$1(), + NOT_SUPPORTED_FORMATTER: inc$1(), + NOT_SUPPORTED_PRESERVE_DIRECTIVE: inc$1(), + NOT_SUPPORTED_GET_CHOICE_INDEX: inc$1(), + COMPONENT_NAME_LEGACY_COMPATIBLE: inc$1(), + NOT_FOUND_PARENT_SCOPE: inc$1(), + IGNORE_OBJ_FLATTEN: inc$1(), + NOTICE_DROP_ALLOW_COMPOSITION: inc$1() // 17 + }; + const warnMessages = { + [I18nWarnCodes.FALLBACK_TO_ROOT]: `Fall back to {type} '{key}' with root locale.`, + [I18nWarnCodes.NOT_SUPPORTED_PRESERVE]: `Not supported 'preserve'.`, + [I18nWarnCodes.NOT_SUPPORTED_FORMATTER]: `Not supported 'formatter'.`, + [I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE]: `Not supported 'preserveDirectiveContent'.`, + [I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX]: `Not supported 'getChoiceIndex'.`, + [I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE]: `Component name legacy compatible: '{name}' -> 'i18n'`, + [I18nWarnCodes.NOT_FOUND_PARENT_SCOPE]: `Not found parent scope. use the global scope.`, + [I18nWarnCodes.IGNORE_OBJ_FLATTEN]: `Ignore object flatten: '{key}' key has an string value`, + [I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION]: `'allowComposition' option will be dropped in the next major version. For more information, please see 👉 https://tinyurl.com/2p97mcze` + }; + function getWarnMessage(code, ...args) { + return format$1(warnMessages[code], ...args); + } + + const code = CoreErrorCodes.__EXTEND_POINT__; + const inc = incrementer(code); + const I18nErrorCodes = { + // composer module errors + UNEXPECTED_RETURN_TYPE: code, + // legacy module errors + INVALID_ARGUMENT: inc(), + // i18n module errors + MUST_BE_CALL_SETUP_TOP: inc(), + NOT_INSTALLED: inc(), + NOT_AVAILABLE_IN_LEGACY_MODE: inc(), + // directive module errors + REQUIRED_VALUE: inc(), + INVALID_VALUE: inc(), + // vue-devtools errors + CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN: inc(), + NOT_INSTALLED_WITH_PROVIDE: inc(), + // unexpected error + UNEXPECTED_ERROR: inc(), + // not compatible legacy vue-i18n constructor + NOT_COMPATIBLE_LEGACY_VUE_I18N: inc(), + // bridge support vue 2.x only + BRIDGE_SUPPORT_VUE_2_ONLY: inc(), + // need to define `i18n` option in `allowComposition: true` and `useScope: 'local' at `useI18n`` + MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION: inc(), + // Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly + NOT_AVAILABLE_COMPOSITION_IN_LEGACY: inc(), + // for enhancement + __EXTEND_POINT__: inc() // 37 + }; + function createI18nError(code, ...args) { + return createCompileError(code, null, { messages: errorMessages, args } ); + } + const errorMessages = { + [I18nErrorCodes.UNEXPECTED_RETURN_TYPE]: 'Unexpected return type in composer', + [I18nErrorCodes.INVALID_ARGUMENT]: 'Invalid argument', + [I18nErrorCodes.MUST_BE_CALL_SETUP_TOP]: 'Must be called at the top of a `setup` function', + [I18nErrorCodes.NOT_INSTALLED]: 'Need to install with `app.use` function', + [I18nErrorCodes.UNEXPECTED_ERROR]: 'Unexpected error', + [I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE]: 'Not available in legacy mode', + [I18nErrorCodes.REQUIRED_VALUE]: `Required in value: {0}`, + [I18nErrorCodes.INVALID_VALUE]: `Invalid value`, + [I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN]: `Cannot setup vue-devtools plugin`, + [I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE]: 'Need to install with `provide` function', + [I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N]: 'Not compatible legacy VueI18n.', + [I18nErrorCodes.BRIDGE_SUPPORT_VUE_2_ONLY]: 'vue-i18n-bridge support Vue 2.x only', + [I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION]: 'Must define ‘i18n’ option or custom block in Composition API with using local scope in Legacy API mode', + [I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY]: 'Not available Compostion API in Legacy API mode. Please make sure that the legacy API mode is working properly' + }; + + const TranslateVNodeSymbol = + /* #__PURE__*/ makeSymbol('__translateVNode'); + const DatetimePartsSymbol = /* #__PURE__*/ makeSymbol('__datetimeParts'); + const NumberPartsSymbol = /* #__PURE__*/ makeSymbol('__numberParts'); + const EnableEmitter = /* #__PURE__*/ makeSymbol('__enableEmitter'); + const DisableEmitter = /* #__PURE__*/ makeSymbol('__disableEmitter'); + const SetPluralRulesSymbol = makeSymbol('__setPluralRules'); + const InejctWithOptionSymbol = + /* #__PURE__*/ makeSymbol('__injectWithOption'); + const DisposeSymbol = /* #__PURE__*/ makeSymbol('__dispose'); + const __VUE_I18N_BRIDGE__ = '__VUE_I18N_BRIDGE__'; + + /* eslint-disable @typescript-eslint/no-explicit-any */ + /** + * Transform flat json in obj to normal json in obj + */ + function handleFlatJson(obj) { + // check obj + if (!isObject(obj)) { + return obj; + } + for (const key in obj) { + // check key + if (!hasOwn(obj, key)) { + continue; + } + // handle for normal json + if (!key.includes('.')) { + // recursive process value if value is also a object + if (isObject(obj[key])) { + handleFlatJson(obj[key]); + } + } + // handle for flat json, transform to normal json + else { + // go to the last object + const subKeys = key.split('.'); + const lastIndex = subKeys.length - 1; + let currentObj = obj; + let hasStringValue = false; + for (let i = 0; i < lastIndex; i++) { + if (!(subKeys[i] in currentObj)) { + currentObj[subKeys[i]] = {}; + } + if (!isObject(currentObj[subKeys[i]])) { + warn(getWarnMessage(I18nWarnCodes.IGNORE_OBJ_FLATTEN, { + key: subKeys[i] + })); + hasStringValue = true; + break; + } + currentObj = currentObj[subKeys[i]]; + } + // update last object value, delete old property + if (!hasStringValue) { + currentObj[subKeys[lastIndex]] = obj[key]; + delete obj[key]; + } + // recursive process value if value is also a object + if (isObject(currentObj[subKeys[lastIndex]])) { + handleFlatJson(currentObj[subKeys[lastIndex]]); + } + } + } + return obj; + } + function getLocaleMessages(locale, options) { + const { messages, __i18n, messageResolver, flatJson } = options; + // prettier-ignore + const ret = (isPlainObject(messages) + ? messages + : isArray(__i18n) + ? {} + : { [locale]: {} }); + // merge locale messages of i18n custom block + if (isArray(__i18n)) { + __i18n.forEach(custom => { + if ('locale' in custom && 'resource' in custom) { + const { locale, resource } = custom; + if (locale) { + ret[locale] = ret[locale] || {}; + deepCopy(resource, ret[locale]); + } + else { + deepCopy(resource, ret); + } + } + else { + isString(custom) && deepCopy(JSON.parse(custom), ret); + } + }); + } + // handle messages for flat json + if (messageResolver == null && flatJson) { + for (const key in ret) { + if (hasOwn(ret, key)) { + handleFlatJson(ret[key]); + } + } + } + return ret; + } + const isNotObjectOrIsArray = (val) => !isObject(val) || isArray(val); + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types + function deepCopy(src, des) { + // src and des should both be objects, and non of then can be a array + if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) { + throw createI18nError(I18nErrorCodes.INVALID_VALUE); + } + for (const key in src) { + if (hasOwn(src, key)) { + if (isNotObjectOrIsArray(src[key]) || isNotObjectOrIsArray(des[key])) { + // replace with src[key] when: + // src[key] or des[key] is not a object, or + // src[key] or des[key] is a array + des[key] = src[key]; + } + else { + // src[key] and des[key] are both object, merge them + deepCopy(src[key], des[key]); + } + } + } + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function getComponentOptions(instance) { + return instance.type ; + } + function adjustI18nResources(gl, options, componentOptions // eslint-disable-line @typescript-eslint/no-explicit-any + ) { + let messages = isObject(options.messages) ? options.messages : {}; + if ('__i18nGlobal' in componentOptions) { + messages = getLocaleMessages(gl.locale.value, { + messages, + __i18n: componentOptions.__i18nGlobal + }); + } + // merge locale messages + const locales = Object.keys(messages); + if (locales.length) { + locales.forEach(locale => { + gl.mergeLocaleMessage(locale, messages[locale]); + }); + } + { + // merge datetime formats + if (isObject(options.datetimeFormats)) { + const locales = Object.keys(options.datetimeFormats); + if (locales.length) { + locales.forEach(locale => { + gl.mergeDateTimeFormat(locale, options.datetimeFormats[locale]); + }); + } + } + // merge number formats + if (isObject(options.numberFormats)) { + const locales = Object.keys(options.numberFormats); + if (locales.length) { + locales.forEach(locale => { + gl.mergeNumberFormat(locale, options.numberFormats[locale]); + }); + } + } + } + } + function createTextNode(key) { + return vue.createVNode(vue.Text, null, key, 0) + ; + } + /* eslint-enable @typescript-eslint/no-explicit-any */ + + /* eslint-disable @typescript-eslint/no-explicit-any */ + // extend VNode interface + const DEVTOOLS_META = '__INTLIFY_META__'; + let composerID = 0; + function defineCoreMissingHandler(missing) { + return ((ctx, locale, key, type) => { + return missing(locale, key, vue.getCurrentInstance() || undefined, type); + }); + } + // for Intlify DevTools + const getMetaInfo = /* #__PURE__*/ () => { + const instance = vue.getCurrentInstance(); + let meta = null; // eslint-disable-line @typescript-eslint/no-explicit-any + return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META]) + ? { [DEVTOOLS_META]: meta } // eslint-disable-line @typescript-eslint/no-explicit-any + : null; + }; + /** + * Create composer interface factory + * + * @internal + */ + // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types + function createComposer(options = {}, VueI18nLegacy) { + const { __root, __injectWithOption } = options; + const _isGlobal = __root === undefined; + let _inheritLocale = isBoolean(options.inheritLocale) + ? options.inheritLocale + : true; + const _locale = vue.ref( + // prettier-ignore + __root && _inheritLocale + ? __root.locale.value + : isString(options.locale) + ? options.locale + : DEFAULT_LOCALE); + const _fallbackLocale = vue.ref( + // prettier-ignore + __root && _inheritLocale + ? __root.fallbackLocale.value + : isString(options.fallbackLocale) || + isArray(options.fallbackLocale) || + isPlainObject(options.fallbackLocale) || + options.fallbackLocale === false + ? options.fallbackLocale + : _locale.value); + const _messages = vue.ref(getLocaleMessages(_locale.value, options)); + // prettier-ignore + const _datetimeFormats = vue.ref(isPlainObject(options.datetimeFormats) + ? options.datetimeFormats + : { [_locale.value]: {} }) + ; + // prettier-ignore + const _numberFormats = vue.ref(isPlainObject(options.numberFormats) + ? options.numberFormats + : { [_locale.value]: {} }) + ; + // warning suppress options + // prettier-ignore + let _missingWarn = __root + ? __root.missingWarn + : isBoolean(options.missingWarn) || isRegExp(options.missingWarn) + ? options.missingWarn + : true; + // prettier-ignore + let _fallbackWarn = __root + ? __root.fallbackWarn + : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) + ? options.fallbackWarn + : true; + // prettier-ignore + let _fallbackRoot = __root + ? __root.fallbackRoot + : isBoolean(options.fallbackRoot) + ? options.fallbackRoot + : true; + // configure fall back to root + let _fallbackFormat = !!options.fallbackFormat; + // runtime missing + let _missing = isFunction(options.missing) ? options.missing : null; + let _runtimeMissing = isFunction(options.missing) + ? defineCoreMissingHandler(options.missing) + : null; + // postTranslation handler + let _postTranslation = isFunction(options.postTranslation) + ? options.postTranslation + : null; + // prettier-ignore + let _warnHtmlMessage = __root + ? __root.warnHtmlMessage + : isBoolean(options.warnHtmlMessage) + ? options.warnHtmlMessage + : true; + let _escapeParameter = !!options.escapeParameter; + // custom linked modifiers + // prettier-ignore + const _modifiers = __root + ? __root.modifiers + : isPlainObject(options.modifiers) + ? options.modifiers + : {}; + // pluralRules + let _pluralRules = options.pluralRules || (__root && __root.pluralRules); + // runtime context + // eslint-disable-next-line prefer-const + let _context; + const getCoreContext = () => { + _isGlobal && setFallbackContext(null); + const ctxOptions = { + version: VERSION, + locale: _locale.value, + fallbackLocale: _fallbackLocale.value, + messages: _messages.value, + modifiers: _modifiers, + pluralRules: _pluralRules, + missing: _runtimeMissing === null ? undefined : _runtimeMissing, + missingWarn: _missingWarn, + fallbackWarn: _fallbackWarn, + fallbackFormat: _fallbackFormat, + unresolving: true, + postTranslation: _postTranslation === null ? undefined : _postTranslation, + warnHtmlMessage: _warnHtmlMessage, + escapeParameter: _escapeParameter, + messageResolver: options.messageResolver, + messageCompiler: options.messageCompiler, + __meta: { framework: 'vue' } + }; + { + ctxOptions.datetimeFormats = _datetimeFormats.value; + ctxOptions.numberFormats = _numberFormats.value; + ctxOptions.__datetimeFormatters = isPlainObject(_context) + ? _context.__datetimeFormatters + : undefined; + ctxOptions.__numberFormatters = isPlainObject(_context) + ? _context.__numberFormatters + : undefined; + } + { + ctxOptions.__v_emitter = isPlainObject(_context) + ? _context.__v_emitter + : undefined; + } + const ctx = createCoreContext(ctxOptions); + _isGlobal && setFallbackContext(ctx); + return ctx; + }; + _context = getCoreContext(); + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + // track reactivity + function trackReactivityValues() { + return [ + _locale.value, + _fallbackLocale.value, + _messages.value, + _datetimeFormats.value, + _numberFormats.value + ] + ; + } + // locale + const locale = vue.computed({ + get: () => _locale.value, + set: val => { + _locale.value = val; + _context.locale = _locale.value; + } + }); + // fallbackLocale + const fallbackLocale = vue.computed({ + get: () => _fallbackLocale.value, + set: val => { + _fallbackLocale.value = val; + _context.fallbackLocale = _fallbackLocale.value; + updateFallbackLocale(_context, _locale.value, val); + } + }); + // messages + const messages = vue.computed(() => _messages.value); + // datetimeFormats + const datetimeFormats = /* #__PURE__*/ vue.computed(() => _datetimeFormats.value); + // numberFormats + const numberFormats = /* #__PURE__*/ vue.computed(() => _numberFormats.value); + // getPostTranslationHandler + function getPostTranslationHandler() { + return isFunction(_postTranslation) ? _postTranslation : null; + } + // setPostTranslationHandler + function setPostTranslationHandler(handler) { + _postTranslation = handler; + _context.postTranslation = handler; + } + // getMissingHandler + function getMissingHandler() { + return _missing; + } + // setMissingHandler + function setMissingHandler(handler) { + if (handler !== null) { + _runtimeMissing = defineCoreMissingHandler(handler); + } + _missing = handler; + _context.missing = _runtimeMissing; + } + function isResolvedTranslateMessage(type, arg // eslint-disable-line @typescript-eslint/no-explicit-any + ) { + return type !== 'translate' || !arg.resolvedMessage; + } + const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => { + trackReactivityValues(); // track reactive dependency + // NOTE: experimental !! + let ret; + try { + if (true || false) { + setAdditionalMeta(getMetaInfo()); + } + if (!_isGlobal) { + _context.fallbackContext = __root + ? getFallbackContext() + : undefined; + } + ret = fn(_context); + } + finally { + { + setAdditionalMeta(null); + } + if (!_isGlobal) { + _context.fallbackContext = undefined; + } + } + if (isNumber(ret) && ret === NOT_REOSLVED) { + const [key, arg2] = argumentParser(); + if (__root && + isString(key) && + isResolvedTranslateMessage(warnType, arg2)) { + if (_fallbackRoot && + (isTranslateFallbackWarn(_fallbackWarn, key) || + isTranslateMissingWarn(_missingWarn, key))) { + warn(getWarnMessage(I18nWarnCodes.FALLBACK_TO_ROOT, { + key, + type: warnType + })); + } + // for vue-devtools timeline event + { + const { __v_emitter: emitter } = _context; + if (emitter && _fallbackRoot) { + emitter.emit("fallback" /* VueDevToolsTimelineEvents.FALBACK */, { + type: warnType, + key, + to: 'global', + groupId: `${warnType}:${key}` + }); + } + } + } + return __root && _fallbackRoot + ? fallbackSuccess(__root) + : fallbackFail(key); + } + else if (successCondition(ret)) { + return ret; + } + else { + /* istanbul ignore next */ + throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE); + } + }; + // t + function t(...args) { + return wrapWithDeps(context => Reflect.apply(translate, null, [context, ...args]), () => parseTranslateArgs(...args), 'translate', root => Reflect.apply(root.t, root, [...args]), key => key, val => isString(val)); + } + // rt + function rt(...args) { + const [arg1, arg2, arg3] = args; + if (arg3 && !isObject(arg3)) { + throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT); + } + return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]); + } + // d + function d(...args) { + return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', root => Reflect.apply(root.d, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val)); + } + // n + function n(...args) { + return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', root => Reflect.apply(root.n, root, [...args]), () => MISSING_RESOLVE_VALUE, val => isString(val)); + } + // for custom processor + function normalize(values) { + return values.map(val => isString(val) || isNumber(val) || isBoolean(val) + ? createTextNode(String(val)) + : val); + } + const interpolate = (val) => val; + const processor = { + normalize, + interpolate, + type: 'vnode' + }; + // translateVNode, using for `i18n-t` component + function translateVNode(...args) { + return wrapWithDeps(context => { + let ret; + const _context = context; + try { + _context.processor = processor; + ret = Reflect.apply(translate, null, [_context, ...args]); + } + finally { + _context.processor = null; + } + return ret; + }, () => parseTranslateArgs(...args), 'translate', + // eslint-disable-next-line @typescript-eslint/no-explicit-any + root => root[TranslateVNodeSymbol](...args), key => [createTextNode(key)], val => isArray(val)); + } + // numberParts, using for `i18n-n` component + function numberParts(...args) { + return wrapWithDeps(context => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), 'number format', + // eslint-disable-next-line @typescript-eslint/no-explicit-any + root => root[NumberPartsSymbol](...args), () => [], val => isString(val) || isArray(val)); + } + // datetimeParts, using for `i18n-d` component + function datetimeParts(...args) { + return wrapWithDeps(context => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), 'datetime format', + // eslint-disable-next-line @typescript-eslint/no-explicit-any + root => root[DatetimePartsSymbol](...args), () => [], val => isString(val) || isArray(val)); + } + function setPluralRules(rules) { + _pluralRules = rules; + _context.pluralRules = _pluralRules; + } + // te + function te(key, locale) { + if (!key) + return false; + const targetLocale = isString(locale) ? locale : _locale.value; + const message = getLocaleMessage(targetLocale); + return _context.messageResolver(message, key) !== null; + } + function resolveMessages(key) { + let messages = null; + const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value); + for (let i = 0; i < locales.length; i++) { + const targetLocaleMessages = _messages.value[locales[i]] || {}; + const messageValue = _context.messageResolver(targetLocaleMessages, key); + if (messageValue != null) { + messages = messageValue; + break; + } + } + return messages; + } + // tm + function tm(key) { + const messages = resolveMessages(key); + // prettier-ignore + return messages != null + ? messages + : __root + ? __root.tm(key) || {} + : {}; + } + // getLocaleMessage + function getLocaleMessage(locale) { + return (_messages.value[locale] || {}); + } + // setLocaleMessage + function setLocaleMessage(locale, message) { + _messages.value[locale] = message; + _context.messages = _messages.value; + } + // mergeLocaleMessage + function mergeLocaleMessage(locale, message) { + _messages.value[locale] = _messages.value[locale] || {}; + deepCopy(message, _messages.value[locale]); + _context.messages = _messages.value; + } + // getDateTimeFormat + function getDateTimeFormat(locale) { + return _datetimeFormats.value[locale] || {}; + } + // setDateTimeFormat + function setDateTimeFormat(locale, format) { + _datetimeFormats.value[locale] = format; + _context.datetimeFormats = _datetimeFormats.value; + clearDateTimeFormat(_context, locale, format); + } + // mergeDateTimeFormat + function mergeDateTimeFormat(locale, format) { + _datetimeFormats.value[locale] = assign(_datetimeFormats.value[locale] || {}, format); + _context.datetimeFormats = _datetimeFormats.value; + clearDateTimeFormat(_context, locale, format); + } + // getNumberFormat + function getNumberFormat(locale) { + return _numberFormats.value[locale] || {}; + } + // setNumberFormat + function setNumberFormat(locale, format) { + _numberFormats.value[locale] = format; + _context.numberFormats = _numberFormats.value; + clearNumberFormat(_context, locale, format); + } + // mergeNumberFormat + function mergeNumberFormat(locale, format) { + _numberFormats.value[locale] = assign(_numberFormats.value[locale] || {}, format); + _context.numberFormats = _numberFormats.value; + clearNumberFormat(_context, locale, format); + } + // for debug + composerID++; + // watch root locale & fallbackLocale + if (__root && inBrowser) { + vue.watch(__root.locale, (val) => { + if (_inheritLocale) { + _locale.value = val; + _context.locale = val; + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + } + }); + vue.watch(__root.fallbackLocale, (val) => { + if (_inheritLocale) { + _fallbackLocale.value = val; + _context.fallbackLocale = val; + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + } + }); + } + // define basic composition API! + const composer = { + id: composerID, + locale, + fallbackLocale, + get inheritLocale() { + return _inheritLocale; + }, + set inheritLocale(val) { + _inheritLocale = val; + if (val && __root) { + _locale.value = __root.locale.value; + _fallbackLocale.value = __root.fallbackLocale.value; + updateFallbackLocale(_context, _locale.value, _fallbackLocale.value); + } + }, + get availableLocales() { + return Object.keys(_messages.value).sort(); + }, + messages, + get modifiers() { + return _modifiers; + }, + get pluralRules() { + return _pluralRules || {}; + }, + get isGlobal() { + return _isGlobal; + }, + get missingWarn() { + return _missingWarn; + }, + set missingWarn(val) { + _missingWarn = val; + _context.missingWarn = _missingWarn; + }, + get fallbackWarn() { + return _fallbackWarn; + }, + set fallbackWarn(val) { + _fallbackWarn = val; + _context.fallbackWarn = _fallbackWarn; + }, + get fallbackRoot() { + return _fallbackRoot; + }, + set fallbackRoot(val) { + _fallbackRoot = val; + }, + get fallbackFormat() { + return _fallbackFormat; + }, + set fallbackFormat(val) { + _fallbackFormat = val; + _context.fallbackFormat = _fallbackFormat; + }, + get warnHtmlMessage() { + return _warnHtmlMessage; + }, + set warnHtmlMessage(val) { + _warnHtmlMessage = val; + _context.warnHtmlMessage = val; + }, + get escapeParameter() { + return _escapeParameter; + }, + set escapeParameter(val) { + _escapeParameter = val; + _context.escapeParameter = val; + }, + t, + getLocaleMessage, + setLocaleMessage, + mergeLocaleMessage, + getPostTranslationHandler, + setPostTranslationHandler, + getMissingHandler, + setMissingHandler, + [SetPluralRulesSymbol]: setPluralRules + }; + { + composer.datetimeFormats = datetimeFormats; + composer.numberFormats = numberFormats; + composer.rt = rt; + composer.te = te; + composer.tm = tm; + composer.d = d; + composer.n = n; + composer.getDateTimeFormat = getDateTimeFormat; + composer.setDateTimeFormat = setDateTimeFormat; + composer.mergeDateTimeFormat = mergeDateTimeFormat; + composer.getNumberFormat = getNumberFormat; + composer.setNumberFormat = setNumberFormat; + composer.mergeNumberFormat = mergeNumberFormat; + composer[InejctWithOptionSymbol] = __injectWithOption; + composer[TranslateVNodeSymbol] = translateVNode; + composer[DatetimePartsSymbol] = datetimeParts; + composer[NumberPartsSymbol] = numberParts; + } + // for vue-devtools timeline event + { + composer[EnableEmitter] = (emitter) => { + _context.__v_emitter = emitter; + }; + composer[DisableEmitter] = () => { + _context.__v_emitter = undefined; + }; + } + return composer; + } + /* eslint-enable @typescript-eslint/no-explicit-any */ + + /* eslint-disable @typescript-eslint/no-explicit-any */ + /** + * Convert to I18n Composer Options from VueI18n Options + * + * @internal + */ + function convertComposerOptions(options) { + const locale = isString(options.locale) ? options.locale : DEFAULT_LOCALE; + const fallbackLocale = isString(options.fallbackLocale) || + isArray(options.fallbackLocale) || + isPlainObject(options.fallbackLocale) || + options.fallbackLocale === false + ? options.fallbackLocale + : locale; + const missing = isFunction(options.missing) ? options.missing : undefined; + const missingWarn = isBoolean(options.silentTranslationWarn) || + isRegExp(options.silentTranslationWarn) + ? !options.silentTranslationWarn + : true; + const fallbackWarn = isBoolean(options.silentFallbackWarn) || + isRegExp(options.silentFallbackWarn) + ? !options.silentFallbackWarn + : true; + const fallbackRoot = isBoolean(options.fallbackRoot) + ? options.fallbackRoot + : true; + const fallbackFormat = !!options.formatFallbackMessages; + const modifiers = isPlainObject(options.modifiers) ? options.modifiers : {}; + const pluralizationRules = options.pluralizationRules; + const postTranslation = isFunction(options.postTranslation) + ? options.postTranslation + : undefined; + const warnHtmlMessage = isString(options.warnHtmlInMessage) + ? options.warnHtmlInMessage !== 'off' + : true; + const escapeParameter = !!options.escapeParameterHtml; + const inheritLocale = isBoolean(options.sync) ? options.sync : true; + if (options.formatter) { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER)); + } + if (options.preserveDirectiveContent) { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE)); + } + let messages = options.messages; + if (isPlainObject(options.sharedMessages)) { + const sharedMessages = options.sharedMessages; + const locales = Object.keys(sharedMessages); + messages = locales.reduce((messages, locale) => { + const message = messages[locale] || (messages[locale] = {}); + assign(message, sharedMessages[locale]); + return messages; + }, (messages || {})); + } + const { __i18n, __root, __injectWithOption } = options; + const datetimeFormats = options.datetimeFormats; + const numberFormats = options.numberFormats; + const flatJson = options.flatJson; + return { + locale, + fallbackLocale, + messages, + flatJson, + datetimeFormats, + numberFormats, + missing, + missingWarn, + fallbackWarn, + fallbackRoot, + fallbackFormat, + modifiers, + pluralRules: pluralizationRules, + postTranslation, + warnHtmlMessage, + escapeParameter, + messageResolver: options.messageResolver, + inheritLocale, + __i18n, + __root, + __injectWithOption + }; + } + /** + * create VueI18n interface factory + * + * @internal + */ + // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types + function createVueI18n(options = {}, VueI18nLegacy) { + { + const composer = createComposer(convertComposerOptions(options)); + const { __extender } = options; + // defines VueI18n + const vueI18n = { + // id + id: composer.id, + // locale + get locale() { + return composer.locale.value; + }, + set locale(val) { + composer.locale.value = val; + }, + // fallbackLocale + get fallbackLocale() { + return composer.fallbackLocale.value; + }, + set fallbackLocale(val) { + composer.fallbackLocale.value = val; + }, + // messages + get messages() { + return composer.messages.value; + }, + // datetimeFormats + get datetimeFormats() { + return composer.datetimeFormats.value; + }, + // numberFormats + get numberFormats() { + return composer.numberFormats.value; + }, + // availableLocales + get availableLocales() { + return composer.availableLocales; + }, + // formatter + get formatter() { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER)); + // dummy + return { + interpolate() { + return []; + } + }; + }, + set formatter(val) { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_FORMATTER)); + }, + // missing + get missing() { + return composer.getMissingHandler(); + }, + set missing(handler) { + composer.setMissingHandler(handler); + }, + // silentTranslationWarn + get silentTranslationWarn() { + return isBoolean(composer.missingWarn) + ? !composer.missingWarn + : composer.missingWarn; + }, + set silentTranslationWarn(val) { + composer.missingWarn = isBoolean(val) ? !val : val; + }, + // silentFallbackWarn + get silentFallbackWarn() { + return isBoolean(composer.fallbackWarn) + ? !composer.fallbackWarn + : composer.fallbackWarn; + }, + set silentFallbackWarn(val) { + composer.fallbackWarn = isBoolean(val) ? !val : val; + }, + // modifiers + get modifiers() { + return composer.modifiers; + }, + // formatFallbackMessages + get formatFallbackMessages() { + return composer.fallbackFormat; + }, + set formatFallbackMessages(val) { + composer.fallbackFormat = val; + }, + // postTranslation + get postTranslation() { + return composer.getPostTranslationHandler(); + }, + set postTranslation(handler) { + composer.setPostTranslationHandler(handler); + }, + // sync + get sync() { + return composer.inheritLocale; + }, + set sync(val) { + composer.inheritLocale = val; + }, + // warnInHtmlMessage + get warnHtmlInMessage() { + return composer.warnHtmlMessage ? 'warn' : 'off'; + }, + set warnHtmlInMessage(val) { + composer.warnHtmlMessage = val !== 'off'; + }, + // escapeParameterHtml + get escapeParameterHtml() { + return composer.escapeParameter; + }, + set escapeParameterHtml(val) { + composer.escapeParameter = val; + }, + // preserveDirectiveContent + get preserveDirectiveContent() { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE)); + return true; + }, + set preserveDirectiveContent(val) { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE_DIRECTIVE)); + }, + // pluralizationRules + get pluralizationRules() { + return composer.pluralRules || {}; + }, + // for internal + __composer: composer, + // t + t(...args) { + const [arg1, arg2, arg3] = args; + const options = {}; + let list = null; + let named = null; + if (!isString(arg1)) { + throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT); + } + const key = arg1; + if (isString(arg2)) { + options.locale = arg2; + } + else if (isArray(arg2)) { + list = arg2; + } + else if (isPlainObject(arg2)) { + named = arg2; + } + if (isArray(arg3)) { + list = arg3; + } + else if (isPlainObject(arg3)) { + named = arg3; + } + // return composer.t(key, (list || named || {}) as any, options) + return Reflect.apply(composer.t, composer, [ + key, + (list || named || {}), + options + ]); + }, + rt(...args) { + return Reflect.apply(composer.rt, composer, [...args]); + }, + // tc + tc(...args) { + const [arg1, arg2, arg3] = args; + const options = { plural: 1 }; + let list = null; + let named = null; + if (!isString(arg1)) { + throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT); + } + const key = arg1; + if (isString(arg2)) { + options.locale = arg2; + } + else if (isNumber(arg2)) { + options.plural = arg2; + } + else if (isArray(arg2)) { + list = arg2; + } + else if (isPlainObject(arg2)) { + named = arg2; + } + if (isString(arg3)) { + options.locale = arg3; + } + else if (isArray(arg3)) { + list = arg3; + } + else if (isPlainObject(arg3)) { + named = arg3; + } + // return composer.t(key, (list || named || {}) as any, options) + return Reflect.apply(composer.t, composer, [ + key, + (list || named || {}), + options + ]); + }, + // te + te(key, locale) { + return composer.te(key, locale); + }, + // tm + tm(key) { + return composer.tm(key); + }, + // getLocaleMessage + getLocaleMessage(locale) { + return composer.getLocaleMessage(locale); + }, + // setLocaleMessage + setLocaleMessage(locale, message) { + composer.setLocaleMessage(locale, message); + }, + // mergeLocaleMessage + mergeLocaleMessage(locale, message) { + composer.mergeLocaleMessage(locale, message); + }, + // d + d(...args) { + return Reflect.apply(composer.d, composer, [...args]); + }, + // getDateTimeFormat + getDateTimeFormat(locale) { + return composer.getDateTimeFormat(locale); + }, + // setDateTimeFormat + setDateTimeFormat(locale, format) { + composer.setDateTimeFormat(locale, format); + }, + // mergeDateTimeFormat + mergeDateTimeFormat(locale, format) { + composer.mergeDateTimeFormat(locale, format); + }, + // n + n(...args) { + return Reflect.apply(composer.n, composer, [...args]); + }, + // getNumberFormat + getNumberFormat(locale) { + return composer.getNumberFormat(locale); + }, + // setNumberFormat + setNumberFormat(locale, format) { + composer.setNumberFormat(locale, format); + }, + // mergeNumberFormat + mergeNumberFormat(locale, format) { + composer.mergeNumberFormat(locale, format); + }, + // getChoiceIndex + // eslint-disable-next-line @typescript-eslint/no-unused-vars + getChoiceIndex(choice, choicesLength) { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_GET_CHOICE_INDEX)); + return -1; + } + }; + vueI18n.__extender = __extender; + // for vue-devtools timeline event + { + vueI18n.__enableEmitter = (emitter) => { + const __composer = composer; + __composer[EnableEmitter] && __composer[EnableEmitter](emitter); + }; + vueI18n.__disableEmitter = () => { + const __composer = composer; + __composer[DisableEmitter] && __composer[DisableEmitter](); + }; + } + return vueI18n; + } + } + /* eslint-enable @typescript-eslint/no-explicit-any */ + + const baseFormatProps = { + tag: { + type: [String, Object] + }, + locale: { + type: String + }, + scope: { + type: String, + // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050 + validator: (val /* ComponentI18nScope */) => val === 'parent' || val === 'global', + default: 'parent' /* ComponentI18nScope */ + }, + i18n: { + type: Object + } + }; + + function getInterpolateArg( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + { slots }, // SetupContext, + keys) { + if (keys.length === 1 && keys[0] === 'default') { + // default slot with list + const ret = slots.default ? slots.default() : []; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return ret.reduce((slot, current) => { + return [ + ...slot, + // prettier-ignore + ...(current.type === vue.Fragment ? current.children : [current] + ) + ]; + }, []); + } + else { + // named slots + return keys.reduce((arg, key) => { + const slot = slots[key]; + if (slot) { + arg[key] = slot(); + } + return arg; + }, {}); + } + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function getFragmentableTag(tag) { + return vue.Fragment ; + } + + const TranslationImpl = /*#__PURE__*/ vue.defineComponent({ + /* eslint-disable */ + name: 'i18n-t', + props: assign({ + keypath: { + type: String, + required: true + }, + plural: { + type: [Number, String], + // eslint-disable-next-line @typescript-eslint/no-explicit-any + validator: (val) => isNumber(val) || !isNaN(val) + } + }, baseFormatProps), + /* eslint-enable */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setup(props, context) { + const { slots, attrs } = context; + // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050 + const i18n = props.i18n || + useI18n({ + useScope: props.scope, + __useComponent: true + }); + return () => { + const keys = Object.keys(slots).filter(key => key !== '_'); + const options = {}; + if (props.locale) { + options.locale = props.locale; + } + if (props.plural !== undefined) { + options.plural = isString(props.plural) ? +props.plural : props.plural; + } + const arg = getInterpolateArg(context, keys); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const children = i18n[TranslateVNodeSymbol](props.keypath, arg, options); + const assignedAttrs = assign({}, attrs); + const tag = isString(props.tag) || isObject(props.tag) + ? props.tag + : getFragmentableTag(); + return vue.h(tag, assignedAttrs, children); + }; + } + }); + /** + * export the public type for h/tsx inference + * also to avoid inline import() in generated d.ts files + */ + /** + * Translation Component + * + * @remarks + * See the following items for property about details + * + * @VueI18nSee [TranslationProps](component#translationprops) + * @VueI18nSee [BaseFormatProps](component#baseformatprops) + * @VueI18nSee [Component Interpolation](../guide/advanced/component) + * + * @example + * ```html + *
+ * + * + * {{ $t('tos') }} + * + * + *
+ * ``` + * ```js + * import { createApp } from 'vue' + * import { createI18n } from 'vue-i18n' + * + * const messages = { + * en: { + * tos: 'Term of Service', + * term: 'I accept xxx {0}.' + * }, + * ja: { + * tos: '利用規約', + * term: '私は xxx の{0}に同意します。' + * } + * } + * + * const i18n = createI18n({ + * locale: 'en', + * messages + * }) + * + * const app = createApp({ + * data: { + * url: '/term' + * } + * }).use(i18n).mount('#app') + * ``` + * + * @VueI18nComponent + */ + const Translation = TranslationImpl; + const I18nT = Translation; + + function isVNode(target) { + return isArray(target) && !isString(target[0]); + } + function renderFormatter(props, context, slotKeys, partFormatter) { + const { slots, attrs } = context; + return () => { + const options = { part: true }; + let overrides = {}; + if (props.locale) { + options.locale = props.locale; + } + if (isString(props.format)) { + options.key = props.format; + } + else if (isObject(props.format)) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + if (isString(props.format.key)) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + options.key = props.format.key; + } + // Filter out number format options only + overrides = Object.keys(props.format).reduce((options, prop) => { + return slotKeys.includes(prop) + ? assign({}, options, { [prop]: props.format[prop] }) // eslint-disable-line @typescript-eslint/no-explicit-any + : options; + }, {}); + } + const parts = partFormatter(...[props.value, options, overrides]); + let children = [options.key]; + if (isArray(parts)) { + children = parts.map((part, index) => { + const slot = slots[part.type]; + const node = slot + ? slot({ [part.type]: part.value, index, parts }) + : [part.value]; + if (isVNode(node)) { + node[0].key = `${part.type}-${index}`; + } + return node; + }); + } + else if (isString(parts)) { + children = [parts]; + } + const assignedAttrs = assign({}, attrs); + const tag = isString(props.tag) || isObject(props.tag) + ? props.tag + : getFragmentableTag(); + return vue.h(tag, assignedAttrs, children); + }; + } + + const NumberFormatImpl = /*#__PURE__*/ vue.defineComponent({ + /* eslint-disable */ + name: 'i18n-n', + props: assign({ + value: { + type: Number, + required: true + }, + format: { + type: [String, Object] + } + }, baseFormatProps), + /* eslint-enable */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setup(props, context) { + const i18n = props.i18n || + useI18n({ + useScope: 'parent', + __useComponent: true + }); + return renderFormatter(props, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => + // eslint-disable-next-line @typescript-eslint/no-explicit-any + i18n[NumberPartsSymbol](...args)); + } + }); + /** + * export the public type for h/tsx inference + * also to avoid inline import() in generated d.ts files + */ + /** + * Number Format Component + * + * @remarks + * See the following items for property about details + * + * @VueI18nSee [FormattableProps](component#formattableprops) + * @VueI18nSee [BaseFormatProps](component#baseformatprops) + * @VueI18nSee [Custom Formatting](../guide/essentials/number#custom-formatting) + * + * @VueI18nDanger + * Not supported IE, due to no support `Intl.NumberFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/formatToParts) + * + * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-numberformat) + * + * @VueI18nComponent + */ + const NumberFormat = NumberFormatImpl; + const I18nN = NumberFormat; + + const DatetimeFormatImpl = /* #__PURE__*/ vue.defineComponent({ + /* eslint-disable */ + name: 'i18n-d', + props: assign({ + value: { + type: [Number, Date], + required: true + }, + format: { + type: [String, Object] + } + }, baseFormatProps), + /* eslint-enable */ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + setup(props, context) { + const i18n = props.i18n || + useI18n({ + useScope: 'parent', + __useComponent: true + }); + return renderFormatter(props, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => + // eslint-disable-next-line @typescript-eslint/no-explicit-any + i18n[DatetimePartsSymbol](...args)); + } + }); + /** + * Datetime Format Component + * + * @remarks + * See the following items for property about details + * + * @VueI18nSee [FormattableProps](component#formattableprops) + * @VueI18nSee [BaseFormatProps](component#baseformatprops) + * @VueI18nSee [Custom Formatting](../guide/essentials/datetime#custom-formatting) + * + * @VueI18nDanger + * Not supported IE, due to no support `Intl.DateTimeFormat#formatToParts` in [IE](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/formatToParts) + * + * If you want to use it, you need to use [polyfill](https://github.com/formatjs/formatjs/tree/main/packages/intl-datetimeformat) + * + * @VueI18nComponent + */ + const DatetimeFormat = DatetimeFormatImpl; + const I18nD = DatetimeFormat; + + function getComposer$2(i18n, instance) { + const i18nInternal = i18n; + if (i18n.mode === 'composition') { + return (i18nInternal.__getInstance(instance) || i18n.global); + } + else { + const vueI18n = i18nInternal.__getInstance(instance); + return vueI18n != null + ? vueI18n.__composer + : i18n.global.__composer; + } + } + function vTDirective(i18n) { + const _process = (binding) => { + const { instance, modifiers, value } = binding; + /* istanbul ignore if */ + if (!instance || !instance.$) { + throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); + } + const composer = getComposer$2(i18n, instance.$); + if (modifiers.preserve) { + warn(getWarnMessage(I18nWarnCodes.NOT_SUPPORTED_PRESERVE)); + } + const parsedValue = parseValue(value); + return [ + Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]), + composer + ]; + }; + const register = (el, binding) => { + const [textContent, composer] = _process(binding); + if (inBrowser && i18n.global === composer) { + // global scope only + el.__i18nWatcher = vue.watch(composer.locale, () => { + binding.instance && binding.instance.$forceUpdate(); + }); + } + el.__composer = composer; + el.textContent = textContent; + }; + const unregister = (el) => { + if (inBrowser && el.__i18nWatcher) { + el.__i18nWatcher(); + el.__i18nWatcher = undefined; + delete el.__i18nWatcher; + } + if (el.__composer) { + el.__composer = undefined; + delete el.__composer; + } + }; + const update = (el, { value }) => { + if (el.__composer) { + const composer = el.__composer; + const parsedValue = parseValue(value); + el.textContent = Reflect.apply(composer.t, composer, [ + ...makeParams(parsedValue) + ]); + } + }; + const getSSRProps = (binding) => { + const [textContent] = _process(binding); + return { textContent }; + }; + return { + created: register, + unmounted: unregister, + beforeUpdate: update, + getSSRProps + }; + } + function parseValue(value) { + if (isString(value)) { + return { path: value }; + } + else if (isPlainObject(value)) { + if (!('path' in value)) { + throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, 'path'); + } + return value; + } + else { + throw createI18nError(I18nErrorCodes.INVALID_VALUE); + } + } + function makeParams(value) { + const { path, locale, args, choice, plural } = value; + const options = {}; + const named = args || {}; + if (isString(locale)) { + options.locale = locale; + } + if (isNumber(choice)) { + options.plural = choice; + } + if (isNumber(plural)) { + options.plural = plural; + } + return [path, named, options]; + } + + function apply(app, i18n, ...options) { + const pluginOptions = isPlainObject(options[0]) + ? options[0] + : {}; + const useI18nComponentName = !!pluginOptions.useI18nComponentName; + const globalInstall = isBoolean(pluginOptions.globalInstall) + ? pluginOptions.globalInstall + : true; + if (globalInstall && useI18nComponentName) { + warn(getWarnMessage(I18nWarnCodes.COMPONENT_NAME_LEGACY_COMPATIBLE, { + name: Translation.name + })); + } + if (globalInstall) { + [!useI18nComponentName ? Translation.name : 'i18n', 'I18nT'].forEach(name => app.component(name, Translation)); + [NumberFormat.name, 'I18nN'].forEach(name => app.component(name, NumberFormat)); + [DatetimeFormat.name, 'I18nD'].forEach(name => app.component(name, DatetimeFormat)); + } + // install directive + { + app.directive('t', vTDirective(i18n)); + } + } + + var global$1 = (typeof global !== "undefined" ? global : + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : {}); + + function getDevtoolsGlobalHook() { + return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; + } + function getTarget() { + // @ts-ignore + return (typeof navigator !== 'undefined' && typeof window !== 'undefined') + ? window + : typeof global$1 !== 'undefined' + ? global$1 + : {}; + } + const isProxyAvailable = typeof Proxy === 'function'; + + const HOOK_SETUP = 'devtools-plugin:setup'; + const HOOK_PLUGIN_SETTINGS_SET = 'plugin:settings:set'; + + let supported; + let perf; + function isPerformanceSupported() { + var _a; + if (supported !== undefined) { + return supported; + } + if (typeof window !== 'undefined' && window.performance) { + supported = true; + perf = window.performance; + } + else if (typeof global$1 !== 'undefined' && ((_a = global$1.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) { + supported = true; + perf = global$1.perf_hooks.performance; + } + else { + supported = false; + } + return supported; + } + function now() { + return isPerformanceSupported() ? perf.now() : Date.now(); + } + + class ApiProxy { + constructor(plugin, hook) { + this.target = null; + this.targetQueue = []; + this.onQueue = []; + this.plugin = plugin; + this.hook = hook; + const defaultSettings = {}; + if (plugin.settings) { + for (const id in plugin.settings) { + const item = plugin.settings[id]; + defaultSettings[id] = item.defaultValue; + } + } + const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`; + let currentSettings = Object.assign({}, defaultSettings); + try { + const raw = localStorage.getItem(localSettingsSaveId); + const data = JSON.parse(raw); + Object.assign(currentSettings, data); + } + catch (e) { + // noop + } + this.fallbacks = { + getSettings() { + return currentSettings; + }, + setSettings(value) { + try { + localStorage.setItem(localSettingsSaveId, JSON.stringify(value)); + } + catch (e) { + // noop + } + currentSettings = value; + }, + now() { + return now(); + }, + }; + if (hook) { + hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => { + if (pluginId === this.plugin.id) { + this.fallbacks.setSettings(value); + } + }); + } + this.proxiedOn = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target.on[prop]; + } + else { + return (...args) => { + this.onQueue.push({ + method: prop, + args, + }); + }; + } + }, + }); + this.proxiedTarget = new Proxy({}, { + get: (_target, prop) => { + if (this.target) { + return this.target[prop]; + } + else if (prop === 'on') { + return this.proxiedOn; + } + else if (Object.keys(this.fallbacks).includes(prop)) { + return (...args) => { + this.targetQueue.push({ + method: prop, + args, + resolve: () => { }, + }); + return this.fallbacks[prop](...args); + }; + } + else { + return (...args) => { + return new Promise(resolve => { + this.targetQueue.push({ + method: prop, + args, + resolve, + }); + }); + }; + } + }, + }); + } + async setRealTarget(target) { + this.target = target; + for (const item of this.onQueue) { + this.target.on[item.method](...item.args); + } + for (const item of this.targetQueue) { + item.resolve(await this.target[item.method](...item.args)); + } + } + } + + function setupDevtoolsPlugin(pluginDescriptor, setupFn) { + const descriptor = pluginDescriptor; + const target = getTarget(); + const hook = getDevtoolsGlobalHook(); + const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy; + if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !enableProxy)) { + hook.emit(HOOK_SETUP, pluginDescriptor, setupFn); + } + else { + const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null; + const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || []; + list.push({ + pluginDescriptor: descriptor, + setupFn, + proxy, + }); + if (proxy) + setupFn(proxy.proxiedTarget); + } + } + + const VueDevToolsLabels = { + ["vue-devtools-plugin-vue-i18n" /* VueDevToolsIDs.PLUGIN */]: 'Vue I18n devtools', + ["vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'I18n Resources', + ["vue-i18n-timeline" /* VueDevToolsIDs.TIMELINE */]: 'Vue I18n' + }; + const VueDevToolsPlaceholders = { + ["vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */]: 'Search for scopes ...' + }; + const VueDevToolsTimelineColors = { + ["vue-i18n-timeline" /* VueDevToolsIDs.TIMELINE */]: 0xffcd19 + }; + + const VUE_I18N_COMPONENT_TYPES = 'vue-i18n: composer properties'; + let devtoolsApi; + async function enableDevTools(app, i18n) { + return new Promise((resolve, reject) => { + try { + setupDevtoolsPlugin({ + id: "vue-devtools-plugin-vue-i18n" /* VueDevToolsIDs.PLUGIN */, + label: VueDevToolsLabels["vue-devtools-plugin-vue-i18n" /* VueDevToolsIDs.PLUGIN */], + packageName: 'vue-i18n', + homepage: 'https://vue-i18n.intlify.dev', + logo: 'https://vue-i18n.intlify.dev/vue-i18n-devtools-logo.png', + componentStateTypes: [VUE_I18N_COMPONENT_TYPES], + app: app // eslint-disable-line @typescript-eslint/no-explicit-any + }, api => { + devtoolsApi = api; + api.on.visitComponentTree(({ componentInstance, treeNode }) => { + updateComponentTreeTags(componentInstance, treeNode, i18n); + }); + api.on.inspectComponent(({ componentInstance, instanceData }) => { + if (componentInstance.vnode.el && + componentInstance.vnode.el.__VUE_I18N__ && + instanceData) { + if (i18n.mode === 'legacy') { + // ignore global scope on legacy mode + if (componentInstance.vnode.el.__VUE_I18N__ !== + i18n.global.__composer) { + inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__); + } + } + else { + inspectComposer(instanceData, componentInstance.vnode.el.__VUE_I18N__); + } + } + }); + api.addInspector({ + id: "vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */, + label: VueDevToolsLabels["vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */], + icon: 'language', + treeFilterPlaceholder: VueDevToolsPlaceholders["vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */] + }); + api.on.getInspectorTree(payload => { + if (payload.app === app && + payload.inspectorId === "vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) { + registerScope(payload, i18n); + } + }); + const roots = new Map(); + api.on.getInspectorState(async (payload) => { + if (payload.app === app && + payload.inspectorId === "vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) { + api.unhighlightElement(); + inspectScope(payload, i18n); + if (payload.nodeId === 'global') { + if (!roots.has(payload.app)) { + const [root] = await api.getComponentInstances(payload.app); + roots.set(payload.app, root); + } + api.highlightElement(roots.get(payload.app)); + } + else { + const instance = getComponentInstance(payload.nodeId, i18n); + instance && api.highlightElement(instance); + } + } + }); + api.on.editInspectorState(payload => { + if (payload.app === app && + payload.inspectorId === "vue-i18n-resource-inspector" /* VueDevToolsIDs.CUSTOM_INSPECTOR */) { + editScope(payload, i18n); + } + }); + api.addTimelineLayer({ + id: "vue-i18n-timeline" /* VueDevToolsIDs.TIMELINE */, + label: VueDevToolsLabels["vue-i18n-timeline" /* VueDevToolsIDs.TIMELINE */], + color: VueDevToolsTimelineColors["vue-i18n-timeline" /* VueDevToolsIDs.TIMELINE */] + }); + resolve(true); + }); + } + catch (e) { + console.error(e); + reject(false); + } + }); + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function getI18nScopeLable(instance) { + return (instance.type.name || + instance.type.displayName || + instance.type.__file || + 'Anonymous'); + } + function updateComponentTreeTags(instance, // eslint-disable-line @typescript-eslint/no-explicit-any + treeNode, i18n) { + // prettier-ignore + const global = i18n.mode === 'composition' + ? i18n.global + : i18n.global.__composer; + if (instance && instance.vnode.el && instance.vnode.el.__VUE_I18N__) { + // add custom tags local scope only + if (instance.vnode.el.__VUE_I18N__ !== global) { + const tag = { + label: `i18n (${getI18nScopeLable(instance)} Scope)`, + textColor: 0x000000, + backgroundColor: 0xffcd19 + }; + treeNode.tags.push(tag); + } + } + } + function inspectComposer(instanceData, composer) { + const type = VUE_I18N_COMPONENT_TYPES; + instanceData.state.push({ + type, + key: 'locale', + editable: true, + value: composer.locale.value + }); + instanceData.state.push({ + type, + key: 'availableLocales', + editable: false, + value: composer.availableLocales + }); + instanceData.state.push({ + type, + key: 'fallbackLocale', + editable: true, + value: composer.fallbackLocale.value + }); + instanceData.state.push({ + type, + key: 'inheritLocale', + editable: true, + value: composer.inheritLocale + }); + instanceData.state.push({ + type, + key: 'messages', + editable: false, + value: getLocaleMessageValue(composer.messages.value) + }); + { + instanceData.state.push({ + type, + key: 'datetimeFormats', + editable: false, + value: composer.datetimeFormats.value + }); + instanceData.state.push({ + type, + key: 'numberFormats', + editable: false, + value: composer.numberFormats.value + }); + } + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function getLocaleMessageValue(messages) { + const value = {}; + Object.keys(messages).forEach((key) => { + const v = messages[key]; + if (isFunction(v) && 'source' in v) { + value[key] = getMessageFunctionDetails(v); + } + else if (isMessageAST(v) && v.loc && v.loc.source) { + value[key] = v.loc.source; + } + else if (isObject(v)) { + value[key] = getLocaleMessageValue(v); + } + else { + value[key] = v; + } + }); + return value; + } + const ESC = { + '<': '<', + '>': '>', + '"': '"', + '&': '&' + }; + function escape(s) { + return s.replace(/[<>"&]/g, escapeChar); + } + function escapeChar(a) { + return ESC[a] || a; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function getMessageFunctionDetails(func) { + const argString = func.source ? `("${escape(func.source)}")` : `(?)`; + return { + _custom: { + type: 'function', + display: `ƒ ${argString}` + } + }; + } + function registerScope(payload, i18n) { + payload.rootNodes.push({ + id: 'global', + label: 'Global Scope' + }); + // prettier-ignore + const global = i18n.mode === 'composition' + ? i18n.global + : i18n.global.__composer; + for (const [keyInstance, instance] of i18n.__instances) { + // prettier-ignore + const composer = i18n.mode === 'composition' + ? instance + : instance.__composer; + if (global === composer) { + continue; + } + payload.rootNodes.push({ + id: composer.id.toString(), + label: `${getI18nScopeLable(keyInstance)} Scope` + }); + } + } + function getComponentInstance(nodeId, i18n) { + let instance = null; + if (nodeId !== 'global') { + for (const [component, composer] of i18n.__instances.entries()) { + if (composer.id.toString() === nodeId) { + instance = component; + break; + } + } + } + return instance; + } + function getComposer$1(nodeId, i18n) { + if (nodeId === 'global') { + return i18n.mode === 'composition' + ? i18n.global + : i18n.global.__composer; + } + else { + const instance = Array.from(i18n.__instances.values()).find(item => item.id.toString() === nodeId); + if (instance) { + return i18n.mode === 'composition' + ? instance + : instance.__composer; + } + else { + return null; + } + } + } + function inspectScope(payload, i18n + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ) { + const composer = getComposer$1(payload.nodeId, i18n); + if (composer) { + // TODO: + // eslint-disable-next-line @typescript-eslint/no-explicit-any + payload.state = makeScopeInspectState(composer); + } + return null; + } + function makeScopeInspectState(composer) { + const state = {}; + const localeType = 'Locale related info'; + const localeStates = [ + { + type: localeType, + key: 'locale', + editable: true, + value: composer.locale.value + }, + { + type: localeType, + key: 'fallbackLocale', + editable: true, + value: composer.fallbackLocale.value + }, + { + type: localeType, + key: 'availableLocales', + editable: false, + value: composer.availableLocales + }, + { + type: localeType, + key: 'inheritLocale', + editable: true, + value: composer.inheritLocale + } + ]; + state[localeType] = localeStates; + const localeMessagesType = 'Locale messages info'; + const localeMessagesStates = [ + { + type: localeMessagesType, + key: 'messages', + editable: false, + value: getLocaleMessageValue(composer.messages.value) + } + ]; + state[localeMessagesType] = localeMessagesStates; + { + const datetimeFormatsType = 'Datetime formats info'; + const datetimeFormatsStates = [ + { + type: datetimeFormatsType, + key: 'datetimeFormats', + editable: false, + value: composer.datetimeFormats.value + } + ]; + state[datetimeFormatsType] = datetimeFormatsStates; + const numberFormatsType = 'Datetime formats info'; + const numberFormatsStates = [ + { + type: numberFormatsType, + key: 'numberFormats', + editable: false, + value: composer.numberFormats.value + } + ]; + state[numberFormatsType] = numberFormatsStates; + } + return state; + } + function addTimelineEvent(event, payload) { + if (devtoolsApi) { + let groupId; + if (payload && 'groupId' in payload) { + groupId = payload.groupId; + delete payload.groupId; + } + devtoolsApi.addTimelineEvent({ + layerId: "vue-i18n-timeline" /* VueDevToolsIDs.TIMELINE */, + event: { + title: event, + groupId, + time: Date.now(), + meta: {}, + data: payload || {}, + logType: event === "compile-error" /* VueDevToolsTimelineEvents.COMPILE_ERROR */ + ? 'error' + : event === "fallback" /* VueDevToolsTimelineEvents.FALBACK */ || + event === "missing" /* VueDevToolsTimelineEvents.MISSING */ + ? 'warning' + : 'default' + } + }); + } + } + function editScope(payload, i18n) { + const composer = getComposer$1(payload.nodeId, i18n); + if (composer) { + const [field] = payload.path; + if (field === 'locale' && isString(payload.state.value)) { + composer.locale.value = payload.state.value; + } + else if (field === 'fallbackLocale' && + (isString(payload.state.value) || + isArray(payload.state.value) || + isObject(payload.state.value))) { + composer.fallbackLocale.value = payload.state.value; + } + else if (field === 'inheritLocale' && isBoolean(payload.state.value)) { + composer.inheritLocale = payload.state.value; + } + } + } + + /** + * Supports compatibility for legacy vue-i18n APIs + * This mixin is used when we use vue-i18n@v9.x or later + */ + function defineMixin(vuei18n, composer, i18n) { + return { + beforeCreate() { + const instance = vue.getCurrentInstance(); + /* istanbul ignore if */ + if (!instance) { + throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); + } + const options = this.$options; + if (options.i18n) { + const optionsI18n = options.i18n; + if (options.__i18n) { + optionsI18n.__i18n = options.__i18n; + } + optionsI18n.__root = composer; + if (this === this.$root) { + // merge option and gttach global + this.$i18n = mergeToGlobal(vuei18n, optionsI18n); + } + else { + optionsI18n.__injectWithOption = true; + optionsI18n.__extender = i18n.__vueI18nExtend; + // atttach local VueI18n instance + this.$i18n = createVueI18n(optionsI18n); + // extend VueI18n instance + const _vueI18n = this.$i18n; + if (_vueI18n.__extender) { + _vueI18n.__disposer = _vueI18n.__extender(this.$i18n); + } + } + } + else if (options.__i18n) { + if (this === this.$root) { + // merge option and gttach global + this.$i18n = mergeToGlobal(vuei18n, options); + } + else { + // atttach local VueI18n instance + this.$i18n = createVueI18n({ + __i18n: options.__i18n, + __injectWithOption: true, + __extender: i18n.__vueI18nExtend, + __root: composer + }); + // extend VueI18n instance + const _vueI18n = this.$i18n; + if (_vueI18n.__extender) { + _vueI18n.__disposer = _vueI18n.__extender(this.$i18n); + } + } + } + else { + // attach global VueI18n instance + this.$i18n = vuei18n; + } + if (options.__i18nGlobal) { + adjustI18nResources(composer, options, options); + } + // defines vue-i18n legacy APIs + this.$t = (...args) => this.$i18n.t(...args); + this.$rt = (...args) => this.$i18n.rt(...args); + this.$tc = (...args) => this.$i18n.tc(...args); + this.$te = (key, locale) => this.$i18n.te(key, locale); + this.$d = (...args) => this.$i18n.d(...args); + this.$n = (...args) => this.$i18n.n(...args); + this.$tm = (key) => this.$i18n.tm(key); + i18n.__setInstance(instance, this.$i18n); + }, + mounted() { + /* istanbul ignore if */ + if (this.$el && + this.$i18n) { + const _vueI18n = this.$i18n; + this.$el.__VUE_I18N__ = _vueI18n.__composer; + const emitter = (this.__v_emitter = + createEmitter()); + _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter); + emitter.on('*', addTimelineEvent); + } + }, + unmounted() { + const instance = vue.getCurrentInstance(); + /* istanbul ignore if */ + if (!instance) { + throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); + } + const _vueI18n = this.$i18n; + /* istanbul ignore if */ + if (this.$el && + this.$el.__VUE_I18N__) { + if (this.__v_emitter) { + this.__v_emitter.off('*', addTimelineEvent); + delete this.__v_emitter; + } + if (this.$i18n) { + _vueI18n.__disableEmitter && _vueI18n.__disableEmitter(); + delete this.$el.__VUE_I18N__; + } + } + delete this.$t; + delete this.$rt; + delete this.$tc; + delete this.$te; + delete this.$d; + delete this.$n; + delete this.$tm; + if (_vueI18n.__disposer) { + _vueI18n.__disposer(); + delete _vueI18n.__disposer; + delete _vueI18n.__extender; + } + i18n.__deleteInstance(instance); + delete this.$i18n; + } + }; + } + function mergeToGlobal(g, options) { + g.locale = options.locale || g.locale; + g.fallbackLocale = options.fallbackLocale || g.fallbackLocale; + g.missing = options.missing || g.missing; + g.silentTranslationWarn = + options.silentTranslationWarn || g.silentFallbackWarn; + g.silentFallbackWarn = options.silentFallbackWarn || g.silentFallbackWarn; + g.formatFallbackMessages = + options.formatFallbackMessages || g.formatFallbackMessages; + g.postTranslation = options.postTranslation || g.postTranslation; + g.warnHtmlInMessage = options.warnHtmlInMessage || g.warnHtmlInMessage; + g.escapeParameterHtml = options.escapeParameterHtml || g.escapeParameterHtml; + g.sync = options.sync || g.sync; + g.__composer[SetPluralRulesSymbol](options.pluralizationRules || g.pluralizationRules); + const messages = getLocaleMessages(g.locale, { + messages: options.messages, + __i18n: options.__i18n + }); + Object.keys(messages).forEach(locale => g.mergeLocaleMessage(locale, messages[locale])); + if (options.datetimeFormats) { + Object.keys(options.datetimeFormats).forEach(locale => g.mergeDateTimeFormat(locale, options.datetimeFormats[locale])); + } + if (options.numberFormats) { + Object.keys(options.numberFormats).forEach(locale => g.mergeNumberFormat(locale, options.numberFormats[locale])); + } + return g; + } + + /** + * Injection key for {@link useI18n} + * + * @remarks + * The global injection key for I18n instances with `useI18n`. this injection key is used in Web Components. + * Specify the i18n instance created by {@link createI18n} together with `provide` function. + * + * @VueI18nGeneral + */ + const I18nInjectionKey = + /* #__PURE__*/ makeSymbol('global-vue-i18n'); + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types + function createI18n(options = {}, VueI18nLegacy) { + // prettier-ignore + const __legacyMode = isBoolean(options.legacy) + ? options.legacy + : true; + // prettier-ignore + const __globalInjection = isBoolean(options.globalInjection) + ? options.globalInjection + : true; + // prettier-ignore + const __allowComposition = __legacyMode + ? !!options.allowComposition + : true; + const __instances = new Map(); + const [globalScope, __global] = createGlobal(options, __legacyMode); + const symbol = /* #__PURE__*/ makeSymbol('vue-i18n' ); + { + if (__legacyMode && __allowComposition && !false) { + warn(getWarnMessage(I18nWarnCodes.NOTICE_DROP_ALLOW_COMPOSITION)); + } + } + function __getInstance(component) { + return __instances.get(component) || null; + } + function __setInstance(component, instance) { + __instances.set(component, instance); + } + function __deleteInstance(component) { + __instances.delete(component); + } + { + const i18n = { + // mode + get mode() { + return __legacyMode + ? 'legacy' + : 'composition'; + }, + // allowComposition + get allowComposition() { + return __allowComposition; + }, + // install plugin + async install(app, ...options) { + { + app.__VUE_I18N__ = i18n; + } + // setup global provider + app.__VUE_I18N_SYMBOL__ = symbol; + app.provide(app.__VUE_I18N_SYMBOL__, i18n); + // set composer & vuei18n extend hook options from plugin options + if (isPlainObject(options[0])) { + const opts = options[0]; + i18n.__composerExtend = + opts.__composerExtend; + i18n.__vueI18nExtend = + opts.__vueI18nExtend; + } + // global method and properties injection for Composition API + let globalReleaseHandler = null; + if (!__legacyMode && __globalInjection) { + globalReleaseHandler = injectGlobalFields(app, i18n.global); + } + // install built-in components and directive + { + apply(app, i18n, ...options); + } + // setup mixin for Legacy API + if (__legacyMode) { + app.mixin(defineMixin(__global, __global.__composer, i18n)); + } + // release global scope + const unmountApp = app.unmount; + app.unmount = () => { + globalReleaseHandler && globalReleaseHandler(); + i18n.dispose(); + unmountApp(); + }; + // setup vue-devtools plugin + { + const ret = await enableDevTools(app, i18n); + if (!ret) { + throw createI18nError(I18nErrorCodes.CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN); + } + const emitter = createEmitter(); + if (__legacyMode) { + const _vueI18n = __global; + _vueI18n.__enableEmitter && _vueI18n.__enableEmitter(emitter); + } + else { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const _composer = __global; + _composer[EnableEmitter] && _composer[EnableEmitter](emitter); + } + emitter.on('*', addTimelineEvent); + } + }, + // global accessor + get global() { + return __global; + }, + dispose() { + globalScope.stop(); + }, + // @internal + __instances, + // @internal + __getInstance, + // @internal + __setInstance, + // @internal + __deleteInstance + }; + return i18n; + } + } + // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types + function useI18n(options = {}) { + const instance = vue.getCurrentInstance(); + if (instance == null) { + throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP); + } + if (!instance.isCE && + instance.appContext.app != null && + !instance.appContext.app.__VUE_I18N_SYMBOL__) { + throw createI18nError(I18nErrorCodes.NOT_INSTALLED); + } + const i18n = getI18nInstance(instance); + const gl = getGlobalComposer(i18n); + const componentOptions = getComponentOptions(instance); + const scope = getScope(options, componentOptions); + { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + if (i18n.mode === 'legacy' && !options.__useComponent) { + if (!i18n.allowComposition) { + throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_IN_LEGACY_MODE); + } + return useI18nForLegacy(instance, scope, gl, options); + } + } + if (scope === 'global') { + adjustI18nResources(gl, options, componentOptions); + return gl; + } + if (scope === 'parent') { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let composer = getComposer(i18n, instance, options.__useComponent); + if (composer == null) { + { + warn(getWarnMessage(I18nWarnCodes.NOT_FOUND_PARENT_SCOPE)); + } + composer = gl; + } + return composer; + } + const i18nInternal = i18n; + let composer = i18nInternal.__getInstance(instance); + if (composer == null) { + const composerOptions = assign({}, options); + if ('__i18n' in componentOptions) { + composerOptions.__i18n = componentOptions.__i18n; + } + if (gl) { + composerOptions.__root = gl; + } + composer = createComposer(composerOptions); + if (i18nInternal.__composerExtend) { + composer[DisposeSymbol] = + i18nInternal.__composerExtend(composer); + } + setupLifeCycle(i18nInternal, instance, composer); + i18nInternal.__setInstance(instance, composer); + } + return composer; + } + /** + * Cast to VueI18n legacy compatible type + * + * @remarks + * This API is provided only with [vue-i18n-bridge](https://vue-i18n.intlify.dev/guide/migration/ways.html#what-is-vue-i18n-bridge). + * + * The purpose of this function is to convert an {@link I18n} instance created with {@link createI18n | createI18n(legacy: true)} into a `vue-i18n@v8.x` compatible instance of `new VueI18n` in a TypeScript environment. + * + * @param i18n - An instance of {@link I18n} + * @returns A i18n instance which is casted to {@link VueI18n} type + * + * @VueI18nTip + * :new: provided by **vue-i18n-bridge only** + * + * @VueI18nGeneral + */ + const castToVueI18n = /* #__PURE__*/ (i18n + // eslint-disable-next-line @typescript-eslint/no-explicit-any + ) => { + if (!(__VUE_I18N_BRIDGE__ in i18n)) { + throw createI18nError(I18nErrorCodes.NOT_COMPATIBLE_LEGACY_VUE_I18N); + } + return i18n; + }; + function createGlobal(options, legacyMode, VueI18nLegacy // eslint-disable-line @typescript-eslint/no-explicit-any + ) { + const scope = vue.effectScope(); + { + const obj = legacyMode + ? scope.run(() => createVueI18n(options)) + : scope.run(() => createComposer(options)); + if (obj == null) { + throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); + } + return [scope, obj]; + } + } + function getI18nInstance(instance) { + { + const i18n = vue.inject(!instance.isCE + ? instance.appContext.app.__VUE_I18N_SYMBOL__ + : I18nInjectionKey); + /* istanbul ignore if */ + if (!i18n) { + throw createI18nError(!instance.isCE + ? I18nErrorCodes.UNEXPECTED_ERROR + : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE); + } + return i18n; + } + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + function getScope(options, componentOptions) { + // prettier-ignore + return isEmptyObject(options) + ? ('__i18n' in componentOptions) + ? 'local' + : 'global' + : !options.useScope + ? 'local' + : options.useScope; + } + function getGlobalComposer(i18n) { + // prettier-ignore + return i18n.mode === 'composition' + ? i18n.global + : i18n.global.__composer + ; + } + function getComposer(i18n, target, useComponent = false) { + let composer = null; + const root = target.root; + let current = getParentComponentInstance(target, useComponent); + while (current != null) { + const i18nInternal = i18n; + if (i18n.mode === 'composition') { + composer = i18nInternal.__getInstance(current); + } + else { + { + const vueI18n = i18nInternal.__getInstance(current); + if (vueI18n != null) { + composer = vueI18n + .__composer; + if (useComponent && + composer && + !composer[InejctWithOptionSymbol] // eslint-disable-line @typescript-eslint/no-explicit-any + ) { + composer = null; + } + } + } + } + if (composer != null) { + break; + } + if (root === current) { + break; + } + current = current.parent; + } + return composer; + } + function getParentComponentInstance(target, useComponent = false) { + if (target == null) { + return null; + } + { + // if `useComponent: true` will be specified, we get lexical scope owner instance for use-case slots + return !useComponent + ? target.parent + : target.vnode.ctx || target.parent; // eslint-disable-line @typescript-eslint/no-explicit-any + } + } + function setupLifeCycle(i18n, target, composer) { + let emitter = null; + { + vue.onMounted(() => { + // inject composer instance to DOM for intlify-devtools + if (target.vnode.el) { + target.vnode.el.__VUE_I18N__ = composer; + emitter = createEmitter(); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const _composer = composer; + _composer[EnableEmitter] && _composer[EnableEmitter](emitter); + emitter.on('*', addTimelineEvent); + } + }, target); + vue.onUnmounted(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const _composer = composer; + // remove composer instance from DOM for intlify-devtools + if (target.vnode.el && + target.vnode.el.__VUE_I18N__) { + emitter && emitter.off('*', addTimelineEvent); + _composer[DisableEmitter] && _composer[DisableEmitter](); + delete target.vnode.el.__VUE_I18N__; + } + i18n.__deleteInstance(target); + // dispose extended resources + const dispose = _composer[DisposeSymbol]; + if (dispose) { + dispose(); + delete _composer[DisposeSymbol]; + } + }, target); + } + } + function useI18nForLegacy(instance, scope, root, options = {} // eslint-disable-line @typescript-eslint/no-explicit-any + ) { + const isLocalScope = scope === 'local'; + const _composer = vue.shallowRef(null); + if (isLocalScope && + instance.proxy && + !(instance.proxy.$options.i18n || instance.proxy.$options.__i18n)) { + throw createI18nError(I18nErrorCodes.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION); + } + const _inheritLocale = isBoolean(options.inheritLocale) + ? options.inheritLocale + : !isString(options.locale); + const _locale = vue.ref( + // prettier-ignore + !isLocalScope || _inheritLocale + ? root.locale.value + : isString(options.locale) + ? options.locale + : DEFAULT_LOCALE); + const _fallbackLocale = vue.ref( + // prettier-ignore + !isLocalScope || _inheritLocale + ? root.fallbackLocale.value + : isString(options.fallbackLocale) || + isArray(options.fallbackLocale) || + isPlainObject(options.fallbackLocale) || + options.fallbackLocale === false + ? options.fallbackLocale + : _locale.value); + const _messages = vue.ref(getLocaleMessages(_locale.value, options)); + // prettier-ignore + const _datetimeFormats = vue.ref(isPlainObject(options.datetimeFormats) + ? options.datetimeFormats + : { [_locale.value]: {} }); + // prettier-ignore + const _numberFormats = vue.ref(isPlainObject(options.numberFormats) + ? options.numberFormats + : { [_locale.value]: {} }); + // prettier-ignore + const _missingWarn = isLocalScope + ? root.missingWarn + : isBoolean(options.missingWarn) || isRegExp(options.missingWarn) + ? options.missingWarn + : true; + // prettier-ignore + const _fallbackWarn = isLocalScope + ? root.fallbackWarn + : isBoolean(options.fallbackWarn) || isRegExp(options.fallbackWarn) + ? options.fallbackWarn + : true; + // prettier-ignore + const _fallbackRoot = isLocalScope + ? root.fallbackRoot + : isBoolean(options.fallbackRoot) + ? options.fallbackRoot + : true; + // configure fall back to root + const _fallbackFormat = !!options.fallbackFormat; + // runtime missing + const _missing = isFunction(options.missing) ? options.missing : null; + // postTranslation handler + const _postTranslation = isFunction(options.postTranslation) + ? options.postTranslation + : null; + // prettier-ignore + const _warnHtmlMessage = isLocalScope + ? root.warnHtmlMessage + : isBoolean(options.warnHtmlMessage) + ? options.warnHtmlMessage + : true; + const _escapeParameter = !!options.escapeParameter; + // prettier-ignore + const _modifiers = isLocalScope + ? root.modifiers + : isPlainObject(options.modifiers) + ? options.modifiers + : {}; + // pluralRules + const _pluralRules = options.pluralRules || (isLocalScope && root.pluralRules); + // track reactivity + function trackReactivityValues() { + return [ + _locale.value, + _fallbackLocale.value, + _messages.value, + _datetimeFormats.value, + _numberFormats.value + ]; + } + // locale + const locale = vue.computed({ + get: () => { + return _composer.value ? _composer.value.locale.value : _locale.value; + }, + set: val => { + if (_composer.value) { + _composer.value.locale.value = val; + } + _locale.value = val; + } + }); + // fallbackLocale + const fallbackLocale = vue.computed({ + get: () => { + return _composer.value + ? _composer.value.fallbackLocale.value + : _fallbackLocale.value; + }, + set: val => { + if (_composer.value) { + _composer.value.fallbackLocale.value = val; + } + _fallbackLocale.value = val; + } + }); + // messages + const messages = vue.computed(() => { + if (_composer.value) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return _composer.value.messages.value; + } + else { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return _messages.value; + } + }); + const datetimeFormats = vue.computed(() => _datetimeFormats.value); + const numberFormats = vue.computed(() => _numberFormats.value); + function getPostTranslationHandler() { + return _composer.value + ? _composer.value.getPostTranslationHandler() + : _postTranslation; + } + function setPostTranslationHandler(handler) { + if (_composer.value) { + _composer.value.setPostTranslationHandler(handler); + } + } + function getMissingHandler() { + return _composer.value ? _composer.value.getMissingHandler() : _missing; + } + function setMissingHandler(handler) { + if (_composer.value) { + _composer.value.setMissingHandler(handler); + } + } + function warpWithDeps(fn) { + trackReactivityValues(); + return fn(); + } + function t(...args) { + return _composer.value + ? warpWithDeps(() => Reflect.apply(_composer.value.t, null, [...args])) + : warpWithDeps(() => ''); + } + function rt(...args) { + return _composer.value + ? Reflect.apply(_composer.value.rt, null, [...args]) + : ''; + } + function d(...args) { + return _composer.value + ? warpWithDeps(() => Reflect.apply(_composer.value.d, null, [...args])) + : warpWithDeps(() => ''); + } + function n(...args) { + return _composer.value + ? warpWithDeps(() => Reflect.apply(_composer.value.n, null, [...args])) + : warpWithDeps(() => ''); + } + function tm(key) { + return _composer.value ? _composer.value.tm(key) : {}; + } + function te(key, locale) { + return _composer.value ? _composer.value.te(key, locale) : false; + } + function getLocaleMessage(locale) { + return _composer.value ? _composer.value.getLocaleMessage(locale) : {}; + } + function setLocaleMessage(locale, message) { + if (_composer.value) { + _composer.value.setLocaleMessage(locale, message); + _messages.value[locale] = message; + } + } + function mergeLocaleMessage(locale, message) { + if (_composer.value) { + _composer.value.mergeLocaleMessage(locale, message); + } + } + function getDateTimeFormat(locale) { + return _composer.value ? _composer.value.getDateTimeFormat(locale) : {}; + } + function setDateTimeFormat(locale, format) { + if (_composer.value) { + _composer.value.setDateTimeFormat(locale, format); + _datetimeFormats.value[locale] = format; + } + } + function mergeDateTimeFormat(locale, format) { + if (_composer.value) { + _composer.value.mergeDateTimeFormat(locale, format); + } + } + function getNumberFormat(locale) { + return _composer.value ? _composer.value.getNumberFormat(locale) : {}; + } + function setNumberFormat(locale, format) { + if (_composer.value) { + _composer.value.setNumberFormat(locale, format); + _numberFormats.value[locale] = format; + } + } + function mergeNumberFormat(locale, format) { + if (_composer.value) { + _composer.value.mergeNumberFormat(locale, format); + } + } + const wrapper = { + get id() { + return _composer.value ? _composer.value.id : -1; + }, + locale, + fallbackLocale, + messages, + datetimeFormats, + numberFormats, + get inheritLocale() { + return _composer.value ? _composer.value.inheritLocale : _inheritLocale; + }, + set inheritLocale(val) { + if (_composer.value) { + _composer.value.inheritLocale = val; + } + }, + get availableLocales() { + return _composer.value + ? _composer.value.availableLocales + : Object.keys(_messages.value); + }, + get modifiers() { + return (_composer.value ? _composer.value.modifiers : _modifiers); + }, + get pluralRules() { + return (_composer.value ? _composer.value.pluralRules : _pluralRules); + }, + get isGlobal() { + return _composer.value ? _composer.value.isGlobal : false; + }, + get missingWarn() { + return _composer.value ? _composer.value.missingWarn : _missingWarn; + }, + set missingWarn(val) { + if (_composer.value) { + _composer.value.missingWarn = val; + } + }, + get fallbackWarn() { + return _composer.value ? _composer.value.fallbackWarn : _fallbackWarn; + }, + set fallbackWarn(val) { + if (_composer.value) { + _composer.value.missingWarn = val; + } + }, + get fallbackRoot() { + return _composer.value ? _composer.value.fallbackRoot : _fallbackRoot; + }, + set fallbackRoot(val) { + if (_composer.value) { + _composer.value.fallbackRoot = val; + } + }, + get fallbackFormat() { + return _composer.value ? _composer.value.fallbackFormat : _fallbackFormat; + }, + set fallbackFormat(val) { + if (_composer.value) { + _composer.value.fallbackFormat = val; + } + }, + get warnHtmlMessage() { + return _composer.value + ? _composer.value.warnHtmlMessage + : _warnHtmlMessage; + }, + set warnHtmlMessage(val) { + if (_composer.value) { + _composer.value.warnHtmlMessage = val; + } + }, + get escapeParameter() { + return _composer.value + ? _composer.value.escapeParameter + : _escapeParameter; + }, + set escapeParameter(val) { + if (_composer.value) { + _composer.value.escapeParameter = val; + } + }, + t, + getPostTranslationHandler, + setPostTranslationHandler, + getMissingHandler, + setMissingHandler, + rt, + d, + n, + tm, + te, + getLocaleMessage, + setLocaleMessage, + mergeLocaleMessage, + getDateTimeFormat, + setDateTimeFormat, + mergeDateTimeFormat, + getNumberFormat, + setNumberFormat, + mergeNumberFormat + }; + function sync(composer) { + composer.locale.value = _locale.value; + composer.fallbackLocale.value = _fallbackLocale.value; + Object.keys(_messages.value).forEach(locale => { + composer.mergeLocaleMessage(locale, _messages.value[locale]); + }); + Object.keys(_datetimeFormats.value).forEach(locale => { + composer.mergeDateTimeFormat(locale, _datetimeFormats.value[locale]); + }); + Object.keys(_numberFormats.value).forEach(locale => { + composer.mergeNumberFormat(locale, _numberFormats.value[locale]); + }); + composer.escapeParameter = _escapeParameter; + composer.fallbackFormat = _fallbackFormat; + composer.fallbackRoot = _fallbackRoot; + composer.fallbackWarn = _fallbackWarn; + composer.missingWarn = _missingWarn; + composer.warnHtmlMessage = _warnHtmlMessage; + } + vue.onBeforeMount(() => { + if (instance.proxy == null || instance.proxy.$i18n == null) { + throw createI18nError(I18nErrorCodes.NOT_AVAILABLE_COMPOSITION_IN_LEGACY); + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const composer = (_composer.value = instance.proxy.$i18n + .__composer); + if (scope === 'global') { + _locale.value = composer.locale.value; + _fallbackLocale.value = composer.fallbackLocale.value; + _messages.value = composer.messages.value; + _datetimeFormats.value = composer.datetimeFormats.value; + _numberFormats.value = composer.numberFormats.value; + } + else if (isLocalScope) { + sync(composer); + } + }); + return wrapper; + } + const globalExportProps = [ + 'locale', + 'fallbackLocale', + 'availableLocales' + ]; + const globalExportMethods = ['t', 'rt', 'd', 'n', 'tm', 'te'] + ; + function injectGlobalFields(app, composer) { + const i18n = Object.create(null); + globalExportProps.forEach(prop => { + const desc = Object.getOwnPropertyDescriptor(composer, prop); + if (!desc) { + throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); + } + const wrap = vue.isRef(desc.value) // check computed props + ? { + get() { + return desc.value.value; + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + set(val) { + desc.value.value = val; + } + } + : { + get() { + return desc.get && desc.get(); + } + }; + Object.defineProperty(i18n, prop, wrap); + }); + app.config.globalProperties.$i18n = i18n; + globalExportMethods.forEach(method => { + const desc = Object.getOwnPropertyDescriptor(composer, method); + if (!desc || !desc.value) { + throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR); + } + Object.defineProperty(app.config.globalProperties, `$${method}`, desc); + }); + const dispose = () => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + delete app.config.globalProperties.$i18n; + globalExportMethods.forEach(method => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + delete app.config.globalProperties[`$${method}`]; + }); + }; + return dispose; + } + + // register message compiler at vue-i18n + { + registerMessageCompiler(compile); + } + // register message resolver at vue-i18n + registerMessageResolver(resolveValue); + // register fallback locale at vue-i18n + registerLocaleFallbacker(fallbackWithLocaleChain); + // NOTE: experimental !! + { + const target = getGlobalThis(); + target.__INTLIFY__ = true; + setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__); + } + { + initDev(); + } + + exports.DatetimeFormat = DatetimeFormat; + exports.I18nD = I18nD; + exports.I18nInjectionKey = I18nInjectionKey; + exports.I18nN = I18nN; + exports.I18nT = I18nT; + exports.NumberFormat = NumberFormat; + exports.Translation = Translation; + exports.VERSION = VERSION; + exports.castToVueI18n = castToVueI18n; + exports.createI18n = createI18n; + exports.useI18n = useI18n; + exports.vTDirective = vTDirective; + + return exports; + +})({}, Vue); diff --git a/src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.prod.js b/src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.prod.js new file mode 100644 index 00000000..c00716a6 --- /dev/null +++ b/src/cdh/vue3/static/cdh.vue3/vue/vue-i18n.global.prod.js @@ -0,0 +1,6 @@ +/*! + * vue-i18n v9.5.0 + * (c) 2023 kazuya kawaguchi + * Released under the MIT License. + */ +var VueI18n=function(e,t){"use strict";const n="undefined"!=typeof window,r=(e,t=!1)=>t?Symbol.for(e):Symbol(e),a=(e,t,n)=>l({l:e,k:t,s:n}),l=e=>JSON.stringify(e).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029").replace(/\u0027/g,"\\u0027"),o=e=>"number"==typeof e&&isFinite(e),s=e=>"[object Date]"===k(e),c=e=>"[object RegExp]"===k(e),u=e=>h(e)&&0===Object.keys(e).length,i=Object.assign;function f(e){return e.replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}const m=Object.prototype.hasOwnProperty;function _(e,t){return m.call(e,t)}const p=Array.isArray,d=e=>"function"==typeof e,g=e=>"string"==typeof e,E=e=>"boolean"==typeof e,v=e=>null!==e&&"object"==typeof e,b=Object.prototype.toString,k=e=>b.call(e),h=e=>{if(!v(e))return!1;const t=Object.getPrototypeOf(e);return null===t||t.constructor===Object};function L(e,t=""){return e.reduce(((e,n,r)=>0===r?e+n:e+t+n),"")}function N(e){let t=e;return()=>++t}function T(e,t){"undefined"!=typeof console&&(console.warn("[intlify] "+e),t&&console.warn(t.stack))}function y(e,t,n){const r={start:e,end:t};return null!=n&&(r.source=n),r}const I={EXPECTED_TOKEN:1,INVALID_TOKEN_IN_PLACEHOLDER:2,UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER:3,UNKNOWN_ESCAPE_SEQUENCE:4,INVALID_UNICODE_ESCAPE_SEQUENCE:5,UNBALANCED_CLOSING_BRACE:6,UNTERMINATED_CLOSING_BRACE:7,EMPTY_PLACEHOLDER:8,NOT_ALLOW_NEST_PLACEHOLDER:9,INVALID_LINKED_FORMAT:10,MUST_HAVE_MESSAGES_IN_PLURAL:11,UNEXPECTED_EMPTY_LINKED_MODIFIER:12,UNEXPECTED_EMPTY_LINKED_KEY:13,UNEXPECTED_LEXICAL_ANALYSIS:14,UNHANDLED_CODEGEN_NODE_TYPE:15,UNHANDLED_MINIFIER_NODE_TYPE:16,__EXTEND_POINT__:17};function C(e,t,n={}){const{domain:r,messages:a,args:l}=n,o=new SyntaxError(String(e));return o.code=e,t&&(o.location=t),o.domain=r,o}function O(e){throw e}const A=" ",P="\r",F="\n",R=String.fromCharCode(8232),D=String.fromCharCode(8233);function S(e){const t=e;let n=0,r=1,a=1,l=0;const o=e=>t[e]===P&&t[e+1]===F,s=e=>t[e]===D,c=e=>t[e]===R,u=e=>o(e)||(e=>t[e]===F)(e)||s(e)||c(e),i=e=>o(e)||s(e)||c(e)?F:t[e];function f(){return l=0,u(n)&&(r++,a=0),o(n)&&n++,n++,a++,t[n]}return{index:()=>n,line:()=>r,column:()=>a,peekOffset:()=>l,charAt:i,currentChar:()=>i(n),currentPeek:()=>i(n+l),next:f,peek:function(){return o(n+l)&&l++,l++,t[n+l]},reset:function(){n=0,r=1,a=1,l=0},resetPeek:function(e=0){l=e},skipToPeek:function(){const e=n+l;for(;e!==n;)f();l=0}}}const M=void 0,w=".",x="'";function W(e,t={}){const n=!1!==t.location,r=S(e),a=()=>r.index(),l=()=>{return e=r.line(),t=r.column(),n=r.index(),{line:e,column:t,offset:n};var e,t,n},o=l(),s=a(),c={currentType:14,offset:s,startLoc:o,endLoc:o,lastType:14,lastOffset:s,lastStartLoc:o,lastEndLoc:o,braceNest:0,inLinked:!1,text:""},u=()=>c,{onError:i}=t;function f(e,t,r){e.endLoc=l(),e.currentType=t;const a={type:t};return n&&(a.loc=y(e.startLoc,e.endLoc)),null!=r&&(a.value=r),a}const m=e=>f(e,14);function _(e,t){return e.currentChar()===t?(e.next(),t):(I.EXPECTED_TOKEN,l(),"")}function p(e){let t="";for(;e.currentPeek()===A||e.currentPeek()===F;)t+=e.currentPeek(),e.peek();return t}function d(e){const t=p(e);return e.skipToPeek(),t}function g(e){if(e===M)return!1;const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||95===t}function E(e,t){const{currentType:n}=t;if(2!==n)return!1;p(e);const r=function(e){if(e===M)return!1;const t=e.charCodeAt(0);return t>=48&&t<=57}("-"===e.currentPeek()?e.peek():e.currentPeek());return e.resetPeek(),r}function v(e){p(e);const t="|"===e.currentPeek();return e.resetPeek(),t}function b(e,t=!0){const n=(t=!1,r="",a=!1)=>{const l=e.currentPeek();return"{"===l?"%"!==r&&t:"@"!==l&&l?"%"===l?(e.peek(),n(t,"%",!0)):"|"===l?!("%"!==r&&!a)||!(r===A||r===F):l===A?(e.peek(),n(!0,A,a)):l!==F||(e.peek(),n(!0,F,a)):"%"===r||t},r=n();return t&&e.resetPeek(),r}function k(e,t){const n=e.currentChar();return n===M?M:t(n)?(e.next(),n):null}function h(e){return k(e,(e=>{const t=e.charCodeAt(0);return t>=97&&t<=122||t>=65&&t<=90||t>=48&&t<=57||95===t||36===t}))}function L(e){return k(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57}))}function N(e){return k(e,(e=>{const t=e.charCodeAt(0);return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}))}function T(e){let t="",n="";for(;t=L(e);)n+=t;return n}function C(e){let t="";for(;;){const n=e.currentChar();if("{"===n||"}"===n||"@"===n||"|"===n||!n)break;if("%"===n){if(!b(e))break;t+=n,e.next()}else if(n===A||n===F)if(b(e))t+=n,e.next();else{if(v(e))break;t+=n,e.next()}else t+=n,e.next()}return t}function O(e){const t=e.currentChar();switch(t){case"\\":case"'":return e.next(),`\\${t}`;case"u":return P(e,t,4);case"U":return P(e,t,6);default:return I.UNKNOWN_ESCAPE_SEQUENCE,l(),""}}function P(e,t,n){_(e,t);let r="";for(let a=0;a=1&&(I.NOT_ALLOW_NEST_PLACEHOLDER,l()),e.next(),n=f(t,2,"{"),d(e),t.braceNest++,n;case"}":return t.braceNest>0&&2===t.currentType&&(I.EMPTY_PLACEHOLDER,l()),e.next(),n=f(t,3,"}"),t.braceNest--,t.braceNest>0&&d(e),t.inLinked&&0===t.braceNest&&(t.inLinked=!1),n;case"@":return t.braceNest>0&&(I.UNTERMINATED_CLOSING_BRACE,l()),n=W(e,t)||m(t),t.braceNest=0,n;default:let r=!0,a=!0,o=!0;if(v(e))return t.braceNest>0&&(I.UNTERMINATED_CLOSING_BRACE,l()),n=f(t,1,R(e)),t.braceNest=0,t.inLinked=!1,n;if(t.braceNest>0&&(5===t.currentType||6===t.currentType||7===t.currentType))return I.UNTERMINATED_CLOSING_BRACE,l(),t.braceNest=0,U(e,t);if(r=function(e,t){const{currentType:n}=t;if(2!==n)return!1;p(e);const r=g(e.currentPeek());return e.resetPeek(),r}(e,t))return n=f(t,5,function(e){d(e);let t="",n="";for(;t=h(e);)n+=t;return e.currentChar()===M&&(I.UNTERMINATED_CLOSING_BRACE,l()),n}(e)),d(e),n;if(a=E(e,t))return n=f(t,6,function(e){d(e);let t="";return"-"===e.currentChar()?(e.next(),t+=`-${T(e)}`):t+=T(e),e.currentChar()===M&&(I.UNTERMINATED_CLOSING_BRACE,l()),t}(e)),d(e),n;if(o=function(e,t){const{currentType:n}=t;if(2!==n)return!1;p(e);const r=e.currentPeek()===x;return e.resetPeek(),r}(e,t))return n=f(t,7,function(e){d(e),_(e,"'");let t="",n="";const r=e=>e!==x&&e!==F;for(;t=k(e,r);)n+="\\"===t?O(e):t;const a=e.currentChar();return a===F||a===M?(I.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER,l(),a===F&&(e.next(),_(e,"'")),n):(_(e,"'"),n)}(e)),d(e),n;if(!r&&!a&&!o)return n=f(t,13,function(e){d(e);let t="",n="";const r=e=>"{"!==e&&"}"!==e&&e!==A&&e!==F;for(;t=k(e,r);)n+=t;return n}(e)),I.INVALID_TOKEN_IN_PLACEHOLDER,l(),n.value,d(e),n}return n}function W(e,t){const{currentType:n}=t;let r=null;const a=e.currentChar();switch(8!==n&&9!==n&&12!==n&&10!==n||a!==F&&a!==A||(I.INVALID_LINKED_FORMAT,l()),a){case"@":return e.next(),r=f(t,8,"@"),t.inLinked=!0,r;case".":return d(e),e.next(),f(t,9,".");case":":return d(e),e.next(),f(t,10,":");default:return v(e)?(r=f(t,1,R(e)),t.braceNest=0,t.inLinked=!1,r):function(e,t){const{currentType:n}=t;if(8!==n)return!1;p(e);const r="."===e.currentPeek();return e.resetPeek(),r}(e,t)||function(e,t){const{currentType:n}=t;if(8!==n&&12!==n)return!1;p(e);const r=":"===e.currentPeek();return e.resetPeek(),r}(e,t)?(d(e),W(e,t)):function(e,t){const{currentType:n}=t;if(9!==n)return!1;p(e);const r=g(e.currentPeek());return e.resetPeek(),r}(e,t)?(d(e),f(t,12,function(e){let t="",n="";for(;t=h(e);)n+=t;return n}(e))):function(e,t){const{currentType:n}=t;if(10!==n)return!1;const r=()=>{const t=e.currentPeek();return"{"===t?g(e.peek()):!("@"===t||"%"===t||"|"===t||":"===t||"."===t||t===A||!t)&&(t===F?(e.peek(),r()):g(t))},a=r();return e.resetPeek(),a}(e,t)?(d(e),"{"===a?D(e,t)||r:f(t,11,function(e){const t=(n=!1,r)=>{const a=e.currentChar();return"{"!==a&&"%"!==a&&"@"!==a&&"|"!==a&&"("!==a&&")"!==a&&a?a===A?r:a===F||a===w?(r+=a,e.next(),t(n,r)):(r+=a,e.next(),t(!0,r)):r};return t(!1,"")}(e))):(8===n&&(I.INVALID_LINKED_FORMAT,l()),t.braceNest=0,t.inLinked=!1,U(e,t))}}function U(e,t){let n={type:14};if(t.braceNest>0)return D(e,t)||m(t);if(t.inLinked)return W(e,t)||m(t);switch(e.currentChar()){case"{":return D(e,t)||m(t);case"}":return I.UNBALANCED_CLOSING_BRACE,l(),e.next(),f(t,3,"}");case"@":return W(e,t)||m(t);default:if(v(e))return n=f(t,1,R(e)),t.braceNest=0,t.inLinked=!1,n;const{isModulo:r,hasSpace:a}=function(e){const t=p(e),n="%"===e.currentPeek()&&"{"===e.peek();return e.resetPeek(),{isModulo:n,hasSpace:t.length>0}}(e);if(r)return a?f(t,0,C(e)):f(t,4,function(e){d(e);const t=e.currentChar();return"%"!==t&&(I.EXPECTED_TOKEN,l()),e.next(),"%"}(e));if(b(e))return f(t,0,C(e))}return n}return{nextToken:function(){const{currentType:e,offset:t,startLoc:n,endLoc:o}=c;return c.lastType=e,c.lastOffset=t,c.lastStartLoc=n,c.lastEndLoc=o,c.offset=a(),c.startLoc=l(),r.currentChar()===M?f(c,14):U(r,c)},currentOffset:a,currentPosition:l,context:u}}const U=/(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;function $(e,t,n){switch(e){case"\\\\":return"\\";case"\\'":return"'";default:{const e=parseInt(t||n,16);return e<=55295||e>=57344?String.fromCodePoint(e):"�"}}}function H(e={}){const t=!1!==e.location,{onError:n}=e;function r(e,n,r){const a={type:e};return t&&(a.start=n,a.end=n,a.loc={start:r,end:r}),a}function a(e,n,r,a){a&&(e.type=a),t&&(e.end=n,e.loc&&(e.loc.end=r))}function l(e,t){const n=e.context(),l=r(3,n.offset,n.startLoc);return l.value=t,a(l,e.currentOffset(),e.currentPosition()),l}function o(e,t){const n=e.context(),{lastOffset:l,lastStartLoc:o}=n,s=r(5,l,o);return s.index=parseInt(t,10),e.nextToken(),a(s,e.currentOffset(),e.currentPosition()),s}function s(e,t){const n=e.context(),{lastOffset:l,lastStartLoc:o}=n,s=r(4,l,o);return s.key=t,e.nextToken(),a(s,e.currentOffset(),e.currentPosition()),s}function c(e,t){const n=e.context(),{lastOffset:l,lastStartLoc:o}=n,s=r(9,l,o);return s.value=t.replace(U,$),e.nextToken(),a(s,e.currentOffset(),e.currentPosition()),s}function u(e){const t=e.context(),n=r(6,t.offset,t.startLoc);let l=e.nextToken();if(9===l.type){const t=function(e){const t=e.nextToken(),n=e.context(),{lastOffset:l,lastStartLoc:o}=n,s=r(8,l,o);return 12!==t.type?(I.UNEXPECTED_EMPTY_LINKED_MODIFIER,n.lastStartLoc,s.value="",a(s,l,o),{nextConsumeToken:t,node:s}):(null==t.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,n.lastStartLoc,V(t)),s.value=t.value||"",a(s,e.currentOffset(),e.currentPosition()),{node:s})}(e);n.modifier=t.node,l=t.nextConsumeToken||e.nextToken()}switch(10!==l.type&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(l)),l=e.nextToken(),2===l.type&&(l=e.nextToken()),l.type){case 11:null==l.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(l)),n.key=function(e,t){const n=e.context(),l=r(7,n.offset,n.startLoc);return l.value=t,a(l,e.currentOffset(),e.currentPosition()),l}(e,l.value||"");break;case 5:null==l.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(l)),n.key=s(e,l.value||"");break;case 6:null==l.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(l)),n.key=o(e,l.value||"");break;case 7:null==l.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(l)),n.key=c(e,l.value||"");break;default:I.UNEXPECTED_EMPTY_LINKED_KEY,t.lastStartLoc;const u=e.context(),i=r(7,u.offset,u.startLoc);return i.value="",a(i,u.offset,u.startLoc),n.key=i,a(n,u.offset,u.startLoc),{nextConsumeToken:l,node:n}}return a(n,e.currentOffset(),e.currentPosition()),{node:n}}function f(e){const t=e.context(),n=r(2,1===t.currentType?e.currentOffset():t.offset,1===t.currentType?t.endLoc:t.startLoc);n.items=[];let i=null;do{const r=i||e.nextToken();switch(i=null,r.type){case 0:null==r.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(r)),n.items.push(l(e,r.value||""));break;case 6:null==r.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(r)),n.items.push(o(e,r.value||""));break;case 5:null==r.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(r)),n.items.push(s(e,r.value||""));break;case 7:null==r.value&&(I.UNEXPECTED_LEXICAL_ANALYSIS,t.lastStartLoc,V(r)),n.items.push(c(e,r.value||""));break;case 8:const a=u(e);n.items.push(a.node),i=a.nextConsumeToken||null}}while(14!==t.currentType&&1!==t.currentType);return a(n,1===t.currentType?t.lastOffset:e.currentOffset(),1===t.currentType?t.lastEndLoc:e.currentPosition()),n}function m(e){const t=e.context(),{offset:n,startLoc:l}=t,o=f(e);return 14===t.currentType?o:function(e,t,n,l){const o=e.context();let s=0===l.items.length;const c=r(1,t,n);c.cases=[],c.cases.push(l);do{const t=f(e);s||(s=0===t.items.length),c.cases.push(t)}while(14!==o.currentType);return a(c,e.currentOffset(),e.currentPosition()),c}(e,n,l,o)}return{parse:function(n){const l=W(n,i({},e)),o=l.context(),s=r(0,o.offset,o.startLoc);return t&&s.loc&&(s.loc.source=n),s.body=m(l),e.onCacheKey&&(s.cacheKey=e.onCacheKey(n)),14!==o.currentType&&(I.UNEXPECTED_LEXICAL_ANALYSIS,o.lastStartLoc,n[o.offset]),a(s,l.currentOffset(),l.currentPosition()),s}}}function V(e){if(14===e.type)return"EOF";const t=(e.value||"").replace(/\r?\n/gu,"\\n");return t.length>10?t.slice(0,9)+"…":t}function j(e,t){for(let n=0;nn,helper:e=>(n.helpers.add(e),e)}}(e);n.helper("normalize"),e.body&&X(e.body,n);const r=n.context();e.helpers=Array.from(r.helpers)}function Y(e){if(1===e.items.length){const t=e.items[0];3!==t.type&&9!==t.type||(e.static=t.value,delete t.value)}else{const t=[];for(let n=0;n1){e.push(`${n("plural")}([`),e.indent(r());const a=t.cases.length;for(let n=0;n{const n=g(t.mode)?t.mode:"normal",r=g(t.filename)?t.filename:"message.intl",a=!!t.sourceMap,l=null!=t.breakLineCode?t.breakLineCode:"arrow"===n?";":"\n",o=t.needIndent?t.needIndent:"arrow"!==n,s=e.helpers||[],c=function(e,t){const{sourceMap:n,filename:r,breakLineCode:a,needIndent:l}=t,o=!1!==t.location,s={filename:r,code:"",column:1,line:1,offset:0,map:void 0,breakLineCode:a,needIndent:l,indentLevel:0};function c(e,t){s.code+=e}function u(e,t=!0){const n=t?a:"";c(l?n+" ".repeat(e):n)}return o&&e.loc&&(s.source=e.loc.source),{context:()=>s,push:c,indent:function(e=!0){const t=++s.indentLevel;e&&u(t)},deindent:function(e=!0){const t=--s.indentLevel;e&&u(t)},newline:function(){u(s.indentLevel)},helper:e=>`_${e}`,needIndent:()=>s.needIndent}}(e,{mode:n,filename:r,sourceMap:a,breakLineCode:l,needIndent:o});c.push("normal"===n?"function __msg__ (ctx) {":"(ctx) => {"),c.indent(o),s.length>0&&(c.push(`const { ${L(s.map((e=>`${e}: _${e}`)),", ")} } = ctx`),c.newline()),c.push("return "),K(c,e),c.deindent(o),c.push("}"),delete e.helpers;const{code:u,map:i}=c.context();return{ast:e,code:u,map:i?i.toJSON():void 0}};function J(e,t={}){const n=i({},t),r=!!n.jit,a=!!n.minify,l=null==n.optimize||n.optimize,o=H(n).parse(e);return r?(l&&function(e){const t=e.body;2===t.type?Y(t):t.cases.forEach((e=>Y(e)))}(o),a&&B(o),{ast:o,code:""}):(G(o,n),z(o,n))}const Q=[];Q[0]={w:[0],i:[3,0],"[":[4],o:[7]},Q[1]={w:[1],".":[2],"[":[4],o:[7]},Q[2]={w:[2],i:[3,0],0:[3,0]},Q[3]={i:[3,0],0:[3,0],w:[1,1],".":[2,1],"[":[4,1],o:[7,1]},Q[4]={"'":[5,0],'"':[6,0],"[":[4,2],"]":[1,3],o:8,l:[4,0]},Q[5]={"'":[4,0],o:8,l:[5,0]},Q[6]={'"':[4,0],o:8,l:[6,0]};const q=/^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;function Z(e){if(null==e)return"o";switch(e.charCodeAt(0)){case 91:case 93:case 46:case 34:case 39:return e;case 95:case 36:case 45:return"i";case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"w"}return"i"}function ee(e){const t=e.trim();return("0"!==e.charAt(0)||!isNaN(parseInt(e)))&&(n=t,q.test(n)?function(e){const t=e.charCodeAt(0);return t!==e.charCodeAt(e.length-1)||34!==t&&39!==t?e:e.slice(1,-1)}(t):"*"+t);var n}const te=new Map;function ne(e,t){return v(e)?e[t]:null}const re=e=>e,ae=e=>"",le="text",oe=e=>0===e.length?"":L(e),se=e=>null==e?"":p(e)||h(e)&&e.toString===b?JSON.stringify(e,null,2):String(e);function ce(e,t){return e=Math.abs(e),2===t?e?e>1?1:0:1:e?Math.min(e,2):0}function ue(e={}){const t=e.locale,n=function(e){const t=o(e.pluralIndex)?e.pluralIndex:-1;return e.named&&(o(e.named.count)||o(e.named.n))?o(e.named.count)?e.named.count:o(e.named.n)?e.named.n:t:t}(e),r=v(e.pluralRules)&&g(t)&&d(e.pluralRules[t])?e.pluralRules[t]:ce,a=v(e.pluralRules)&&g(t)&&d(e.pluralRules[t])?ce:void 0,l=e.list||[],s=e.named||{};o(e.pluralIndex)&&function(e,t){t.count||(t.count=e),t.n||(t.n=e)}(n,s);function c(t){const n=d(e.messages)?e.messages(t):!!v(e.messages)&&e.messages[t];return n||(e.parent?e.parent.message(t):ae)}const u=h(e.processor)&&d(e.processor.normalize)?e.processor.normalize:oe,f=h(e.processor)&&d(e.processor.interpolate)?e.processor.interpolate:se,m={list:e=>l[e],named:e=>s[e],plural:e=>e[r(n,e.length,a)],linked:(t,...n)=>{const[r,a]=n;let l="text",o="";1===n.length?v(r)?(o=r.modifier||o,l=r.type||l):g(r)&&(o=r||o):2===n.length&&(g(r)&&(o=r||o),g(a)&&(l=a||l));const s=c(t)(m),u="vnode"===l&&p(s)&&o?s[0]:s;return o?(i=o,e.modifiers?e.modifiers[i]:re)(u,l):u;var i},message:c,type:h(e.processor)&&g(e.processor.type)?e.processor.type:le,interpolate:f,normalize:u,values:i({},l,s)};return m}function ie(e,t){return null!=t.locale?me(t.locale):me(e.locale)}let fe;function me(e){return g(e)?e:null!=fe&&e.resolvedOnce?fe:fe=e()}function _e(e,t,n){return[...new Set([n,...p(t)?t:v(t)?Object.keys(t):g(t)?[t]:[n]])]}function pe(e,t,n){const r=g(n)?n:ke,a=e;a.__localeChainCache||(a.__localeChainCache=new Map);let l=a.__localeChainCache.get(r);if(!l){l=[];let e=[n];for(;p(e);)e=de(l,e,t);const o=p(t)||!h(t)?t:t.default?t.default:null;e=g(o)?[o]:o,p(e)&&de(l,e,!1),a.__localeChainCache.set(r,l)}return l}function de(e,t,n){let r=!0;for(let a=0;a`${e.charAt(0).toLocaleUpperCase()}${e.substr(1)}`;let Ne,Te,ye;let Ie=null;const Ce=e=>{Ie=e},Oe=()=>Ie;let Ae=0;function Pe(e={}){const t=d(e.onWarn)?e.onWarn:T,n=g(e.version)?e.version:ve,r=g(e.locale)||d(e.locale)?e.locale:ke,a=d(r)?ke:r,l=p(e.fallbackLocale)||h(e.fallbackLocale)||g(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:a,o=h(e.messages)?e.messages:{[a]:{}},s=h(e.datetimeFormats)?e.datetimeFormats:{[a]:{}},u=h(e.numberFormats)?e.numberFormats:{[a]:{}},f=i({},e.modifiers||{},{upper:(e,t)=>"text"===t&&g(e)?e.toUpperCase():"vnode"===t&&v(e)&&"__v_isVNode"in e?e.children.toUpperCase():e,lower:(e,t)=>"text"===t&&g(e)?e.toLowerCase():"vnode"===t&&v(e)&&"__v_isVNode"in e?e.children.toLowerCase():e,capitalize:(e,t)=>"text"===t&&g(e)?Le(e):"vnode"===t&&v(e)&&"__v_isVNode"in e?Le(e.children):e}),m=e.pluralRules||{},_=d(e.missing)?e.missing:null,b=!E(e.missingWarn)&&!c(e.missingWarn)||e.missingWarn,k=!E(e.fallbackWarn)&&!c(e.fallbackWarn)||e.fallbackWarn,L=!!e.fallbackFormat,N=!!e.unresolving,y=d(e.postTranslation)?e.postTranslation:null,I=h(e.processor)?e.processor:null,C=!E(e.warnHtmlMessage)||e.warnHtmlMessage,O=!!e.escapeParameter,A=d(e.messageCompiler)?e.messageCompiler:Ne,P=d(e.messageResolver)?e.messageResolver:Te||ne,F=d(e.localeFallbacker)?e.localeFallbacker:ye||_e,R=v(e.fallbackContext)?e.fallbackContext:void 0,D=e,S=v(D.__datetimeFormatters)?D.__datetimeFormatters:new Map,M=v(D.__numberFormatters)?D.__numberFormatters:new Map,w=v(D.__meta)?D.__meta:{};Ae++;const x={version:n,cid:Ae,locale:r,fallbackLocale:l,messages:o,modifiers:f,pluralRules:m,missing:_,missingWarn:b,fallbackWarn:k,fallbackFormat:L,unresolving:N,postTranslation:y,processor:I,warnHtmlMessage:C,escapeParameter:O,messageCompiler:A,messageResolver:P,localeFallbacker:F,fallbackContext:R,onWarn:t,__meta:w};return x.datetimeFormats=s,x.numberFormats=u,x.__datetimeFormatters=S,x.__numberFormatters=M,x}function Fe(e,t,n,r,a){const{missing:l,onWarn:o}=e;if(null!==l){const r=l(e,n,t,a);return g(r)?r:t}return t}function Re(e,t,n){e.__localeChainCache=new Map,e.localeFallbacker(e,n,t)}function De(e){return t=>function(e,t){const n=t.b||t.body;if(1===(n.t||n.type)){const t=n,r=t.c||t.cases;return e.plural(r.reduce(((t,n)=>[...t,Se(e,n)]),[]))}return Se(e,n)}(t,e)}function Se(e,t){const n=t.s||t.static;if(n)return"text"===e.type?n:e.normalize([n]);{const n=(t.i||t.items).reduce(((t,n)=>[...t,Me(e,n)]),[]);return e.normalize(n)}}function Me(e,t){const n=t.t||t.type;switch(n){case 3:const r=t;return r.v||r.value;case 9:const a=t;return a.v||a.value;case 4:const l=t;return e.interpolate(e.named(l.k||l.key));case 5:const o=t;return e.interpolate(e.list(null!=o.i?o.i:o.index));case 6:const s=t,c=s.m||s.modifier;return e.linked(Me(e,s.k||s.key),c?Me(e,c):void 0,e.type);case 7:const u=t;return u.v||u.value;case 8:const i=t;return i.v||i.value;default:throw new Error(`unhandled node type on format message part: ${n}`)}}const we=I.__EXTEND_POINT__,xe=N(we),We={INVALID_ARGUMENT:we,INVALID_DATE_ARGUMENT:xe(),INVALID_ISO_DATE_ARGUMENT:xe(),NOT_SUPPORT_NON_STRING_MESSAGE:xe(),__EXTEND_POINT__:xe()},Ue=e=>e;let $e=Object.create(null);const He=e=>v(e)&&(0===e.t||0===e.type)&&("b"in e||"body"in e);const Ve=()=>"",je=e=>d(e);function Xe(e,...t){const{fallbackFormat:n,postTranslation:r,unresolving:a,messageCompiler:l,fallbackLocale:s,messages:c}=e,[u,i]=Be(...t),m=E(i.missingWarn)?i.missingWarn:e.missingWarn,_=E(i.fallbackWarn)?i.fallbackWarn:e.fallbackWarn,d=E(i.escapeParameter)?i.escapeParameter:e.escapeParameter,b=!!i.resolvedMessage,k=g(i.default)||E(i.default)?E(i.default)?l?u:()=>u:i.default:n?l?u:()=>u:"",h=n||""!==k,L=ie(e,i);d&&function(e){p(e.list)?e.list=e.list.map((e=>g(e)?f(e):e)):v(e.named)&&Object.keys(e.named).forEach((t=>{g(e.named[t])&&(e.named[t]=f(e.named[t]))}))}(i);let[N,T,y]=b?[u,L,c[L]||{}]:Ge(e,u,L,s,_,m),I=N,C=u;if(b||g(I)||He(I)||je(I)||h&&(I=k,C=I),!(b||(g(I)||He(I)||je(I))&&g(T)))return a?be:u;let O=!1;const A=je(I)?I:Ye(e,u,T,I,C,(()=>{O=!0}));if(O)return I;const P=function(e,t,n,r){const{modifiers:a,pluralRules:l,messageResolver:s,fallbackLocale:c,fallbackWarn:u,missingWarn:i,fallbackContext:f}=e,m=r=>{let a=s(n,r);if(null==a&&f){const[,,e]=Ge(f,r,t,c,u,i);a=s(e,r)}if(g(a)||He(a)){let n=!1;const l=Ye(e,r,t,a,r,(()=>{n=!0}));return n?Ve:l}return je(a)?a:Ve},_={locale:t,modifiers:a,pluralRules:l,messages:m};e.processor&&(_.processor=e.processor);r.list&&(_.list=r.list);r.named&&(_.named=r.named);o(r.plural)&&(_.pluralIndex=r.plural);return _}(e,T,y,i),F=function(e,t,n){const r=t(n);return r}(0,A,ue(P));return r?r(F,u):F}function Ge(e,t,n,r,a,l){const{messages:o,onWarn:s,messageResolver:c,localeFallbacker:u}=e,i=u(e,r,n);let f,m={},_=null;for(let p=0;pr;return e.locale=n,e.key=t,e}const u=s(r,function(e,t,n,r,l,o){return{locale:t,key:n,warnHtmlMessage:l,onError:e=>{throw o&&o(e),e},onCacheKey:e=>a(t,n,e)}}(0,n,l,0,c,o));return u.locale=n,u.key=t,u.source=r,u}function Be(...e){const[t,n,r]=e,a={};if(!(g(t)||o(t)||je(t)||He(t)))throw Error(We.INVALID_ARGUMENT);const l=o(t)?String(t):(je(t),t);return o(n)?a.plural=n:g(n)?a.default=n:h(n)&&!u(n)?a.named=n:p(n)&&(a.list=n),o(r)?a.plural=r:g(r)?a.default=r:h(r)&&i(a,r),[l,a]}function Ke(e,...t){const{datetimeFormats:n,unresolving:r,fallbackLocale:a,onWarn:l,localeFallbacker:o}=e,{__datetimeFormatters:s}=e,[c,f,m,_]=Je(...t);E(m.missingWarn)?m.missingWarn:e.missingWarn;E(m.fallbackWarn)?m.fallbackWarn:e.fallbackWarn;const p=!!m.part,d=ie(e,m),v=o(e,a,d);if(!g(c)||""===c)return new Intl.DateTimeFormat(d,_).format(f);let b,k={},L=null;for(let u=0;u{ze.includes(e)?u[e]=n[e]:l[e]=n[e]})),g(r)?l.locale=r:h(r)&&(u=r),h(a)&&(u=a),[l.key||"",c,l,u]}function Qe(e,t,n){const r=e;for(const a in n){const e=`${t}__${a}`;r.__datetimeFormatters.has(e)&&r.__datetimeFormatters.delete(e)}}function qe(e,...t){const{numberFormats:n,unresolving:r,fallbackLocale:a,onWarn:l,localeFallbacker:o}=e,{__numberFormatters:s}=e,[c,f,m,_]=et(...t);E(m.missingWarn)?m.missingWarn:e.missingWarn;E(m.fallbackWarn)?m.fallbackWarn:e.fallbackWarn;const p=!!m.part,d=ie(e,m),v=o(e,a,d);if(!g(c)||""===c)return new Intl.NumberFormat(d,_).format(f);let b,k={},L=null;for(let u=0;u{Ze.includes(e)?s[e]=n[e]:l[e]=n[e]})),g(r)?l.locale=r:h(r)&&(s=r),h(a)&&(s=a),[l.key||"",c,l,s]}function tt(e,t,n){const r=e;for(const a in n){const e=`${t}__${a}`;r.__numberFormatters.has(e)&&r.__numberFormatters.delete(e)}}const nt="9.5.0",rt=We.__EXTEND_POINT__,at=N(rt),lt={UNEXPECTED_RETURN_TYPE:rt,INVALID_ARGUMENT:at(),MUST_BE_CALL_SETUP_TOP:at(),NOT_INSTALLED:at(),NOT_AVAILABLE_IN_LEGACY_MODE:at(),REQUIRED_VALUE:at(),INVALID_VALUE:at(),CANNOT_SETUP_VUE_DEVTOOLS_PLUGIN:at(),NOT_INSTALLED_WITH_PROVIDE:at(),UNEXPECTED_ERROR:at(),NOT_COMPATIBLE_LEGACY_VUE_I18N:at(),BRIDGE_SUPPORT_VUE_2_ONLY:at(),MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION:at(),NOT_AVAILABLE_COMPOSITION_IN_LEGACY:at(),__EXTEND_POINT__:at()};const ot=r("__translateVNode"),st=r("__datetimeParts"),ct=r("__numberParts"),ut=r("__setPluralRules"),it=r("__injectWithOption"),ft=r("__dispose");function mt(e){if(!v(e))return e;for(const t in e)if(_(e,t))if(t.includes(".")){const n=t.split("."),r=n.length-1;let a=e,l=!1;for(let e=0;e{if("locale"in e&&"resource"in e){const{locale:t,resource:n}=e;t?(o[t]=o[t]||{},dt(n,o[t])):dt(n,o)}else g(e)&&dt(JSON.parse(e),o)})),null==a&&l)for(const s in o)_(o,s)&&mt(o[s]);return o}const pt=e=>!v(e)||p(e);function dt(e,t){if(pt(e)||pt(t))throw Error(lt.INVALID_VALUE);for(const n in e)_(e,n)&&(pt(e[n])||pt(t[n])?t[n]=e[n]:dt(e[n],t[n]))}function gt(e){return e.type}function Et(e,t,n){let r=v(t.messages)?t.messages:{};"__i18nGlobal"in n&&(r=_t(e.locale.value,{messages:r,__i18n:n.__i18nGlobal}));const a=Object.keys(r);if(a.length&&a.forEach((t=>{e.mergeLocaleMessage(t,r[t])})),v(t.datetimeFormats)){const n=Object.keys(t.datetimeFormats);n.length&&n.forEach((n=>{e.mergeDateTimeFormat(n,t.datetimeFormats[n])}))}if(v(t.numberFormats)){const n=Object.keys(t.numberFormats);n.length&&n.forEach((n=>{e.mergeNumberFormat(n,t.numberFormats[n])}))}}function vt(e){return t.createVNode(t.Text,null,e,0)}let bt=0;function kt(e){return(n,r,a,l)=>e(r,a,t.getCurrentInstance()||void 0,l)}function ht(e={},r){const{__root:a,__injectWithOption:l}=e,s=void 0===a;let u=!E(e.inheritLocale)||e.inheritLocale;const f=t.ref(a&&u?a.locale.value:g(e.locale)?e.locale:ke),m=t.ref(a&&u?a.fallbackLocale.value:g(e.fallbackLocale)||p(e.fallbackLocale)||h(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:f.value),_=t.ref(_t(f.value,e)),b=t.ref(h(e.datetimeFormats)?e.datetimeFormats:{[f.value]:{}}),k=t.ref(h(e.numberFormats)?e.numberFormats:{[f.value]:{}});let L=a?a.missingWarn:!E(e.missingWarn)&&!c(e.missingWarn)||e.missingWarn,N=a?a.fallbackWarn:!E(e.fallbackWarn)&&!c(e.fallbackWarn)||e.fallbackWarn,T=a?a.fallbackRoot:!E(e.fallbackRoot)||e.fallbackRoot,y=!!e.fallbackFormat,I=d(e.missing)?e.missing:null,C=d(e.missing)?kt(e.missing):null,O=d(e.postTranslation)?e.postTranslation:null,A=a?a.warnHtmlMessage:!E(e.warnHtmlMessage)||e.warnHtmlMessage,P=!!e.escapeParameter;const F=a?a.modifiers:h(e.modifiers)?e.modifiers:{};let R,D=e.pluralRules||a&&a.pluralRules;R=(()=>{s&&Ce(null);const t={version:nt,locale:f.value,fallbackLocale:m.value,messages:_.value,modifiers:F,pluralRules:D,missing:null===C?void 0:C,missingWarn:L,fallbackWarn:N,fallbackFormat:y,unresolving:!0,postTranslation:null===O?void 0:O,warnHtmlMessage:A,escapeParameter:P,messageResolver:e.messageResolver,messageCompiler:e.messageCompiler,__meta:{framework:"vue"}};t.datetimeFormats=b.value,t.numberFormats=k.value,t.__datetimeFormatters=h(R)?R.__datetimeFormatters:void 0,t.__numberFormatters=h(R)?R.__numberFormatters:void 0;const n=Pe(t);return s&&Ce(n),n})(),Re(R,f.value,m.value);const S=t.computed({get:()=>f.value,set:e=>{f.value=e,R.locale=f.value}}),M=t.computed({get:()=>m.value,set:e=>{m.value=e,R.fallbackLocale=m.value,Re(R,f.value,e)}}),w=t.computed((()=>_.value)),x=t.computed((()=>b.value)),W=t.computed((()=>k.value));const U=(e,t,n,r,l,c)=>{let u;f.value,m.value,_.value,b.value,k.value;try{0,s||(R.fallbackContext=a?Oe():void 0),u=e(R)}finally{s||(R.fallbackContext=void 0)}if(o(u)&&u===be){const[e,n]=t();return a&&T?r(a):l(e)}if(c(u))return u;throw Error(lt.UNEXPECTED_RETURN_TYPE)};function $(...e){return U((t=>Reflect.apply(Xe,null,[t,...e])),(()=>Be(...e)),"translate",(t=>Reflect.apply(t.t,t,[...e])),(e=>e),(e=>g(e)))}const H={normalize:function(e){return e.map((e=>g(e)||o(e)||E(e)?vt(String(e)):e))},interpolate:e=>e,type:"vnode"};function V(e){return _.value[e]||{}}bt++,a&&n&&(t.watch(a.locale,(e=>{u&&(f.value=e,R.locale=e,Re(R,f.value,m.value))})),t.watch(a.fallbackLocale,(e=>{u&&(m.value=e,R.fallbackLocale=e,Re(R,f.value,m.value))})));const j={id:bt,locale:S,fallbackLocale:M,get inheritLocale(){return u},set inheritLocale(e){u=e,e&&a&&(f.value=a.locale.value,m.value=a.fallbackLocale.value,Re(R,f.value,m.value))},get availableLocales(){return Object.keys(_.value).sort()},messages:w,get modifiers(){return F},get pluralRules(){return D||{}},get isGlobal(){return s},get missingWarn(){return L},set missingWarn(e){L=e,R.missingWarn=L},get fallbackWarn(){return N},set fallbackWarn(e){N=e,R.fallbackWarn=N},get fallbackRoot(){return T},set fallbackRoot(e){T=e},get fallbackFormat(){return y},set fallbackFormat(e){y=e,R.fallbackFormat=y},get warnHtmlMessage(){return A},set warnHtmlMessage(e){A=e,R.warnHtmlMessage=e},get escapeParameter(){return P},set escapeParameter(e){P=e,R.escapeParameter=e},t:$,getLocaleMessage:V,setLocaleMessage:function(e,t){_.value[e]=t,R.messages=_.value},mergeLocaleMessage:function(e,t){_.value[e]=_.value[e]||{},dt(t,_.value[e]),R.messages=_.value},getPostTranslationHandler:function(){return d(O)?O:null},setPostTranslationHandler:function(e){O=e,R.postTranslation=e},getMissingHandler:function(){return I},setMissingHandler:function(e){null!==e&&(C=kt(e)),I=e,R.missing=C},[ut]:function(e){D=e,R.pluralRules=D}};return j.datetimeFormats=x,j.numberFormats=W,j.rt=function(...e){const[t,n,r]=e;if(r&&!v(r))throw Error(lt.INVALID_ARGUMENT);return $(t,n,i({resolvedMessage:!0},r||{}))},j.te=function(e,t){if(!e)return!1;const n=V(g(t)?t:f.value);return null!==R.messageResolver(n,e)},j.tm=function(e){const t=function(e){let t=null;const n=pe(R,m.value,f.value);for(let r=0;rReflect.apply(Ke,null,[t,...e])),(()=>Je(...e)),"datetime format",(t=>Reflect.apply(t.d,t,[...e])),(()=>he),(e=>g(e)))},j.n=function(...e){return U((t=>Reflect.apply(qe,null,[t,...e])),(()=>et(...e)),"number format",(t=>Reflect.apply(t.n,t,[...e])),(()=>he),(e=>g(e)))},j.getDateTimeFormat=function(e){return b.value[e]||{}},j.setDateTimeFormat=function(e,t){b.value[e]=t,R.datetimeFormats=b.value,Qe(R,e,t)},j.mergeDateTimeFormat=function(e,t){b.value[e]=i(b.value[e]||{},t),R.datetimeFormats=b.value,Qe(R,e,t)},j.getNumberFormat=function(e){return k.value[e]||{}},j.setNumberFormat=function(e,t){k.value[e]=t,R.numberFormats=k.value,tt(R,e,t)},j.mergeNumberFormat=function(e,t){k.value[e]=i(k.value[e]||{},t),R.numberFormats=k.value,tt(R,e,t)},j[it]=l,j[ot]=function(...e){return U((t=>{let n;const r=t;try{r.processor=H,n=Reflect.apply(Xe,null,[r,...e])}finally{r.processor=null}return n}),(()=>Be(...e)),"translate",(t=>t[ot](...e)),(e=>[vt(e)]),(e=>p(e)))},j[st]=function(...e){return U((t=>Reflect.apply(Ke,null,[t,...e])),(()=>Je(...e)),"datetime format",(t=>t[st](...e)),(()=>[]),(e=>g(e)||p(e)))},j[ct]=function(...e){return U((t=>Reflect.apply(qe,null,[t,...e])),(()=>et(...e)),"number format",(t=>t[ct](...e)),(()=>[]),(e=>g(e)||p(e)))},j}function Lt(e={},t){{const t=ht(function(e){const t=g(e.locale)?e.locale:ke,n=g(e.fallbackLocale)||p(e.fallbackLocale)||h(e.fallbackLocale)||!1===e.fallbackLocale?e.fallbackLocale:t,r=d(e.missing)?e.missing:void 0,a=!E(e.silentTranslationWarn)&&!c(e.silentTranslationWarn)||!e.silentTranslationWarn,l=!E(e.silentFallbackWarn)&&!c(e.silentFallbackWarn)||!e.silentFallbackWarn,o=!E(e.fallbackRoot)||e.fallbackRoot,s=!!e.formatFallbackMessages,u=h(e.modifiers)?e.modifiers:{},f=e.pluralizationRules,m=d(e.postTranslation)?e.postTranslation:void 0,_=!g(e.warnHtmlInMessage)||"off"!==e.warnHtmlInMessage,v=!!e.escapeParameterHtml,b=!E(e.sync)||e.sync;let k=e.messages;if(h(e.sharedMessages)){const t=e.sharedMessages;k=Object.keys(t).reduce(((e,n)=>{const r=e[n]||(e[n]={});return i(r,t[n]),e}),k||{})}const{__i18n:L,__root:N,__injectWithOption:T}=e,y=e.datetimeFormats,I=e.numberFormats;return{locale:t,fallbackLocale:n,messages:k,flatJson:e.flatJson,datetimeFormats:y,numberFormats:I,missing:r,missingWarn:a,fallbackWarn:l,fallbackRoot:o,fallbackFormat:s,modifiers:u,pluralRules:f,postTranslation:m,warnHtmlMessage:_,escapeParameter:v,messageResolver:e.messageResolver,inheritLocale:b,__i18n:L,__root:N,__injectWithOption:T}}(e)),{__extender:n}=e,r={id:t.id,get locale(){return t.locale.value},set locale(e){t.locale.value=e},get fallbackLocale(){return t.fallbackLocale.value},set fallbackLocale(e){t.fallbackLocale.value=e},get messages(){return t.messages.value},get datetimeFormats(){return t.datetimeFormats.value},get numberFormats(){return t.numberFormats.value},get availableLocales(){return t.availableLocales},get formatter(){return{interpolate:()=>[]}},set formatter(e){},get missing(){return t.getMissingHandler()},set missing(e){t.setMissingHandler(e)},get silentTranslationWarn(){return E(t.missingWarn)?!t.missingWarn:t.missingWarn},set silentTranslationWarn(e){t.missingWarn=E(e)?!e:e},get silentFallbackWarn(){return E(t.fallbackWarn)?!t.fallbackWarn:t.fallbackWarn},set silentFallbackWarn(e){t.fallbackWarn=E(e)?!e:e},get modifiers(){return t.modifiers},get formatFallbackMessages(){return t.fallbackFormat},set formatFallbackMessages(e){t.fallbackFormat=e},get postTranslation(){return t.getPostTranslationHandler()},set postTranslation(e){t.setPostTranslationHandler(e)},get sync(){return t.inheritLocale},set sync(e){t.inheritLocale=e},get warnHtmlInMessage(){return t.warnHtmlMessage?"warn":"off"},set warnHtmlInMessage(e){t.warnHtmlMessage="off"!==e},get escapeParameterHtml(){return t.escapeParameter},set escapeParameterHtml(e){t.escapeParameter=e},get preserveDirectiveContent(){return!0},set preserveDirectiveContent(e){},get pluralizationRules(){return t.pluralRules||{}},__composer:t,t(...e){const[n,r,a]=e,l={};let o=null,s=null;if(!g(n))throw Error(lt.INVALID_ARGUMENT);const c=n;return g(r)?l.locale=r:p(r)?o=r:h(r)&&(s=r),p(a)?o=a:h(a)&&(s=a),Reflect.apply(t.t,t,[c,o||s||{},l])},rt:(...e)=>Reflect.apply(t.rt,t,[...e]),tc(...e){const[n,r,a]=e,l={plural:1};let s=null,c=null;if(!g(n))throw Error(lt.INVALID_ARGUMENT);const u=n;return g(r)?l.locale=r:o(r)?l.plural=r:p(r)?s=r:h(r)&&(c=r),g(a)?l.locale=a:p(a)?s=a:h(a)&&(c=a),Reflect.apply(t.t,t,[u,s||c||{},l])},te:(e,n)=>t.te(e,n),tm:e=>t.tm(e),getLocaleMessage:e=>t.getLocaleMessage(e),setLocaleMessage(e,n){t.setLocaleMessage(e,n)},mergeLocaleMessage(e,n){t.mergeLocaleMessage(e,n)},d:(...e)=>Reflect.apply(t.d,t,[...e]),getDateTimeFormat:e=>t.getDateTimeFormat(e),setDateTimeFormat(e,n){t.setDateTimeFormat(e,n)},mergeDateTimeFormat(e,n){t.mergeDateTimeFormat(e,n)},n:(...e)=>Reflect.apply(t.n,t,[...e]),getNumberFormat:e=>t.getNumberFormat(e),setNumberFormat(e,n){t.setNumberFormat(e,n)},mergeNumberFormat(e,n){t.mergeNumberFormat(e,n)},getChoiceIndex:(e,t)=>-1};return r.__extender=n,r}}const Nt={tag:{type:[String,Object]},locale:{type:String},scope:{type:String,validator:e=>"parent"===e||"global"===e,default:"parent"},i18n:{type:Object}};function Tt(e){return t.Fragment}const yt=t.defineComponent({name:"i18n-t",props:i({keypath:{type:String,required:!0},plural:{type:[Number,String],validator:e=>o(e)||!isNaN(e)}},Nt),setup(e,n){const{slots:r,attrs:a}=n,l=e.i18n||xt({useScope:e.scope,__useComponent:!0});return()=>{const o=Object.keys(r).filter((e=>"_"!==e)),s={};e.locale&&(s.locale=e.locale),void 0!==e.plural&&(s.plural=g(e.plural)?+e.plural:e.plural);const c=function({slots:e},n){if(1===n.length&&"default"===n[0])return(e.default?e.default():[]).reduce(((e,n)=>[...e,...n.type===t.Fragment?n.children:[n]]),[]);return n.reduce(((t,n)=>{const r=e[n];return r&&(t[n]=r()),t}),{})}(n,o),u=l[ot](e.keypath,c,s),f=i({},a),m=g(e.tag)||v(e.tag)?e.tag:Tt();return t.h(m,f,u)}}}),It=yt;function Ct(e,n,r,a){const{slots:l,attrs:o}=n;return()=>{const n={part:!0};let s={};e.locale&&(n.locale=e.locale),g(e.format)?n.key=e.format:v(e.format)&&(g(e.format.key)&&(n.key=e.format.key),s=Object.keys(e.format).reduce(((t,n)=>r.includes(n)?i({},t,{[n]:e.format[n]}):t),{}));const c=a(e.value,n,s);let u=[n.key];p(c)?u=c.map(((e,t)=>{const n=l[e.type],r=n?n({[e.type]:e.value,index:t,parts:c}):[e.value];var a;return p(a=r)&&!g(a[0])&&(r[0].key=`${e.type}-${t}`),r})):g(c)&&(u=[c]);const f=i({},o),m=g(e.tag)||v(e.tag)?e.tag:Tt();return t.h(m,f,u)}}const Ot=t.defineComponent({name:"i18n-n",props:i({value:{type:Number,required:!0},format:{type:[String,Object]}},Nt),setup(e,t){const n=e.i18n||xt({useScope:"parent",__useComponent:!0});return Ct(e,t,Ze,((...e)=>n[ct](...e)))}}),At=Ot,Pt=t.defineComponent({name:"i18n-d",props:i({value:{type:[Number,Date],required:!0},format:{type:[String,Object]}},Nt),setup(e,t){const n=e.i18n||xt({useScope:"parent",__useComponent:!0});return Ct(e,t,ze,((...e)=>n[st](...e)))}}),Ft=Pt;function Rt(e){const r=t=>{const{instance:n,modifiers:r,value:a}=t;if(!n||!n.$)throw Error(lt.UNEXPECTED_ERROR);const l=function(e,t){const n=e;if("composition"===e.mode)return n.__getInstance(t)||e.global;{const r=n.__getInstance(t);return null!=r?r.__composer:e.global.__composer}}(e,n.$),o=Dt(a);return[Reflect.apply(l.t,l,[...St(o)]),l]};return{created:(a,l)=>{const[o,s]=r(l);n&&e.global===s&&(a.__i18nWatcher=t.watch(s.locale,(()=>{l.instance&&l.instance.$forceUpdate()}))),a.__composer=s,a.textContent=o},unmounted:e=>{n&&e.__i18nWatcher&&(e.__i18nWatcher(),e.__i18nWatcher=void 0,delete e.__i18nWatcher),e.__composer&&(e.__composer=void 0,delete e.__composer)},beforeUpdate:(e,{value:t})=>{if(e.__composer){const n=e.__composer,r=Dt(t);e.textContent=Reflect.apply(n.t,n,[...St(r)])}},getSSRProps:e=>{const[t]=r(e);return{textContent:t}}}}function Dt(e){if(g(e))return{path:e};if(h(e)){if(!("path"in e))throw Error(lt.REQUIRED_VALUE,"path");return e}throw Error(lt.INVALID_VALUE)}function St(e){const{path:t,locale:n,args:r,choice:a,plural:l}=e,s={},c=r||{};return g(n)&&(s.locale=n),o(a)&&(s.plural=a),o(l)&&(s.plural=l),[t,c,s]}function Mt(e,t){e.locale=t.locale||e.locale,e.fallbackLocale=t.fallbackLocale||e.fallbackLocale,e.missing=t.missing||e.missing,e.silentTranslationWarn=t.silentTranslationWarn||e.silentFallbackWarn,e.silentFallbackWarn=t.silentFallbackWarn||e.silentFallbackWarn,e.formatFallbackMessages=t.formatFallbackMessages||e.formatFallbackMessages,e.postTranslation=t.postTranslation||e.postTranslation,e.warnHtmlInMessage=t.warnHtmlInMessage||e.warnHtmlInMessage,e.escapeParameterHtml=t.escapeParameterHtml||e.escapeParameterHtml,e.sync=t.sync||e.sync,e.__composer[ut](t.pluralizationRules||e.pluralizationRules);const n=_t(e.locale,{messages:t.messages,__i18n:t.__i18n});return Object.keys(n).forEach((t=>e.mergeLocaleMessage(t,n[t]))),t.datetimeFormats&&Object.keys(t.datetimeFormats).forEach((n=>e.mergeDateTimeFormat(n,t.datetimeFormats[n]))),t.numberFormats&&Object.keys(t.numberFormats).forEach((n=>e.mergeNumberFormat(n,t.numberFormats[n]))),e}const wt=r("global-vue-i18n");function xt(e={}){const n=t.getCurrentInstance();if(null==n)throw Error(lt.MUST_BE_CALL_SETUP_TOP);if(!n.isCE&&null!=n.appContext.app&&!n.appContext.app.__VUE_I18N_SYMBOL__)throw Error(lt.NOT_INSTALLED);const r=function(e){{const n=t.inject(e.isCE?wt:e.appContext.app.__VUE_I18N_SYMBOL__);if(!n)throw function(e,...t){return C(e,null,void 0)}(e.isCE?lt.NOT_INSTALLED_WITH_PROVIDE:lt.UNEXPECTED_ERROR);return n}}(n),a=function(e){return"composition"===e.mode?e.global:e.global.__composer}(r),l=gt(n),o=function(e,t){return u(e)?"__i18n"in t?"local":"global":e.useScope?e.useScope:"local"}(e,l);if("legacy"===r.mode&&!e.__useComponent){if(!r.allowComposition)throw Error(lt.NOT_AVAILABLE_IN_LEGACY_MODE);return function(e,n,r,a={}){const l="local"===n,o=t.shallowRef(null);if(l&&e.proxy&&!e.proxy.$options.i18n&&!e.proxy.$options.__i18n)throw Error(lt.MUST_DEFINE_I18N_OPTION_IN_ALLOW_COMPOSITION);const s=E(a.inheritLocale)?a.inheritLocale:!g(a.locale),u=t.ref(!l||s?r.locale.value:g(a.locale)?a.locale:ke),i=t.ref(!l||s?r.fallbackLocale.value:g(a.fallbackLocale)||p(a.fallbackLocale)||h(a.fallbackLocale)||!1===a.fallbackLocale?a.fallbackLocale:u.value),f=t.ref(_t(u.value,a)),m=t.ref(h(a.datetimeFormats)?a.datetimeFormats:{[u.value]:{}}),_=t.ref(h(a.numberFormats)?a.numberFormats:{[u.value]:{}}),v=l?r.missingWarn:!E(a.missingWarn)&&!c(a.missingWarn)||a.missingWarn,b=l?r.fallbackWarn:!E(a.fallbackWarn)&&!c(a.fallbackWarn)||a.fallbackWarn,k=l?r.fallbackRoot:!E(a.fallbackRoot)||a.fallbackRoot,L=!!a.fallbackFormat,N=d(a.missing)?a.missing:null,T=d(a.postTranslation)?a.postTranslation:null,y=l?r.warnHtmlMessage:!E(a.warnHtmlMessage)||a.warnHtmlMessage,I=!!a.escapeParameter,C=l?r.modifiers:h(a.modifiers)?a.modifiers:{},O=a.pluralRules||l&&r.pluralRules;function A(){return[u.value,i.value,f.value,m.value,_.value]}const P=t.computed({get:()=>o.value?o.value.locale.value:u.value,set:e=>{o.value&&(o.value.locale.value=e),u.value=e}}),F=t.computed({get:()=>o.value?o.value.fallbackLocale.value:i.value,set:e=>{o.value&&(o.value.fallbackLocale.value=e),i.value=e}}),R=t.computed((()=>o.value?o.value.messages.value:f.value)),D=t.computed((()=>m.value)),S=t.computed((()=>_.value));function M(){return o.value?o.value.getPostTranslationHandler():T}function w(e){o.value&&o.value.setPostTranslationHandler(e)}function x(){return o.value?o.value.getMissingHandler():N}function W(e){o.value&&o.value.setMissingHandler(e)}function U(e){return A(),e()}function $(...e){return o.value?U((()=>Reflect.apply(o.value.t,null,[...e]))):U((()=>""))}function H(...e){return o.value?Reflect.apply(o.value.rt,null,[...e]):""}function V(...e){return o.value?U((()=>Reflect.apply(o.value.d,null,[...e]))):U((()=>""))}function j(...e){return o.value?U((()=>Reflect.apply(o.value.n,null,[...e]))):U((()=>""))}function X(e){return o.value?o.value.tm(e):{}}function G(e,t){return!!o.value&&o.value.te(e,t)}function Y(e){return o.value?o.value.getLocaleMessage(e):{}}function B(e,t){o.value&&(o.value.setLocaleMessage(e,t),f.value[e]=t)}function K(e,t){o.value&&o.value.mergeLocaleMessage(e,t)}function z(e){return o.value?o.value.getDateTimeFormat(e):{}}function J(e,t){o.value&&(o.value.setDateTimeFormat(e,t),m.value[e]=t)}function Q(e,t){o.value&&o.value.mergeDateTimeFormat(e,t)}function q(e){return o.value?o.value.getNumberFormat(e):{}}function Z(e,t){o.value&&(o.value.setNumberFormat(e,t),_.value[e]=t)}function ee(e,t){o.value&&o.value.mergeNumberFormat(e,t)}const te={get id(){return o.value?o.value.id:-1},locale:P,fallbackLocale:F,messages:R,datetimeFormats:D,numberFormats:S,get inheritLocale(){return o.value?o.value.inheritLocale:s},set inheritLocale(e){o.value&&(o.value.inheritLocale=e)},get availableLocales(){return o.value?o.value.availableLocales:Object.keys(f.value)},get modifiers(){return o.value?o.value.modifiers:C},get pluralRules(){return o.value?o.value.pluralRules:O},get isGlobal(){return!!o.value&&o.value.isGlobal},get missingWarn(){return o.value?o.value.missingWarn:v},set missingWarn(e){o.value&&(o.value.missingWarn=e)},get fallbackWarn(){return o.value?o.value.fallbackWarn:b},set fallbackWarn(e){o.value&&(o.value.missingWarn=e)},get fallbackRoot(){return o.value?o.value.fallbackRoot:k},set fallbackRoot(e){o.value&&(o.value.fallbackRoot=e)},get fallbackFormat(){return o.value?o.value.fallbackFormat:L},set fallbackFormat(e){o.value&&(o.value.fallbackFormat=e)},get warnHtmlMessage(){return o.value?o.value.warnHtmlMessage:y},set warnHtmlMessage(e){o.value&&(o.value.warnHtmlMessage=e)},get escapeParameter(){return o.value?o.value.escapeParameter:I},set escapeParameter(e){o.value&&(o.value.escapeParameter=e)},t:$,getPostTranslationHandler:M,setPostTranslationHandler:w,getMissingHandler:x,setMissingHandler:W,rt:H,d:V,n:j,tm:X,te:G,getLocaleMessage:Y,setLocaleMessage:B,mergeLocaleMessage:K,getDateTimeFormat:z,setDateTimeFormat:J,mergeDateTimeFormat:Q,getNumberFormat:q,setNumberFormat:Z,mergeNumberFormat:ee};function ne(e){e.locale.value=u.value,e.fallbackLocale.value=i.value,Object.keys(f.value).forEach((t=>{e.mergeLocaleMessage(t,f.value[t])})),Object.keys(m.value).forEach((t=>{e.mergeDateTimeFormat(t,m.value[t])})),Object.keys(_.value).forEach((t=>{e.mergeNumberFormat(t,_.value[t])})),e.escapeParameter=I,e.fallbackFormat=L,e.fallbackRoot=k,e.fallbackWarn=b,e.missingWarn=v,e.warnHtmlMessage=y}return t.onBeforeMount((()=>{if(null==e.proxy||null==e.proxy.$i18n)throw Error(lt.NOT_AVAILABLE_COMPOSITION_IN_LEGACY);const t=o.value=e.proxy.$i18n.__composer;"global"===n?(u.value=t.locale.value,i.value=t.fallbackLocale.value,f.value=t.messages.value,m.value=t.datetimeFormats.value,_.value=t.numberFormats.value):l&&ne(t)})),te}(n,o,a,e)}if("global"===o)return Et(a,e,l),a;if("parent"===o){let t=function(e,t,n=!1){let r=null;const a=t.root;let l=function(e,t=!1){if(null==e)return null;return t&&e.vnode.ctx||e.parent}(t,n);for(;null!=l;){const t=e;if("composition"===e.mode)r=t.__getInstance(l);else{const e=t.__getInstance(l);null!=e&&(r=e.__composer,n&&r&&!r[it]&&(r=null))}if(null!=r)break;if(a===l)break;l=l.parent}return r}(r,n,e.__useComponent);return null==t&&(t=a),t}const s=r;let f=s.__getInstance(n);if(null==f){const r=i({},e);"__i18n"in l&&(r.__i18n=l.__i18n),a&&(r.__root=a),f=ht(r),s.__composerExtend&&(f[ft]=s.__composerExtend(f)),function(e,n,r){t.onMounted((()=>{}),n),t.onUnmounted((()=>{const t=r;e.__deleteInstance(n);const a=t[ft];a&&(a(),delete t[ft])}),n)}(s,n,f),s.__setInstance(n,f)}return f}const Wt=["locale","fallbackLocale","availableLocales"],Ut=["t","rt","d","n","tm","te"];return Ne=function(e,t){if(g(e)){!E(t.warnHtmlMessage)||t.warnHtmlMessage;const n=(t.onCacheKey||Ue)(e),r=$e[n];if(r)return r;const{ast:a,detectError:l}=function(e,t={}){let n=!1;const r=t.onError||O;return t.onError=e=>{n=!0,r(e)},{...J(e,t),detectError:n}}(e,{...t,location:!1,jit:!0}),o=De(a);return l?o:$e[n]=o}{const t=e.cacheKey;return t?$e[t]||($e[t]=De(e)):De(e)}},Te=function(e,t){if(!v(e))return null;let n=te.get(t);if(n||(n=function(e){const t=[];let n,r,a,l,o,s,c,u=-1,i=0,f=0;const m=[];function _(){const t=e[u+1];if(5===i&&"'"===t||6===i&&'"'===t)return u++,a="\\"+t,m[0](),!0}for(m[0]=()=>{void 0===r?r=a:r+=a},m[1]=()=>{void 0!==r&&(t.push(r),r=void 0)},m[2]=()=>{m[0](),f++},m[3]=()=>{if(f>0)f--,i=4,m[0]();else{if(f=0,void 0===r)return!1;if(r=ee(r),!1===r)return!1;m[1]()}};null!==i;)if(u++,n=e[u],"\\"!==n||!_()){if(l=Z(n),c=Q[i],o=c[l]||c.l||8,8===o)return;if(i=o[0],void 0!==o[1]&&(s=m[o[1]],s&&(a=n,!1===s())))return;if(7===i)return t}}(t),n&&te.set(t,n)),!n)return null;const r=n.length;let a=e,l=0;for(;l{if(!("__VUE_I18N_BRIDGE__"in e))throw Error(lt.NOT_COMPATIBLE_LEGACY_VUE_I18N);return e},e.createI18n=function(e={},n){const a=!E(e.legacy)||e.legacy,l=!E(e.globalInjection)||e.globalInjection,o=!a||!!e.allowComposition,s=new Map,[c,u]=function(e,n,r){const a=t.effectScope();{const t=n?a.run((()=>Lt(e))):a.run((()=>ht(e)));if(null==t)throw Error(lt.UNEXPECTED_ERROR);return[a,t]}}(e,a),i=r("");{const e={get mode(){return a?"legacy":"composition"},get allowComposition(){return o},async install(n,...r){if(n.__VUE_I18N_SYMBOL__=i,n.provide(n.__VUE_I18N_SYMBOL__,e),h(r[0])){const t=r[0];e.__composerExtend=t.__composerExtend,e.__vueI18nExtend=t.__vueI18nExtend}let o=null;!a&&l&&(o=function(e,n){const r=Object.create(null);Wt.forEach((e=>{const a=Object.getOwnPropertyDescriptor(n,e);if(!a)throw Error(lt.UNEXPECTED_ERROR);const l=t.isRef(a.value)?{get:()=>a.value.value,set(e){a.value.value=e}}:{get:()=>a.get&&a.get()};Object.defineProperty(r,e,l)})),e.config.globalProperties.$i18n=r,Ut.forEach((t=>{const r=Object.getOwnPropertyDescriptor(n,t);if(!r||!r.value)throw Error(lt.UNEXPECTED_ERROR);Object.defineProperty(e.config.globalProperties,`$${t}`,r)}));const a=()=>{delete e.config.globalProperties.$i18n,Ut.forEach((t=>{delete e.config.globalProperties[`$${t}`]}))};return a}(n,e.global)),function(e,t,...n){const r=h(n[0])?n[0]:{},a=!!r.useI18nComponentName;(!E(r.globalInstall)||r.globalInstall)&&([a?"i18n":yt.name,"I18nT"].forEach((t=>e.component(t,yt))),[Ot.name,"I18nN"].forEach((t=>e.component(t,Ot))),[Pt.name,"I18nD"].forEach((t=>e.component(t,Pt)))),e.directive("t",Rt(t))}(n,e,...r),a&&n.mixin(function(e,n,r){return{beforeCreate(){const a=t.getCurrentInstance();if(!a)throw Error(lt.UNEXPECTED_ERROR);const l=this.$options;if(l.i18n){const t=l.i18n;if(l.__i18n&&(t.__i18n=l.__i18n),t.__root=n,this===this.$root)this.$i18n=Mt(e,t);else{t.__injectWithOption=!0,t.__extender=r.__vueI18nExtend,this.$i18n=Lt(t);const e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}}else if(l.__i18n)if(this===this.$root)this.$i18n=Mt(e,l);else{this.$i18n=Lt({__i18n:l.__i18n,__injectWithOption:!0,__extender:r.__vueI18nExtend,__root:n});const e=this.$i18n;e.__extender&&(e.__disposer=e.__extender(this.$i18n))}else this.$i18n=e;l.__i18nGlobal&&Et(n,l,l),this.$t=(...e)=>this.$i18n.t(...e),this.$rt=(...e)=>this.$i18n.rt(...e),this.$tc=(...e)=>this.$i18n.tc(...e),this.$te=(e,t)=>this.$i18n.te(e,t),this.$d=(...e)=>this.$i18n.d(...e),this.$n=(...e)=>this.$i18n.n(...e),this.$tm=e=>this.$i18n.tm(e),r.__setInstance(a,this.$i18n)},mounted(){},unmounted(){const e=t.getCurrentInstance();if(!e)throw Error(lt.UNEXPECTED_ERROR);const n=this.$i18n;delete this.$t,delete this.$rt,delete this.$tc,delete this.$te,delete this.$d,delete this.$n,delete this.$tm,n.__disposer&&(n.__disposer(),delete n.__disposer,delete n.__extender),r.__deleteInstance(e),delete this.$i18n}}}(u,u.__composer,e));const s=n.unmount;n.unmount=()=>{o&&o(),e.dispose(),s()}},get global(){return u},dispose(){c.stop()},__instances:s,__getInstance:function(e){return s.get(e)||null},__setInstance:function(e,t){s.set(e,t)},__deleteInstance:function(e){s.delete(e)}};return e}},e.useI18n=xt,e.vTDirective=Rt,e}({},Vue); diff --git a/src/cdh/vue3/static/cdh.vue3/vue/vue.global.js b/src/cdh/vue3/static/cdh.vue3/vue/vue.global.js new file mode 100644 index 00000000..1db98bb1 --- /dev/null +++ b/src/cdh/vue3/static/cdh.vue3/vue/vue.global.js @@ -0,0 +1,15361 @@ +var Vue = (function (exports) { + 'use strict'; + + function makeMap(str, expectsLowerCase) { + const map = /* @__PURE__ */ Object.create(null); + const list = str.split(","); + for (let i = 0; i < list.length; i++) { + map[list[i]] = true; + } + return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val]; + } + + const EMPTY_OBJ = Object.freeze({}) ; + const EMPTY_ARR = Object.freeze([]) ; + const NOOP = () => { + }; + const NO = () => false; + const onRE = /^on[^a-z]/; + const isOn = (key) => onRE.test(key); + const isModelListener = (key) => key.startsWith("onUpdate:"); + const extend = Object.assign; + const remove = (arr, el) => { + const i = arr.indexOf(el); + if (i > -1) { + arr.splice(i, 1); + } + }; + const hasOwnProperty$1 = Object.prototype.hasOwnProperty; + const hasOwn = (val, key) => hasOwnProperty$1.call(val, key); + const isArray = Array.isArray; + const isMap = (val) => toTypeString(val) === "[object Map]"; + const isSet = (val) => toTypeString(val) === "[object Set]"; + const isDate = (val) => toTypeString(val) === "[object Date]"; + const isRegExp = (val) => toTypeString(val) === "[object RegExp]"; + const isFunction = (val) => typeof val === "function"; + const isString = (val) => typeof val === "string"; + const isSymbol = (val) => typeof val === "symbol"; + const isObject = (val) => val !== null && typeof val === "object"; + const isPromise = (val) => { + return isObject(val) && isFunction(val.then) && isFunction(val.catch); + }; + const objectToString = Object.prototype.toString; + const toTypeString = (value) => objectToString.call(value); + const toRawType = (value) => { + return toTypeString(value).slice(8, -1); + }; + const isPlainObject = (val) => toTypeString(val) === "[object Object]"; + const isIntegerKey = (key) => isString(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key; + const isReservedProp = /* @__PURE__ */ makeMap( + // the leading comma is intentional so empty string "" is also included + ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted" + ); + const isBuiltInDirective = /* @__PURE__ */ makeMap( + "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo" + ); + const cacheStringFunction = (fn) => { + const cache = /* @__PURE__ */ Object.create(null); + return (str) => { + const hit = cache[str]; + return hit || (cache[str] = fn(str)); + }; + }; + const camelizeRE = /-(\w)/g; + const camelize = cacheStringFunction((str) => { + return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : ""); + }); + const hyphenateRE = /\B([A-Z])/g; + const hyphenate = cacheStringFunction( + (str) => str.replace(hyphenateRE, "-$1").toLowerCase() + ); + const capitalize = cacheStringFunction( + (str) => str.charAt(0).toUpperCase() + str.slice(1) + ); + const toHandlerKey = cacheStringFunction( + (str) => str ? `on${capitalize(str)}` : `` + ); + const hasChanged = (value, oldValue) => !Object.is(value, oldValue); + const invokeArrayFns = (fns, arg) => { + for (let i = 0; i < fns.length; i++) { + fns[i](arg); + } + }; + const def = (obj, key, value) => { + Object.defineProperty(obj, key, { + configurable: true, + enumerable: false, + value + }); + }; + const looseToNumber = (val) => { + const n = parseFloat(val); + return isNaN(n) ? val : n; + }; + const toNumber = (val) => { + const n = isString(val) ? Number(val) : NaN; + return isNaN(n) ? val : n; + }; + let _globalThis; + const getGlobalThis = () => { + return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {}); + }; + + const PatchFlagNames = { + [1]: `TEXT`, + [2]: `CLASS`, + [4]: `STYLE`, + [8]: `PROPS`, + [16]: `FULL_PROPS`, + [32]: `HYDRATE_EVENTS`, + [64]: `STABLE_FRAGMENT`, + [128]: `KEYED_FRAGMENT`, + [256]: `UNKEYED_FRAGMENT`, + [512]: `NEED_PATCH`, + [1024]: `DYNAMIC_SLOTS`, + [2048]: `DEV_ROOT_FRAGMENT`, + [-1]: `HOISTED`, + [-2]: `BAIL` + }; + + const slotFlagsText = { + [1]: "STABLE", + [2]: "DYNAMIC", + [3]: "FORWARDED" + }; + + const GLOBALS_WHITE_LISTED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console"; + const isGloballyWhitelisted = /* @__PURE__ */ makeMap(GLOBALS_WHITE_LISTED); + + const range = 2; + function generateCodeFrame(source, start = 0, end = source.length) { + let lines = source.split(/(\r?\n)/); + const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); + lines = lines.filter((_, idx) => idx % 2 === 0); + let count = 0; + const res = []; + for (let i = 0; i < lines.length; i++) { + count += lines[i].length + (newlineSequences[i] && newlineSequences[i].length || 0); + if (count >= start) { + for (let j = i - range; j <= i + range || end > count; j++) { + if (j < 0 || j >= lines.length) + continue; + const line = j + 1; + res.push( + `${line}${" ".repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}` + ); + const lineLength = lines[j].length; + const newLineSeqLength = newlineSequences[j] && newlineSequences[j].length || 0; + if (j === i) { + const pad = start - (count - (lineLength + newLineSeqLength)); + const length = Math.max( + 1, + end > count ? lineLength - pad : end - start + ); + res.push(` | ` + " ".repeat(pad) + "^".repeat(length)); + } else if (j > i) { + if (end > count) { + const length = Math.max(Math.min(end - count, lineLength), 1); + res.push(` | ` + "^".repeat(length)); + } + count += lineLength + newLineSeqLength; + } + } + break; + } + } + return res.join("\n"); + } + + function normalizeStyle(value) { + if (isArray(value)) { + const res = {}; + for (let i = 0; i < value.length; i++) { + const item = value[i]; + const normalized = isString(item) ? parseStringStyle(item) : normalizeStyle(item); + if (normalized) { + for (const key in normalized) { + res[key] = normalized[key]; + } + } + } + return res; + } else if (isString(value)) { + return value; + } else if (isObject(value)) { + return value; + } + } + const listDelimiterRE = /;(?![^(]*\))/g; + const propertyDelimiterRE = /:([^]+)/; + const styleCommentRE = /\/\*[^]*?\*\//g; + function parseStringStyle(cssText) { + const ret = {}; + cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => { + if (item) { + const tmp = item.split(propertyDelimiterRE); + tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); + } + }); + return ret; + } + function normalizeClass(value) { + let res = ""; + if (isString(value)) { + res = value; + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + const normalized = normalizeClass(value[i]); + if (normalized) { + res += normalized + " "; + } + } + } else if (isObject(value)) { + for (const name in value) { + if (value[name]) { + res += name + " "; + } + } + } + return res.trim(); + } + function normalizeProps(props) { + if (!props) + return null; + let { class: klass, style } = props; + if (klass && !isString(klass)) { + props.class = normalizeClass(klass); + } + if (style) { + props.style = normalizeStyle(style); + } + return props; + } + + const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot"; + const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view"; + const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr"; + const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS); + const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS); + const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS); + + const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; + const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs); + function includeBooleanAttr(value) { + return !!value || value === ""; + } + + function looseCompareArrays(a, b) { + if (a.length !== b.length) + return false; + let equal = true; + for (let i = 0; equal && i < a.length; i++) { + equal = looseEqual(a[i], b[i]); + } + return equal; + } + function looseEqual(a, b) { + if (a === b) + return true; + let aValidType = isDate(a); + let bValidType = isDate(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? a.getTime() === b.getTime() : false; + } + aValidType = isSymbol(a); + bValidType = isSymbol(b); + if (aValidType || bValidType) { + return a === b; + } + aValidType = isArray(a); + bValidType = isArray(b); + if (aValidType || bValidType) { + return aValidType && bValidType ? looseCompareArrays(a, b) : false; + } + aValidType = isObject(a); + bValidType = isObject(b); + if (aValidType || bValidType) { + if (!aValidType || !bValidType) { + return false; + } + const aKeysCount = Object.keys(a).length; + const bKeysCount = Object.keys(b).length; + if (aKeysCount !== bKeysCount) { + return false; + } + for (const key in a) { + const aHasKey = a.hasOwnProperty(key); + const bHasKey = b.hasOwnProperty(key); + if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) { + return false; + } + } + } + return String(a) === String(b); + } + function looseIndexOf(arr, val) { + return arr.findIndex((item) => looseEqual(item, val)); + } + + const toDisplayString = (val) => { + return isString(val) ? val : val == null ? "" : isArray(val) || isObject(val) && (val.toString === objectToString || !isFunction(val.toString)) ? JSON.stringify(val, replacer, 2) : String(val); + }; + const replacer = (_key, val) => { + if (val && val.__v_isRef) { + return replacer(_key, val.value); + } else if (isMap(val)) { + return { + [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val2]) => { + entries[`${key} =>`] = val2; + return entries; + }, {}) + }; + } else if (isSet(val)) { + return { + [`Set(${val.size})`]: [...val.values()] + }; + } else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { + return String(val); + } + return val; + }; + + function warn$1(msg, ...args) { + console.warn(`[Vue warn] ${msg}`, ...args); + } + + let activeEffectScope; + class EffectScope { + constructor(detached = false) { + this.detached = detached; + /** + * @internal + */ + this._active = true; + /** + * @internal + */ + this.effects = []; + /** + * @internal + */ + this.cleanups = []; + this.parent = activeEffectScope; + if (!detached && activeEffectScope) { + this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push( + this + ) - 1; + } + } + get active() { + return this._active; + } + run(fn) { + if (this._active) { + const currentEffectScope = activeEffectScope; + try { + activeEffectScope = this; + return fn(); + } finally { + activeEffectScope = currentEffectScope; + } + } else { + warn$1(`cannot run an inactive effect scope.`); + } + } + /** + * This should only be called on non-detached scopes + * @internal + */ + on() { + activeEffectScope = this; + } + /** + * This should only be called on non-detached scopes + * @internal + */ + off() { + activeEffectScope = this.parent; + } + stop(fromParent) { + if (this._active) { + let i, l; + for (i = 0, l = this.effects.length; i < l; i++) { + this.effects[i].stop(); + } + for (i = 0, l = this.cleanups.length; i < l; i++) { + this.cleanups[i](); + } + if (this.scopes) { + for (i = 0, l = this.scopes.length; i < l; i++) { + this.scopes[i].stop(true); + } + } + if (!this.detached && this.parent && !fromParent) { + const last = this.parent.scopes.pop(); + if (last && last !== this) { + this.parent.scopes[this.index] = last; + last.index = this.index; + } + } + this.parent = void 0; + this._active = false; + } + } + } + function effectScope(detached) { + return new EffectScope(detached); + } + function recordEffectScope(effect, scope = activeEffectScope) { + if (scope && scope.active) { + scope.effects.push(effect); + } + } + function getCurrentScope() { + return activeEffectScope; + } + function onScopeDispose(fn) { + if (activeEffectScope) { + activeEffectScope.cleanups.push(fn); + } else { + warn$1( + `onScopeDispose() is called when there is no active effect scope to be associated with.` + ); + } + } + + const createDep = (effects) => { + const dep = new Set(effects); + dep.w = 0; + dep.n = 0; + return dep; + }; + const wasTracked = (dep) => (dep.w & trackOpBit) > 0; + const newTracked = (dep) => (dep.n & trackOpBit) > 0; + const initDepMarkers = ({ deps }) => { + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].w |= trackOpBit; + } + } + }; + const finalizeDepMarkers = (effect) => { + const { deps } = effect; + if (deps.length) { + let ptr = 0; + for (let i = 0; i < deps.length; i++) { + const dep = deps[i]; + if (wasTracked(dep) && !newTracked(dep)) { + dep.delete(effect); + } else { + deps[ptr++] = dep; + } + dep.w &= ~trackOpBit; + dep.n &= ~trackOpBit; + } + deps.length = ptr; + } + }; + + const targetMap = /* @__PURE__ */ new WeakMap(); + let effectTrackDepth = 0; + let trackOpBit = 1; + const maxMarkerBits = 30; + let activeEffect; + const ITERATE_KEY = Symbol("iterate" ); + const MAP_KEY_ITERATE_KEY = Symbol("Map key iterate" ); + class ReactiveEffect { + constructor(fn, scheduler = null, scope) { + this.fn = fn; + this.scheduler = scheduler; + this.active = true; + this.deps = []; + this.parent = void 0; + recordEffectScope(this, scope); + } + run() { + if (!this.active) { + return this.fn(); + } + let parent = activeEffect; + let lastShouldTrack = shouldTrack; + while (parent) { + if (parent === this) { + return; + } + parent = parent.parent; + } + try { + this.parent = activeEffect; + activeEffect = this; + shouldTrack = true; + trackOpBit = 1 << ++effectTrackDepth; + if (effectTrackDepth <= maxMarkerBits) { + initDepMarkers(this); + } else { + cleanupEffect(this); + } + return this.fn(); + } finally { + if (effectTrackDepth <= maxMarkerBits) { + finalizeDepMarkers(this); + } + trackOpBit = 1 << --effectTrackDepth; + activeEffect = this.parent; + shouldTrack = lastShouldTrack; + this.parent = void 0; + if (this.deferStop) { + this.stop(); + } + } + } + stop() { + if (activeEffect === this) { + this.deferStop = true; + } else if (this.active) { + cleanupEffect(this); + if (this.onStop) { + this.onStop(); + } + this.active = false; + } + } + } + function cleanupEffect(effect2) { + const { deps } = effect2; + if (deps.length) { + for (let i = 0; i < deps.length; i++) { + deps[i].delete(effect2); + } + deps.length = 0; + } + } + function effect(fn, options) { + if (fn.effect) { + fn = fn.effect.fn; + } + const _effect = new ReactiveEffect(fn); + if (options) { + extend(_effect, options); + if (options.scope) + recordEffectScope(_effect, options.scope); + } + if (!options || !options.lazy) { + _effect.run(); + } + const runner = _effect.run.bind(_effect); + runner.effect = _effect; + return runner; + } + function stop(runner) { + runner.effect.stop(); + } + let shouldTrack = true; + const trackStack = []; + function pauseTracking() { + trackStack.push(shouldTrack); + shouldTrack = false; + } + function resetTracking() { + const last = trackStack.pop(); + shouldTrack = last === void 0 ? true : last; + } + function track(target, type, key) { + if (shouldTrack && activeEffect) { + let depsMap = targetMap.get(target); + if (!depsMap) { + targetMap.set(target, depsMap = /* @__PURE__ */ new Map()); + } + let dep = depsMap.get(key); + if (!dep) { + depsMap.set(key, dep = createDep()); + } + const eventInfo = { effect: activeEffect, target, type, key } ; + trackEffects(dep, eventInfo); + } + } + function trackEffects(dep, debuggerEventExtraInfo) { + let shouldTrack2 = false; + if (effectTrackDepth <= maxMarkerBits) { + if (!newTracked(dep)) { + dep.n |= trackOpBit; + shouldTrack2 = !wasTracked(dep); + } + } else { + shouldTrack2 = !dep.has(activeEffect); + } + if (shouldTrack2) { + dep.add(activeEffect); + activeEffect.deps.push(dep); + if (activeEffect.onTrack) { + activeEffect.onTrack( + extend( + { + effect: activeEffect + }, + debuggerEventExtraInfo + ) + ); + } + } + } + function trigger(target, type, key, newValue, oldValue, oldTarget) { + const depsMap = targetMap.get(target); + if (!depsMap) { + return; + } + let deps = []; + if (type === "clear") { + deps = [...depsMap.values()]; + } else if (key === "length" && isArray(target)) { + const newLength = Number(newValue); + depsMap.forEach((dep, key2) => { + if (key2 === "length" || key2 >= newLength) { + deps.push(dep); + } + }); + } else { + if (key !== void 0) { + deps.push(depsMap.get(key)); + } + switch (type) { + case "add": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } else if (isIntegerKey(key)) { + deps.push(depsMap.get("length")); + } + break; + case "delete": + if (!isArray(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + if (isMap(target)) { + deps.push(depsMap.get(MAP_KEY_ITERATE_KEY)); + } + } + break; + case "set": + if (isMap(target)) { + deps.push(depsMap.get(ITERATE_KEY)); + } + break; + } + } + const eventInfo = { target, type, key, newValue, oldValue, oldTarget } ; + if (deps.length === 1) { + if (deps[0]) { + { + triggerEffects(deps[0], eventInfo); + } + } + } else { + const effects = []; + for (const dep of deps) { + if (dep) { + effects.push(...dep); + } + } + { + triggerEffects(createDep(effects), eventInfo); + } + } + } + function triggerEffects(dep, debuggerEventExtraInfo) { + const effects = isArray(dep) ? dep : [...dep]; + for (const effect2 of effects) { + if (effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } + for (const effect2 of effects) { + if (!effect2.computed) { + triggerEffect(effect2, debuggerEventExtraInfo); + } + } + } + function triggerEffect(effect2, debuggerEventExtraInfo) { + if (effect2 !== activeEffect || effect2.allowRecurse) { + if (effect2.onTrigger) { + effect2.onTrigger(extend({ effect: effect2 }, debuggerEventExtraInfo)); + } + if (effect2.scheduler) { + effect2.scheduler(); + } else { + effect2.run(); + } + } + } + function getDepFromReactive(object, key) { + var _a; + return (_a = targetMap.get(object)) == null ? void 0 : _a.get(key); + } + + const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`); + const builtInSymbols = new Set( + /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol) + ); + const get$1 = /* @__PURE__ */ createGetter(); + const shallowGet = /* @__PURE__ */ createGetter(false, true); + const readonlyGet = /* @__PURE__ */ createGetter(true); + const shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true); + const arrayInstrumentations = /* @__PURE__ */ createArrayInstrumentations(); + function createArrayInstrumentations() { + const instrumentations = {}; + ["includes", "indexOf", "lastIndexOf"].forEach((key) => { + instrumentations[key] = function(...args) { + const arr = toRaw(this); + for (let i = 0, l = this.length; i < l; i++) { + track(arr, "get", i + ""); + } + const res = arr[key](...args); + if (res === -1 || res === false) { + return arr[key](...args.map(toRaw)); + } else { + return res; + } + }; + }); + ["push", "pop", "shift", "unshift", "splice"].forEach((key) => { + instrumentations[key] = function(...args) { + pauseTracking(); + const res = toRaw(this)[key].apply(this, args); + resetTracking(); + return res; + }; + }); + return instrumentations; + } + function hasOwnProperty(key) { + const obj = toRaw(this); + track(obj, "has", key); + return obj.hasOwnProperty(key); + } + function createGetter(isReadonly2 = false, shallow = false) { + return function get2(target, key, receiver) { + if (key === "__v_isReactive") { + return !isReadonly2; + } else if (key === "__v_isReadonly") { + return isReadonly2; + } else if (key === "__v_isShallow") { + return shallow; + } else if (key === "__v_raw" && receiver === (isReadonly2 ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) { + return target; + } + const targetIsArray = isArray(target); + if (!isReadonly2) { + if (targetIsArray && hasOwn(arrayInstrumentations, key)) { + return Reflect.get(arrayInstrumentations, key, receiver); + } + if (key === "hasOwnProperty") { + return hasOwnProperty; + } + } + const res = Reflect.get(target, key, receiver); + if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { + return res; + } + if (!isReadonly2) { + track(target, "get", key); + } + if (shallow) { + return res; + } + if (isRef(res)) { + return targetIsArray && isIntegerKey(key) ? res : res.value; + } + if (isObject(res)) { + return isReadonly2 ? readonly(res) : reactive(res); + } + return res; + }; + } + const set$1 = /* @__PURE__ */ createSetter(); + const shallowSet = /* @__PURE__ */ createSetter(true); + function createSetter(shallow = false) { + return function set2(target, key, value, receiver) { + let oldValue = target[key]; + if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) { + return false; + } + if (!shallow) { + if (!isShallow(value) && !isReadonly(value)) { + oldValue = toRaw(oldValue); + value = toRaw(value); + } + if (!isArray(target) && isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } + } + const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key); + const result = Reflect.set(target, key, value, receiver); + if (target === toRaw(receiver)) { + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + } + return result; + }; + } + function deleteProperty(target, key) { + const hadKey = hasOwn(target, key); + const oldValue = target[key]; + const result = Reflect.deleteProperty(target, key); + if (result && hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + function has$1(target, key) { + const result = Reflect.has(target, key); + if (!isSymbol(key) || !builtInSymbols.has(key)) { + track(target, "has", key); + } + return result; + } + function ownKeys(target) { + track(target, "iterate", isArray(target) ? "length" : ITERATE_KEY); + return Reflect.ownKeys(target); + } + const mutableHandlers = { + get: get$1, + set: set$1, + deleteProperty, + has: has$1, + ownKeys + }; + const readonlyHandlers = { + get: readonlyGet, + set(target, key) { + { + warn$1( + `Set operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + }, + deleteProperty(target, key) { + { + warn$1( + `Delete operation on key "${String(key)}" failed: target is readonly.`, + target + ); + } + return true; + } + }; + const shallowReactiveHandlers = /* @__PURE__ */ extend( + {}, + mutableHandlers, + { + get: shallowGet, + set: shallowSet + } + ); + const shallowReadonlyHandlers = /* @__PURE__ */ extend( + {}, + readonlyHandlers, + { + get: shallowReadonlyGet + } + ); + + const toShallow = (value) => value; + const getProto = (v) => Reflect.getPrototypeOf(v); + function get(target, key, isReadonly = false, isShallow = false) { + target = target["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (key !== rawKey) { + track(rawTarget, "get", key); + } + track(rawTarget, "get", rawKey); + } + const { has: has2 } = getProto(rawTarget); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + if (has2.call(rawTarget, key)) { + return wrap(target.get(key)); + } else if (has2.call(rawTarget, rawKey)) { + return wrap(target.get(rawKey)); + } else if (target !== rawTarget) { + target.get(key); + } + } + function has(key, isReadonly = false) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const rawKey = toRaw(key); + if (!isReadonly) { + if (key !== rawKey) { + track(rawTarget, "has", key); + } + track(rawTarget, "has", rawKey); + } + return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey); + } + function size(target, isReadonly = false) { + target = target["__v_raw"]; + !isReadonly && track(toRaw(target), "iterate", ITERATE_KEY); + return Reflect.get(target, "size", target); + } + function add(value) { + value = toRaw(value); + const target = toRaw(this); + const proto = getProto(target); + const hadKey = proto.has.call(target, value); + if (!hadKey) { + target.add(value); + trigger(target, "add", value, value); + } + return this; + } + function set(key, value) { + value = toRaw(value); + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2.call(target, key); + target.set(key, value); + if (!hadKey) { + trigger(target, "add", key, value); + } else if (hasChanged(value, oldValue)) { + trigger(target, "set", key, value, oldValue); + } + return this; + } + function deleteEntry(key) { + const target = toRaw(this); + const { has: has2, get: get2 } = getProto(target); + let hadKey = has2.call(target, key); + if (!hadKey) { + key = toRaw(key); + hadKey = has2.call(target, key); + } else { + checkIdentityKeys(target, has2, key); + } + const oldValue = get2 ? get2.call(target, key) : void 0; + const result = target.delete(key); + if (hadKey) { + trigger(target, "delete", key, void 0, oldValue); + } + return result; + } + function clear() { + const target = toRaw(this); + const hadItems = target.size !== 0; + const oldTarget = isMap(target) ? new Map(target) : new Set(target) ; + const result = target.clear(); + if (hadItems) { + trigger(target, "clear", void 0, void 0, oldTarget); + } + return result; + } + function createForEach(isReadonly, isShallow) { + return function forEach(callback, thisArg) { + const observed = this; + const target = observed["__v_raw"]; + const rawTarget = toRaw(target); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track(rawTarget, "iterate", ITERATE_KEY); + return target.forEach((value, key) => { + return callback.call(thisArg, wrap(value), wrap(key), observed); + }); + }; + } + function createIterableMethod(method, isReadonly, isShallow) { + return function(...args) { + const target = this["__v_raw"]; + const rawTarget = toRaw(target); + const targetIsMap = isMap(rawTarget); + const isPair = method === "entries" || method === Symbol.iterator && targetIsMap; + const isKeyOnly = method === "keys" && targetIsMap; + const innerIterator = target[method](...args); + const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; + !isReadonly && track( + rawTarget, + "iterate", + isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY + ); + return { + // iterator protocol + next() { + const { value, done } = innerIterator.next(); + return done ? { value, done } : { + value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), + done + }; + }, + // iterable protocol + [Symbol.iterator]() { + return this; + } + }; + }; + } + function createReadonlyMethod(type) { + return function(...args) { + { + const key = args[0] ? `on key "${args[0]}" ` : ``; + console.warn( + `${capitalize(type)} operation ${key}failed: target is readonly.`, + toRaw(this) + ); + } + return type === "delete" ? false : this; + }; + } + function createInstrumentations() { + const mutableInstrumentations2 = { + get(key) { + return get(this, key); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, false) + }; + const shallowInstrumentations2 = { + get(key) { + return get(this, key, false, true); + }, + get size() { + return size(this); + }, + has, + add, + set, + delete: deleteEntry, + clear, + forEach: createForEach(false, true) + }; + const readonlyInstrumentations2 = { + get(key) { + return get(this, key, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, false) + }; + const shallowReadonlyInstrumentations2 = { + get(key) { + return get(this, key, true, true); + }, + get size() { + return size(this, true); + }, + has(key) { + return has.call(this, key, true); + }, + add: createReadonlyMethod("add"), + set: createReadonlyMethod("set"), + delete: createReadonlyMethod("delete"), + clear: createReadonlyMethod("clear"), + forEach: createForEach(true, true) + }; + const iteratorMethods = ["keys", "values", "entries", Symbol.iterator]; + iteratorMethods.forEach((method) => { + mutableInstrumentations2[method] = createIterableMethod( + method, + false, + false + ); + readonlyInstrumentations2[method] = createIterableMethod( + method, + true, + false + ); + shallowInstrumentations2[method] = createIterableMethod( + method, + false, + true + ); + shallowReadonlyInstrumentations2[method] = createIterableMethod( + method, + true, + true + ); + }); + return [ + mutableInstrumentations2, + readonlyInstrumentations2, + shallowInstrumentations2, + shallowReadonlyInstrumentations2 + ]; + } + const [ + mutableInstrumentations, + readonlyInstrumentations, + shallowInstrumentations, + shallowReadonlyInstrumentations + ] = /* @__PURE__ */ createInstrumentations(); + function createInstrumentationGetter(isReadonly, shallow) { + const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations; + return (target, key, receiver) => { + if (key === "__v_isReactive") { + return !isReadonly; + } else if (key === "__v_isReadonly") { + return isReadonly; + } else if (key === "__v_raw") { + return target; + } + return Reflect.get( + hasOwn(instrumentations, key) && key in target ? instrumentations : target, + key, + receiver + ); + }; + } + const mutableCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, false) + }; + const shallowCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(false, true) + }; + const readonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, false) + }; + const shallowReadonlyCollectionHandlers = { + get: /* @__PURE__ */ createInstrumentationGetter(true, true) + }; + function checkIdentityKeys(target, has2, key) { + const rawKey = toRaw(key); + if (rawKey !== key && has2.call(target, rawKey)) { + const type = toRawType(target); + console.warn( + `Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.` + ); + } + } + + const reactiveMap = /* @__PURE__ */ new WeakMap(); + const shallowReactiveMap = /* @__PURE__ */ new WeakMap(); + const readonlyMap = /* @__PURE__ */ new WeakMap(); + const shallowReadonlyMap = /* @__PURE__ */ new WeakMap(); + function targetTypeMap(rawType) { + switch (rawType) { + case "Object": + case "Array": + return 1 /* COMMON */; + case "Map": + case "Set": + case "WeakMap": + case "WeakSet": + return 2 /* COLLECTION */; + default: + return 0 /* INVALID */; + } + } + function getTargetType(value) { + return value["__v_skip"] || !Object.isExtensible(value) ? 0 /* INVALID */ : targetTypeMap(toRawType(value)); + } + function reactive(target) { + if (isReadonly(target)) { + return target; + } + return createReactiveObject( + target, + false, + mutableHandlers, + mutableCollectionHandlers, + reactiveMap + ); + } + function shallowReactive(target) { + return createReactiveObject( + target, + false, + shallowReactiveHandlers, + shallowCollectionHandlers, + shallowReactiveMap + ); + } + function readonly(target) { + return createReactiveObject( + target, + true, + readonlyHandlers, + readonlyCollectionHandlers, + readonlyMap + ); + } + function shallowReadonly(target) { + return createReactiveObject( + target, + true, + shallowReadonlyHandlers, + shallowReadonlyCollectionHandlers, + shallowReadonlyMap + ); + } + function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) { + if (!isObject(target)) { + { + console.warn(`value cannot be made reactive: ${String(target)}`); + } + return target; + } + if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) { + return target; + } + const existingProxy = proxyMap.get(target); + if (existingProxy) { + return existingProxy; + } + const targetType = getTargetType(target); + if (targetType === 0 /* INVALID */) { + return target; + } + const proxy = new Proxy( + target, + targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers + ); + proxyMap.set(target, proxy); + return proxy; + } + function isReactive(value) { + if (isReadonly(value)) { + return isReactive(value["__v_raw"]); + } + return !!(value && value["__v_isReactive"]); + } + function isReadonly(value) { + return !!(value && value["__v_isReadonly"]); + } + function isShallow(value) { + return !!(value && value["__v_isShallow"]); + } + function isProxy(value) { + return isReactive(value) || isReadonly(value); + } + function toRaw(observed) { + const raw = observed && observed["__v_raw"]; + return raw ? toRaw(raw) : observed; + } + function markRaw(value) { + def(value, "__v_skip", true); + return value; + } + const toReactive = (value) => isObject(value) ? reactive(value) : value; + const toReadonly = (value) => isObject(value) ? readonly(value) : value; + + function trackRefValue(ref2) { + if (shouldTrack && activeEffect) { + ref2 = toRaw(ref2); + { + trackEffects(ref2.dep || (ref2.dep = createDep()), { + target: ref2, + type: "get", + key: "value" + }); + } + } + } + function triggerRefValue(ref2, newVal) { + ref2 = toRaw(ref2); + const dep = ref2.dep; + if (dep) { + { + triggerEffects(dep, { + target: ref2, + type: "set", + key: "value", + newValue: newVal + }); + } + } + } + function isRef(r) { + return !!(r && r.__v_isRef === true); + } + function ref(value) { + return createRef(value, false); + } + function shallowRef(value) { + return createRef(value, true); + } + function createRef(rawValue, shallow) { + if (isRef(rawValue)) { + return rawValue; + } + return new RefImpl(rawValue, shallow); + } + class RefImpl { + constructor(value, __v_isShallow) { + this.__v_isShallow = __v_isShallow; + this.dep = void 0; + this.__v_isRef = true; + this._rawValue = __v_isShallow ? value : toRaw(value); + this._value = __v_isShallow ? value : toReactive(value); + } + get value() { + trackRefValue(this); + return this._value; + } + set value(newVal) { + const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal); + newVal = useDirectValue ? newVal : toRaw(newVal); + if (hasChanged(newVal, this._rawValue)) { + this._rawValue = newVal; + this._value = useDirectValue ? newVal : toReactive(newVal); + triggerRefValue(this, newVal); + } + } + } + function triggerRef(ref2) { + triggerRefValue(ref2, ref2.value ); + } + function unref(ref2) { + return isRef(ref2) ? ref2.value : ref2; + } + function toValue(source) { + return isFunction(source) ? source() : unref(source); + } + const shallowUnwrapHandlers = { + get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), + set: (target, key, value, receiver) => { + const oldValue = target[key]; + if (isRef(oldValue) && !isRef(value)) { + oldValue.value = value; + return true; + } else { + return Reflect.set(target, key, value, receiver); + } + } + }; + function proxyRefs(objectWithRefs) { + return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers); + } + class CustomRefImpl { + constructor(factory) { + this.dep = void 0; + this.__v_isRef = true; + const { get, set } = factory( + () => trackRefValue(this), + () => triggerRefValue(this) + ); + this._get = get; + this._set = set; + } + get value() { + return this._get(); + } + set value(newVal) { + this._set(newVal); + } + } + function customRef(factory) { + return new CustomRefImpl(factory); + } + function toRefs(object) { + if (!isProxy(object)) { + console.warn(`toRefs() expects a reactive object but received a plain one.`); + } + const ret = isArray(object) ? new Array(object.length) : {}; + for (const key in object) { + ret[key] = propertyToRef(object, key); + } + return ret; + } + class ObjectRefImpl { + constructor(_object, _key, _defaultValue) { + this._object = _object; + this._key = _key; + this._defaultValue = _defaultValue; + this.__v_isRef = true; + } + get value() { + const val = this._object[this._key]; + return val === void 0 ? this._defaultValue : val; + } + set value(newVal) { + this._object[this._key] = newVal; + } + get dep() { + return getDepFromReactive(toRaw(this._object), this._key); + } + } + class GetterRefImpl { + constructor(_getter) { + this._getter = _getter; + this.__v_isRef = true; + this.__v_isReadonly = true; + } + get value() { + return this._getter(); + } + } + function toRef(source, key, defaultValue) { + if (isRef(source)) { + return source; + } else if (isFunction(source)) { + return new GetterRefImpl(source); + } else if (isObject(source) && arguments.length > 1) { + return propertyToRef(source, key, defaultValue); + } else { + return ref(source); + } + } + function propertyToRef(source, key, defaultValue) { + const val = source[key]; + return isRef(val) ? val : new ObjectRefImpl( + source, + key, + defaultValue + ); + } + + class ComputedRefImpl { + constructor(getter, _setter, isReadonly, isSSR) { + this._setter = _setter; + this.dep = void 0; + this.__v_isRef = true; + this["__v_isReadonly"] = false; + this._dirty = true; + this.effect = new ReactiveEffect(getter, () => { + if (!this._dirty) { + this._dirty = true; + triggerRefValue(this); + } + }); + this.effect.computed = this; + this.effect.active = this._cacheable = !isSSR; + this["__v_isReadonly"] = isReadonly; + } + get value() { + const self = toRaw(this); + trackRefValue(self); + if (self._dirty || !self._cacheable) { + self._dirty = false; + self._value = self.effect.run(); + } + return self._value; + } + set value(newValue) { + this._setter(newValue); + } + } + function computed$1(getterOrOptions, debugOptions, isSSR = false) { + let getter; + let setter; + const onlyGetter = isFunction(getterOrOptions); + if (onlyGetter) { + getter = getterOrOptions; + setter = () => { + console.warn("Write operation failed: computed value is readonly"); + } ; + } else { + getter = getterOrOptions.get; + setter = getterOrOptions.set; + } + const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR); + if (debugOptions && !isSSR) { + cRef.effect.onTrack = debugOptions.onTrack; + cRef.effect.onTrigger = debugOptions.onTrigger; + } + return cRef; + } + + const stack = []; + function pushWarningContext(vnode) { + stack.push(vnode); + } + function popWarningContext() { + stack.pop(); + } + function warn(msg, ...args) { + pauseTracking(); + const instance = stack.length ? stack[stack.length - 1].component : null; + const appWarnHandler = instance && instance.appContext.config.warnHandler; + const trace = getComponentTrace(); + if (appWarnHandler) { + callWithErrorHandling( + appWarnHandler, + instance, + 11, + [ + msg + args.join(""), + instance && instance.proxy, + trace.map( + ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>` + ).join("\n"), + trace + ] + ); + } else { + const warnArgs = [`[Vue warn]: ${msg}`, ...args]; + if (trace.length && // avoid spamming console during tests + true) { + warnArgs.push(` +`, ...formatTrace(trace)); + } + console.warn(...warnArgs); + } + resetTracking(); + } + function getComponentTrace() { + let currentVNode = stack[stack.length - 1]; + if (!currentVNode) { + return []; + } + const normalizedStack = []; + while (currentVNode) { + const last = normalizedStack[0]; + if (last && last.vnode === currentVNode) { + last.recurseCount++; + } else { + normalizedStack.push({ + vnode: currentVNode, + recurseCount: 0 + }); + } + const parentInstance = currentVNode.component && currentVNode.component.parent; + currentVNode = parentInstance && parentInstance.vnode; + } + return normalizedStack; + } + function formatTrace(trace) { + const logs = []; + trace.forEach((entry, i) => { + logs.push(...i === 0 ? [] : [` +`], ...formatTraceEntry(entry)); + }); + return logs; + } + function formatTraceEntry({ vnode, recurseCount }) { + const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``; + const isRoot = vnode.component ? vnode.component.parent == null : false; + const open = ` at <${formatComponentName( + vnode.component, + vnode.type, + isRoot + )}`; + const close = `>` + postfix; + return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close]; + } + function formatProps(props) { + const res = []; + const keys = Object.keys(props); + keys.slice(0, 3).forEach((key) => { + res.push(...formatProp(key, props[key])); + }); + if (keys.length > 3) { + res.push(` ...`); + } + return res; + } + function formatProp(key, value, raw) { + if (isString(value)) { + value = JSON.stringify(value); + return raw ? value : [`${key}=${value}`]; + } else if (typeof value === "number" || typeof value === "boolean" || value == null) { + return raw ? value : [`${key}=${value}`]; + } else if (isRef(value)) { + value = formatProp(key, toRaw(value.value), true); + return raw ? value : [`${key}=Ref<`, value, `>`]; + } else if (isFunction(value)) { + return [`${key}=fn${value.name ? `<${value.name}>` : ``}`]; + } else { + value = toRaw(value); + return raw ? value : [`${key}=`, value]; + } + } + function assertNumber(val, type) { + if (val === void 0) { + return; + } else if (typeof val !== "number") { + warn(`${type} is not a valid number - got ${JSON.stringify(val)}.`); + } else if (isNaN(val)) { + warn(`${type} is NaN - the duration expression might be incorrect.`); + } + } + + const ErrorTypeStrings = { + ["sp"]: "serverPrefetch hook", + ["bc"]: "beforeCreate hook", + ["c"]: "created hook", + ["bm"]: "beforeMount hook", + ["m"]: "mounted hook", + ["bu"]: "beforeUpdate hook", + ["u"]: "updated", + ["bum"]: "beforeUnmount hook", + ["um"]: "unmounted hook", + ["a"]: "activated hook", + ["da"]: "deactivated hook", + ["ec"]: "errorCaptured hook", + ["rtc"]: "renderTracked hook", + ["rtg"]: "renderTriggered hook", + [0]: "setup function", + [1]: "render function", + [2]: "watcher getter", + [3]: "watcher callback", + [4]: "watcher cleanup function", + [5]: "native event handler", + [6]: "component event handler", + [7]: "vnode hook", + [8]: "directive hook", + [9]: "transition hook", + [10]: "app errorHandler", + [11]: "app warnHandler", + [12]: "ref function", + [13]: "async component loader", + [14]: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" + }; + function callWithErrorHandling(fn, instance, type, args) { + let res; + try { + res = args ? fn(...args) : fn(); + } catch (err) { + handleError(err, instance, type); + } + return res; + } + function callWithAsyncErrorHandling(fn, instance, type, args) { + if (isFunction(fn)) { + const res = callWithErrorHandling(fn, instance, type, args); + if (res && isPromise(res)) { + res.catch((err) => { + handleError(err, instance, type); + }); + } + return res; + } + const values = []; + for (let i = 0; i < fn.length; i++) { + values.push(callWithAsyncErrorHandling(fn[i], instance, type, args)); + } + return values; + } + function handleError(err, instance, type, throwInDev = true) { + const contextVNode = instance ? instance.vnode : null; + if (instance) { + let cur = instance.parent; + const exposedInstance = instance.proxy; + const errorInfo = ErrorTypeStrings[type] ; + while (cur) { + const errorCapturedHooks = cur.ec; + if (errorCapturedHooks) { + for (let i = 0; i < errorCapturedHooks.length; i++) { + if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) { + return; + } + } + } + cur = cur.parent; + } + const appErrorHandler = instance.appContext.config.errorHandler; + if (appErrorHandler) { + callWithErrorHandling( + appErrorHandler, + null, + 10, + [err, exposedInstance, errorInfo] + ); + return; + } + } + logError(err, type, contextVNode, throwInDev); + } + function logError(err, type, contextVNode, throwInDev = true) { + { + const info = ErrorTypeStrings[type]; + if (contextVNode) { + pushWarningContext(contextVNode); + } + warn(`Unhandled error${info ? ` during execution of ${info}` : ``}`); + if (contextVNode) { + popWarningContext(); + } + if (throwInDev) { + throw err; + } else { + console.error(err); + } + } + } + + let isFlushing = false; + let isFlushPending = false; + const queue = []; + let flushIndex = 0; + const pendingPostFlushCbs = []; + let activePostFlushCbs = null; + let postFlushIndex = 0; + const resolvedPromise = /* @__PURE__ */ Promise.resolve(); + let currentFlushPromise = null; + const RECURSION_LIMIT = 100; + function nextTick(fn) { + const p = currentFlushPromise || resolvedPromise; + return fn ? p.then(this ? fn.bind(this) : fn) : p; + } + function findInsertionIndex(id) { + let start = flushIndex + 1; + let end = queue.length; + while (start < end) { + const middle = start + end >>> 1; + const middleJobId = getId(queue[middle]); + middleJobId < id ? start = middle + 1 : end = middle; + } + return start; + } + function queueJob(job) { + if (!queue.length || !queue.includes( + job, + isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex + )) { + if (job.id == null) { + queue.push(job); + } else { + queue.splice(findInsertionIndex(job.id), 0, job); + } + queueFlush(); + } + } + function queueFlush() { + if (!isFlushing && !isFlushPending) { + isFlushPending = true; + currentFlushPromise = resolvedPromise.then(flushJobs); + } + } + function invalidateJob(job) { + const i = queue.indexOf(job); + if (i > flushIndex) { + queue.splice(i, 1); + } + } + function queuePostFlushCb(cb) { + if (!isArray(cb)) { + if (!activePostFlushCbs || !activePostFlushCbs.includes( + cb, + cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex + )) { + pendingPostFlushCbs.push(cb); + } + } else { + pendingPostFlushCbs.push(...cb); + } + queueFlush(); + } + function flushPreFlushCbs(seen, i = isFlushing ? flushIndex + 1 : 0) { + { + seen = seen || /* @__PURE__ */ new Map(); + } + for (; i < queue.length; i++) { + const cb = queue[i]; + if (cb && cb.pre) { + if (checkRecursiveUpdates(seen, cb)) { + continue; + } + queue.splice(i, 1); + i--; + cb(); + } + } + } + function flushPostFlushCbs(seen) { + if (pendingPostFlushCbs.length) { + const deduped = [...new Set(pendingPostFlushCbs)]; + pendingPostFlushCbs.length = 0; + if (activePostFlushCbs) { + activePostFlushCbs.push(...deduped); + return; + } + activePostFlushCbs = deduped; + { + seen = seen || /* @__PURE__ */ new Map(); + } + activePostFlushCbs.sort((a, b) => getId(a) - getId(b)); + for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) { + if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) { + continue; + } + activePostFlushCbs[postFlushIndex](); + } + activePostFlushCbs = null; + postFlushIndex = 0; + } + } + const getId = (job) => job.id == null ? Infinity : job.id; + const comparator = (a, b) => { + const diff = getId(a) - getId(b); + if (diff === 0) { + if (a.pre && !b.pre) + return -1; + if (b.pre && !a.pre) + return 1; + } + return diff; + }; + function flushJobs(seen) { + isFlushPending = false; + isFlushing = true; + { + seen = seen || /* @__PURE__ */ new Map(); + } + queue.sort(comparator); + const check = (job) => checkRecursiveUpdates(seen, job) ; + try { + for (flushIndex = 0; flushIndex < queue.length; flushIndex++) { + const job = queue[flushIndex]; + if (job && job.active !== false) { + if (check(job)) { + continue; + } + callWithErrorHandling(job, null, 14); + } + } + } finally { + flushIndex = 0; + queue.length = 0; + flushPostFlushCbs(seen); + isFlushing = false; + currentFlushPromise = null; + if (queue.length || pendingPostFlushCbs.length) { + flushJobs(seen); + } + } + } + function checkRecursiveUpdates(seen, fn) { + if (!seen.has(fn)) { + seen.set(fn, 1); + } else { + const count = seen.get(fn); + if (count > RECURSION_LIMIT) { + const instance = fn.ownerInstance; + const componentName = instance && getComponentName(instance.type); + warn( + `Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.` + ); + return true; + } else { + seen.set(fn, count + 1); + } + } + } + + let isHmrUpdating = false; + const hmrDirtyComponents = /* @__PURE__ */ new Set(); + { + getGlobalThis().__VUE_HMR_RUNTIME__ = { + createRecord: tryWrap(createRecord), + rerender: tryWrap(rerender), + reload: tryWrap(reload) + }; + } + const map = /* @__PURE__ */ new Map(); + function registerHMR(instance) { + const id = instance.type.__hmrId; + let record = map.get(id); + if (!record) { + createRecord(id, instance.type); + record = map.get(id); + } + record.instances.add(instance); + } + function unregisterHMR(instance) { + map.get(instance.type.__hmrId).instances.delete(instance); + } + function createRecord(id, initialDef) { + if (map.has(id)) { + return false; + } + map.set(id, { + initialDef: normalizeClassComponent(initialDef), + instances: /* @__PURE__ */ new Set() + }); + return true; + } + function normalizeClassComponent(component) { + return isClassComponent(component) ? component.__vccOpts : component; + } + function rerender(id, newRender) { + const record = map.get(id); + if (!record) { + return; + } + record.initialDef.render = newRender; + [...record.instances].forEach((instance) => { + if (newRender) { + instance.render = newRender; + normalizeClassComponent(instance.type).render = newRender; + } + instance.renderCache = []; + isHmrUpdating = true; + instance.update(); + isHmrUpdating = false; + }); + } + function reload(id, newComp) { + const record = map.get(id); + if (!record) + return; + newComp = normalizeClassComponent(newComp); + updateComponentDef(record.initialDef, newComp); + const instances = [...record.instances]; + for (const instance of instances) { + const oldComp = normalizeClassComponent(instance.type); + if (!hmrDirtyComponents.has(oldComp)) { + if (oldComp !== record.initialDef) { + updateComponentDef(oldComp, newComp); + } + hmrDirtyComponents.add(oldComp); + } + instance.appContext.propsCache.delete(instance.type); + instance.appContext.emitsCache.delete(instance.type); + instance.appContext.optionsCache.delete(instance.type); + if (instance.ceReload) { + hmrDirtyComponents.add(oldComp); + instance.ceReload(newComp.styles); + hmrDirtyComponents.delete(oldComp); + } else if (instance.parent) { + queueJob(instance.parent.update); + } else if (instance.appContext.reload) { + instance.appContext.reload(); + } else if (typeof window !== "undefined") { + window.location.reload(); + } else { + console.warn( + "[HMR] Root or manually mounted instance modified. Full reload required." + ); + } + } + queuePostFlushCb(() => { + for (const instance of instances) { + hmrDirtyComponents.delete( + normalizeClassComponent(instance.type) + ); + } + }); + } + function updateComponentDef(oldComp, newComp) { + extend(oldComp, newComp); + for (const key in oldComp) { + if (key !== "__file" && !(key in newComp)) { + delete oldComp[key]; + } + } + } + function tryWrap(fn) { + return (id, arg) => { + try { + return fn(id, arg); + } catch (e) { + console.error(e); + console.warn( + `[HMR] Something went wrong during Vue component hot-reload. Full reload required.` + ); + } + }; + } + + exports.devtools = void 0; + let buffer = []; + let devtoolsNotInstalled = false; + function emit$1(event, ...args) { + if (exports.devtools) { + exports.devtools.emit(event, ...args); + } else if (!devtoolsNotInstalled) { + buffer.push({ event, args }); + } + } + function setDevtoolsHook(hook, target) { + var _a, _b; + exports.devtools = hook; + if (exports.devtools) { + exports.devtools.enabled = true; + buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args)); + buffer = []; + } else if ( + // handle late devtools injection - only do this if we are in an actual + // browser environment to avoid the timer handle stalling test runner exit + // (#4815) + typeof window !== "undefined" && // some envs mock window but not fully + window.HTMLElement && // also exclude jsdom + !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom")) + ) { + const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []; + replay.push((newHook) => { + setDevtoolsHook(newHook, target); + }); + setTimeout(() => { + if (!exports.devtools) { + target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null; + devtoolsNotInstalled = true; + buffer = []; + } + }, 3e3); + } else { + devtoolsNotInstalled = true; + buffer = []; + } + } + function devtoolsInitApp(app, version) { + emit$1("app:init" /* APP_INIT */, app, version, { + Fragment, + Text, + Comment, + Static + }); + } + function devtoolsUnmountApp(app) { + emit$1("app:unmount" /* APP_UNMOUNT */, app); + } + const devtoolsComponentAdded = /* @__PURE__ */ createDevtoolsComponentHook( + "component:added" /* COMPONENT_ADDED */ + ); + const devtoolsComponentUpdated = /* @__PURE__ */ createDevtoolsComponentHook("component:updated" /* COMPONENT_UPDATED */); + const _devtoolsComponentRemoved = /* @__PURE__ */ createDevtoolsComponentHook( + "component:removed" /* COMPONENT_REMOVED */ + ); + const devtoolsComponentRemoved = (component) => { + if (exports.devtools && typeof exports.devtools.cleanupBuffer === "function" && // remove the component if it wasn't buffered + !exports.devtools.cleanupBuffer(component)) { + _devtoolsComponentRemoved(component); + } + }; + function createDevtoolsComponentHook(hook) { + return (component) => { + emit$1( + hook, + component.appContext.app, + component.uid, + component.parent ? component.parent.uid : void 0, + component + ); + }; + } + const devtoolsPerfStart = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:start" /* PERFORMANCE_START */ + ); + const devtoolsPerfEnd = /* @__PURE__ */ createDevtoolsPerformanceHook( + "perf:end" /* PERFORMANCE_END */ + ); + function createDevtoolsPerformanceHook(hook) { + return (component, type, time) => { + emit$1(hook, component.appContext.app, component.uid, component, type, time); + }; + } + function devtoolsComponentEmit(component, event, params) { + emit$1( + "component:emit" /* COMPONENT_EMIT */, + component.appContext.app, + component, + event, + params + ); + } + + function emit(instance, event, ...rawArgs) { + if (instance.isUnmounted) + return; + const props = instance.vnode.props || EMPTY_OBJ; + { + const { + emitsOptions, + propsOptions: [propsOptions] + } = instance; + if (emitsOptions) { + if (!(event in emitsOptions) && true) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { + warn( + `Component emitted event "${event}" but it is neither declared in the emits option nor as an "${toHandlerKey(event)}" prop.` + ); + } + } else { + const validator = emitsOptions[event]; + if (isFunction(validator)) { + const isValid = validator(...rawArgs); + if (!isValid) { + warn( + `Invalid event arguments: event validation failed for event "${event}".` + ); + } + } + } + } + } + let args = rawArgs; + const isModelListener = event.startsWith("update:"); + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === "modelValue" ? "model" : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map((a) => isString(a) ? a.trim() : a); + } + if (number) { + args = rawArgs.map(looseToNumber); + } + } + { + devtoolsComponentEmit(instance, event, args); + } + { + const lowerCaseEvent = event.toLowerCase(); + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { + warn( + `Event "${lowerCaseEvent}" is emitted in component ${formatComponentName( + instance, + instance.type + )} but the handler is registered for "${event}". Note that HTML attributes are case-insensitive and you cannot use v-on to listen to camelCase events when using in-DOM templates. You should probably use "${hyphenate(event)}" instead of "${event}".` + ); + } + } + let handlerName; + let handler = props[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249) + props[handlerName = toHandlerKey(camelize(event))]; + if (!handler && isModelListener) { + handler = props[handlerName = toHandlerKey(hyphenate(event))]; + } + if (handler) { + callWithAsyncErrorHandling( + handler, + instance, + 6, + args + ); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { + if (!instance.emitted) { + instance.emitted = {}; + } else if (instance.emitted[handlerName]) { + return; + } + instance.emitted[handlerName] = true; + callWithAsyncErrorHandling( + onceHandler, + instance, + 6, + args + ); + } + } + function normalizeEmitsOptions(comp, appContext, asMixin = false) { + const cache = appContext.emitsCache; + const cached = cache.get(comp); + if (cached !== void 0) { + return cached; + } + const raw = comp.emits; + let normalized = {}; + let hasExtends = false; + if (!isFunction(comp)) { + const extendEmits = (raw2) => { + const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true); + if (normalizedFromExtend) { + hasExtends = true; + extend(normalized, normalizedFromExtend); + } + }; + if (!asMixin && appContext.mixins.length) { + appContext.mixins.forEach(extendEmits); + } + if (comp.extends) { + extendEmits(comp.extends); + } + if (comp.mixins) { + comp.mixins.forEach(extendEmits); + } + } + if (!raw && !hasExtends) { + if (isObject(comp)) { + cache.set(comp, null); + } + return null; + } + if (isArray(raw)) { + raw.forEach((key) => normalized[key] = null); + } else { + extend(normalized, raw); + } + if (isObject(comp)) { + cache.set(comp, normalized); + } + return normalized; + } + function isEmitListener(options, key) { + if (!options || !isOn(key)) { + return false; + } + key = key.slice(2).replace(/Once$/, ""); + return hasOwn(options, key[0].toLowerCase() + key.slice(1)) || hasOwn(options, hyphenate(key)) || hasOwn(options, key); + } + + let currentRenderingInstance = null; + let currentScopeId = null; + function setCurrentRenderingInstance(instance) { + const prev = currentRenderingInstance; + currentRenderingInstance = instance; + currentScopeId = instance && instance.type.__scopeId || null; + return prev; + } + function pushScopeId(id) { + currentScopeId = id; + } + function popScopeId() { + currentScopeId = null; + } + const withScopeId = (_id) => withCtx; + function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) { + if (!ctx) + return fn; + if (fn._n) { + return fn; + } + const renderFnWithContext = (...args) => { + if (renderFnWithContext._d) { + setBlockTracking(-1); + } + const prevInstance = setCurrentRenderingInstance(ctx); + let res; + try { + res = fn(...args); + } finally { + setCurrentRenderingInstance(prevInstance); + if (renderFnWithContext._d) { + setBlockTracking(1); + } + } + { + devtoolsComponentUpdated(ctx); + } + return res; + }; + renderFnWithContext._n = true; + renderFnWithContext._c = true; + renderFnWithContext._d = true; + return renderFnWithContext; + } + + let accessedAttrs = false; + function markAttrsAccessed() { + accessedAttrs = true; + } + function renderComponentRoot(instance) { + const { + type: Component, + vnode, + proxy, + withProxy, + props, + propsOptions: [propsOptions], + slots, + attrs, + emit, + render, + renderCache, + data, + setupState, + ctx, + inheritAttrs + } = instance; + let result; + let fallthroughAttrs; + const prev = setCurrentRenderingInstance(instance); + { + accessedAttrs = false; + } + try { + if (vnode.shapeFlag & 4) { + const proxyToUse = withProxy || proxy; + result = normalizeVNode( + render.call( + proxyToUse, + proxyToUse, + renderCache, + props, + setupState, + data, + ctx + ) + ); + fallthroughAttrs = attrs; + } else { + const render2 = Component; + if (attrs === props) { + markAttrsAccessed(); + } + result = normalizeVNode( + render2.length > 1 ? render2( + props, + true ? { + get attrs() { + markAttrsAccessed(); + return attrs; + }, + slots, + emit + } : { attrs, slots, emit } + ) : render2( + props, + null + /* we know it doesn't need it */ + ) + ); + fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs); + } + } catch (err) { + blockStack.length = 0; + handleError(err, instance, 1); + result = createVNode(Comment); + } + let root = result; + let setRoot = void 0; + if (result.patchFlag > 0 && result.patchFlag & 2048) { + [root, setRoot] = getChildRoot(result); + } + if (fallthroughAttrs && inheritAttrs !== false) { + const keys = Object.keys(fallthroughAttrs); + const { shapeFlag } = root; + if (keys.length) { + if (shapeFlag & (1 | 6)) { + if (propsOptions && keys.some(isModelListener)) { + fallthroughAttrs = filterModelListeners( + fallthroughAttrs, + propsOptions + ); + } + root = cloneVNode(root, fallthroughAttrs); + } else if (!accessedAttrs && root.type !== Comment) { + const allAttrs = Object.keys(attrs); + const eventAttrs = []; + const extraAttrs = []; + for (let i = 0, l = allAttrs.length; i < l; i++) { + const key = allAttrs[i]; + if (isOn(key)) { + if (!isModelListener(key)) { + eventAttrs.push(key[2].toLowerCase() + key.slice(3)); + } + } else { + extraAttrs.push(key); + } + } + if (extraAttrs.length) { + warn( + `Extraneous non-props attributes (${extraAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes.` + ); + } + if (eventAttrs.length) { + warn( + `Extraneous non-emits event listeners (${eventAttrs.join(", ")}) were passed to component but could not be automatically inherited because component renders fragment or text root nodes. If the listener is intended to be a component custom event listener only, declare it using the "emits" option.` + ); + } + } + } + } + if (vnode.dirs) { + if (!isElementRoot(root)) { + warn( + `Runtime directive used on component with non-element root node. The directives will not function as intended.` + ); + } + root = cloneVNode(root); + root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs; + } + if (vnode.transition) { + if (!isElementRoot(root)) { + warn( + `Component inside renders non-element root node that cannot be animated.` + ); + } + root.transition = vnode.transition; + } + if (setRoot) { + setRoot(root); + } else { + result = root; + } + setCurrentRenderingInstance(prev); + return result; + } + const getChildRoot = (vnode) => { + const rawChildren = vnode.children; + const dynamicChildren = vnode.dynamicChildren; + const childRoot = filterSingleRoot(rawChildren); + if (!childRoot) { + return [vnode, void 0]; + } + const index = rawChildren.indexOf(childRoot); + const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; + const setRoot = (updatedRoot) => { + rawChildren[index] = updatedRoot; + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } + } + }; + return [normalizeVNode(childRoot), setRoot]; + }; + function filterSingleRoot(children) { + let singleRoot; + for (let i = 0; i < children.length; i++) { + const child = children[i]; + if (isVNode(child)) { + if (child.type !== Comment || child.children === "v-if") { + if (singleRoot) { + return; + } else { + singleRoot = child; + } + } + } else { + return; + } + } + return singleRoot; + } + const getFunctionalFallthrough = (attrs) => { + let res; + for (const key in attrs) { + if (key === "class" || key === "style" || isOn(key)) { + (res || (res = {}))[key] = attrs[key]; + } + } + return res; + }; + const filterModelListeners = (attrs, props) => { + const res = {}; + for (const key in attrs) { + if (!isModelListener(key) || !(key.slice(9) in props)) { + res[key] = attrs[key]; + } + } + return res; + }; + const isElementRoot = (vnode) => { + return vnode.shapeFlag & (6 | 1) || vnode.type === Comment; + }; + function shouldUpdateComponent(prevVNode, nextVNode, optimized) { + const { props: prevProps, children: prevChildren, component } = prevVNode; + const { props: nextProps, children: nextChildren, patchFlag } = nextVNode; + const emits = component.emitsOptions; + if ((prevChildren || nextChildren) && isHmrUpdating) { + return true; + } + if (nextVNode.dirs || nextVNode.transition) { + return true; + } + if (optimized && patchFlag >= 0) { + if (patchFlag & 1024) { + return true; + } + if (patchFlag & 16) { + if (!prevProps) { + return !!nextProps; + } + return hasPropsChanged(prevProps, nextProps, emits); + } else if (patchFlag & 8) { + const dynamicProps = nextVNode.dynamicProps; + for (let i = 0; i < dynamicProps.length; i++) { + const key = dynamicProps[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) { + return true; + } + } + } + } else { + if (prevChildren || nextChildren) { + if (!nextChildren || !nextChildren.$stable) { + return true; + } + } + if (prevProps === nextProps) { + return false; + } + if (!prevProps) { + return !!nextProps; + } + if (!nextProps) { + return true; + } + return hasPropsChanged(prevProps, nextProps, emits); + } + return false; + } + function hasPropsChanged(prevProps, nextProps, emitsOptions) { + const nextKeys = Object.keys(nextProps); + if (nextKeys.length !== Object.keys(prevProps).length) { + return true; + } + for (let i = 0; i < nextKeys.length; i++) { + const key = nextKeys[i]; + if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) { + return true; + } + } + return false; + } + function updateHOCHostEl({ vnode, parent }, el) { + while (parent && parent.subTree === vnode) { + (vnode = parent.vnode).el = el; + parent = parent.parent; + } + } + + const isSuspense = (type) => type.__isSuspense; + const SuspenseImpl = { + name: "Suspense", + // In order to make Suspense tree-shakable, we need to avoid importing it + // directly in the renderer. The renderer checks for the __isSuspense flag + // on a vnode's type and calls the `process` method, passing in renderer + // internals. + __isSuspense: true, + process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + if (n1 == null) { + mountSuspense( + n2, + container, + anchor, + parentComponent, + parentSuspense, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } else { + patchSuspense( + n1, + n2, + container, + anchor, + parentComponent, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + } + }, + hydrate: hydrateSuspense, + create: createSuspenseBoundary, + normalize: normalizeSuspenseChildren + }; + const Suspense = SuspenseImpl ; + function triggerEvent(vnode, name) { + const eventListener = vnode.props && vnode.props[name]; + if (isFunction(eventListener)) { + eventListener(); + } + } + function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) { + const { + p: patch, + o: { createElement } + } = rendererInternals; + const hiddenContainer = createElement("div"); + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + container, + hiddenContainer, + anchor, + isSVG, + slotScopeIds, + optimized, + rendererInternals + ); + patch( + null, + suspense.pendingBranch = vnode.ssContent, + hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds + ); + if (suspense.deps > 0) { + triggerEvent(vnode, "onPending"); + triggerEvent(vnode, "onFallback"); + patch( + null, + vnode.ssFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds + ); + setActiveBranch(suspense, vnode.ssFallback); + } else { + suspense.resolve(false, true); + } + } + function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) { + const suspense = n2.suspense = n1.suspense; + suspense.vnode = n2; + n2.el = n1.el; + const newBranch = n2.ssContent; + const newFallback = n2.ssFallback; + const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense; + if (pendingBranch) { + suspense.pendingBranch = newBranch; + if (isSameVNodeType(newBranch, pendingBranch)) { + patch( + pendingBranch, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else if (isInFallback) { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else { + suspense.pendingId++; + if (isHydrating) { + suspense.isHydrating = false; + suspense.activeBranch = pendingBranch; + } else { + unmount(pendingBranch, parentComponent, suspense); + } + suspense.deps = 0; + suspense.effects.length = 0; + suspense.hiddenContainer = createElement("div"); + if (isInFallback) { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + patch( + activeBranch, + newFallback, + container, + anchor, + parentComponent, + null, + // fallback tree will not have suspense context + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newFallback); + } + } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + suspense.resolve(true); + } else { + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } + } + } + } else { + if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { + patch( + activeBranch, + newBranch, + container, + anchor, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, newBranch); + } else { + triggerEvent(n2, "onPending"); + suspense.pendingBranch = newBranch; + suspense.pendingId++; + patch( + null, + newBranch, + suspense.hiddenContainer, + null, + parentComponent, + suspense, + isSVG, + slotScopeIds, + optimized + ); + if (suspense.deps <= 0) { + suspense.resolve(); + } else { + const { timeout, pendingId } = suspense; + if (timeout > 0) { + setTimeout(() => { + if (suspense.pendingId === pendingId) { + suspense.fallback(newFallback); + } + }, timeout); + } else if (timeout === 0) { + suspense.fallback(newFallback); + } + } + } + } + } + let hasWarned = false; + function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) { + if (!hasWarned) { + hasWarned = true; + console[console.info ? "info" : "log"]( + ` is an experimental feature and its API will likely change.` + ); + } + const { + p: patch, + m: move, + um: unmount, + n: next, + o: { parentNode, remove } + } = rendererInternals; + let parentSuspenseId; + const isSuspensible = isVNodeSuspensible(vnode); + if (isSuspensible) { + if (parentSuspense == null ? void 0 : parentSuspense.pendingBranch) { + parentSuspenseId = parentSuspense.pendingId; + parentSuspense.deps++; + } + } + const timeout = vnode.props ? toNumber(vnode.props.timeout) : void 0; + { + assertNumber(timeout, `Suspense timeout`); + } + const suspense = { + vnode, + parent: parentSuspense, + parentComponent, + isSVG, + container, + hiddenContainer, + anchor, + deps: 0, + pendingId: 0, + timeout: typeof timeout === "number" ? timeout : -1, + activeBranch: null, + pendingBranch: null, + isInFallback: true, + isHydrating, + isUnmounted: false, + effects: [], + resolve(resume = false, sync = false) { + { + if (!resume && !suspense.pendingBranch) { + throw new Error( + `suspense.resolve() is called without a pending branch.` + ); + } + if (suspense.isUnmounted) { + throw new Error( + `suspense.resolve() is called on an already unmounted suspense boundary.` + ); + } + } + const { + vnode: vnode2, + activeBranch, + pendingBranch, + pendingId, + effects, + parentComponent: parentComponent2, + container: container2 + } = suspense; + if (suspense.isHydrating) { + suspense.isHydrating = false; + } else if (!resume) { + const delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = () => { + if (pendingId === suspense.pendingId) { + move(pendingBranch, container2, anchor2, 0); + } + }; + } + let { anchor: anchor2 } = suspense; + if (activeBranch) { + anchor2 = next(activeBranch); + unmount(activeBranch, parentComponent2, suspense, true); + } + if (!delayEnter) { + move(pendingBranch, container2, anchor2, 0); + } + } + setActiveBranch(suspense, pendingBranch); + suspense.pendingBranch = null; + suspense.isInFallback = false; + let parent = suspense.parent; + let hasUnresolvedAncestor = false; + while (parent) { + if (parent.pendingBranch) { + parent.effects.push(...effects); + hasUnresolvedAncestor = true; + break; + } + parent = parent.parent; + } + if (!hasUnresolvedAncestor) { + queuePostFlushCb(effects); + } + suspense.effects = []; + if (isSuspensible) { + if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) { + parentSuspense.deps--; + if (parentSuspense.deps === 0 && !sync) { + parentSuspense.resolve(); + } + } + } + triggerEvent(vnode2, "onResolve"); + }, + fallback(fallbackVNode) { + if (!suspense.pendingBranch) { + return; + } + const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, isSVG: isSVG2 } = suspense; + triggerEvent(vnode2, "onFallback"); + const anchor2 = next(activeBranch); + const mountFallback = () => { + if (!suspense.isInFallback) { + return; + } + patch( + null, + fallbackVNode, + container2, + anchor2, + parentComponent2, + null, + // fallback tree will not have suspense context + isSVG2, + slotScopeIds, + optimized + ); + setActiveBranch(suspense, fallbackVNode); + }; + const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in"; + if (delayEnter) { + activeBranch.transition.afterLeave = mountFallback; + } + suspense.isInFallback = true; + unmount( + activeBranch, + parentComponent2, + null, + // no suspense so unmount hooks fire now + true + // shouldRemove + ); + if (!delayEnter) { + mountFallback(); + } + }, + move(container2, anchor2, type) { + suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type); + suspense.container = container2; + }, + next() { + return suspense.activeBranch && next(suspense.activeBranch); + }, + registerDep(instance, setupRenderEffect) { + const isInPendingSuspense = !!suspense.pendingBranch; + if (isInPendingSuspense) { + suspense.deps++; + } + const hydratedEl = instance.vnode.el; + instance.asyncDep.catch((err) => { + handleError(err, instance, 0); + }).then((asyncSetupResult) => { + if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) { + return; + } + instance.asyncResolved = true; + const { vnode: vnode2 } = instance; + { + pushWarningContext(vnode2); + } + handleSetupResult(instance, asyncSetupResult, false); + if (hydratedEl) { + vnode2.el = hydratedEl; + } + const placeholder = !hydratedEl && instance.subTree.el; + setupRenderEffect( + instance, + vnode2, + // component may have been moved before resolve. + // if this is not a hydration, instance.subTree will be the comment + // placeholder. + parentNode(hydratedEl || instance.subTree.el), + // anchor will not be used if this is hydration, so only need to + // consider the comment placeholder case. + hydratedEl ? null : next(instance.subTree), + suspense, + isSVG, + optimized + ); + if (placeholder) { + remove(placeholder); + } + updateHOCHostEl(instance, vnode2.el); + { + popWarningContext(); + } + if (isInPendingSuspense && --suspense.deps === 0) { + suspense.resolve(); + } + }); + }, + unmount(parentSuspense2, doRemove) { + suspense.isUnmounted = true; + if (suspense.activeBranch) { + unmount( + suspense.activeBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + if (suspense.pendingBranch) { + unmount( + suspense.pendingBranch, + parentComponent, + parentSuspense2, + doRemove + ); + } + } + }; + return suspense; + } + function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) { + const suspense = vnode.suspense = createSuspenseBoundary( + vnode, + parentSuspense, + parentComponent, + node.parentNode, + document.createElement("div"), + null, + isSVG, + slotScopeIds, + optimized, + rendererInternals, + true + /* hydrating */ + ); + const result = hydrateNode( + node, + suspense.pendingBranch = vnode.ssContent, + parentComponent, + suspense, + slotScopeIds, + optimized + ); + if (suspense.deps === 0) { + suspense.resolve(false, true); + } + return result; + } + function normalizeSuspenseChildren(vnode) { + const { shapeFlag, children } = vnode; + const isSlotChildren = shapeFlag & 32; + vnode.ssContent = normalizeSuspenseSlot( + isSlotChildren ? children.default : children + ); + vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment); + } + function normalizeSuspenseSlot(s) { + let block; + if (isFunction(s)) { + const trackBlock = isBlockTreeEnabled && s._c; + if (trackBlock) { + s._d = false; + openBlock(); + } + s = s(); + if (trackBlock) { + s._d = true; + block = currentBlock; + closeBlock(); + } + } + if (isArray(s)) { + const singleChild = filterSingleRoot(s); + if (!singleChild) { + warn(` slots expect a single root node.`); + } + s = singleChild; + } + s = normalizeVNode(s); + if (block && !s.dynamicChildren) { + s.dynamicChildren = block.filter((c) => c !== s); + } + return s; + } + function queueEffectWithSuspense(fn, suspense) { + if (suspense && suspense.pendingBranch) { + if (isArray(fn)) { + suspense.effects.push(...fn); + } else { + suspense.effects.push(fn); + } + } else { + queuePostFlushCb(fn); + } + } + function setActiveBranch(suspense, branch) { + suspense.activeBranch = branch; + const { vnode, parentComponent } = suspense; + const el = vnode.el = branch.el; + if (parentComponent && parentComponent.subTree === vnode) { + parentComponent.vnode.el = el; + updateHOCHostEl(parentComponent, el); + } + } + function isVNodeSuspensible(vnode) { + var _a; + return ((_a = vnode.props) == null ? void 0 : _a.suspensible) != null && vnode.props.suspensible !== false; + } + + function watchEffect(effect, options) { + return doWatch(effect, null, options); + } + function watchPostEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "post" }) + ); + } + function watchSyncEffect(effect, options) { + return doWatch( + effect, + null, + extend({}, options, { flush: "sync" }) + ); + } + const INITIAL_WATCHER_VALUE = {}; + function watch(source, cb, options) { + if (!isFunction(cb)) { + warn( + `\`watch(fn, options?)\` signature has been moved to a separate API. Use \`watchEffect(fn, options?)\` instead. \`watch\` now only supports \`watch(source, cb, options?) signature.` + ); + } + return doWatch(source, cb, options); + } + function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) { + var _a; + if (!cb) { + if (immediate !== void 0) { + warn( + `watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + if (deep !== void 0) { + warn( + `watch() "deep" option is only respected when using the watch(source, callback, options?) signature.` + ); + } + } + const warnInvalidSource = (s) => { + warn( + `Invalid watch source: `, + s, + `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.` + ); + }; + const instance = getCurrentScope() === ((_a = currentInstance) == null ? void 0 : _a.scope) ? currentInstance : null; + let getter; + let forceTrigger = false; + let isMultiSource = false; + if (isRef(source)) { + getter = () => source.value; + forceTrigger = isShallow(source); + } else if (isReactive(source)) { + getter = () => source; + deep = true; + } else if (isArray(source)) { + isMultiSource = true; + forceTrigger = source.some((s) => isReactive(s) || isShallow(s)); + getter = () => source.map((s) => { + if (isRef(s)) { + return s.value; + } else if (isReactive(s)) { + return traverse(s); + } else if (isFunction(s)) { + return callWithErrorHandling(s, instance, 2); + } else { + warnInvalidSource(s); + } + }); + } else if (isFunction(source)) { + if (cb) { + getter = () => callWithErrorHandling(source, instance, 2); + } else { + getter = () => { + if (instance && instance.isUnmounted) { + return; + } + if (cleanup) { + cleanup(); + } + return callWithAsyncErrorHandling( + source, + instance, + 3, + [onCleanup] + ); + }; + } + } else { + getter = NOOP; + warnInvalidSource(source); + } + if (cb && deep) { + const baseGetter = getter; + getter = () => traverse(baseGetter()); + } + let cleanup; + let onCleanup = (fn) => { + cleanup = effect.onStop = () => { + callWithErrorHandling(fn, instance, 4); + }; + }; + let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE; + const job = () => { + if (!effect.active) { + return; + } + if (cb) { + const newValue = effect.run(); + if (deep || forceTrigger || (isMultiSource ? newValue.some( + (v, i) => hasChanged(v, oldValue[i]) + ) : hasChanged(newValue, oldValue)) || false) { + if (cleanup) { + cleanup(); + } + callWithAsyncErrorHandling(cb, instance, 3, [ + newValue, + // pass undefined as the old value when it's changed for the first time + oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue, + onCleanup + ]); + oldValue = newValue; + } + } else { + effect.run(); + } + }; + job.allowRecurse = !!cb; + let scheduler; + if (flush === "sync") { + scheduler = job; + } else if (flush === "post") { + scheduler = () => queuePostRenderEffect(job, instance && instance.suspense); + } else { + job.pre = true; + if (instance) + job.id = instance.uid; + scheduler = () => queueJob(job); + } + const effect = new ReactiveEffect(getter, scheduler); + { + effect.onTrack = onTrack; + effect.onTrigger = onTrigger; + } + if (cb) { + if (immediate) { + job(); + } else { + oldValue = effect.run(); + } + } else if (flush === "post") { + queuePostRenderEffect( + effect.run.bind(effect), + instance && instance.suspense + ); + } else { + effect.run(); + } + const unwatch = () => { + effect.stop(); + if (instance && instance.scope) { + remove(instance.scope.effects, effect); + } + }; + return unwatch; + } + function instanceWatch(source, value, options) { + const publicThis = this.proxy; + const getter = isString(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis); + let cb; + if (isFunction(value)) { + cb = value; + } else { + cb = value.handler; + options = value; + } + const cur = currentInstance; + setCurrentInstance(this); + const res = doWatch(getter, cb.bind(publicThis), options); + if (cur) { + setCurrentInstance(cur); + } else { + unsetCurrentInstance(); + } + return res; + } + function createPathGetter(ctx, path) { + const segments = path.split("."); + return () => { + let cur = ctx; + for (let i = 0; i < segments.length && cur; i++) { + cur = cur[segments[i]]; + } + return cur; + }; + } + function traverse(value, seen) { + if (!isObject(value) || value["__v_skip"]) { + return value; + } + seen = seen || /* @__PURE__ */ new Set(); + if (seen.has(value)) { + return value; + } + seen.add(value); + if (isRef(value)) { + traverse(value.value, seen); + } else if (isArray(value)) { + for (let i = 0; i < value.length; i++) { + traverse(value[i], seen); + } + } else if (isSet(value) || isMap(value)) { + value.forEach((v) => { + traverse(v, seen); + }); + } else if (isPlainObject(value)) { + for (const key in value) { + traverse(value[key], seen); + } + } + return value; + } + + function validateDirectiveName(name) { + if (isBuiltInDirective(name)) { + warn("Do not use built-in directive ids as custom directive id: " + name); + } + } + function withDirectives(vnode, directives) { + const internalInstance = currentRenderingInstance; + if (internalInstance === null) { + warn(`withDirectives can only be used inside render functions.`); + return vnode; + } + const instance = getExposeProxy(internalInstance) || internalInstance.proxy; + const bindings = vnode.dirs || (vnode.dirs = []); + for (let i = 0; i < directives.length; i++) { + let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i]; + if (dir) { + if (isFunction(dir)) { + dir = { + mounted: dir, + updated: dir + }; + } + if (dir.deep) { + traverse(value); + } + bindings.push({ + dir, + instance, + value, + oldValue: void 0, + arg, + modifiers + }); + } + } + return vnode; + } + function invokeDirectiveHook(vnode, prevVNode, instance, name) { + const bindings = vnode.dirs; + const oldBindings = prevVNode && prevVNode.dirs; + for (let i = 0; i < bindings.length; i++) { + const binding = bindings[i]; + if (oldBindings) { + binding.oldValue = oldBindings[i].value; + } + let hook = binding.dir[name]; + if (hook) { + pauseTracking(); + callWithAsyncErrorHandling(hook, instance, 8, [ + vnode.el, + binding, + vnode, + prevVNode + ]); + resetTracking(); + } + } + } + + function useTransitionState() { + const state = { + isMounted: false, + isLeaving: false, + isUnmounting: false, + leavingVNodes: /* @__PURE__ */ new Map() + }; + onMounted(() => { + state.isMounted = true; + }); + onBeforeUnmount(() => { + state.isUnmounting = true; + }); + return state; + } + const TransitionHookValidator = [Function, Array]; + const BaseTransitionPropsValidators = { + mode: String, + appear: Boolean, + persisted: Boolean, + // enter + onBeforeEnter: TransitionHookValidator, + onEnter: TransitionHookValidator, + onAfterEnter: TransitionHookValidator, + onEnterCancelled: TransitionHookValidator, + // leave + onBeforeLeave: TransitionHookValidator, + onLeave: TransitionHookValidator, + onAfterLeave: TransitionHookValidator, + onLeaveCancelled: TransitionHookValidator, + // appear + onBeforeAppear: TransitionHookValidator, + onAppear: TransitionHookValidator, + onAfterAppear: TransitionHookValidator, + onAppearCancelled: TransitionHookValidator + }; + const BaseTransitionImpl = { + name: `BaseTransition`, + props: BaseTransitionPropsValidators, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const state = useTransitionState(); + let prevTransitionKey; + return () => { + const children = slots.default && getTransitionRawChildren(slots.default(), true); + if (!children || !children.length) { + return; + } + let child = children[0]; + if (children.length > 1) { + let hasFound = false; + for (const c of children) { + if (c.type !== Comment) { + if (hasFound) { + warn( + " can only be used on a single element or component. Use for lists." + ); + break; + } + child = c; + hasFound = true; + } + } + } + const rawProps = toRaw(props); + const { mode } = rawProps; + if (mode && mode !== "in-out" && mode !== "out-in" && mode !== "default") { + warn(`invalid mode: ${mode}`); + } + if (state.isLeaving) { + return emptyPlaceholder(child); + } + const innerChild = getKeepAliveChild(child); + if (!innerChild) { + return emptyPlaceholder(child); + } + const enterHooks = resolveTransitionHooks( + innerChild, + rawProps, + state, + instance + ); + setTransitionHooks(innerChild, enterHooks); + const oldChild = instance.subTree; + const oldInnerChild = oldChild && getKeepAliveChild(oldChild); + let transitionKeyChanged = false; + const { getTransitionKey } = innerChild.type; + if (getTransitionKey) { + const key = getTransitionKey(); + if (prevTransitionKey === void 0) { + prevTransitionKey = key; + } else if (key !== prevTransitionKey) { + prevTransitionKey = key; + transitionKeyChanged = true; + } + } + if (oldInnerChild && oldInnerChild.type !== Comment && (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) { + const leavingHooks = resolveTransitionHooks( + oldInnerChild, + rawProps, + state, + instance + ); + setTransitionHooks(oldInnerChild, leavingHooks); + if (mode === "out-in") { + state.isLeaving = true; + leavingHooks.afterLeave = () => { + state.isLeaving = false; + if (instance.update.active !== false) { + instance.update(); + } + }; + return emptyPlaceholder(child); + } else if (mode === "in-out" && innerChild.type !== Comment) { + leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => { + const leavingVNodesCache = getLeavingNodesForType( + state, + oldInnerChild + ); + leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild; + el._leaveCb = () => { + earlyRemove(); + el._leaveCb = void 0; + delete enterHooks.delayedLeave; + }; + enterHooks.delayedLeave = delayedLeave; + }; + } + } + return child; + }; + } + }; + const BaseTransition = BaseTransitionImpl; + function getLeavingNodesForType(state, vnode) { + const { leavingVNodes } = state; + let leavingVNodesCache = leavingVNodes.get(vnode.type); + if (!leavingVNodesCache) { + leavingVNodesCache = /* @__PURE__ */ Object.create(null); + leavingVNodes.set(vnode.type, leavingVNodesCache); + } + return leavingVNodesCache; + } + function resolveTransitionHooks(vnode, props, state, instance) { + const { + appear, + mode, + persisted = false, + onBeforeEnter, + onEnter, + onAfterEnter, + onEnterCancelled, + onBeforeLeave, + onLeave, + onAfterLeave, + onLeaveCancelled, + onBeforeAppear, + onAppear, + onAfterAppear, + onAppearCancelled + } = props; + const key = String(vnode.key); + const leavingVNodesCache = getLeavingNodesForType(state, vnode); + const callHook = (hook, args) => { + hook && callWithAsyncErrorHandling( + hook, + instance, + 9, + args + ); + }; + const callAsyncHook = (hook, args) => { + const done = args[1]; + callHook(hook, args); + if (isArray(hook)) { + if (hook.every((hook2) => hook2.length <= 1)) + done(); + } else if (hook.length <= 1) { + done(); + } + }; + const hooks = { + mode, + persisted, + beforeEnter(el) { + let hook = onBeforeEnter; + if (!state.isMounted) { + if (appear) { + hook = onBeforeAppear || onBeforeEnter; + } else { + return; + } + } + if (el._leaveCb) { + el._leaveCb( + true + /* cancelled */ + ); + } + const leavingVNode = leavingVNodesCache[key]; + if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el._leaveCb) { + leavingVNode.el._leaveCb(); + } + callHook(hook, [el]); + }, + enter(el) { + let hook = onEnter; + let afterHook = onAfterEnter; + let cancelHook = onEnterCancelled; + if (!state.isMounted) { + if (appear) { + hook = onAppear || onEnter; + afterHook = onAfterAppear || onAfterEnter; + cancelHook = onAppearCancelled || onEnterCancelled; + } else { + return; + } + } + let called = false; + const done = el._enterCb = (cancelled) => { + if (called) + return; + called = true; + if (cancelled) { + callHook(cancelHook, [el]); + } else { + callHook(afterHook, [el]); + } + if (hooks.delayedLeave) { + hooks.delayedLeave(); + } + el._enterCb = void 0; + }; + if (hook) { + callAsyncHook(hook, [el, done]); + } else { + done(); + } + }, + leave(el, remove) { + const key2 = String(vnode.key); + if (el._enterCb) { + el._enterCb( + true + /* cancelled */ + ); + } + if (state.isUnmounting) { + return remove(); + } + callHook(onBeforeLeave, [el]); + let called = false; + const done = el._leaveCb = (cancelled) => { + if (called) + return; + called = true; + remove(); + if (cancelled) { + callHook(onLeaveCancelled, [el]); + } else { + callHook(onAfterLeave, [el]); + } + el._leaveCb = void 0; + if (leavingVNodesCache[key2] === vnode) { + delete leavingVNodesCache[key2]; + } + }; + leavingVNodesCache[key2] = vnode; + if (onLeave) { + callAsyncHook(onLeave, [el, done]); + } else { + done(); + } + }, + clone(vnode2) { + return resolveTransitionHooks(vnode2, props, state, instance); + } + }; + return hooks; + } + function emptyPlaceholder(vnode) { + if (isKeepAlive(vnode)) { + vnode = cloneVNode(vnode); + vnode.children = null; + return vnode; + } + } + function getKeepAliveChild(vnode) { + return isKeepAlive(vnode) ? vnode.children ? vnode.children[0] : void 0 : vnode; + } + function setTransitionHooks(vnode, hooks) { + if (vnode.shapeFlag & 6 && vnode.component) { + setTransitionHooks(vnode.component.subTree, hooks); + } else if (vnode.shapeFlag & 128) { + vnode.ssContent.transition = hooks.clone(vnode.ssContent); + vnode.ssFallback.transition = hooks.clone(vnode.ssFallback); + } else { + vnode.transition = hooks; + } + } + function getTransitionRawChildren(children, keepComment = false, parentKey) { + let ret = []; + let keyedFragmentCount = 0; + for (let i = 0; i < children.length; i++) { + let child = children[i]; + const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i); + if (child.type === Fragment) { + if (child.patchFlag & 128) + keyedFragmentCount++; + ret = ret.concat( + getTransitionRawChildren(child.children, keepComment, key) + ); + } else if (keepComment || child.type !== Comment) { + ret.push(key != null ? cloneVNode(child, { key }) : child); + } + } + if (keyedFragmentCount > 1) { + for (let i = 0; i < ret.length; i++) { + ret[i].patchFlag = -2; + } + } + return ret; + } + + function defineComponent(options, extraOptions) { + return isFunction(options) ? ( + // #8326: extend call and options.name access are considered side-effects + // by Rollup, so we have to wrap it in a pure-annotated IIFE. + /* @__PURE__ */ (() => extend({ name: options.name }, extraOptions, { setup: options }))() + ) : options; + } + + const isAsyncWrapper = (i) => !!i.type.__asyncLoader; + function defineAsyncComponent(source) { + if (isFunction(source)) { + source = { loader: source }; + } + const { + loader, + loadingComponent, + errorComponent, + delay = 200, + timeout, + // undefined = never times out + suspensible = true, + onError: userOnError + } = source; + let pendingRequest = null; + let resolvedComp; + let retries = 0; + const retry = () => { + retries++; + pendingRequest = null; + return load(); + }; + const load = () => { + let thisRequest; + return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => { + err = err instanceof Error ? err : new Error(String(err)); + if (userOnError) { + return new Promise((resolve, reject) => { + const userRetry = () => resolve(retry()); + const userFail = () => reject(err); + userOnError(err, userRetry, userFail, retries + 1); + }); + } else { + throw err; + } + }).then((comp) => { + if (thisRequest !== pendingRequest && pendingRequest) { + return pendingRequest; + } + if (!comp) { + warn( + `Async component loader resolved to undefined. If you are using retry(), make sure to return its return value.` + ); + } + if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) { + comp = comp.default; + } + if (comp && !isObject(comp) && !isFunction(comp)) { + throw new Error(`Invalid async component load result: ${comp}`); + } + resolvedComp = comp; + return comp; + })); + }; + return defineComponent({ + name: "AsyncComponentWrapper", + __asyncLoader: load, + get __asyncResolved() { + return resolvedComp; + }, + setup() { + const instance = currentInstance; + if (resolvedComp) { + return () => createInnerComp(resolvedComp, instance); + } + const onError = (err) => { + pendingRequest = null; + handleError( + err, + instance, + 13, + !errorComponent + /* do not throw in dev if user provided error component */ + ); + }; + if (suspensible && instance.suspense || false) { + return load().then((comp) => { + return () => createInnerComp(comp, instance); + }).catch((err) => { + onError(err); + return () => errorComponent ? createVNode(errorComponent, { + error: err + }) : null; + }); + } + const loaded = ref(false); + const error = ref(); + const delayed = ref(!!delay); + if (delay) { + setTimeout(() => { + delayed.value = false; + }, delay); + } + if (timeout != null) { + setTimeout(() => { + if (!loaded.value && !error.value) { + const err = new Error( + `Async component timed out after ${timeout}ms.` + ); + onError(err); + error.value = err; + } + }, timeout); + } + load().then(() => { + loaded.value = true; + if (instance.parent && isKeepAlive(instance.parent.vnode)) { + queueJob(instance.parent.update); + } + }).catch((err) => { + onError(err); + error.value = err; + }); + return () => { + if (loaded.value && resolvedComp) { + return createInnerComp(resolvedComp, instance); + } else if (error.value && errorComponent) { + return createVNode(errorComponent, { + error: error.value + }); + } else if (loadingComponent && !delayed.value) { + return createVNode(loadingComponent); + } + }; + } + }); + } + function createInnerComp(comp, parent) { + const { ref: ref2, props, children, ce } = parent.vnode; + const vnode = createVNode(comp, props, children); + vnode.ref = ref2; + vnode.ce = ce; + delete parent.vnode.ce; + return vnode; + } + + const isKeepAlive = (vnode) => vnode.type.__isKeepAlive; + const KeepAliveImpl = { + name: `KeepAlive`, + // Marker for special handling inside the renderer. We are not using a === + // check directly on KeepAlive in the renderer, because importing it directly + // would prevent it from being tree-shaken. + __isKeepAlive: true, + props: { + include: [String, RegExp, Array], + exclude: [String, RegExp, Array], + max: [String, Number] + }, + setup(props, { slots }) { + const instance = getCurrentInstance(); + const sharedContext = instance.ctx; + const cache = /* @__PURE__ */ new Map(); + const keys = /* @__PURE__ */ new Set(); + let current = null; + { + instance.__v_cache = cache; + } + const parentSuspense = instance.suspense; + const { + renderer: { + p: patch, + m: move, + um: _unmount, + o: { createElement } + } + } = sharedContext; + const storageContainer = createElement("div"); + sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => { + const instance2 = vnode.component; + move(vnode, container, anchor, 0, parentSuspense); + patch( + instance2.vnode, + vnode, + container, + anchor, + instance2, + parentSuspense, + isSVG, + vnode.slotScopeIds, + optimized + ); + queuePostRenderEffect(() => { + instance2.isDeactivated = false; + if (instance2.a) { + invokeArrayFns(instance2.a); + } + const vnodeHook = vnode.props && vnode.props.onVnodeMounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + sharedContext.deactivate = (vnode) => { + const instance2 = vnode.component; + move(vnode, storageContainer, null, 1, parentSuspense); + queuePostRenderEffect(() => { + if (instance2.da) { + invokeArrayFns(instance2.da); + } + const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted; + if (vnodeHook) { + invokeVNodeHook(vnodeHook, instance2.parent, vnode); + } + instance2.isDeactivated = true; + }, parentSuspense); + { + devtoolsComponentAdded(instance2); + } + }; + function unmount(vnode) { + resetShapeFlag(vnode); + _unmount(vnode, instance, parentSuspense, true); + } + function pruneCache(filter) { + cache.forEach((vnode, key) => { + const name = getComponentName(vnode.type); + if (name && (!filter || !filter(name))) { + pruneCacheEntry(key); + } + }); + } + function pruneCacheEntry(key) { + const cached = cache.get(key); + if (!current || !isSameVNodeType(cached, current)) { + unmount(cached); + } else if (current) { + resetShapeFlag(current); + } + cache.delete(key); + keys.delete(key); + } + watch( + () => [props.include, props.exclude], + ([include, exclude]) => { + include && pruneCache((name) => matches(include, name)); + exclude && pruneCache((name) => !matches(exclude, name)); + }, + // prune post-render after `current` has been updated + { flush: "post", deep: true } + ); + let pendingCacheKey = null; + const cacheSubtree = () => { + if (pendingCacheKey != null) { + cache.set(pendingCacheKey, getInnerChild(instance.subTree)); + } + }; + onMounted(cacheSubtree); + onUpdated(cacheSubtree); + onBeforeUnmount(() => { + cache.forEach((cached) => { + const { subTree, suspense } = instance; + const vnode = getInnerChild(subTree); + if (cached.type === vnode.type && cached.key === vnode.key) { + resetShapeFlag(vnode); + const da = vnode.component.da; + da && queuePostRenderEffect(da, suspense); + return; + } + unmount(cached); + }); + }); + return () => { + pendingCacheKey = null; + if (!slots.default) { + return null; + } + const children = slots.default(); + const rawVNode = children[0]; + if (children.length > 1) { + { + warn(`KeepAlive should contain exactly one component child.`); + } + current = null; + return children; + } else if (!isVNode(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) { + current = null; + return rawVNode; + } + let vnode = getInnerChild(rawVNode); + const comp = vnode.type; + const name = getComponentName( + isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp + ); + const { include, exclude, max } = props; + if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) { + current = vnode; + return rawVNode; + } + const key = vnode.key == null ? comp : vnode.key; + const cachedVNode = cache.get(key); + if (vnode.el) { + vnode = cloneVNode(vnode); + if (rawVNode.shapeFlag & 128) { + rawVNode.ssContent = vnode; + } + } + pendingCacheKey = key; + if (cachedVNode) { + vnode.el = cachedVNode.el; + vnode.component = cachedVNode.component; + if (vnode.transition) { + setTransitionHooks(vnode, vnode.transition); + } + vnode.shapeFlag |= 512; + keys.delete(key); + keys.add(key); + } else { + keys.add(key); + if (max && keys.size > parseInt(max, 10)) { + pruneCacheEntry(keys.values().next().value); + } + } + vnode.shapeFlag |= 256; + current = vnode; + return isSuspense(rawVNode.type) ? rawVNode : vnode; + }; + } + }; + const KeepAlive = KeepAliveImpl; + function matches(pattern, name) { + if (isArray(pattern)) { + return pattern.some((p) => matches(p, name)); + } else if (isString(pattern)) { + return pattern.split(",").includes(name); + } else if (isRegExp(pattern)) { + return pattern.test(name); + } + return false; + } + function onActivated(hook, target) { + registerKeepAliveHook(hook, "a", target); + } + function onDeactivated(hook, target) { + registerKeepAliveHook(hook, "da", target); + } + function registerKeepAliveHook(hook, type, target = currentInstance) { + const wrappedHook = hook.__wdc || (hook.__wdc = () => { + let current = target; + while (current) { + if (current.isDeactivated) { + return; + } + current = current.parent; + } + return hook(); + }); + injectHook(type, wrappedHook, target); + if (target) { + let current = target.parent; + while (current && current.parent) { + if (isKeepAlive(current.parent.vnode)) { + injectToKeepAliveRoot(wrappedHook, type, target, current); + } + current = current.parent; + } + } + } + function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) { + const injected = injectHook( + type, + hook, + keepAliveRoot, + true + /* prepend */ + ); + onUnmounted(() => { + remove(keepAliveRoot[type], injected); + }, target); + } + function resetShapeFlag(vnode) { + vnode.shapeFlag &= ~256; + vnode.shapeFlag &= ~512; + } + function getInnerChild(vnode) { + return vnode.shapeFlag & 128 ? vnode.ssContent : vnode; + } + + function injectHook(type, hook, target = currentInstance, prepend = false) { + if (target) { + const hooks = target[type] || (target[type] = []); + const wrappedHook = hook.__weh || (hook.__weh = (...args) => { + if (target.isUnmounted) { + return; + } + pauseTracking(); + setCurrentInstance(target); + const res = callWithAsyncErrorHandling(hook, target, type, args); + unsetCurrentInstance(); + resetTracking(); + return res; + }); + if (prepend) { + hooks.unshift(wrappedHook); + } else { + hooks.push(wrappedHook); + } + return wrappedHook; + } else { + const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, "")); + warn( + `${apiName} is called when there is no active component instance to be associated with. Lifecycle injection APIs can only be used during execution of setup().` + (` If you are using async setup(), make sure to register lifecycle hooks before the first await statement.` ) + ); + } + } + const createHook = (lifecycle) => (hook, target = currentInstance) => ( + // post-create lifecycle registrations are noops during SSR (except for serverPrefetch) + (!isInSSRComponentSetup || lifecycle === "sp") && injectHook(lifecycle, (...args) => hook(...args), target) + ); + const onBeforeMount = createHook("bm"); + const onMounted = createHook("m"); + const onBeforeUpdate = createHook("bu"); + const onUpdated = createHook("u"); + const onBeforeUnmount = createHook("bum"); + const onUnmounted = createHook("um"); + const onServerPrefetch = createHook("sp"); + const onRenderTriggered = createHook( + "rtg" + ); + const onRenderTracked = createHook( + "rtc" + ); + function onErrorCaptured(hook, target = currentInstance) { + injectHook("ec", hook, target); + } + + const COMPONENTS = "components"; + const DIRECTIVES = "directives"; + function resolveComponent(name, maybeSelfReference) { + return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name; + } + const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc"); + function resolveDynamicComponent(component) { + if (isString(component)) { + return resolveAsset(COMPONENTS, component, false) || component; + } else { + return component || NULL_DYNAMIC_COMPONENT; + } + } + function resolveDirective(name) { + return resolveAsset(DIRECTIVES, name); + } + function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) { + const instance = currentRenderingInstance || currentInstance; + if (instance) { + const Component = instance.type; + if (type === COMPONENTS) { + const selfName = getComponentName( + Component, + false + /* do not include inferred name to avoid breaking existing code */ + ); + if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize(camelize(name)))) { + return Component; + } + } + const res = ( + // local registration + // check instance[type] first which is resolved for options API + resolve(instance[type] || Component[type], name) || // global registration + resolve(instance.appContext[type], name) + ); + if (!res && maybeSelfReference) { + return Component; + } + if (warnMissing && !res) { + const extra = type === COMPONENTS ? ` +If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.` : ``; + warn(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`); + } + return res; + } else { + warn( + `resolve${capitalize(type.slice(0, -1))} can only be used in render() or setup().` + ); + } + } + function resolve(registry, name) { + return registry && (registry[name] || registry[camelize(name)] || registry[capitalize(camelize(name))]); + } + + function renderList(source, renderItem, cache, index) { + let ret; + const cached = cache && cache[index]; + if (isArray(source) || isString(source)) { + ret = new Array(source.length); + for (let i = 0, l = source.length; i < l; i++) { + ret[i] = renderItem(source[i], i, void 0, cached && cached[i]); + } + } else if (typeof source === "number") { + if (!Number.isInteger(source)) { + warn(`The v-for range expect an integer value but got ${source}.`); + } + ret = new Array(source); + for (let i = 0; i < source; i++) { + ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]); + } + } else if (isObject(source)) { + if (source[Symbol.iterator]) { + ret = Array.from( + source, + (item, i) => renderItem(item, i, void 0, cached && cached[i]) + ); + } else { + const keys = Object.keys(source); + ret = new Array(keys.length); + for (let i = 0, l = keys.length; i < l; i++) { + const key = keys[i]; + ret[i] = renderItem(source[key], key, i, cached && cached[i]); + } + } + } else { + ret = []; + } + if (cache) { + cache[index] = ret; + } + return ret; + } + + function createSlots(slots, dynamicSlots) { + for (let i = 0; i < dynamicSlots.length; i++) { + const slot = dynamicSlots[i]; + if (isArray(slot)) { + for (let j = 0; j < slot.length; j++) { + slots[slot[j].name] = slot[j].fn; + } + } else if (slot) { + slots[slot.name] = slot.key ? (...args) => { + const res = slot.fn(...args); + if (res) + res.key = slot.key; + return res; + } : slot.fn; + } + } + return slots; + } + + function renderSlot(slots, name, props = {}, fallback, noSlotted) { + if (currentRenderingInstance.isCE || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.isCE) { + if (name !== "default") + props.name = name; + return createVNode("slot", props, fallback && fallback()); + } + let slot = slots[name]; + if (slot && slot.length > 1) { + warn( + `SSR-optimized slot function detected in a non-SSR-optimized render function. You need to mark this component with $dynamic-slots in the parent template.` + ); + slot = () => []; + } + if (slot && slot._c) { + slot._d = false; + } + openBlock(); + const validSlotContent = slot && ensureValidVNode(slot(props)); + const rendered = createBlock( + Fragment, + { + key: props.key || // slot content array of a dynamic conditional slot may have a branch + // key attached in the `createSlots` helper, respect that + validSlotContent && validSlotContent.key || `_${name}` + }, + validSlotContent || (fallback ? fallback() : []), + validSlotContent && slots._ === 1 ? 64 : -2 + ); + if (!noSlotted && rendered.scopeId) { + rendered.slotScopeIds = [rendered.scopeId + "-s"]; + } + if (slot && slot._c) { + slot._d = true; + } + return rendered; + } + function ensureValidVNode(vnodes) { + return vnodes.some((child) => { + if (!isVNode(child)) + return true; + if (child.type === Comment) + return false; + if (child.type === Fragment && !ensureValidVNode(child.children)) + return false; + return true; + }) ? vnodes : null; + } + + function toHandlers(obj, preserveCaseIfNecessary) { + const ret = {}; + if (!isObject(obj)) { + warn(`v-on with no argument expects an object value.`); + return ret; + } + for (const key in obj) { + ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key]; + } + return ret; + } + + const getPublicInstance = (i) => { + if (!i) + return null; + if (isStatefulComponent(i)) + return getExposeProxy(i) || i.proxy; + return getPublicInstance(i.parent); + }; + const publicPropertiesMap = ( + // Move PURE marker to new line to workaround compiler discarding it + // due to type annotation + /* @__PURE__ */ extend(/* @__PURE__ */ Object.create(null), { + $: (i) => i, + $el: (i) => i.vnode.el, + $data: (i) => i.data, + $props: (i) => shallowReadonly(i.props) , + $attrs: (i) => shallowReadonly(i.attrs) , + $slots: (i) => shallowReadonly(i.slots) , + $refs: (i) => shallowReadonly(i.refs) , + $parent: (i) => getPublicInstance(i.parent), + $root: (i) => getPublicInstance(i.root), + $emit: (i) => i.emit, + $options: (i) => resolveMergedOptions(i) , + $forceUpdate: (i) => i.f || (i.f = () => queueJob(i.update)), + $nextTick: (i) => i.n || (i.n = nextTick.bind(i.proxy)), + $watch: (i) => instanceWatch.bind(i) + }) + ); + const isReservedPrefix = (key) => key === "_" || key === "$"; + const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key); + const PublicInstanceProxyHandlers = { + get({ _: instance }, key) { + const { ctx, setupState, data, props, accessCache, type, appContext } = instance; + if (key === "__isVue") { + return true; + } + let normalizedProps; + if (key[0] !== "$") { + const n = accessCache[key]; + if (n !== void 0) { + switch (n) { + case 1 /* SETUP */: + return setupState[key]; + case 2 /* DATA */: + return data[key]; + case 4 /* CONTEXT */: + return ctx[key]; + case 3 /* PROPS */: + return props[key]; + } + } else if (hasSetupBinding(setupState, key)) { + accessCache[key] = 1 /* SETUP */; + return setupState[key]; + } else if (data !== EMPTY_OBJ && hasOwn(data, key)) { + accessCache[key] = 2 /* DATA */; + return data[key]; + } else if ( + // only cache other properties when instance has declared (thus stable) + // props + (normalizedProps = instance.propsOptions[0]) && hasOwn(normalizedProps, key) + ) { + accessCache[key] = 3 /* PROPS */; + return props[key]; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if (shouldCacheAccess) { + accessCache[key] = 0 /* OTHER */; + } + } + const publicGetter = publicPropertiesMap[key]; + let cssModule, globalProperties; + if (publicGetter) { + if (key === "$attrs") { + track(instance, "get", key); + markAttrsAccessed(); + } else if (key === "$slots") { + track(instance, "get", key); + } + return publicGetter(instance); + } else if ( + // css module (injected by vue-loader) + (cssModule = type.__cssModules) && (cssModule = cssModule[key]) + ) { + return cssModule; + } else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) { + accessCache[key] = 4 /* CONTEXT */; + return ctx[key]; + } else if ( + // global properties + globalProperties = appContext.config.globalProperties, hasOwn(globalProperties, key) + ) { + { + return globalProperties[key]; + } + } else if (currentRenderingInstance && (!isString(key) || // #1091 avoid internal isRef/isVNode checks on component instance leading + // to infinite warning loop + key.indexOf("__v") !== 0)) { + if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) { + warn( + `Property ${JSON.stringify( + key + )} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.` + ); + } else if (instance === currentRenderingInstance) { + warn( + `Property ${JSON.stringify(key)} was accessed during render but is not defined on instance.` + ); + } + } + }, + set({ _: instance }, key, value) { + const { data, setupState, ctx } = instance; + if (hasSetupBinding(setupState, key)) { + setupState[key] = value; + return true; + } else if (setupState.__isScriptSetup && hasOwn(setupState, key)) { + warn(`Cannot mutate {% endfor %} + {% if form %} + {{ form.media }} + {% endif %} + From d06eb7b47143c70342d9ee391c3c774830066f42 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Fri, 20 Oct 2023 11:19:41 +0200 Subject: [PATCH 07/34] feature: saver thread-local storage --- .../middleware/local_thread_middleware.py | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/src/cdh/core/middleware/local_thread_middleware.py b/src/cdh/core/middleware/local_thread_middleware.py index e23bf7f4..9bcad207 100644 --- a/src/cdh/core/middleware/local_thread_middleware.py +++ b/src/cdh/core/middleware/local_thread_middleware.py @@ -36,20 +36,35 @@ def __init__(self, get_response): self.get_response = get_response def __call__(self, request): - # request.user closure; asserts laziness; - # memorization is implemented in - # request.user (non-data descriptor) - _do_set_current_user(lambda self: getattr(request, 'user', None)) + self.process_request(request) + try: + response = self.get_response(request) + except Exception as e: + self.process_exception(request, e) + raise + return self.process_response(request, response) + + def process_request(self, request): _do_set_current_request(lambda self: request) - response = self.get_response(request) + + def process_response(self, request, response): + # Clear the local cache, just to be sure it won't leak + _do_set_current_request(lambda self: None) return response + def process_exception(self, request, exception): + # Clear the local cache, just to be sure it won't leak + _do_set_current_request(lambda self: None) + def get_current_session(): current_request = getattr(_thread_locals, 'request', None) if callable(current_request): return current_request().session + if current_request is None: + return None + return current_request.session @@ -62,10 +77,14 @@ def get_current_request(): def get_current_user(): - current_user = getattr(_thread_locals, 'user', None) - if callable(current_user): - return current_user() - return current_user + current_request = getattr(_thread_locals, 'request', None) + if callable(current_request): + return current_request().user + + if current_request is None: + return None + + return current_request.user def get_current_authenticated_user(): From e03f24674af0962a7b7557ada0dbea9927077e3d Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Fri, 20 Oct 2023 11:19:53 +0200 Subject: [PATCH 08/34] chore: deprecate file_loading utils --- src/cdh/core/file_loading.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/cdh/core/file_loading.py b/src/cdh/core/file_loading.py index 2b43f2e0..97467ec7 100644 --- a/src/cdh/core/file_loading.py +++ b/src/cdh/core/file_loading.py @@ -1,9 +1,14 @@ +from deprecated.sphinx import deprecated from django.templatetags.static import static js = set() css = set() +@deprecated( + version='3.1', + reason="Fundamentally flawed. Please explore your own alternatives" +) def add_js_file(file, reverse=True): """Registers a JS File to be loaded. Mostly intended for apps in the shared core to dynamically insert their files into the base template""" @@ -13,6 +18,10 @@ def add_js_file(file, reverse=True): js.add(file) +@deprecated( + version='3.1', + reason="Fundamentally flawed. Please explore your own alternatives" +) def add_css_file(file, reverse=True): """Registers a CSS File to be loaded on this page. Mostly intended for apps in the shared core to dynamically insert their files into the base From 1040fc40c51a99977b44bf1f3835321afb7bfbe9 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Fri, 20 Oct 2023 11:20:29 +0200 Subject: [PATCH 09/34] feature: use Django media to load in widget dependencies --- src/cdh/core/forms.py | 10 ++++++---- src/cdh/core/mail/widgets.py | 4 ++-- src/cdh/files/apps.py | 5 ----- src/cdh/files/forms/widgets.py | 12 ++++++++++++ .../digital_identity_api/forms/widgets.py | 12 ++++-------- 5 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/cdh/core/forms.py b/src/cdh/core/forms.py index 72c33c0e..b69e04cd 100644 --- a/src/cdh/core/forms.py +++ b/src/cdh/core/forms.py @@ -357,6 +357,12 @@ def to_python(self, value): class TinyMCEWidget(forms.Widget): """A TinyMCE widget for HTML editting""" template_name = "cdh.core/forms/widgets/tinymce.html" + class Media: + js = [ + 'cdh.core/js/tinymce/tinymce.min.js', + 'cdh.core/js/tinymce/tinymce-jquery.min.js', + 'cdh.core/js/tinymce/shim.js' + ] def __init__( self, @@ -387,10 +393,6 @@ def __init__( self.plugins = plugins self.toolbar = toolbar - add_js_file('cdh.core/js/tinymce/tinymce.min.js') - add_js_file('cdh.core/js/tinymce/tinymce-jquery.min.js') - add_js_file('cdh.core/js/tinymce/shim.js') - def get_context(self, *args, **kwargs): context = super().get_context(*args, **kwargs) diff --git a/src/cdh/core/mail/widgets.py b/src/cdh/core/mail/widgets.py index 6f78be2e..f44640f8 100644 --- a/src/cdh/core/mail/widgets.py +++ b/src/cdh/core/mail/widgets.py @@ -11,6 +11,8 @@ class EmailContentEditWidget(TinyMCEWidget): Will add a 'preview email' button to the editor. """ + class Media: + js = ['cdh.core/js/tinymce-preview-mail-plugin.js'] def __init__( self, @@ -40,8 +42,6 @@ def __init__( self.toolbar += " | preview-mail" self.plugins.append('preview-mail') - add_js_file('cdh.core/js/tinymce-preview-mail-plugin.js') - def get_context(self, *args, **kwargs): context = super().get_context(*args, **kwargs) diff --git a/src/cdh/files/apps.py b/src/cdh/files/apps.py index d1214c55..de534d4e 100644 --- a/src/cdh/files/apps.py +++ b/src/cdh/files/apps.py @@ -1,7 +1,5 @@ from django.apps import AppConfig -from cdh.core.file_loading import add_css_file, add_js_file - class FilesConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' @@ -10,6 +8,3 @@ class FilesConfig(AppConfig): def ready(self): import cdh.files.checks # noQA, the import has side effects, linter! import cdh.files.signals # noQA, same story - - add_js_file('cdh.files/widgets.js') - add_css_file('cdh.files/widgets.css') diff --git a/src/cdh/files/forms/widgets.py b/src/cdh/files/forms/widgets.py index 2f1b5523..8e5a31df 100644 --- a/src/cdh/files/forms/widgets.py +++ b/src/cdh/files/forms/widgets.py @@ -3,6 +3,12 @@ class SimpleFileInput(FileInput): + class Media: + js = ['cdh.files/widgets.js'] + css = { + 'screen': ['cdh.files/widgets.css'] + } + clear_checkbox_label = _('Clear') initial_text = _('Currently') input_text = _('Change') @@ -59,6 +65,12 @@ def value_omitted_from_data(self, data, files, name): class TrackedFileInput(SimpleFileInput): + class Media: + js = ['cdh.files/widgets.js'] + css = { + 'screen': ['cdh.files/widgets.css'] + } + template_name = 'cdh.files/widgets/tracked_file.html' # Strings used in the template diff --git a/src/cdh/integration_platform/digital_identity_api/forms/widgets.py b/src/cdh/integration_platform/digital_identity_api/forms/widgets.py index fcdba504..91f79085 100644 --- a/src/cdh/integration_platform/digital_identity_api/forms/widgets.py +++ b/src/cdh/integration_platform/digital_identity_api/forms/widgets.py @@ -4,17 +4,13 @@ class SingleUserWidget(widgets.Input): + class Media: + js = [ + 'cdh.integration_platform/digital_identity_api/single_user_widget.js' + ] input_type = 'hidden' template_name = "cdh.integration_platform/digital_identity_api/single_user_widget.html" - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - add_js_file( - 'cdh.integration_platform/digital_identity_api/single_user_widget' - '.js' - ) - @property def is_hidden(self): return False From 08548718966a3201376a3ed0f35b71a6a8c441fd Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Fri, 20 Oct 2023 12:25:41 +0200 Subject: [PATCH 10/34] fix: use the DjangoJSONEnconder as base That one _can_ handle proxy objects, such as lazy strings --- src/cdh/vue3/templatetags/vue3.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/cdh/vue3/templatetags/vue3.py b/src/cdh/vue3/templatetags/vue3.py index f016f595..44a37d99 100644 --- a/src/cdh/vue3/templatetags/vue3.py +++ b/src/cdh/vue3/templatetags/vue3.py @@ -6,6 +6,7 @@ from django import template from django.conf import settings +from django.core.serializers.json import DjangoJSONEncoder from django.templatetags.static import static from django.utils.html import format_html from django.utils.safestring import mark_safe @@ -14,7 +15,7 @@ register = template.Library() -class VueJSONEncoder(json.JSONEncoder): +class VueJSONEncoder(DjangoJSONEncoder): def encode(self, obj): if hasattr(obj, "_wrapped"): return super().encode(obj._wrapped) @@ -119,8 +120,10 @@ def render(self, context): binding_defs = [] for prop, value in self.props.items(): try: - binding_defs.append('data["{}"] = {};'.format(prop, value(context))) - except Exception: + val = value(context) + binding_defs.append('data["{}"] = {};'.format(prop, val)) + except Exception as e: + print(e) raise RuntimeError(f'Failed binding proeprty "{prop}"') binding = mark_safe("\n".join(binding_defs)) From 3b14659c5123fab0267bb34f0c8311189a262c1f Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Fri, 20 Oct 2023 12:51:35 +0200 Subject: [PATCH 11/34] chore: use cdh-vue-lib 0.2.2 --- assets/vue/uu-list/package.json | 2 +- assets/vue/uu-list/yarn.lock | 6 ++-- .../components/uu-list/UUList.iife.js | 30 +++++++++---------- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/assets/vue/uu-list/package.json b/assets/vue/uu-list/package.json index 3a492b91..76371563 100644 --- a/assets/vue/uu-list/package.json +++ b/assets/vue/uu-list/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.0" + "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.2" }, "devDependencies": { "@vitejs/plugin-vue": "^4.3.4", diff --git a/assets/vue/uu-list/yarn.lock b/assets/vue/uu-list/yarn.lock index 6cd19f07..c332a90b 100644 --- a/assets/vue/uu-list/yarn.lock +++ b/assets/vue/uu-list/yarn.lock @@ -248,9 +248,9 @@ bootstrap@5.3.1: resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.1.tgz#8ca07040ad15d7f75891d1504cf14c5dedfb1cfe" integrity sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g== -"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.0": - version "0.2.0" - resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#844da7418fced8fa6702656de0e9693ff3bcfc69" +"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.2": + version "0.2.2" + resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#00025fd15143fdfdd3131d927b64cf0c2112aa73" dependencies: uu-bootstrap "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0" uuid "^9.0.0" diff --git a/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js b/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js index d249c360..7a6dd002 100644 --- a/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js +++ b/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js @@ -5536,9 +5536,9 @@ ${codeFrame}` : message); setup(i) { const t2 = i, o = vue.ref(t2.config.pageSize), n = vue.ref(1), e = vue.ref(""), l = vue.ref("id"), a = vue.ref(true); function u() { - var f; + var m; let p = {}; - return (f = t2.config.filters) == null || f.forEach(($) => { + return (m = t2.config.filters) == null || m.forEach(($) => { var O; if ($.initial) { p[$.field] = $.initial; @@ -5562,14 +5562,14 @@ ${codeFrame}` : message); const E = vue.computed(() => { let p = []; p.push("page_size=" + encodeURIComponent(o.value)); - for (const [f, $] of Object.entries(_.value)) + for (const [m, $] of Object.entries(_.value)) $ != null && (typeof $ == "object" ? $.forEach( - (O) => p.push(f + "=" + encodeURIComponent(O)) - ) : p.push(f + "=" + encodeURIComponent($))); + (O) => p.push(m + "=" + encodeURIComponent(O)) + ) : p.push(m + "=" + encodeURIComponent($))); return e.value && p.push("search=" + encodeURIComponent(e.value)), p.push("ordering=" + encodeURIComponent(l.value)), n.value = 1, p; }), P = vue.computed(() => { - let p = E.value, f = "page=" + encodeURIComponent(n.value); - return p.length !== 0 && (f = "&" + f), "?" + p.join("&") + f; + let p = E.value, m = "page=" + encodeURIComponent(n.value); + return p.length !== 0 && (m = "&" + m), "?" + p.join("&") + m; }), D = vue.computed(() => { let p = new URL(window.location.protocol + "//" + window.location.host); return p.pathname = t2.config.dataUri, p.search = P.value, console.log(p.toString()), p.toString(); @@ -5580,8 +5580,8 @@ ${codeFrame}` : message); const y = vue.ref(null); function F() { y.value && y.value.abort(), y.value = new AbortController(), a.value = true, fetch(D.value, { signal: y.value.signal }).then((p) => { - p.json().then((f) => { - b.value = f, a.value = false, y.value = null; + p.json().then((m) => { + b.value = m, a.value = false, m.ordering && (l.value = m.ordering), y.value = null; }); }).catch((p) => { console.log(p); @@ -5589,7 +5589,7 @@ ${codeFrame}` : message); } return vue.onMounted(() => { F(); - }), (p, f) => { + }), (p, m) => { var $, O, Z; return vue.openBlock(), vue.createBlock(ct, { "is-loading": a.value, @@ -5607,11 +5607,11 @@ ${codeFrame}` : message); filters: p.config.filters ?? [], "filter-values": _.value, container: p.config.container, - "onUpdate:search": f[0] || (f[0] = (C) => e.value = C), - "onUpdate:currentSort": f[1] || (f[1] = (C) => l.value = C), - "onUpdate:pageSize": f[2] || (f[2] = (C) => o.value = C), - "onUpdate:currentPage": f[3] || (f[3] = (C) => n.value = C), - "onUpdate:filterValues": f[4] || (f[4] = (C) => _.value = C) + "onUpdate:search": m[0] || (m[0] = (C) => e.value = C), + "onUpdate:currentSort": m[1] || (m[1] = (C) => l.value = C), + "onUpdate:pageSize": m[2] || (m[2] = (C) => o.value = C), + "onUpdate:currentPage": m[3] || (m[3] = (C) => n.value = C), + "onUpdate:filterValues": m[4] || (m[4] = (C) => _.value = C) }, { data: vue.withCtx(({ data: C, isLoading: oe }) => [ vue.createVNode(ne, { From f3dd309e10ffcca340acfd6e0277306671512c1b Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Fri, 20 Oct 2023 13:36:26 +0200 Subject: [PATCH 12/34] fix: ordering was always set to default --- src/cdh/vue3/components/uu_list/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cdh/vue3/components/uu_list/views.py b/src/cdh/vue3/components/uu_list/views.py index 3bada373..badd1eb8 100644 --- a/src/cdh/vue3/components/uu_list/views.py +++ b/src/cdh/vue3/components/uu_list/views.py @@ -41,7 +41,7 @@ class UUListAPIView(generics.ListAPIView): def get_paginated_response(self, data): data = super().get_paginated_response(data) - data["ordering"] = self.ordering + data["ordering"] = self.request.query_params.get('ordering', self.ordering) return Response(data) From 8b3c0070b872d63492401157b5dbfa7e5ef02161 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 23 Oct 2023 12:54:27 +0200 Subject: [PATCH 13/34] feature: fake form field for headers etc Fixes #62 --- dev/main/forms.py | 108 ++++--- .../templates/main/custom_styles_form.html | 2 +- src/cdh/core/forms.py | 306 ++++++++++++------ .../templates/cdh.core/form_template.html | 54 ++-- .../cdh.core/forms/widgets/text.html | 3 + 5 files changed, 303 insertions(+), 170 deletions(-) create mode 100644 src/cdh/core/templates/cdh.core/forms/widgets/text.html diff --git a/dev/main/forms.py b/dev/main/forms.py index b33c823a..42626ade 100644 --- a/dev/main/forms.py +++ b/dev/main/forms.py @@ -1,6 +1,7 @@ from django import forms from django.urls import reverse_lazy from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy as _ from cdh.core import fields as core_fields from cdh.core.forms import SplitMonthInput, TemplatedForm, TemplatedModelForm @@ -13,17 +14,11 @@ class FormStylesForm(forms.Form): text = forms.CharField() - textarea = forms.CharField( - widget=forms.Textarea - ) + textarea = forms.CharField(widget=forms.Textarea) - django_date = forms.DateField( - help_text="Using django's version of the field" - ) + django_date = forms.DateField(help_text="Using django's version of the field") - django_time = forms.TimeField( - help_text="Using django's version of the field" - ) + django_time = forms.TimeField(help_text="Using django's version of the field") django_datetime = forms.DateTimeField( help_text="Using django's version of the field" @@ -33,13 +28,9 @@ class FormStylesForm(forms.Form): help_text="Using django's version of the field" ) - core_date = core_fields.DateField( - help_text="Using core's version of the field" - ) + core_date = core_fields.DateField(help_text="Using core's version of the field") - core_time = core_fields.TimeField( - help_text="Using core's version of the field" - ) + core_time = core_fields.TimeField(help_text="Using core's version of the field") core_datetime = core_fields.DateTimeField( help_text="Using core's version of the field" @@ -51,27 +42,31 @@ class FormStylesForm(forms.Form): checkbox = forms.BooleanField() - choice = forms.ChoiceField(choices=[ - (1, "Train"), - (2, "Bus"), - (3, "Aeroplane"), - (4, "Bike"), - (5, "Feet"), - (6, "Magical Unicorn"), - (6, "Broom"), - (6, "Thestrals"), - ]) - - typed_choice = forms.TypedChoiceField(choices=[ - (1, "Train"), - (2, "Bus"), - (3, "Aeroplane"), - (4, "Bike"), - (5, "Feet"), - (6, "Magical Unicorn"), - (6, "Broom"), - (6, "Thestrals"), - ]) + choice = forms.ChoiceField( + choices=[ + (1, "Train"), + (2, "Bus"), + (3, "Aeroplane"), + (4, "Bike"), + (5, "Feet"), + (6, "Magical Unicorn"), + (6, "Broom"), + (6, "Thestrals"), + ] + ) + + typed_choice = forms.TypedChoiceField( + choices=[ + (1, "Train"), + (2, "Bus"), + (3, "Aeroplane"), + (4, "Bike"), + (5, "Feet"), + (6, "Magical Unicorn"), + (6, "Broom"), + (6, "Thestrals"), + ] + ) radio = forms.TypedChoiceField( choices=[ @@ -84,7 +79,7 @@ class FormStylesForm(forms.Form): (6, "Broom"), (6, "Thestrals"), ], - widget=forms.RadioSelect + widget=forms.RadioSelect, ) integer = forms.IntegerField() @@ -117,6 +112,9 @@ class FormStylesForm(forms.Form): class CustomTemplateFormStylesForm(TemplatedForm): + info_header = core_fields.TemplatedFromTextField( + header=_("People involved"), classes="" + ) text = forms.CharField( label="Onderzoeksprojectnaam", @@ -127,25 +125,31 @@ class CustomTemplateFormStylesForm(TemplatedForm): label="Eindverantwoordelijke", ) + date_header = core_fields.TemplatedFromTextField( + header=_("Project duration"), header_element="h4" + ) + date_start = core_fields.DateField( label="Begin Datum", help_text="Op deze datum wordt de verwerking actief in het register " - "van verwerkingen" + "van verwerkingen", ) date_end = core_fields.DateField( label="Eind Datum", - help_text=mark_safe("Dit is de datum waarop de resultaten worden " - "gepubliceerd." - "
" - "Op deze datum gaat de archiveringstermijn van de " - "onderzoeksdata in") + help_text=mark_safe( + "Dit is de datum waarop de resultaten worden " + "gepubliceerd." + "
" + "Op deze datum gaat de archiveringstermijn van de " + "onderzoeksdata in" + ), ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) for visible in self.visible_fields(): - visible.field.widget.attrs['class'] = 'form-control' + visible.field.widget.attrs["class"] = "form-control" class JqueryUIFormStylesForm(forms.Form): @@ -153,7 +157,6 @@ class JqueryUIFormStylesForm(forms.Form): class CustomEmailForm(TemplatedForm): - sender = forms.CharField() banner = forms.CharField() @@ -162,10 +165,10 @@ class CustomEmailForm(TemplatedForm): label="Mail content", help_text=ExampleCustomTemplateEmail.help_text(), widget=EmailContentEditWidget( - reverse_lazy('main:custom_email_form_preview'), - sender_field='sender', - banner_field='banner', - footer_field='footer', + reverse_lazy("main:custom_email_form_preview"), + sender_field="sender", + banner_field="banner", + footer_field="footer", ), ) @@ -174,9 +177,8 @@ class CustomEmailForm(TemplatedForm): class MonthFieldTestForm(TemplatedModelForm): show_valid_fields = False + class Meta: model = MonthFieldTest - fields = ['single_month_field', 'split_month_field'] - widgets = { - 'split_month_field': SplitMonthInput - } + fields = ["single_month_field", "split_month_field"] + widgets = {"split_month_field": SplitMonthInput} diff --git a/dev/main/templates/main/custom_styles_form.html b/dev/main/templates/main/custom_styles_form.html index 0065fe65..052caf48 100644 --- a/dev/main/templates/main/custom_styles_form.html +++ b/dev/main/templates/main/custom_styles_form.html @@ -10,7 +10,7 @@

Custom form template

Note: this required Django 4+

-
+ {% csrf_token %} {{ form }}
diff --git a/src/cdh/core/forms.py b/src/cdh/core/forms.py index 72c33c0e..14643155 100644 --- a/src/cdh/core/forms.py +++ b/src/cdh/core/forms.py @@ -1,10 +1,21 @@ from datetime import date -from typing import List, Optional +from typing import List, Optional, Union from django import forms from django.core.exceptions import ValidationError -from django.forms.widgets import CheckboxInput, CheckboxSelectMultiple, \ - DateInput, MultiWidget, NumberInput, RadioSelect, Select, TextInput +from django.forms.renderers import get_default_renderer +from django.forms.widgets import ( + CheckboxInput, + CheckboxSelectMultiple, + DateInput, + MultiWidget, + NumberInput, + RadioSelect, + Select, + TextInput, +) +from django.utils.html import format_html +from django.utils.safestring import mark_safe from django.utils.translation import gettext_lazy as _ from cdh.core.file_loading import add_js_file @@ -21,7 +32,7 @@ class TemplatedFormMixin: texts """ - template_name = 'cdh.core/form_template.html' + template_name = "cdh.core/form_template.html" # If False, it will hide the help column on every field show_help_column = True # If False, it will hide the help column on fields without a help text @@ -34,24 +45,24 @@ def get_context(self): form_was_changed = len(self.changed_data) != 0 - for field, errors in context['fields']: + for field, errors in context["fields"]: # Fix for fields that do not set this attr - if 'class' not in field.field.widget.attrs: - field.field.widget.attrs['class'] = '' + if "class" not in field.field.widget.attrs: + field.field.widget.attrs["class"] = "" - field.field.widget.attrs['class'] += ' form-control' + field.field.widget.attrs["class"] += " form-control" if errors: - field.field.widget.attrs['valid'] = 'is-invalid' - field.field.widget.attrs['class'] += ' is-invalid' + field.field.widget.attrs["valid"] = "is-invalid" + field.field.widget.attrs["class"] += " is-invalid" elif form_was_changed and self.show_valid_fields: # Only add if the data on the form was changed, as that would # indicate a validation step gone wrong. - field.field.widget.attrs['class'] += ' is-valid' - field.field.widget.attrs['valid'] = 'is-valid' + field.field.widget.attrs["class"] += " is-valid" + field.field.widget.attrs["valid"] = "is-valid" - context['show_help_column'] = self.show_help_column - context['always_show_help_column'] = self.always_show_help_column + context["show_help_column"] = self.show_help_column + context["always_show_help_column"] = self.always_show_help_column return context @@ -61,6 +72,7 @@ class TemplatedForm(TemplatedFormMixin, forms.Form): Uses :class:`.TemplatedFormMixin` """ + pass @@ -69,6 +81,7 @@ class TemplatedModelForm(TemplatedFormMixin, forms.ModelForm): Uses :class:`.TemplatedFormMixin` """ + pass @@ -76,105 +89,209 @@ class BootstrapSelect(Select): """Override of Django's version to use the right Bootstrap classes""" def get_context(self, name, value, attrs): - if 'class' not in attrs: - attrs['class'] = "" + if "class" not in attrs: + attrs["class"] = "" - if 'form-control' in attrs['class']: - attrs['class'] = attrs['class'].replace( - 'form-control', - 'form-select' - ) + if "form-control" in attrs["class"]: + attrs["class"] = attrs["class"].replace("form-control", "form-select") else: - attrs['class'] += ' form-select' + attrs["class"] += " form-select" return super().get_context(name, value, attrs) class BootstrapCheckboxInput(CheckboxInput): """Override of Django's version to use the right Bootstrap classes""" + template_name = "cdh.core/forms/widgets/bootstrap_checkbox.html" class BootstrapRadioSelect(RadioSelect): """Override of Django's version to use the right Bootstrap classes""" + template_name = "cdh.core/forms/widgets/bootstrap_radio.html" option_template_name = "cdh.core/forms/widgets/bootstrap_radio_option.html" class BootstrapCheckboxSelectMultiple(CheckboxSelectMultiple): """Override of Django's version to use the right Bootstrap classes""" + template_name = "cdh.core/forms/widgets/bootstrap_radio.html" option_template_name = "cdh.core/forms/widgets/bootstrap_radio_option.html" +class TemplatedFromTextWidget(forms.Widget): + template_name = "cdh.core/forms/widgets/text.html" + + def get_context(self, name, value, attrs): + context = super().get_context(name, value, attrs) + # Needed in the form template, to avoid rendering this inside a UU-Form + # row. + context["template_text"] = True + + return context + + +class TemplatedFromTextField(forms.Field): + widget = TemplatedFromTextWidget + form_text = True + + def __init__( + self, + *args, + caption: Optional[str] = None, + header: Optional[str] = None, + header_element: str = "h3", + classes: str = "pt-4", + template: Optional[str] = None, + template_context: Optional[Union[dict, callable]] = None, + **kwargs, + ): + """A fake field that just displays a header/some other text. + + Either use the default header with optional caption, or provide your + own template to render. + + Note: use Form.field_order to place this field where you want when + using model forms. + + :param header: The header text. Ignored if template is specified + :param caption: (optional) a caption text. Ignored if template is specified + :param classes: Any CSS classes to add to the containing element. + Defaults to 'pt-4' + :param template: A template to render + :param template_context: Either a dict, or a callable returning a + dict, with template context. + """ + super().__init__(*args, **kwargs) + self.caption = caption + self.header = header + self.header_element = header_element + self.classes = classes + self.template = template + self.template_context = template_context + + def prepare_value(self, value): + """We use the value to generate the content; it's a hack, but due to + limitations of Django forms it's the cleanest way to pass it to the + widget.""" + if self.template: + renderer = get_default_renderer() + context = self.template_context + + if callable(context): + context = context() + + if context is None: + context = {} + + return mark_safe(renderer.render(self.template, context)) + + header = "" + if self.header: + header = mark_safe( + f"<{self.header_element}>{self.header}" + ) + + caption = "" + if self.caption: + caption = mark_safe(f"

{self.caption}

") + + return format_html( + '
{header}{caption}
', + classes=self.classes, + header=header, + caption=caption, + ) + + def to_python(self, value): + return None + + def validate(self, value): + pass + + def run_validators(self, value): + pass + + class PasswordField(forms.CharField): """Override of Django's version to use the right HTML5 input""" + widget = forms.PasswordInput class ColorInput(forms.TextInput): """Override of Django's version to use the right HTML5 input""" - input_type = 'color' + + input_type = "color" class ColorField(forms.CharField): """Override of Django's version to use the right HTML5 input""" + widget = ColorInput class TelephoneInput(forms.TextInput): """Override of Django's version to use the right HTML5 input""" - input_type = 'tel' + + input_type = "tel" class TelephoneField(forms.CharField): """Override of Django's version to use the right HTML5 input""" + widget = TelephoneInput class DateInput(forms.DateInput): """Override of Django's version to use the right HTML5 input""" - input_type = 'date' + + input_type = "date" class DateField(forms.DateField): """Override of Django's version to use the right HTML5 input""" + widget = DateInput class TimeInput(forms.TimeInput): """Override of Django's version to use the right HTML5 input""" - input_type = 'time' + + input_type = "time" class TimeField(forms.TimeField): """Override of Django's version to use the right HTML5 input""" + widget = TimeInput class DateTimeInput(forms.DateTimeInput): """Override of Django's version to use the right HTML5 input""" - input_type = 'datetime-local' + + input_type = "datetime-local" class DateTimeField(forms.DateTimeField): """Override of Django's version to use the right HTML5 input""" + widget = DateTimeInput class BootstrapMultiWidgetMixin: - template_name = 'cdh.core/forms/widgets/bootstrap_multiwidget.html' + template_name = "cdh.core/forms/widgets/bootstrap_multiwidget.html" def get_context(self, name, value, attrs): subwidgets = {} - if 'subwidgets' in self.attrs: - subwidgets = self.attrs['subwidgets'] + if "subwidgets" in self.attrs: + subwidgets = self.attrs["subwidgets"] context = super().get_context(name, value, attrs) for subwidget_name, subwidget_attrs in subwidgets.items(): - if subwidget_name in context['widget']['subwidgets']: - context['widget']['subwidgets']['attrs'].update( - subwidget_attrs) + if subwidget_name in context["widget"]["subwidgets"]: + context["widget"]["subwidgets"]["attrs"].update(subwidget_attrs) return context @@ -185,7 +302,15 @@ class BootstrapMultiWidget(BootstrapMultiWidgetMixin, MultiWidget): class SplitDateTimeWidget(forms.SplitDateTimeWidget): """Override of Django SplitDateTimeWidget to use HTML5 fields""" - def __init__(self, attrs=None, date_format=None, time_format=None, date_attrs=None, time_attrs=None): + + def __init__( + self, + attrs=None, + date_format=None, + time_format=None, + date_attrs=None, + time_attrs=None, + ): widgets = ( DateInput( attrs=attrs if date_attrs is None else date_attrs, @@ -199,31 +324,32 @@ def __init__(self, attrs=None, date_format=None, time_format=None, date_attrs=No forms.MultiWidget.__init__(self, widgets) -class BootstrapSplitDateTimeWidget(BootstrapMultiWidgetMixin, - SplitDateTimeWidget): +class BootstrapSplitDateTimeWidget(BootstrapMultiWidgetMixin, SplitDateTimeWidget): pass class BootstrapSplitDateTimeField(forms.SplitDateTimeField): """Override of Django SplitDateTimeField to use bootstrap multiwidget""" + widget = BootstrapSplitDateTimeWidget class SplitDateTimeField(forms.SplitDateTimeField): """Override of Django SplitDateTimeField to use HTML5 fields""" + widget = SplitDateTimeWidget class MonthInput(TextInput): - input_type = 'month' + input_type = "month" def __init__(self, attrs=None): if attrs is None: attrs = {} - attrs['pattern'] = "[0-9]{4}-[0-9]{1,2}" - if 'placeholder' not in attrs: - attrs['placeholder'] = 'yyyy-mm' + attrs["pattern"] = "[0-9]{4}-[0-9]{1,2}" + if "placeholder" not in attrs: + attrs["placeholder"] = "yyyy-mm" super().__init__(attrs) @@ -238,37 +364,36 @@ def format_value(self, value): class SplitMonthInput(BootstrapMultiWidget): - def __init__(self, attrs=None): month_attrs = attrs if attrs else {} year_attrs = attrs if attrs else {} - year_attrs['placeholder'] = _('core:fields:month:year_placeholder') - if hasattr(year_attrs, 'year_min'): - year_attrs['min'] = year_attrs.get('year_min') - if hasattr(year_attrs, 'year_max'): - year_attrs['max'] = year_attrs.get('year_max') + year_attrs["placeholder"] = _("core:fields:month:year_placeholder") + if hasattr(year_attrs, "year_min"): + year_attrs["min"] = year_attrs.get("year_min") + if hasattr(year_attrs, "year_max"): + year_attrs["max"] = year_attrs.get("year_max") widgets = { - 'month': BootstrapSelect( + "month": BootstrapSelect( attrs=month_attrs, choices=( - ('', _('core:fields:month:month_placeholder')), - (1, _('core:fields:month:january')), - (2, _('core:fields:month:february')), - (3, _('core:fields:month:march')), - (4, _('core:fields:month:april')), - (5, _('core:fields:month:may')), - (6, _('core:fields:month:june')), - (7, _('core:fields:month:july')), - (8, _('core:fields:month:august')), - (9, _('core:fields:month:september')), - (10, _('core:fields:month:october')), - (11, _('core:fields:month:november')), - (12, _('core:fields:month:december')), + ("", _("core:fields:month:month_placeholder")), + (1, _("core:fields:month:january")), + (2, _("core:fields:month:february")), + (3, _("core:fields:month:march")), + (4, _("core:fields:month:april")), + (5, _("core:fields:month:may")), + (6, _("core:fields:month:june")), + (7, _("core:fields:month:july")), + (8, _("core:fields:month:august")), + (9, _("core:fields:month:september")), + (10, _("core:fields:month:october")), + (11, _("core:fields:month:november")), + (12, _("core:fields:month:december")), ), ), - 'year': NumberInput( + "year": NumberInput( attrs=year_attrs, ), } @@ -294,14 +419,14 @@ def __init__(self, year_min=1970, year_max=9999, **kwargs): if isinstance(self.widget, MonthInput): # This could be done in widget_attrs, but the other widget cannot # be done there, so I prefer to keep them together - self.widget.attrs['min'] = f"{year_min}-01" - self.widget.attrs['max'] = f"{year_max}-12" + self.widget.attrs["min"] = f"{year_min}-01" + self.widget.attrs["max"] = f"{year_max}-12" if isinstance(self.widget, SplitMonthInput): # We have to manually set these attrs to the right widget, # as MultiWidget has not other way to set these month_widget, year_widget = self.widget.widgets - year_widget.attrs['min'] = year_min - year_widget.attrs['max'] = year_max + year_widget.attrs["min"] = year_min + year_widget.attrs["max"] = year_max def to_python(self, value): if value is None or value == "": @@ -310,7 +435,7 @@ def to_python(self, value): # MonthInput returns a string if isinstance(value, str): try: - year, month = value.split('-', maxsplit=1) + year, month = value.split("-", maxsplit=1) year = int(year) month = int(month) @@ -322,9 +447,7 @@ def to_python(self, value): # Catches both the int conversions, and the cases where splitting # doesn't work except (ValueError, TypeError): - raise ValidationError( - self.error_messages["invalid"], code="invalid" - ) + raise ValidationError(self.error_messages["invalid"], code="invalid") else: # SplitMonthInput returns a list of [month, year] month, year = value @@ -336,9 +459,7 @@ def to_python(self, value): year = int(year) month = int(month) except (ValueError, TypeError): - raise ValidationError( - self.error_messages["invalid"], code="invalid" - ) + raise ValidationError(self.error_messages["invalid"], code="invalid") try: if month and year: @@ -347,26 +468,25 @@ def to_python(self, value): return Month(year, month) except ValueError: - raise ValidationError( - self.error_messages["invalid"], code="invalid" - ) + raise ValidationError(self.error_messages["invalid"], code="invalid") raise ValidationError(self.error_messages["invalid"], code="invalid") class TinyMCEWidget(forms.Widget): """A TinyMCE widget for HTML editting""" + template_name = "cdh.core/forms/widgets/tinymce.html" def __init__( - self, - menubar: bool = False, - plugins: Optional[List[str]] = None, - toolbar: Optional[str] = 'undo redo casechange blocks bold ' - 'italic underline link bullist numlist' - ' | code', - *args, - **kwargs + self, + menubar: bool = False, + plugins: Optional[List[str]] = None, + toolbar: Optional[str] = "undo redo casechange blocks bold " + "italic underline link bullist numlist" + " | code", + *args, + **kwargs, ): """ All parameters should have sensible defaults. @@ -380,23 +500,27 @@ def __init__( if plugins is None: plugins = [ - 'link', 'image', 'visualblocks', 'wordcount', 'lists', 'code', + "link", + "image", + "visualblocks", + "wordcount", + "lists", + "code", ] self.menubar = menubar self.plugins = plugins self.toolbar = toolbar - add_js_file('cdh.core/js/tinymce/tinymce.min.js') - add_js_file('cdh.core/js/tinymce/tinymce-jquery.min.js') - add_js_file('cdh.core/js/tinymce/shim.js') + add_js_file("cdh.core/js/tinymce/tinymce.min.js") + add_js_file("cdh.core/js/tinymce/tinymce-jquery.min.js") + add_js_file("cdh.core/js/tinymce/shim.js") def get_context(self, *args, **kwargs): context = super().get_context(*args, **kwargs) - context['menubar'] = self.menubar - context['plugins'] = ",".join(self.plugins) - context['toolbar'] = self.toolbar + context["menubar"] = self.menubar + context["plugins"] = ",".join(self.plugins) + context["toolbar"] = self.toolbar return context - diff --git a/src/cdh/core/templates/cdh.core/form_template.html b/src/cdh/core/templates/cdh.core/form_template.html index 56278ad6..2ae3d535 100644 --- a/src/cdh/core/templates/cdh.core/form_template.html +++ b/src/cdh/core/templates/cdh.core/form_template.html @@ -6,33 +6,37 @@ {% endif %} {% for field, errors in fields %} -
-
- - {{ field }} -
- {% for error in field.errors %} - {{ error }} - {% if not forloop.last %} -
- {% endif %} - {% endfor %} + {% if field.field.form_text %} + {{ field }} + {% else %} +
+
+ + {{ field }} +
+ {% for error in field.errors %} + {{ error }} + {% if not forloop.last %} +
+ {% endif %} + {% endfor %} +
+ {% if show_help_column and field.help_text %} +
+ {% if field.help_text %} + {{ field.help_text|safe }} + {% endif %} +
+ {% endif %}
- {% if show_help_column and field.help_text %} -
- {% if field.help_text %} - {{ field.help_text|safe }} - {% endif %} -
- {% endif %} -
+ {% endif %} {% endfor %} {% for field in hidden_fields %}{{ field }}{% endfor %} diff --git a/src/cdh/core/templates/cdh.core/forms/widgets/text.html b/src/cdh/core/templates/cdh.core/forms/widgets/text.html new file mode 100644 index 00000000..12ad3517 --- /dev/null +++ b/src/cdh/core/templates/cdh.core/forms/widgets/text.html @@ -0,0 +1,3 @@ +
+ {{ widget.value }} +
\ No newline at end of file From 4466820352d752141532b21fd5c2f57010b33462 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 23 Oct 2023 13:35:50 +0200 Subject: [PATCH 14/34] fix: From -> Form typo --- dev/main/forms.py | 4 ++-- src/cdh/core/forms.py | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dev/main/forms.py b/dev/main/forms.py index 42626ade..77a47daf 100644 --- a/dev/main/forms.py +++ b/dev/main/forms.py @@ -112,7 +112,7 @@ class FormStylesForm(forms.Form): class CustomTemplateFormStylesForm(TemplatedForm): - info_header = core_fields.TemplatedFromTextField( + info_header = core_fields.TemplatedFormTextField( header=_("People involved"), classes="" ) @@ -125,7 +125,7 @@ class CustomTemplateFormStylesForm(TemplatedForm): label="Eindverantwoordelijke", ) - date_header = core_fields.TemplatedFromTextField( + date_header = core_fields.TemplatedFormTextField( header=_("Project duration"), header_element="h4" ) diff --git a/src/cdh/core/forms.py b/src/cdh/core/forms.py index 14643155..372ef012 100644 --- a/src/cdh/core/forms.py +++ b/src/cdh/core/forms.py @@ -120,7 +120,7 @@ class BootstrapCheckboxSelectMultiple(CheckboxSelectMultiple): option_template_name = "cdh.core/forms/widgets/bootstrap_radio_option.html" -class TemplatedFromTextWidget(forms.Widget): +class TemplatedFormTextWidget(forms.Widget): template_name = "cdh.core/forms/widgets/text.html" def get_context(self, name, value, attrs): @@ -132,8 +132,8 @@ def get_context(self, name, value, attrs): return context -class TemplatedFromTextField(forms.Field): - widget = TemplatedFromTextWidget +class TemplatedFormTextField(forms.Field): + widget = TemplatedFormTextWidget form_text = True def __init__( From 4c622eec124e9d3a833fee972b91ced519d6fcaf Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 23 Oct 2023 13:41:41 +0200 Subject: [PATCH 15/34] docs: added HTML injection warning --- src/cdh/core/forms.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cdh/core/forms.py b/src/cdh/core/forms.py index 372ef012..3bbf81c4 100644 --- a/src/cdh/core/forms.py +++ b/src/cdh/core/forms.py @@ -155,6 +155,11 @@ def __init__( Note: use Form.field_order to place this field where you want when using model forms. + Note 2: as always, make sure any used variables are safe as + they will be marked safe automatically. + Please escape any user-supplied content before it's passed to this + field. + :param header: The header text. Ignored if template is specified :param caption: (optional) a caption text. Ignored if template is specified :param classes: Any CSS classes to add to the containing element. From 5865efab255ee974922ec6664b1e8fed574cf2ea Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 23 Oct 2023 14:45:20 +0200 Subject: [PATCH 16/34] fix: custom date(time) fields were not using ISO formatting --- src/cdh/core/forms.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/cdh/core/forms.py b/src/cdh/core/forms.py index 3bbf81c4..c581ef71 100644 --- a/src/cdh/core/forms.py +++ b/src/cdh/core/forms.py @@ -7,7 +7,6 @@ from django.forms.widgets import ( CheckboxInput, CheckboxSelectMultiple, - DateInput, MultiWidget, NumberInput, RadioSelect, @@ -254,6 +253,10 @@ class DateInput(forms.DateInput): input_type = "date" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.format = self.format or "%Y-%m-%d" + class DateField(forms.DateField): """Override of Django's version to use the right HTML5 input""" @@ -266,6 +269,10 @@ class TimeInput(forms.TimeInput): input_type = "time" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.format = self.format or "%H:%M" + class TimeField(forms.TimeField): """Override of Django's version to use the right HTML5 input""" @@ -278,6 +285,10 @@ class DateTimeInput(forms.DateTimeInput): input_type = "datetime-local" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.format = self.format or "%Y-%m-%d %H:%M" + class DateTimeField(forms.DateTimeField): """Override of Django's version to use the right HTML5 input""" From 8a117683ff081fff64ee5dd264b9e6a29bca14d4 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 20 Nov 2023 13:25:08 +0100 Subject: [PATCH 17/34] chore: update cdh-vue-lib to 0.3.1 --- assets/vue/uu-list/package.json | 2 +- assets/vue/uu-list/yarn.lock | 6 +- .../components/uu-list/UUList.iife.js | 209 +++++++++++------- 3 files changed, 137 insertions(+), 80 deletions(-) diff --git a/assets/vue/uu-list/package.json b/assets/vue/uu-list/package.json index 76371563..3bbc0b28 100644 --- a/assets/vue/uu-list/package.json +++ b/assets/vue/uu-list/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.2" + "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.1" }, "devDependencies": { "@vitejs/plugin-vue": "^4.3.4", diff --git a/assets/vue/uu-list/yarn.lock b/assets/vue/uu-list/yarn.lock index c332a90b..d6515a2b 100644 --- a/assets/vue/uu-list/yarn.lock +++ b/assets/vue/uu-list/yarn.lock @@ -248,9 +248,9 @@ bootstrap@5.3.1: resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.1.tgz#8ca07040ad15d7f75891d1504cf14c5dedfb1cfe" integrity sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g== -"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.2.2": - version "0.2.2" - resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#00025fd15143fdfdd3131d927b64cf0c2112aa73" +"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.1": + version "0.3.1" + resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#ba2ec6c4e601ae21723164adfdd70b0c6a9b1bd3" dependencies: uu-bootstrap "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0" uuid "^9.0.0" diff --git a/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js b/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js index 7a6dd002..3718d933 100644 --- a/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js +++ b/src/cdh/vue3/static/cdh.vue3/components/uu-list/UUList.iife.js @@ -40,7 +40,7 @@ var UUList = function(vue) { return unsafeStringify(rnds); } /*! - * shared v9.5.0 + * shared v9.6.2 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */ @@ -186,7 +186,7 @@ var UUList = function(vue) { return emitter; } /*! - * message-compiler v9.5.0 + * message-compiler v9.6.2 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */ @@ -1681,7 +1681,7 @@ var UUList = function(vue) { } } /*! - * core-base v9.5.0 + * core-base v9.6.2 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */ @@ -2124,6 +2124,9 @@ var UUList = function(vue) { if (val === void 0) { return null; } + if (isFunction(last)) { + return null; + } last = val; i++; } @@ -2351,7 +2354,7 @@ var UUList = function(vue) { } return follow; } - const VERSION$1 = "9.5.0"; + const VERSION$1 = "9.6.2"; const NOT_REOSLVED = -1; const DEFAULT_LOCALE = "en-US"; const MISSING_RESOLVE_VALUE = ""; @@ -3252,11 +3255,11 @@ ${codeFrame}` : message); initFeatureFlags$1(); } /*! - * vue-i18n v9.5.0 + * vue-i18n v9.6.2 * (c) 2023 kazuya kawaguchi * Released under the MIT License. */ - const VERSION = "9.5.0"; + const VERSION = "9.6.2"; function initFeatureFlags() { if (typeof __VUE_I18N_FULL_INSTALL__ !== "boolean") { getGlobalThis().__VUE_I18N_FULL_INSTALL__ = true; @@ -3483,6 +3486,8 @@ ${codeFrame}` : message); return vue.createVNode(vue.Text, null, key, 0); } const DEVTOOLS_META = "__INTLIFY_META__"; + const NOOP_RETURN_ARRAY = () => []; + const NOOP_RETURN_FALSE = () => false; let composerID = 0; function defineCoreMissingHandler(missing) { return (ctx, locale, key, type) => { @@ -3497,6 +3502,7 @@ ${codeFrame}` : message); function createComposer(options = {}, VueI18nLegacy) { const { __root, __injectWithOption } = options; const _isGlobal = __root === void 0; + const flatJson = options.flatJson; let _inheritLocale = isBoolean(options.inheritLocale) ? options.inheritLocale : true; const _locale = vue.ref( // prettier-ignore @@ -3623,7 +3629,8 @@ ${codeFrame}` : message); _context.fallbackContext = void 0; } } - if (isNumber(ret) && ret === NOT_REOSLVED) { + if (warnType !== "translate exists" && // for not `te` (e.g `t`) + isNumber(ret) && ret === NOT_REOSLVED || warnType === "translate exists" && !ret) { const [key, arg2] = argumentParser(); if ({}.NODE_ENV !== "production" && __root && isString$1(key) && isResolvedTranslateMessage(warnType, arg2)) { if (_fallbackRoot && (isTranslateFallbackWarn(_fallbackWarn, key) || isTranslateMissingWarn(_missingWarn, key))) { @@ -3704,7 +3711,7 @@ ${codeFrame}` : message); "number format", // eslint-disable-next-line @typescript-eslint/no-explicit-any (root) => root[NumberPartsSymbol](...args), - () => [], + NOOP_RETURN_ARRAY, (val) => isString$1(val) || isArray(val) ); } @@ -3715,7 +3722,7 @@ ${codeFrame}` : message); "datetime format", // eslint-disable-next-line @typescript-eslint/no-explicit-any (root) => root[DatetimePartsSymbol](...args), - () => [], + NOOP_RETURN_ARRAY, (val) => isString$1(val) || isArray(val) ); } @@ -3724,11 +3731,17 @@ ${codeFrame}` : message); _context.pluralRules = _pluralRules; } function te2(key, locale2) { - if (!key) - return false; - const targetLocale = isString$1(locale2) ? locale2 : _locale.value; - const message = getLocaleMessage(targetLocale); - return _context.messageResolver(message, key) !== null; + return wrapWithDeps(() => { + if (!key) { + return false; + } + const targetLocale = isString$1(locale2) ? locale2 : _locale.value; + const message = getLocaleMessage(targetLocale); + const resolved = _context.messageResolver(message, key); + return isMessageAST(resolved) || isMessageFunction(resolved) || isString$1(resolved); + }, () => [key], "translate exists", (root) => { + return Reflect.apply(root.te, root, [key, locale2]); + }, NOOP_RETURN_FALSE, (val) => isBoolean(val)); } function resolveMessages(key) { let messages2 = null; @@ -3751,11 +3764,27 @@ ${codeFrame}` : message); return _messages.value[locale2] || {}; } function setLocaleMessage(locale2, message) { + if (flatJson) { + const _message = { [locale2]: message }; + for (const key in _message) { + if (hasOwn(_message, key)) { + handleFlatJson(_message[key]); + } + } + message = _message[locale2]; + } _messages.value[locale2] = message; _context.messages = _messages.value; } function mergeLocaleMessage(locale2, message) { _messages.value[locale2] = _messages.value[locale2] || {}; + const _message = { [locale2]: message }; + for (const key in _message) { + if (hasOwn(_message, key)) { + handleFlatJson(_message[key]); + } + } + message = _message[locale2]; deepCopy(message, _messages.value[locale2]); _context.messages = _messages.value; } @@ -4638,11 +4667,11 @@ ${codeFrame}` : message); ], 2))), 128)) ])); } - }), Oe = { + }), Le = { class: "pagination justify-content-center", role: "navigation", "aria-label": "pagination" - }, Ie = ["onClick"], Pe = { + }, Oe = ["onClick"], Ie = { key: 1, class: "page-link" }, q = /* @__PURE__ */ vue.defineComponent({ @@ -4656,44 +4685,44 @@ ${codeFrame}` : message); emits: ["change-page"], setup(i, { emit: t2 }) { const o = i; - function n(u, _, b) { - return Math.min(Math.max(u, _), b); + function n(u, _, y) { + return Math.min(Math.max(u, _), y); } const e = vue.computed(() => { - const u = o.numOptions, _ = o.currentpage - u, b = o.currentpage + u + 1, E = [], P = []; - let D; - for (let y = 1; y <= o.maxPages; y++) - (y === 1 || y === o.maxPages || y >= _ && y < b) && E.push(y); - for (const y of E) - D && (y - D === 2 ? P.push(D + 1) : y - D !== 1 && P.push(-42)), P.push(y), D = y; - return P; + const u = o.numOptions, _ = o.currentpage - u, y = o.currentpage + u + 1, P = [], I = []; + let U; + for (let $ = 1; $ <= o.maxPages; $++) + ($ === 1 || $ === o.maxPages || $ >= _ && $ < y) && P.push($); + for (const $ of P) + U && ($ - U === 2 ? I.push(U + 1) : $ - U !== 1 && I.push(-42)), I.push($), U = $; + return I; }); function l(u) { u = n(u, 1, o.maxPages), t2("change-page", u); } const { t: a } = useI18n(); - return (u, _) => (vue.openBlock(), vue.createElementBlock("ul", Oe, [ + return (u, _) => (vue.openBlock(), vue.createElementBlock("ul", Le, [ vue.createElementVNode("li", { class: vue.normalizeClass(["page-item page-button", u.currentpage === 1 ? "disabled" : ""]) }, [ u.showButtons ? (vue.openBlock(), vue.createElementBlock("a", { key: 0, class: "page-link", - onClick: _[0] || (_[0] = (b) => l(u.currentpage - 1)) + onClick: _[0] || (_[0] = (y) => l(u.currentpage - 1)) }, vue.toDisplayString(vue.unref(a)("previous")), 1)) : vue.createCommentVNode("", true) ], 2), - (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.value, (b) => (vue.openBlock(), vue.createElementBlock("li", { - key: b, + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.value, (y) => (vue.openBlock(), vue.createElementBlock("li", { + key: y, class: vue.normalizeClass([ "page-item", - (b === -42 ? "disabled page-ellipsis " : "") + (b === u.currentpage ? "active" : "") + (y === -42 ? "disabled page-ellipsis " : "") + (y === u.currentpage ? "active" : "") ]) }, [ - b !== -42 ? (vue.openBlock(), vue.createElementBlock("a", { + y !== -42 ? (vue.openBlock(), vue.createElementBlock("a", { key: 0, class: "page-link", - onClick: (E) => l(b) - }, vue.toDisplayString(b), 9, Ie)) : (vue.openBlock(), vue.createElementBlock("span", Pe, "…")) + onClick: (P) => l(y) + }, vue.toDisplayString(y), 9, Oe)) : (vue.openBlock(), vue.createElementBlock("span", Ie, "…")) ], 2))), 128)), vue.createElementVNode("li", { class: vue.normalizeClass(["page-item page-button", u.currentpage >= u.maxPages ? "disabled" : ""]) @@ -4701,7 +4730,7 @@ ${codeFrame}` : message); u.showButtons ? (vue.openBlock(), vue.createElementBlock("a", { key: 0, class: "page-link", - onClick: _[1] || (_[1] = (b) => l(u.currentpage + 1)) + onClick: _[1] || (_[1] = (y) => l(u.currentpage + 1)) }, vue.toDisplayString(vue.unref(a)("next")), 1)) : vue.createCommentVNode("", true) ], 2) ])); @@ -4736,7 +4765,7 @@ ${codeFrame}` : message); }); } typeof G == "function" && G(q); - const Ee = ["id", "value", "checked", "onClick"], Le = ["for"], Ne = /* @__PURE__ */ vue.defineComponent({ + const Pe = ["id", "value", "checked", "onClick"], Ee = ["for"], Ne = /* @__PURE__ */ vue.defineComponent({ __name: "BSRadioSelect", props: { options: {}, @@ -4757,11 +4786,11 @@ ${codeFrame}` : message); value: e, checked: o.modelValue == e, onClick: (a) => t2("update:model-value", e) - }, null, 8, Ee), + }, null, 8, Pe), vue.createElementVNode("label", { class: "form-check-label", for: "id_" + e - }, vue.toDisplayString(l), 9, Le) + }, vue.toDisplayString(l), 9, Ee) ], 2))), 128)) ])); } @@ -4870,9 +4899,9 @@ ${codeFrame}` : message); setup(i, { emit: t$1 }) { function o(a, u = 500) { let _; - return (...b) => { + return (...y) => { clearTimeout(_), _ = setTimeout(() => { - a.apply(this, b); + a.apply(this, y); }, u); }; } @@ -5067,11 +5096,19 @@ ${codeFrame}` : message); ]) ]), e.filtersEnabled ? (vue.openBlock(), vue.createElementBlock("div", lt, [ + vue.renderSlot(e.$slots, "filters-top", { + data: e.data, + isLoading: e.isLoading + }), vue.createVNode(Y, { filters: e.filters, "filter-values": e.filterValues, "onUpdate:filterValues": l[3] || (l[3] = (u) => e.$emit("update:filter-values", u)) - }, null, 8, ["filters", "filter-values"]) + }, null, 8, ["filters", "filter-values"]), + vue.renderSlot(e.$slots, "filters-bottom", { + data: e.data, + isLoading: e.isLoading + }) ])) : vue.createCommentVNode("", true), vue.createElementVNode("div", rt, [ vue.renderSlot(e.$slots, "data", { @@ -5122,12 +5159,20 @@ ${codeFrame}` : message); "model-value": e.search, "onUpdate:modelValue": l[0] || (l[0] = (a) => e.$emit("update:search", a)) }, null, 8, ["model-value"])) : vue.createCommentVNode("", true), + vue.renderSlot(e.$slots, "filters-top", { + data: e.data, + isLoading: e.isLoading + }), e.filters ? (vue.openBlock(), vue.createBlock(Y, { key: 1, filters: e.filters, "filter-values": e.filterValues, "onUpdate:filterValues": l[1] || (l[1] = (a) => e.$emit("update:filter-values", a)) - }, null, 8, ["filters", "filter-values"])) : vue.createCommentVNode("", true) + }, null, 8, ["filters", "filter-values"])) : vue.createCommentVNode("", true), + vue.renderSlot(e.$slots, "filters-bottom", { + data: e.data, + isLoading: e.isLoading + }) ]), default: vue.withCtx(() => { var a; @@ -5205,7 +5250,7 @@ ${codeFrame}` : message); const pt = /* @__PURE__ */ vue.defineComponent({ __name: "DebugVisualizer", props: { - data: {}, + data: { default: void 0 }, isLoading: { type: Boolean, default: false } }, setup(i) { @@ -5234,10 +5279,10 @@ ${codeFrame}` : message); setup(i, { emit: t2 }) { const o = i, n = vue.computed(() => { switch (o.container) { - case "default": - return it; case "sidebar": return te; + default: + return it; } }); return (e, l) => (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(n.value), { @@ -5272,6 +5317,18 @@ ${codeFrame}` : message); }, null, 8, ["data", "is-loading"]) ]) ]), + "filters-top": vue.withCtx(({ data: a, isLoading: u }) => [ + vue.renderSlot(e.$slots, "filters-top", { + data: a, + isLoading: u + }) + ]), + "filters-bottom": vue.withCtx(({ data: a, isLoading: u }) => [ + vue.renderSlot(e.$slots, "filters-bottom", { + data: a, + isLoading: u + }) + ]), _: 3 }, 40, ["is-loading", "data", "total-data", "search-enabled", "search", "sort-enabled", "current-sort", "current-page", "page-size-options", "sort-options", "page-size", "filters-enabled", "filters", "filter-values"])); } @@ -5354,7 +5411,7 @@ ${codeFrame}` : message); }, 8, ["href", "css-classes", "new-tab", "size", "variant"]) ])) : vue.createCommentVNode("", true); } - }), vt = { key: 0 }, bt = ["href", "target"], _t = /* @__PURE__ */ vue.defineComponent({ + }), vt = { key: 0 }, bt = ["href", "target"], yt = /* @__PURE__ */ vue.defineComponent({ __name: "DDVLink", props: { item: {}, @@ -5369,7 +5426,7 @@ ${codeFrame}` : message); }, vue.toDisplayString(t2.item[t2.column.field].text), 11, bt) ])) : vue.createCommentVNode("", true); } - }), yt = ["innerHTML"], $t = /* @__PURE__ */ vue.defineComponent({ + }), _t = ["innerHTML"], $t = /* @__PURE__ */ vue.defineComponent({ __name: "DDVHTML", props: { item: {}, @@ -5378,7 +5435,7 @@ ${codeFrame}` : message); setup(i) { return (t2, o) => (vue.openBlock(), vue.createElementBlock("span", { innerHTML: t2.item[t2.column.field] - }, null, 8, yt)); + }, null, 8, _t)); } }), kt = { key: 0, @@ -5427,7 +5484,7 @@ ${codeFrame}` : message); key: 2, item: t2.item, column: t2.column - }, null, 8, ["item", "column"])) : t2.column.type == "link" ? (vue.openBlock(), vue.createBlock(_t, { + }, null, 8, ["item", "column"])) : t2.column.type == "link" ? (vue.openBlock(), vue.createBlock(yt, { key: 3, item: t2.item, column: t2.column @@ -5463,7 +5520,7 @@ ${codeFrame}` : message); }), Ut = { key: 0, class: "alert alert-info w-100" - }, Ot = { key: 0 }, It = { key: 1 }, Pt = ["colspan"], ne = /* @__PURE__ */ vue.defineComponent({ + }, Lt = { key: 0 }, Ot = { key: 1 }, It = ["colspan"], ne = /* @__PURE__ */ vue.defineComponent({ __name: "DataDefinedVisualizer", props: { data: { default: null }, @@ -5483,13 +5540,13 @@ ${codeFrame}` : message); }, vue.toDisplayString(a.label), 1))), 128)) ]) ]), - o.value ? (vue.openBlock(), vue.createElementBlock("tbody", It, [ + o.value ? (vue.openBlock(), vue.createElementBlock("tbody", Ot, [ vue.createElementVNode("tr", null, [ vue.createElementVNode("td", { colspan: e.columns.length - }, vue.toDisplayString(vue.unref(n)("no_data")), 9, Pt) + }, vue.toDisplayString(vue.unref(n)("no_data")), 9, It) ]) - ])) : (vue.openBlock(), vue.createElementBlock("tbody", Ot, [ + ])) : (vue.openBlock(), vue.createElementBlock("tbody", Lt, [ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.data, (a) => (vue.openBlock(), vue.createBlock(Dt, { key: a.id, item: a, @@ -5538,50 +5595,50 @@ ${codeFrame}` : message); function u() { var m; let p = {}; - return (m = t2.config.filters) == null || m.forEach(($) => { + return (m = t2.config.filters) == null || m.forEach((k) => { var O; - if ($.initial) { - p[$.field] = $.initial; + if (k.initial) { + p[k.field] = k.initial; return; } - switch ($.type) { + switch (k.type) { case "date": - p[$.field] = null; + p[k.field] = null; break; case "checkbox": - p[$.field] = []; + p[k.field] = []; break; case "radio": - ((O = $.options) == null ? void 0 : O.length) != 0 && $.options && (p[$.field] = $.options[0][0]); + ((O = k.options) == null ? void 0 : O.length) != 0 && k.options && (p[k.field] = k.options[0][0]); break; } }), p; } const _ = vue.ref(u()); - let b = vue.ref(null); - const E = vue.computed(() => { + let y = vue.ref(null); + const P = vue.computed(() => { let p = []; p.push("page_size=" + encodeURIComponent(o.value)); - for (const [m, $] of Object.entries(_.value)) - $ != null && (typeof $ == "object" ? $.forEach( + for (const [m, k] of Object.entries(_.value)) + k != null && (typeof k == "object" ? k.forEach( (O) => p.push(m + "=" + encodeURIComponent(O)) - ) : p.push(m + "=" + encodeURIComponent($))); + ) : p.push(m + "=" + encodeURIComponent(k))); return e.value && p.push("search=" + encodeURIComponent(e.value)), p.push("ordering=" + encodeURIComponent(l.value)), n.value = 1, p; - }), P = vue.computed(() => { - let p = E.value, m = "page=" + encodeURIComponent(n.value); + }), I = vue.computed(() => { + let p = P.value, m = "page=" + encodeURIComponent(n.value); return p.length !== 0 && (m = "&" + m), "?" + p.join("&") + m; - }), D = vue.computed(() => { + }), U = vue.computed(() => { let p = new URL(window.location.protocol + "//" + window.location.host); - return p.pathname = t2.config.dataUri, p.search = P.value, console.log(p.toString()), p.toString(); + return p.pathname = t2.config.dataUri, p.search = I.value, console.log(p.toString()), p.toString(); }); - vue.watch(D, () => { + vue.watch(U, () => { F(); }); - const y = vue.ref(null); + const $ = vue.ref(null); function F() { - y.value && y.value.abort(), y.value = new AbortController(), a.value = true, fetch(D.value, { signal: y.value.signal }).then((p) => { + $.value && $.value.abort(), $.value = new AbortController(), a.value = true, fetch(U.value, { signal: $.value.signal }).then((p) => { p.json().then((m) => { - b.value = m, a.value = false, m.ordering && (l.value = m.ordering), y.value = null; + y.value = m, a.value = false, m.ordering && (l.value = m.ordering), $.value = null; }); }).catch((p) => { console.log(p); @@ -5590,18 +5647,18 @@ ${codeFrame}` : message); return vue.onMounted(() => { F(); }), (p, m) => { - var $, O, Z; + var k, O, Z; return vue.openBlock(), vue.createBlock(ct, { "is-loading": a.value, - data: (($ = vue.unref(b)) == null ? void 0 : $.results) ?? void 0, - "total-data": ((O = vue.unref(b)) == null ? void 0 : O.count) ?? 0, + data: ((k = vue.unref(y)) == null ? void 0 : k.results) ?? void 0, + "total-data": ((O = vue.unref(y)) == null ? void 0 : O.count) ?? 0, "search-enabled": p.config.searchEnabled, search: e.value, "sort-enabled": p.config.sortEnabled, "current-sort": l.value, "page-size-options": p.config.pageSizeOptions, "sort-options": p.config.sortOptions ?? [], - "page-size": ((Z = vue.unref(b)) == null ? void 0 : Z.page_size) ?? 10, + "page-size": ((Z = vue.unref(y)) == null ? void 0 : Z.page_size) ?? 10, "current-page": n.value, "filters-enabled": p.config.filtersEnabled, filters: p.config.filters ?? [], From d53b7d6f324f56af763cf04b176e4497f1567434 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 20 Nov 2023 16:15:37 +0100 Subject: [PATCH 18/34] feat: added custom DSC list example --- .../vue/example-custom-uu-list/.eslintrc.json | 47 + assets/vue/example-custom-uu-list/.gitignore | 15 + assets/vue/example-custom-uu-list/README.md | 13 + .../vue/example-custom-uu-list/package.json | 22 + .../example-custom-uu-list/src/CustomList.vue | 87 ++ .../vue/example-custom-uu-list/src/index.ts | 4 + .../vue/example-custom-uu-list/tsconfig.json | 44 + .../vue/example-custom-uu-list/vite.config.ts | 48 + assets/vue/example-custom-uu-list/yarn.lock | 877 +++++++++++ assets/vue/uu-list/package.json | 2 +- assets/vue/uu-list/yarn.lock | 6 +- dev/dev_vue/menus.py | 26 +- .../example-custom-uu-list/CustomList.iife.js | 1282 +++++++++++++++++ .../dev_vue/example-custom-uu-list/style.css | 20 + .../dev_vue/example-custom-list.html | 13 + dev/dev_vue/urls.py | 4 +- dev/dev_vue/views.py | 4 + 17 files changed, 2502 insertions(+), 12 deletions(-) create mode 100644 assets/vue/example-custom-uu-list/.eslintrc.json create mode 100644 assets/vue/example-custom-uu-list/.gitignore create mode 100644 assets/vue/example-custom-uu-list/README.md create mode 100644 assets/vue/example-custom-uu-list/package.json create mode 100644 assets/vue/example-custom-uu-list/src/CustomList.vue create mode 100644 assets/vue/example-custom-uu-list/src/index.ts create mode 100644 assets/vue/example-custom-uu-list/tsconfig.json create mode 100644 assets/vue/example-custom-uu-list/vite.config.ts create mode 100644 assets/vue/example-custom-uu-list/yarn.lock create mode 100644 dev/dev_vue/static/dev_vue/example-custom-uu-list/CustomList.iife.js create mode 100644 dev/dev_vue/static/dev_vue/example-custom-uu-list/style.css create mode 100644 dev/dev_vue/templates/dev_vue/example-custom-list.html diff --git a/assets/vue/example-custom-uu-list/.eslintrc.json b/assets/vue/example-custom-uu-list/.eslintrc.json new file mode 100644 index 00000000..2ec56870 --- /dev/null +++ b/assets/vue/example-custom-uu-list/.eslintrc.json @@ -0,0 +1,47 @@ +{ + "root": true, + "extends": [ + "eslint:recommended", + "plugin:vue/vue3-recommended", + "plugin:@typescript-eslint/recommended", + "prettier" + ], + "parserOptions": { + "ecmaVersion": "latest", + "parser": "@typescript-eslint/parser", + "sourceType": "module", + "extraFileExtensions": [".vue"] + }, + "overrides": [ + { + "files": ["*.ts"], + + "parserOptions": { + "project": ["./tsconfig.json"] // Specify it only for TypeScript files + } + } + ], + "plugins": [ + "vue", + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/no-non-null-assertion": "off", + "@typescript-eslint/no-inferrable-types": "off", + "vue/html-self-closing": ["error", { + "html": { + "void": "any", + "normal": "always", + "component": "always" + }, + "svg": "always", + "math": "always" + }], + "@typescript-eslint/no-unused-vars": ["warn", { + "varsIgnorePattern": "(props)|(emits?)|_" + }], + "vue/require-v-for-key": "warn", + "vue/no-v-model-argument": "off" // NO idea why this rule exists + }, + "ignorePatterns": ["**/*.test.ts", "dist/*", "node_modules/*"] +} diff --git a/assets/vue/example-custom-uu-list/.gitignore b/assets/vue/example-custom-uu-list/.gitignore new file mode 100644 index 00000000..d5aa0f8a --- /dev/null +++ b/assets/vue/example-custom-uu-list/.gitignore @@ -0,0 +1,15 @@ +.sass-cache/ +*.css.map +*.sass.map +*.scss.map +!dist/css/*.css.map + +node_modules +vite.config.d.ts +*.log* +.cache +.output +.env +generated + +.idea diff --git a/assets/vue/example-custom-uu-list/README.md b/assets/vue/example-custom-uu-list/README.md new file mode 100644 index 00000000..a52aec3c --- /dev/null +++ b/assets/vue/example-custom-uu-list/README.md @@ -0,0 +1,13 @@ +# Custom UU-List example + +An example of a custom DSCList-based UU-List. You can copy this folder +as a basis. + +## Use as a template: + +1. Copy the contents of this dir to a folder in your project +2. Install deps (yarn install) +3. Update cdh-vue-lib to latest release using yarn +4. Rename `CustomList.vue` to a more descriptive name, and update the `index.ts` import +5. Change the indicated values in `vite.config.ts`; use the name you used for the file above +6. Go make your own implementation! \ No newline at end of file diff --git a/assets/vue/example-custom-uu-list/package.json b/assets/vue/example-custom-uu-list/package.json new file mode 100644 index 00000000..de5d7701 --- /dev/null +++ b/assets/vue/example-custom-uu-list/package.json @@ -0,0 +1,22 @@ +{ + "name": "uu-list", + "version": "1.0.0", + "author": "Humanities IT Portal development", + "license": "Apache-2.0", + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview" + }, + "dependencies": { + "@intlify/unplugin-vue-i18n": "^1.5.0", + "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.2", + "vue-i18n": "9" + }, + "devDependencies": { + "@vitejs/plugin-vue": "^4.3.4", + "typescript": "^5.2.2", + "vite": "^4.4.9", + "vue": "^3.3.4" + } +} diff --git a/assets/vue/example-custom-uu-list/src/CustomList.vue b/assets/vue/example-custom-uu-list/src/CustomList.vue new file mode 100644 index 00000000..e3f3add7 --- /dev/null +++ b/assets/vue/example-custom-uu-list/src/CustomList.vue @@ -0,0 +1,87 @@ + + + + +{ + "en": { + "name": "Name", + "refnum": "Reference Number", + "status": "Status" + }, + "nl": { + "name": "Naam", + "refnum": "Referentie Nummer", + "status": "Status" + } +} + + + diff --git a/assets/vue/example-custom-uu-list/src/index.ts b/assets/vue/example-custom-uu-list/src/index.ts new file mode 100644 index 00000000..a35c5744 --- /dev/null +++ b/assets/vue/example-custom-uu-list/src/index.ts @@ -0,0 +1,4 @@ +import CustomList from "./CustomList.vue"; +import "cdh-vue-lib/dist/style.css" + +export default CustomList; \ No newline at end of file diff --git a/assets/vue/example-custom-uu-list/tsconfig.json b/assets/vue/example-custom-uu-list/tsconfig.json new file mode 100644 index 00000000..4d0d1dee --- /dev/null +++ b/assets/vue/example-custom-uu-list/tsconfig.json @@ -0,0 +1,44 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "esnext", + "strict": true, + "jsx": "preserve", + "moduleResolution": "node", + "declaration": true, + "outDir": "dist", + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "useDefineForClassFields": true, + "resolveJsonModule": true, + "sourceMap": true, + "baseUrl": ".", + "typeRoots": [ + "src/stubs.d.ts" + ], + "paths": { + "@/*": [ + "./src/*" + ] + }, + "lib": [ + "esnext", + "dom", + "dom.iterable", + "scripthost" + ] + }, + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + "tests/**/*.ts", + "tests/**/*.tsx" + ], + "exclude": [ + "node_modules", + "vite.config.ts" + ] +} \ No newline at end of file diff --git a/assets/vue/example-custom-uu-list/vite.config.ts b/assets/vue/example-custom-uu-list/vite.config.ts new file mode 100644 index 00000000..73dee3df --- /dev/null +++ b/assets/vue/example-custom-uu-list/vite.config.ts @@ -0,0 +1,48 @@ +import {defineConfig} from "vite"; +import {resolve} from "path"; +import vue from "@vitejs/plugin-vue"; +import VueI18nPlugin from "@intlify/unplugin-vue-i18n/vite"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue(), VueI18nPlugin({})], + base: '/static/', + build: { + minify: false, + outDir: "../../../dev/dev_vue/static/dev_vue/example-custom-uu-list/", // TODO: change this to your desired static dir + emptyOutDir: true, + lib: { + // src/index.ts is where we have exported the component(s) + entry: resolve(__dirname, "src/index.ts"), + name: "CustomList", // TODO: CHANGE THIS FOR YOUR OWN COMPONENT + // the name of the output files when the build is run + fileName: "CustomList",// TODO: CHANGE THIS FOR YOUR OWN COMPONENT + formats: ['iife'] + }, + rollupOptions: { + // make sure to externalize deps that shouldn't be bundled + // into your library + external: ["vue", "vue-i18n"], + output: { + // Provide global variables to use in the UMD build + // for externalized deps + globals: { + vue: "Vue", + 'vue-i18n': "VueI18n", + }, + chunkFileNames: undefined, + }, + }, + }, + resolve: { + alias: { + "@": resolve(__dirname, "./src"), + }, + }, + optimizeDeps: { + include: ['src/**/*.vue', 'src/index.ts'], + }, + define: { + 'process.env': {} + } +}); diff --git a/assets/vue/example-custom-uu-list/yarn.lock b/assets/vue/example-custom-uu-list/yarn.lock new file mode 100644 index 00000000..1ba617c8 --- /dev/null +++ b/assets/vue/example-custom-uu-list/yarn.lock @@ -0,0 +1,877 @@ +# 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.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.13.tgz#23fb17892b2be7afef94f573031c2f4b42839a2b" + integrity sha512-3l6+4YOvc9wx7VlCSw4yQfcBo01ECA8TicQfbnCPuCEpRQrf+gTUyGdxNw+pyTUyywp6JRD1w0YQs9TpBXYlkw== + +"@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== + +"@esbuild/android-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" + integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== + +"@esbuild/android-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" + integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== + +"@esbuild/android-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" + integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== + +"@esbuild/darwin-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" + integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== + +"@esbuild/darwin-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" + integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== + +"@esbuild/freebsd-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" + integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== + +"@esbuild/freebsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" + integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== + +"@esbuild/linux-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" + integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== + +"@esbuild/linux-arm@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" + integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== + +"@esbuild/linux-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" + integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== + +"@esbuild/linux-loong64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" + integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== + +"@esbuild/linux-mips64el@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" + integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== + +"@esbuild/linux-ppc64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" + integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== + +"@esbuild/linux-riscv64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" + integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== + +"@esbuild/linux-s390x@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" + integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== + +"@esbuild/linux-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" + integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== + +"@esbuild/netbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" + integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== + +"@esbuild/openbsd-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" + integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== + +"@esbuild/sunos-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" + integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== + +"@esbuild/win32-arm64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" + integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== + +"@esbuild/win32-ia32@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" + integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== + +"@esbuild/win32-x64@0.18.20": + version "0.18.20" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" + integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== + +"@intlify/bundle-utils@^7.4.0": + version "7.4.0" + resolved "https://registry.yarnpkg.com/@intlify/bundle-utils/-/bundle-utils-7.4.0.tgz#b4dc41026d2d98d2e8a2bd83851c1883a48f1254" + integrity sha512-AQfjBe2HUxzyN8ignIk3WhhSuVcSuirgzOzkd17nb337rCbI4Gv/t1R60UUyIqFoFdviLb/wLcDUzTD/xXjv9w== + dependencies: + "@intlify/message-compiler" "^9.4.0" + "@intlify/shared" "^9.4.0" + acorn "^8.8.2" + escodegen "^2.0.0" + estree-walker "^2.0.2" + jsonc-eslint-parser "^2.3.0" + magic-string "^0.30.0" + mlly "^1.2.0" + source-map-js "^1.0.1" + yaml-eslint-parser "^1.2.2" + +"@intlify/core-base@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/core-base/-/core-base-9.5.0.tgz#cbb17a27029ccfd0a83a837931baee08b887af60" + integrity sha512-y3ufM1RJbI/DSmJf3lYs9ACq3S/iRvaSsE3rPIk0MGH7fp+JxU6rdryv/EYcwfcr3Y1aHFlCBir6S391hRZ57w== + dependencies: + "@intlify/message-compiler" "9.5.0" + "@intlify/shared" "9.5.0" + +"@intlify/message-compiler@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.5.0.tgz#1b4916bf11ca7024f9c15be0d6b4de7be5317808" + integrity sha512-CAhVNfEZcOVFg0/5MNyt+OFjvs4J/ARjCj2b+54/FvFP0EDJI5lIqMTSDBE7k0atMROSP0SvWCkwu/AZ5xkK1g== + dependencies: + "@intlify/shared" "9.5.0" + source-map-js "^1.0.2" + +"@intlify/message-compiler@^9.4.0": + version "9.7.0" + resolved "https://registry.yarnpkg.com/@intlify/message-compiler/-/message-compiler-9.7.0.tgz#6371127c5a2a4f50ec59728f85a7786e3478c931" + integrity sha512-/YdZCio2L2tCM5bZ2eMHbSEIQNPh1QqvZIOLI/yCVKXLscis7O0SsR2nmuU/DfCJ3iSeI8juw82C2wLvfsAeww== + dependencies: + "@intlify/shared" "9.7.0" + source-map-js "^1.0.2" + +"@intlify/shared@9.5.0": + version "9.5.0" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.5.0.tgz#185d9ab9f6b4bb4f4d133cfdd51432e9b94c2c44" + integrity sha512-tAxV14LMXZDZbu32XzLMTsowNlgJNmLwWHYzvMUl6L8gvQeoYiZONjY7AUsqZW8TOZDX9lfvF6adPkk9FSRdDA== + +"@intlify/shared@9.7.0", "@intlify/shared@^9.4.0": + version "9.7.0" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.7.0.tgz#96166a54b781997db92259772e9621d3f7dff9a5" + integrity sha512-PUkEuk//YKu4CHS5ah3mNa3XL/+TZj6rAY/6yYN+GCNFd2u+uWUkeuwE4Q6t8dydRWlErOePHHS0KyNoof/oBw== + +"@intlify/unplugin-vue-i18n@^1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@intlify/unplugin-vue-i18n/-/unplugin-vue-i18n-1.5.0.tgz#fe2e67d50beefc4b67702a7bcec23062123cb52d" + integrity sha512-jW0MCCdwxybxcwjEfCunAcKjVoxyO3i+cnLL6v+MNGRLUHqrpELF6zQAJUhgAK2afhY7mCliy8RxTFWKdXm26w== + dependencies: + "@intlify/bundle-utils" "^7.4.0" + "@intlify/shared" "^9.4.0" + "@rollup/pluginutils" "^5.0.2" + "@vue/compiler-sfc" "^3.2.47" + debug "^4.3.3" + fast-glob "^3.2.12" + js-yaml "^4.1.0" + json5 "^2.2.3" + pathe "^1.0.0" + picocolors "^1.0.0" + source-map-js "^1.0.2" + unplugin "^1.1.0" + +"@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== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@rollup/pluginutils@^5.0.2": + 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" + +"@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@vitejs/plugin-vue@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz#a289dff38e01949fe7be581d5542cabaeb961dec" + integrity sha512-ciXNIHKPriERBisHFBvnTbfKa6r9SAesOYXeGDzgegcvy9Q4xdScSHAmKbNT0M3O0S9LKhIf5/G+UYG4NnnzYw== + +"@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-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": + 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-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": + 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-sfc@^3.2.47": + 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" + integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ== + dependencies: + "@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.1" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz#7f71f31e40973eeee65b9a64382b13593fdbd697" + integrity sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA== + +"@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-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/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== + +"@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== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^8.10.0, acorn@^8.11.2, acorn@^8.5.0, acorn@^8.8.2, acorn@^8.9.0: + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + 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.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bootstrap@5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.1.tgz#8ca07040ad15d7f75891d1504cf14c5dedfb1cfe" + integrity sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g== + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.2": + version "0.3.2" + resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#5ec7ea2bdc3ff0c898408c4a0bc1a39526326716" + dependencies: + uu-bootstrap "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0" + uuid "^9.0.0" + vue-i18n "9" + +chokidar@^3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + 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" + +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.3.3: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +esbuild@^0.18.10: + version "0.18.20" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" + integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA== + optionalDependencies: + "@esbuild/android-arm" "0.18.20" + "@esbuild/android-arm64" "0.18.20" + "@esbuild/android-x64" "0.18.20" + "@esbuild/darwin-arm64" "0.18.20" + "@esbuild/darwin-x64" "0.18.20" + "@esbuild/freebsd-arm64" "0.18.20" + "@esbuild/freebsd-x64" "0.18.20" + "@esbuild/linux-arm" "0.18.20" + "@esbuild/linux-arm64" "0.18.20" + "@esbuild/linux-ia32" "0.18.20" + "@esbuild/linux-loong64" "0.18.20" + "@esbuild/linux-mips64el" "0.18.20" + "@esbuild/linux-ppc64" "0.18.20" + "@esbuild/linux-riscv64" "0.18.20" + "@esbuild/linux-s390x" "0.18.20" + "@esbuild/linux-x64" "0.18.20" + "@esbuild/netbsd-x64" "0.18.20" + "@esbuild/openbsd-x64" "0.18.20" + "@esbuild/sunos-x64" "0.18.20" + "@esbuild/win32-arm64" "0.18.20" + "@esbuild/win32-ia32" "0.18.20" + "@esbuild/win32-x64" "0.18.20" + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.4.1: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +espree@^9.0.0: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + 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.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-glob@^3.2.12: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a" + integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-eslint-parser@^2.3.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.0.tgz#74ded53f9d716e8d0671bd167bf5391f452d5461" + integrity sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg== + dependencies: + acorn "^8.5.0" + eslint-visitor-keys "^3.0.0" + espree "^9.0.0" + semver "^7.3.5" + +jsonc-parser@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" + integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + 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" + +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" + +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mlly@^1.2.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.2.tgz#7cf406aa319ff6563d25da6b36610a93f2a8007e" + integrity sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg== + dependencies: + acorn "^8.10.0" + pathe "^1.1.1" + pkg-types "^1.0.3" + ufo "^1.3.0" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +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== + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +pathe@^1.0.0, pathe@^1.1.0, pathe@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a" + integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q== + +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, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + +postcss@^8.1.10, postcss@^8.4.27: + version "8.4.29" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" + integrity sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw== + dependencies: + nanoid "^3.3.6" + 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" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rollup@^3.27.1: + version "3.28.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.1.tgz#fb44aa6d5e65c7e13fd5bcfff266d0c4ea9ba433" + integrity sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +semver@^7.3.5: + 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== + dependencies: + lru-cache "^6.0.0" + +source-map-js@^1.0.1, source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== + +ufo@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" + integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== + +unplugin@^1.1.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.5.1.tgz#806688376fa3dcca4d2fa2c5d27cf6cd0370fbef" + integrity sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew== + dependencies: + acorn "^8.11.2" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.6.0" + +"uu-bootstrap@git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0": + version "1.5.0-alpha.0" + resolved "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#0bd740cae32d73770ed4ca7f4818612c8b4bff91" + dependencies: + bootstrap "5.3.1" + +uuid@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.0.tgz#592f550650024a38ceb0c562f2f6aa435761efb5" + integrity sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg== + +vite@^4.4.9: + version "4.4.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" + integrity sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA== + dependencies: + esbuild "^0.18.10" + postcss "^8.4.27" + rollup "^3.27.1" + optionalDependencies: + fsevents "~2.3.2" + +vue-i18n@9: + version "9.5.0" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-9.5.0.tgz#361a820f591f6d9689435a42763fd1dae224833b" + integrity sha512-NiI3Ph1qMstNf7uhYh8trQBOBFLxeJgcOxBq51pCcZ28Vs18Y7BDS58r8HGDKCYgXdLUYqPDXdKatIF4bvBVZg== + dependencies: + "@intlify/core-base" "9.5.0" + "@intlify/shared" "9.5.0" + "@vue/devtools-api" "^6.5.0" + +vue@^3.3.4: + 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" + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.0.tgz#95eb2cb160a8cb84a73bdc2b5c806693f690ad35" + integrity sha512-KnaMTE6EItz/f2q4Gwg5/rmeKVi79OR58NoYnwDJqCk9ywMtTGbBnBcfoBtN4QbYu0lWXvyMoH2Owxuhe4qI6Q== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml-eslint-parser@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/yaml-eslint-parser/-/yaml-eslint-parser-1.2.2.tgz#1a9673ebe254328cfc2fa99f297f6d8c9364ccd8" + integrity sha512-pEwzfsKbTrB8G3xc/sN7aw1v6A6c/pKxLAkjclnAyo5g5qOh6eL9WGu0o3cSDQZKrTNk4KL4lQSwZW+nBkANEg== + dependencies: + eslint-visitor-keys "^3.0.0" + lodash "^4.17.21" + yaml "^2.0.0" + +yaml@^2.0.0: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== diff --git a/assets/vue/uu-list/package.json b/assets/vue/uu-list/package.json index 3bbc0b28..d5ea3f4b 100644 --- a/assets/vue/uu-list/package.json +++ b/assets/vue/uu-list/package.json @@ -9,7 +9,7 @@ "preview": "vite preview" }, "dependencies": { - "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.1" + "cdh-vue-lib": "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.2" }, "devDependencies": { "@vitejs/plugin-vue": "^4.3.4", diff --git a/assets/vue/uu-list/yarn.lock b/assets/vue/uu-list/yarn.lock index d6515a2b..8f550e33 100644 --- a/assets/vue/uu-list/yarn.lock +++ b/assets/vue/uu-list/yarn.lock @@ -248,9 +248,9 @@ bootstrap@5.3.1: resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-5.3.1.tgz#8ca07040ad15d7f75891d1504cf14c5dedfb1cfe" integrity sha512-jzwza3Yagduci2x0rr9MeFSORjcHpt0lRZukZPZQJT1Dth5qzV7XcgGqYzi39KGAVYR8QEDVoO0ubFKOxzMG+g== -"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.1": - version "0.3.1" - resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#ba2ec6c4e601ae21723164adfdd70b0c6a9b1bd3" +"cdh-vue-lib@git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#v0.3.2": + version "0.3.2" + resolved "git+https://github.com/CentreForDigitalHumanities/Vue-lib.git#5ec7ea2bdc3ff0c898408c4a0bc1a39526326716" dependencies: uu-bootstrap "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0" uuid "^9.0.0" diff --git a/dev/dev_vue/menus.py b/dev/dev_vue/menus.py index f1036615..e455587b 100644 --- a/dev/dev_vue/menus.py +++ b/dev/dev_vue/menus.py @@ -6,14 +6,26 @@ sub_menus.append( MenuItem( - 'UU-List', - reverse('dev_vue:list'), + "UU-List", + reverse("dev_vue:list"), exact_url=True, ) ) -Menu.add_item("main", MenuItem('Vue', - '#', - exact_url=True, - children=sub_menus, -)) +sub_menus.append( + MenuItem( + "Example custom UU-List", + reverse("dev_vue:custom-list"), + exact_url=True, + ) +) + +Menu.add_item( + "main", + MenuItem( + "Vue", + "#", + exact_url=True, + children=sub_menus, + ), +) diff --git a/dev/dev_vue/static/dev_vue/example-custom-uu-list/CustomList.iife.js b/dev/dev_vue/static/dev_vue/example-custom-uu-list/CustomList.iife.js new file mode 100644 index 00000000..fb899a15 --- /dev/null +++ b/dev/dev_vue/static/dev_vue/example-custom-uu-list/CustomList.iife.js @@ -0,0 +1,1282 @@ +var CustomList = function(vue, vueI18n) { + "use strict"; + let getRandomValues; + const rnds8 = new Uint8Array(16); + function rng() { + if (!getRandomValues) { + getRandomValues = typeof crypto !== "undefined" && crypto.getRandomValues && crypto.getRandomValues.bind(crypto); + if (!getRandomValues) { + throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported"); + } + } + return getRandomValues(rnds8); + } + const byteToHex = []; + for (let i = 0; i < 256; ++i) { + byteToHex.push((i + 256).toString(16).slice(1)); + } + function unsafeStringify(arr, offset = 0) { + return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + "-" + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + "-" + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + "-" + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + "-" + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); + } + const randomUUID = typeof crypto !== "undefined" && crypto.randomUUID && crypto.randomUUID.bind(crypto); + const native = { + randomUUID + }; + function v4(options, buf, offset) { + if (native.randomUUID && !buf && !options) { + return native.randomUUID(); + } + options = options || {}; + const rnds = options.random || (options.rng || rng)(); + rnds[6] = rnds[6] & 15 | 64; + rnds[8] = rnds[8] & 63 | 128; + if (buf) { + offset = offset || 0; + for (let i = 0; i < 16; ++i) { + buf[offset + i] = rnds[i]; + } + return buf; + } + return unsafeStringify(rnds); + } + /*! + * Copyright 2022, 2023 Utrecht University + * + * Licensed under the EUPL, Version 1.2 only + * You may not use this work except in compliance with the + Licence. + * A copy of the Licence is provided in the 'LICENCE' file in this project. + * You may also obtain a copy of the Licence at: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Unless required by applicable law or agreed to in + writing, software distributed under the Licence is + distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. + * See the Licence for the specific language governing + permissions and limitations under the Licence. + */ + function t(e) { + return e.target.value; + } + /*! + * Copyright 2022, 2023 Utrecht University + * + * Licensed under the EUPL, Version 1.2 only + * You may not use this work except in compliance with the + Licence. + * A copy of the Licence is provided in the 'LICENCE' file in this project. + * You may also obtain a copy of the Licence at: + * + * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 + * + * Unless required by applicable law or agreed to in + writing, software distributed under the Licence is + distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + express or implied. + * See the Licence for the specific language governing + permissions and limitations under the Licence. + */ + const re = ["href", "target"], ie = { class: "btn-text" }, ue = ["type", "name", "disabled"], de = { class: "btn-text" }, Y = /* @__PURE__ */ vue.defineComponent({ + __name: "BSButton", + props: { + id: { default: null }, + href: { default: void 0 }, + name: { default: void 0 }, + variant: { default: "dark" }, + size: { default: "normal" }, + outlined: { type: Boolean, default: false }, + active: { type: Boolean, default: false }, + disabled: { type: Boolean, default: false }, + loading: { type: Boolean, default: false }, + input: { default: "button" }, + newTab: { type: Boolean, default: false }, + cssClasses: { default: "" } + }, + setup(i) { + const t2 = i, o = vue.computed(() => { + let n = "btn "; + return t2.size === "large" ? n += "btn-lg " : t2.size === "small" && (n += "btn-sm "), t2.outlined ? n += "btn-outline-" : n += "btn-", n += `${t2.variant} `, t2.loading && (n += "btn-loading "), t2.active && (n += "active "), n; + }); + return (n, e) => n.href ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + href: n.href, + class: vue.normalizeClass(o.value), + target: n.newTab ? "_blank" : "_self" + }, [ + vue.createElementVNode("span", ie, [ + vue.renderSlot(n.$slots, "default") + ]) + ], 10, re)) : (vue.openBlock(), vue.createElementBlock("button", { + key: 1, + type: n.input, + class: vue.normalizeClass(o.value), + name: n.name, + disabled: n.disabled + }, [ + vue.createElementVNode("span", de, [ + vue.renderSlot(n.$slots, "default") + ]) + ], 10, ue)); + } + }); + const Ve = ["id", "value", "checked", "onClick"], De = ["for"], Ue = /* @__PURE__ */ vue.defineComponent({ + __name: "BSMultiSelect", + props: { + options: {}, + modelValue: {}, + containerClasses: { default: "" }, + uniqueId: { default: v4().toString() } + }, + emits: ["update:modelValue", "update:model-value"], + setup(i, { emit: t2 }) { + const o = i; + function n(e) { + const l = o.modelValue.includes(e); + let a = [...o.modelValue]; + if (!l) + a.push(e); + else { + const u = a.indexOf(e); + u > -1 && a.splice(u, 1); + } + t2("update:modelValue", a); + } + return (e, l) => (vue.openBlock(), vue.createElementBlock("div", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.options, ([a, u]) => (vue.openBlock(), vue.createElementBlock("div", { + key: a, + class: vue.normalizeClass(["form-check", e.containerClasses]) + }, [ + vue.createElementVNode("input", { + id: "id_" + a + "_" + e.uniqueId, + type: "checkbox", + class: "form-check-input", + value: a, + checked: o.modelValue.includes(a), + onClick: (_) => n(a) + }, null, 8, Ve), + vue.createElementVNode("label", { + class: "form-check-label", + for: +"_" + e.uniqueId + }, vue.toDisplayString(u), 9, De) + ], 2))), 128)) + ])); + } + }), Le = { + class: "pagination justify-content-center", + role: "navigation", + "aria-label": "pagination" + }, Oe = ["onClick"], Ie = { + key: 1, + class: "page-link" + }, q = /* @__PURE__ */ vue.defineComponent({ + __name: "BSPagination", + props: { + maxPages: {}, + currentpage: {}, + showButtons: { type: Boolean, default: true }, + numOptions: { default: 2 } + }, + emits: ["change-page"], + setup(i, { emit: t2 }) { + const o = i; + function n(u, _, y) { + return Math.min(Math.max(u, _), y); + } + const e = vue.computed(() => { + const u = o.numOptions, _ = o.currentpage - u, y = o.currentpage + u + 1, P = [], I = []; + let U; + for (let $ = 1; $ <= o.maxPages; $++) + ($ === 1 || $ === o.maxPages || $ >= _ && $ < y) && P.push($); + for (const $ of P) + U && ($ - U === 2 ? I.push(U + 1) : $ - U !== 1 && I.push(-42)), I.push($), U = $; + return I; + }); + function l(u) { + u = n(u, 1, o.maxPages), t2("change-page", u); + } + const { t: a } = vueI18n.useI18n(); + return (u, _) => (vue.openBlock(), vue.createElementBlock("ul", Le, [ + vue.createElementVNode("li", { + class: vue.normalizeClass(["page-item page-button", u.currentpage === 1 ? "disabled" : ""]) + }, [ + u.showButtons ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + class: "page-link", + onClick: _[0] || (_[0] = (y) => l(u.currentpage - 1)) + }, vue.toDisplayString(vue.unref(a)("previous")), 1)) : vue.createCommentVNode("", true) + ], 2), + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.value, (y) => (vue.openBlock(), vue.createElementBlock("li", { + key: y, + class: vue.normalizeClass([ + "page-item", + (y === -42 ? "disabled page-ellipsis " : "") + (y === u.currentpage ? "active" : "") + ]) + }, [ + y !== -42 ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + class: "page-link", + onClick: (P) => l(y) + }, vue.toDisplayString(y), 9, Oe)) : (vue.openBlock(), vue.createElementBlock("span", Ie, "…")) + ], 2))), 128)), + vue.createElementVNode("li", { + class: vue.normalizeClass(["page-item page-button", u.currentpage >= u.maxPages ? "disabled" : ""]) + }, [ + u.showButtons ? (vue.openBlock(), vue.createElementBlock("a", { + key: 0, + class: "page-link", + onClick: _[1] || (_[1] = (y) => l(u.currentpage + 1)) + }, vue.toDisplayString(vue.unref(a)("next")), 1)) : vue.createCommentVNode("", true) + ], 2) + ])); + } + }); + function Q(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + next: (o) => { + const { normalize: n } = o; + return n(["Next"]); + }, + previous: (o) => { + const { normalize: n } = o; + return n(["Previous"]); + } + }, + nl: { + next: (o) => { + const { normalize: n } = o; + return n(["Volgende"]); + }, + previous: (o) => { + const { normalize: n } = o; + return n(["Vorige"]); + } + } + } + }); + } + typeof Q == "function" && Q(q); + const Pe = ["id", "value", "checked", "onClick"], Ee = ["for"], Ne = /* @__PURE__ */ vue.defineComponent({ + __name: "BSRadioSelect", + props: { + options: {}, + modelValue: {}, + containerClasses: { default: "" } + }, + emits: ["update:modelValue", "update:model-value"], + setup(i, { emit: t2 }) { + return (o, n) => (vue.openBlock(), vue.createElementBlock("div", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(o.options, ([e, l]) => (vue.openBlock(), vue.createElementBlock("div", { + key: e, + class: vue.normalizeClass(["form-check", o.containerClasses]) + }, [ + vue.createElementVNode("input", { + id: "id_" + e, + type: "radio", + class: "form-check-input", + value: e, + checked: o.modelValue == e, + onClick: (a) => t2("update:model-value", e) + }, null, 8, Pe), + vue.createElementVNode("label", { + class: "form-check-label", + for: "id_" + e + }, vue.toDisplayString(l), 9, Ee) + ], 2))), 128)) + ])); + } + }), Me = { class: "uu-sidebar" }, Te = ["data-bs-target"], qe = ["id"], Re = { class: "uu-sidebar-content" }, je = /* @__PURE__ */ vue.defineComponent({ + __name: "BSSidebar", + props: { + id: { default: null }, + placement: { default: "left" }, + mobilePlacement: { default: "top" }, + stickySidebar: { type: Boolean, default: false }, + mobileStickySidebar: { type: Boolean, default: false } + }, + setup(i) { + const t2 = i, o = vue.computed(() => t2.id !== null ? t2.id : "id_" + v4().toString().replace(/-/g, "")), n = vue.computed(() => { + let e = ""; + return t2.placement === "right" && (e += "uu-sidebar-right "), t2.mobilePlacement === "bottom" && (e += "uu-sidebar-mobile-bottom "), t2.stickySidebar && (e += "uu-sidebar-sticky "), t2.mobileStickySidebar && (e += "uu-sidebar-mobile-sticky "), e; + }); + return (e, l) => (vue.openBlock(), vue.createElementBlock("div", { + class: vue.normalizeClass(["uu-sidebar-container", n.value]) + }, [ + vue.createElementVNode("aside", Me, [ + vue.createElementVNode("button", { + class: "uu-sidebar-toggle", + type: "button", + "data-bs-toggle": "collapse", + "data-bs-target": "#" + o.value, + "aria-expanded": "false" + }, [ + vue.renderSlot(e.$slots, "sidebar-button") + ], 8, Te), + vue.createElementVNode("div", { + id: o.value, + class: "uu-sidebar-collapse collapse" + }, [ + vue.renderSlot(e.$slots, "sidebar") + ], 8, qe) + ]), + vue.createElementVNode("div", Re, [ + vue.renderSlot(e.$slots, "default") + ]) + ], 2)); + } + }), Fe = { class: "uu-list-filter" }, Ze = { class: "uu-list-filter-label" }, Ge = { + key: 2, + class: "uu-list-filter-field" + }, Qe = ["value"], We = /* @__PURE__ */ vue.defineComponent({ + __name: "Filter", + props: { + filter: {}, + value: {} + }, + emits: ["update:value"], + setup(i, { emit: t$1 }) { + return (o, n) => (vue.openBlock(), vue.createElementBlock("div", Fe, [ + vue.createElementVNode("div", Ze, vue.toDisplayString(o.filter.label), 1), + o.filter.type === "checkbox" ? (vue.openBlock(), vue.createBlock(vue.unref(Ue), { + key: 0, + options: o.filter.options ?? [], + "model-value": o.value ?? [], + "onUpdate:modelValue": n[0] || (n[0] = (e) => t$1("update:value", e)) + }, null, 8, ["options", "model-value"])) : vue.createCommentVNode("", true), + o.filter.type === "radio" ? (vue.openBlock(), vue.createBlock(vue.unref(Ne), { + key: 1, + options: o.filter.options ?? [], + "model-value": o.value ?? "", + "onUpdate:modelValue": n[1] || (n[1] = (e) => t$1("update:value", e)) + }, null, 8, ["options", "model-value"])) : vue.createCommentVNode("", true), + o.filter.type === "date" ? (vue.openBlock(), vue.createElementBlock("div", Ge, [ + vue.createElementVNode("input", { + type: "date", + value: o.value, + class: "form-control", + onInput: n[2] || (n[2] = (e) => t$1("update:value", vue.unref(t)(e))) + }, null, 40, Qe) + ])) : vue.createCommentVNode("", true) + ])); + } + }), Ae = { key: 0 }, x = /* @__PURE__ */ vue.defineComponent({ + __name: "FilterBar", + props: { + filters: {}, + filterValues: {} + }, + emits: ["update:filter-values"], + setup(i, { emit: t2 }) { + const o = i; + function n(e, l) { + let a = { ...o.filterValues }; + a[e] = l, t2("update:filter-values", a); + } + return (e, l) => e.filters ? (vue.openBlock(), vue.createElementBlock("div", Ae, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.filters, (a) => (vue.openBlock(), vue.createBlock(We, { + key: a.field, + filter: a, + value: e.filterValues[a.field] ?? void 0, + "onUpdate:value": (u) => n(a.field, u) + }, null, 8, ["filter", "value", "onUpdate:value"]))), 128)) + ])) : vue.createCommentVNode("", true); + } + }), He = { class: "search" }, Je = ["value", "placeholder"], R = /* @__PURE__ */ vue.defineComponent({ + __name: "SearchControl", + props: { + modelValue: {} + }, + emits: ["update:modelValue", "update:model-value"], + setup(i, { emit: t$1 }) { + function o(a, u = 500) { + let _; + return (...y) => { + clearTimeout(_), _ = setTimeout(() => { + a.apply(this, y); + }, u); + }; + } + function n(a) { + t$1("update:modelValue", a); + } + const e = o((a) => n(a)), { t: l } = vueI18n.useI18n(); + return (a, u) => (vue.openBlock(), vue.createElementBlock("div", He, [ + vue.createElementVNode("input", { + id: "search", + class: "form-control", + value: a.modelValue, + placeholder: vue.unref(l)("placeholder"), + onInput: u[0] || (u[0] = (_) => vue.unref(e)(vue.unref(t)(_))) + }, null, 40, Je) + ])); + } + }); + function W(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + placeholder: (o) => { + const { normalize: n } = o; + return n(["Search"]); + } + }, + nl: { + placeholder: (o) => { + const { normalize: n } = o; + return n(["Zoeken"]); + } + } + } + }); + } + typeof W == "function" && W(R); + const Ke = ["value"], Xe = ["value"], ee = /* @__PURE__ */ vue.defineComponent({ + __name: "PageSizeControl", + props: { + pageSize: {}, + pageSizeOptions: {} + }, + emits: ["update:pageSize", "update:page-size"], + setup(i, { emit: t$1 }) { + const o = i; + function n(e) { + if (typeof e == "string") + try { + e = Number(e); + } catch { + e = o.pageSizeOptions[0] ?? 10; + } + t$1("update:pageSize", e); + } + return (e, l) => (vue.openBlock(), vue.createElementBlock("select", { + value: e.pageSize, + class: "form-select", + onChange: l[0] || (l[0] = (a) => n(vue.unref(t)(a))) + }, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.pageSizeOptions, (a) => (vue.openBlock(), vue.createElementBlock("option", { + key: a, + value: a + }, vue.toDisplayString(a), 9, Xe))), 128)) + ], 40, Ke)); + } + }), Ye = ["value"], xe = ["value"], te = /* @__PURE__ */ vue.defineComponent({ + __name: "SortControl", + props: { + currentSort: {}, + sortOptions: {} + }, + emits: ["update:current-sort", "update:currentSort"], + setup(i, { emit: t$1 }) { + return (o, n) => (vue.openBlock(), vue.createElementBlock("select", { + value: o.currentSort, + class: "form-select", + onChange: n[0] || (n[0] = (e) => o.$emit("update:current-sort", vue.unref(t)(e).trim())) + }, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(o.sortOptions, ({ field: e, label: l }) => (vue.openBlock(), vue.createElementBlock("option", { + key: e, + value: e + }, vue.toDisplayString(l), 9, xe))), 128)) + ], 40, Ye)); + } + }), et = { key: 0 }, j = /* @__PURE__ */ vue.defineComponent({ + __name: "SearchResultNum", + props: { + searchQuery: {}, + pageNum: {}, + totalNum: {} + }, + setup(i) { + const { t: t2 } = vueI18n.useI18n(); + return (o, n) => (vue.openBlock(), vue.createElementBlock("div", null, [ + o.searchQuery ? (vue.openBlock(), vue.createElementBlock("span", et, vue.toDisplayString(vue.unref(t2)("search", { query: o.searchQuery })), 1)) : vue.createCommentVNode("", true), + vue.createTextVNode(" " + vue.toDisplayString(vue.unref(t2)("showing", { + pageNum: o.pageNum, + totalNum: Intl.NumberFormat().format(o.totalNum) + })), 1) + ])); + } + }); + function A(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + search: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n(["Search result: ", e(l("query")), ","]); + }, + showing: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n(["showing ", e(l("pageNum")), " of ", e(l("totalNum")), " results"]); + } + }, + nl: { + search: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n(["Zoekresultaat: ", e(l("query")), ","]); + }, + showing: (o) => { + const { normalize: n, interpolate: e, named: l } = o; + return n([e(l("pageNum")), " van ", e(l("totalNum")), " getoond"]); + } + } + } + }); + } + typeof A == "function" && A(j); + const tt = { class: "uu-container" }, nt = { class: "uu-list" }, ot = { class: "uu-list-controls" }, at = { + key: 1, + class: "uu-list-order-control" + }, st = { class: "uu-list-page-size-control" }, lt = { + key: 0, + class: "uu-list-filters" + }, rt = { class: "uu-list-content" }, it = /* @__PURE__ */ vue.defineComponent({ + __name: "Default", + props: { + data: {}, + isLoading: { type: Boolean }, + totalData: {}, + currentPage: {}, + searchEnabled: { type: Boolean }, + search: {}, + sortEnabled: { type: Boolean }, + currentSort: {}, + sortOptions: {}, + pageSize: {}, + pageSizeOptions: {}, + filtersEnabled: { type: Boolean }, + filters: {}, + filterValues: {} + }, + emits: ["update:current-page", "update:search", "update:current-sort", "update:page-size", "update:filter-values"], + setup(i, { emit: t2 }) { + const o = i, n = vue.computed(() => Math.ceil(o.totalData / o.pageSize)); + return (e, l) => { + var a; + return vue.openBlock(), vue.createElementBlock("div", tt, [ + vue.createElementVNode("div", nt, [ + vue.createElementVNode("div", ot, [ + e.searchEnabled ? (vue.openBlock(), vue.createBlock(R, { + key: 0, + "model-value": e.search, + class: "uu-list-search-control", + "onUpdate:modelValue": l[0] || (l[0] = (u) => e.$emit("update:search", u)) + }, null, 8, ["model-value"])) : vue.createCommentVNode("", true), + vue.createVNode(j, { + "search-query": e.search, + "page-num": ((a = e.data) == null ? void 0 : a.length) ?? 0, + "total-num": e.totalData, + class: "uu-list-search-text-control" + }, null, 8, ["search-query", "page-num", "total-num"]), + e.sortEnabled ? (vue.openBlock(), vue.createElementBlock("div", at, [ + vue.createVNode(te, { + "current-sort": e.currentSort, + "sort-options": e.sortOptions, + "onUpdate:currentSort": l[1] || (l[1] = (u) => t2("update:current-sort", u)) + }, null, 8, ["current-sort", "sort-options"]) + ])) : vue.createCommentVNode("", true), + vue.createElementVNode("div", st, [ + vue.createVNode(ee, { + "page-size-options": e.pageSizeOptions, + "page-size": e.pageSize, + "onUpdate:pageSize": l[2] || (l[2] = (u) => t2("update:page-size", u)) + }, null, 8, ["page-size-options", "page-size"]) + ]) + ]), + e.filtersEnabled ? (vue.openBlock(), vue.createElementBlock("div", lt, [ + vue.renderSlot(e.$slots, "filters-top", { + data: e.data, + isLoading: e.isLoading + }), + vue.createVNode(x, { + filters: e.filters, + "filter-values": e.filterValues, + "onUpdate:filterValues": l[3] || (l[3] = (u) => e.$emit("update:filter-values", u)) + }, null, 8, ["filters", "filter-values"]), + vue.renderSlot(e.$slots, "filters-bottom", { + data: e.data, + isLoading: e.isLoading + }) + ])) : vue.createCommentVNode("", true), + vue.createElementVNode("div", rt, [ + vue.renderSlot(e.$slots, "data", { + data: e.data, + isLoading: e.isLoading + }), + vue.createElementVNode("div", null, [ + e.data ? (vue.openBlock(), vue.createBlock(vue.unref(q), { + key: 0, + "max-pages": n.value, + currentpage: e.currentPage, + onChangePage: l[4] || (l[4] = (u) => e.$emit("update:current-page", u)) + }, null, 8, ["max-pages", "currentpage"])) : vue.createCommentVNode("", true) + ]) + ]) + ]) + ]); + }; + } + }), ut = { class: "w-100 d-flex align-items-center gap-3 uu-list-controls" }, dt = { + key: 0, + class: "ms-auto" + }, ne = /* @__PURE__ */ vue.defineComponent({ + __name: "Sidebar", + props: { + data: {}, + isLoading: { type: Boolean }, + totalData: {}, + currentPage: {}, + searchEnabled: { type: Boolean }, + search: {}, + sortEnabled: { type: Boolean }, + currentSort: {}, + sortOptions: {}, + pageSize: {}, + pageSizeOptions: {}, + filtersEnabled: { type: Boolean }, + filters: {}, + filterValues: {} + }, + emits: ["update:current-page", "update:search", "update:current-sort", "update:page-size", "update:filter-values"], + setup(i, { emit: t2 }) { + const o = i, n = vue.computed(() => Math.ceil(o.totalData / o.pageSize)); + return (e, l) => (vue.openBlock(), vue.createBlock(vue.unref(je), { class: "uu-list-sidebar" }, { + sidebar: vue.withCtx(() => [ + e.searchEnabled ? (vue.openBlock(), vue.createBlock(R, { + key: 0, + "model-value": e.search, + "onUpdate:modelValue": l[0] || (l[0] = (a) => e.$emit("update:search", a)) + }, null, 8, ["model-value"])) : vue.createCommentVNode("", true), + vue.renderSlot(e.$slots, "filters-top", { + data: e.data, + isLoading: e.isLoading + }), + e.filters ? (vue.openBlock(), vue.createBlock(x, { + key: 1, + filters: e.filters, + "filter-values": e.filterValues, + "onUpdate:filterValues": l[1] || (l[1] = (a) => e.$emit("update:filter-values", a)) + }, null, 8, ["filters", "filter-values"])) : vue.createCommentVNode("", true), + vue.renderSlot(e.$slots, "filters-bottom", { + data: e.data, + isLoading: e.isLoading + }) + ]), + default: vue.withCtx(() => { + var a; + return [ + vue.createElementVNode("div", null, [ + vue.createElementVNode("div", ut, [ + vue.createVNode(j, { + "search-query": e.search, + "page-num": ((a = e.data) == null ? void 0 : a.length) ?? 0, + "total-num": e.totalData + }, null, 8, ["search-query", "page-num", "total-num"]), + e.sortEnabled ? (vue.openBlock(), vue.createElementBlock("div", dt, [ + vue.createVNode(te, { + "current-sort": e.currentSort, + "sort-options": e.sortOptions, + "onUpdate:currentSort": l[2] || (l[2] = (u) => t2("update:current-sort", u)) + }, null, 8, ["current-sort", "sort-options"]) + ])) : vue.createCommentVNode("", true), + vue.createElementVNode("div", null, [ + vue.createVNode(ee, { + "page-size-options": e.pageSizeOptions, + "page-size": e.pageSize, + "onUpdate:pageSize": l[3] || (l[3] = (u) => t2("update:page-size", u)) + }, null, 8, ["page-size-options", "page-size"]) + ]) + ]), + vue.renderSlot(e.$slots, "data", { + data: e.data, + isLoading: e.isLoading + }), + vue.createElementVNode("div", null, [ + e.data ? (vue.openBlock(), vue.createBlock(vue.unref(q), { + key: 0, + "max-pages": n.value, + currentpage: e.currentPage, + onChangePage: l[4] || (l[4] = (u) => e.$emit("update:current-page", u)) + }, null, 8, ["max-pages", "currentpage"])) : vue.createCommentVNode("", true) + ]) + ]) + ]; + }), + _: 3 + })); + } + }); + function H(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + loading: (o) => { + const { normalize: n } = o; + return n(["Loading...."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["No items to display"]); + } + }, + nl: { + loading: (o) => { + const { normalize: n } = o; + return n(["Gegevens worden laden..."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["Geen gegevens om te tonen"]); + } + } + } + }); + } + typeof H == "function" && H(ne); + const pt = /* @__PURE__ */ vue.defineComponent({ + __name: "DebugVisualizer", + props: { + data: { default: void 0 }, + isLoading: { type: Boolean, default: false } + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("pre", null, vue.toDisplayString(t2.data), 1)); + } + }), ct = /* @__PURE__ */ vue.defineComponent({ + __name: "UUList", + props: { + container: { default: "default" }, + data: {}, + isLoading: { type: Boolean, default: false }, + totalData: {}, + currentPage: {}, + searchEnabled: { type: Boolean, default: false }, + search: { default: "" }, + sortEnabled: { type: Boolean, default: false }, + currentSort: { default: "" }, + sortOptions: { default: () => [] }, + pageSize: { default: 10 }, + pageSizeOptions: { default: () => [10, 25, 50] }, + filtersEnabled: { type: Boolean, default: false }, + filters: {}, + filterValues: {} + }, + emits: ["update:current-page", "update:search", "update:current-sort", "update:page-size", "update:filter-values"], + setup(i, { emit: t2 }) { + const o = i, n = vue.computed(() => { + switch (o.container) { + case "sidebar": + return ne; + default: + return it; + } + }); + return (e, l) => (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(n.value), { + "is-loading": e.isLoading, + data: e.data, + "total-data": e.totalData, + "search-enabled": e.searchEnabled, + search: e.search, + "sort-enabled": e.sortEnabled, + "current-sort": e.currentSort, + "current-page": e.currentPage, + "page-size-options": e.pageSizeOptions, + "sort-options": e.sortOptions, + "page-size": e.pageSize, + "filters-enabled": e.filtersEnabled, + filters: e.filters, + "filter-values": e.filterValues, + "onUpdate:search": l[0] || (l[0] = (a) => t2("update:search", a)), + "onUpdate:currentSort": l[1] || (l[1] = (a) => t2("update:current-sort", a)), + "onUpdate:pageSize": l[2] || (l[2] = (a) => t2("update:page-size", a)), + "onUpdate:currentPage": l[3] || (l[3] = (a) => t2("update:current-page", a)), + "onUpdate:filterValues": l[4] || (l[4] = (a) => t2("update:filter-values", a)) + }, { + data: vue.withCtx(({ data: a, isLoading: u }) => [ + vue.renderSlot(e.$slots, "data", { + data: a, + isLoading: u + }, () => [ + vue.createVNode(pt, { + data: a, + "is-loading": u + }, null, 8, ["data", "is-loading"]) + ]) + ]), + "filters-top": vue.withCtx(({ data: a, isLoading: u }) => [ + vue.renderSlot(e.$slots, "filters-top", { + data: a, + isLoading: u + }) + ]), + "filters-bottom": vue.withCtx(({ data: a, isLoading: u }) => [ + vue.renderSlot(e.$slots, "filters-bottom", { + data: a, + isLoading: u + }) + ]), + _: 3 + }, 40, ["is-loading", "data", "total-data", "search-enabled", "search", "sort-enabled", "current-sort", "current-page", "page-size-options", "sort-options", "page-size", "filters-enabled", "filters", "filter-values"])); + } + }), mt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVString", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("span", { + class: vue.normalizeClass(t2.column.classes) + }, vue.toDisplayString(t2.item[t2.column.field]), 3)); + } + }), ft = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVDate", + props: { + item: {}, + column: {} + }, + setup(i) { + const t2 = i, o = vue.computed(() => { + let n = null; + try { + n = new Date(t2.item[t2.column.field]); + } catch (a) { + return console.error(a), ""; + } + let e; + if (t2.column.language !== void 0 && t2.column.language !== null && (e = t2.column.language), typeof t2.column.format == "string") { + let a = null; + switch (t2.column.format) { + case "date": + a = { + dateStyle: "medium" + }; + break; + case "time": + a = { + timeStyle: "short" + }; + break; + case "datetime": + a = { + dateStyle: "medium", + timeStyle: "short" + }; + break; + } + return new Intl.DateTimeFormat(e, a).format(n); + } + return typeof t2.column.format == "object" && t2.column.format !== null ? new Intl.DateTimeFormat( + e, + t2.column.format + ).format(n) : new Intl.DateTimeFormat(e).format(n); + }); + return (n, e) => (vue.openBlock(), vue.createElementBlock("span", { + class: vue.normalizeClass(n.column.classes) + }, vue.toDisplayString(o.value), 3)); + } + }), gt = { key: 0 }, ht = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVButton", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => t2.item[t2.column.field] ? (vue.openBlock(), vue.createElementBlock("span", gt, [ + vue.createVNode(vue.unref(Y), { + href: t2.item[t2.column.field].link, + "css-classes": t2.item[t2.column.field].classes, + "new-tab": t2.item[t2.column.field].new_tab, + size: t2.column.size, + variant: t2.column.variant + }, { + default: vue.withCtx(() => [ + vue.createTextVNode(vue.toDisplayString(t2.item[t2.column.field].text), 1) + ]), + _: 1 + }, 8, ["href", "css-classes", "new-tab", "size", "variant"]) + ])) : vue.createCommentVNode("", true); + } + }), vt = { key: 0 }, bt = ["href", "target"], yt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVLink", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => t2.item[t2.column.field] ? (vue.openBlock(), vue.createElementBlock("span", vt, [ + vue.createElementVNode("a", { + href: t2.item[t2.column.field].link, + class: vue.normalizeClass(t2.column.classes), + target: t2.item[t2.column.field].new_tab ? "_blank" : "_self" + }, vue.toDisplayString(t2.item[t2.column.field].text), 11, bt) + ])) : vue.createCommentVNode("", true); + } + }), _t = ["innerHTML"], $t = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVHTML", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("span", { + innerHTML: t2.item[t2.column.field] + }, null, 8, _t)); + } + }), kt = { + key: 0, + class: "dropdown" + }, zt = /* @__PURE__ */ vue.createStaticVNode('', 1), St = { class: "dropdown-menu" }, wt = { + key: 0, + class: "dropdown-divider" + }, Ct = ["href", "target"], Bt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVActions", + props: { + item: {}, + column: {} + }, + setup(i) { + const t2 = i, o = vue.computed(() => t2.item[t2.column.field].entries()); + return (n, e) => o.value ? (vue.openBlock(), vue.createElementBlock("div", kt, [ + zt, + vue.createElementVNode("ul", St, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(o.value, ([l, a]) => (vue.openBlock(), vue.createElementBlock("li", { key: l }, [ + a.divider ? (vue.openBlock(), vue.createElementBlock("hr", wt)) : (vue.openBlock(), vue.createElementBlock("a", { + key: 1, + href: a.link, + class: vue.normalizeClass(["dropdown-item", a.classes ?? ""]), + target: a.new_tab ? "_blank" : "_self" + }, vue.toDisplayString(a.text), 11, Ct)) + ]))), 128)) + ]) + ])) : vue.createCommentVNode("", true); + } + }), Vt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVColumn", + props: { + item: {}, + column: {} + }, + setup(i) { + return (t2, o) => t2.column.type == "string" ? (vue.openBlock(), vue.createBlock(mt, { + key: 0, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "date" ? (vue.openBlock(), vue.createBlock(ft, { + key: 1, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "button" ? (vue.openBlock(), vue.createBlock(ht, { + key: 2, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "link" ? (vue.openBlock(), vue.createBlock(yt, { + key: 3, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "html" ? (vue.openBlock(), vue.createBlock($t, { + key: 4, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : t2.column.type == "actions" ? (vue.openBlock(), vue.createBlock(Bt, { + key: 5, + item: t2.item, + column: t2.column + }, null, 8, ["item", "column"])) : vue.createCommentVNode("", true); + } + }), Dt = /* @__PURE__ */ vue.defineComponent({ + __name: "DDVRow", + props: { + item: {}, + columns: {} + }, + setup(i) { + return (t2, o) => (vue.openBlock(), vue.createElementBlock("tr", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(t2.columns, (n) => (vue.openBlock(), vue.createElementBlock("td", { + key: n.field, + class: "align-middle" + }, [ + vue.createVNode(Vt, { + column: n, + item: t2.item + }, null, 8, ["column", "item"]) + ]))), 128)) + ])); + } + }), Ut = { + key: 0, + class: "alert alert-info w-100" + }, Lt = { key: 0 }, Ot = { key: 1 }, It = ["colspan"], oe = /* @__PURE__ */ vue.defineComponent({ + __name: "DataDefinedVisualizer", + props: { + data: { default: null }, + columns: {}, + isLoading: { type: Boolean, default: false } + }, + setup(i) { + const t2 = i, o = vue.computed(() => t2.data === null || t2.data === void 0 || t2.data.length === 0), { t: n } = vueI18n.useI18n(); + return (e, l) => e.isLoading && o.value ? (vue.openBlock(), vue.createElementBlock("div", Ut, vue.toDisplayString(vue.unref(n)("loading")), 1)) : (vue.openBlock(), vue.createElementBlock("table", { + key: 1, + class: vue.normalizeClass(["table", e.isLoading ? "loading" : ""]) + }, [ + vue.createElementVNode("thead", null, [ + vue.createElementVNode("tr", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.columns, (a) => (vue.openBlock(), vue.createElementBlock("th", { + key: a.field + }, vue.toDisplayString(a.label), 1))), 128)) + ]) + ]), + o.value ? (vue.openBlock(), vue.createElementBlock("tbody", Ot, [ + vue.createElementVNode("tr", null, [ + vue.createElementVNode("td", { + colspan: e.columns.length + }, vue.toDisplayString(vue.unref(n)("no_data")), 9, It) + ]) + ])) : (vue.openBlock(), vue.createElementBlock("tbody", Lt, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(e.data, (a) => (vue.openBlock(), vue.createBlock(Dt, { + key: a.id, + item: a, + columns: e.columns + }, null, 8, ["item", "columns"]))), 128)) + ])) + ], 2)); + } + }); + function J(i) { + const t2 = i; + t2.__i18n = t2.__i18n || [], t2.__i18n.push({ + locale: "", + resource: { + en: { + loading: (o) => { + const { normalize: n } = o; + return n(["Loading...."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["No items to display"]); + } + }, + nl: { + loading: (o) => { + const { normalize: n } = o; + return n(["Gegevens worden laden..."]); + }, + no_data: (o) => { + const { normalize: n } = o; + return n(["Geen gegevens om te tonen"]); + } + } + } + }); + } + typeof J == "function" && J(oe); + const Ft = /* @__PURE__ */ vue.defineComponent({ + __name: "DSCList", + props: { + config: {} + }, + setup(i) { + const t2 = i, o = vue.ref(t2.config.pageSize), n = vue.ref(1), e = vue.ref(""), l = vue.ref("id"), a = vue.ref(true); + function u() { + var m; + let p = {}; + return (m = t2.config.filters) == null || m.forEach((k) => { + var O; + if (k.initial) { + p[k.field] = k.initial; + return; + } + switch (k.type) { + case "date": + p[k.field] = null; + break; + case "checkbox": + p[k.field] = []; + break; + case "radio": + ((O = k.options) == null ? void 0 : O.length) != 0 && k.options && (p[k.field] = k.options[0][0]); + break; + } + }), p; + } + const _ = vue.ref(u()); + let y = vue.ref(null); + const P = vue.computed(() => { + let p = []; + p.push("page_size=" + encodeURIComponent(o.value)); + for (const [m, k] of Object.entries(_.value)) + k != null && (typeof k == "object" ? k.forEach( + (O) => p.push(m + "=" + encodeURIComponent(O)) + ) : p.push(m + "=" + encodeURIComponent(k))); + return e.value && p.push("search=" + encodeURIComponent(e.value)), p.push("ordering=" + encodeURIComponent(l.value)), n.value = 1, p; + }), I = vue.computed(() => { + let p = P.value, m = "page=" + encodeURIComponent(n.value); + return p.length !== 0 && (m = "&" + m), "?" + p.join("&") + m; + }), U = vue.computed(() => { + let p = new URL(window.location.protocol + "//" + window.location.host); + return p.pathname = t2.config.dataUri, p.search = I.value, console.log(p.toString()), p.toString(); + }); + vue.watch(U, () => { + F(); + }); + const $ = vue.ref(null); + function F() { + $.value && $.value.abort(), $.value = new AbortController(), a.value = true, fetch(U.value, { signal: $.value.signal }).then((p) => { + p.json().then((m) => { + y.value = m, a.value = false, m.ordering && (l.value = m.ordering), $.value = null; + }); + }).catch((p) => { + console.log(p); + }); + } + return vue.onMounted(() => { + F(); + }), (p, m) => { + var k, O, Z; + return vue.openBlock(), vue.createBlock(ct, { + "is-loading": a.value, + data: ((k = vue.unref(y)) == null ? void 0 : k.results) ?? void 0, + "total-data": ((O = vue.unref(y)) == null ? void 0 : O.count) ?? 0, + "search-enabled": p.config.searchEnabled, + search: e.value, + "sort-enabled": p.config.sortEnabled, + "current-sort": l.value, + "page-size-options": p.config.pageSizeOptions, + "sort-options": p.config.sortOptions ?? [], + "page-size": ((Z = vue.unref(y)) == null ? void 0 : Z.page_size) ?? 10, + "current-page": n.value, + "filters-enabled": p.config.filtersEnabled, + filters: p.config.filters ?? [], + "filter-values": _.value, + container: p.config.container, + "onUpdate:search": m[0] || (m[0] = (C) => e.value = C), + "onUpdate:currentSort": m[1] || (m[1] = (C) => l.value = C), + "onUpdate:pageSize": m[2] || (m[2] = (C) => o.value = C), + "onUpdate:currentPage": m[3] || (m[3] = (C) => n.value = C), + "onUpdate:filterValues": m[4] || (m[4] = (C) => _.value = C) + }, { + data: vue.withCtx(({ data: C, isLoading: G }) => [ + vue.renderSlot(p.$slots, "data", { + data: C, + isLoading: G + }, () => [ + vue.createVNode(oe, { + data: C, + columns: p.config.columns, + "is-loading": G + }, null, 8, ["data", "columns", "is-loading"]) + ]) + ]), + _: 3 + }, 8, ["is-loading", "data", "total-data", "search-enabled", "search", "sort-enabled", "current-sort", "page-size-options", "sort-options", "page-size", "current-page", "filters-enabled", "filters", "filter-values", "container"]); + }; + } + }); + function block0(Component) { + const _Component = Component; + _Component.__i18n = _Component.__i18n || []; + _Component.__i18n.push({ + "locale": "", + "resource": { + "en": { + "name": (ctx) => { + const { normalize: _normalize } = ctx; + return _normalize(["Name"]); + }, + "refnum": (ctx) => { + const { normalize: _normalize } = ctx; + return _normalize(["Reference Number"]); + }, + "status": (ctx) => { + const { normalize: _normalize } = ctx; + return _normalize(["Status"]); + } + }, + "nl": { + "name": (ctx) => { + const { normalize: _normalize } = ctx; + return _normalize(["Naam"]); + }, + "refnum": (ctx) => { + const { normalize: _normalize } = ctx; + return _normalize(["Referentie Nummer"]); + }, + "status": (ctx) => { + const { normalize: _normalize } = ctx; + return _normalize(["Status"]); + } + } + } + }); + } + const _hoisted_1 = { key: 0 }; + const _hoisted_2 = { + key: 1, + class: "table" + }; + const _sfc_main = { + __name: "CustomList", + props: ["config"], + setup(__props) { + const { t: t2 } = vueI18n.useI18n(); + function statusColor(status) { + switch (status) { + case "C": + return "green"; + case "R": + return "orange"; + case "O": + return "red"; + default: + return ""; + } + } + return (_ctx, _cache) => { + return vue.openBlock(), vue.createBlock(vue.unref(Ft), { config: __props.config }, { + data: vue.withCtx(({ data, isLoading }) => [ + vue.createElementVNode("div", null, [ + isLoading ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, " Loading... ")) : (vue.openBlock(), vue.createElementBlock("table", _hoisted_2, [ + vue.createElementVNode("thead", null, [ + vue.createElementVNode("tr", null, [ + vue.createElementVNode("th", null, vue.toDisplayString(vue.unref(t2)("name")), 1), + vue.createElementVNode("th", null, vue.toDisplayString(vue.unref(t2)("refnum")), 1), + vue.createElementVNode("th", null, vue.toDisplayString(vue.unref(t2)("status")), 1) + ]) + ]), + vue.createElementVNode("tbody", null, [ + (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(data, (datum) => { + return vue.openBlock(), vue.createElementBlock("tr", null, [ + vue.createElementVNode("td", null, vue.toDisplayString(datum.project_name), 1), + vue.createElementVNode("td", null, vue.toDisplayString(datum.reference_number), 1), + vue.createElementVNode("td", { + class: vue.normalizeClass(`text-bg-${statusColor(datum.status)}`) + }, vue.toDisplayString(datum.get_status_display), 3) + ]); + }), 256)) + ]) + ])) + ]) + ]), + _: 1 + }, 8, ["config"]); + }; + } + }; + if (typeof block0 === "function") + block0(_sfc_main); + const style = ""; + return _sfc_main; +}(Vue, VueI18n); diff --git a/dev/dev_vue/static/dev_vue/example-custom-uu-list/style.css b/dev/dev_vue/static/dev_vue/example-custom-uu-list/style.css new file mode 100644 index 00000000..393f0ebd --- /dev/null +++ b/dev/dev_vue/static/dev_vue/example-custom-uu-list/style.css @@ -0,0 +1,20 @@ +/*! +* Copyright 2022, 2023 Utrecht University +* +* Licensed under the EUPL, Version 1.2 only +* You may not use this work except in compliance with the +Licence. +* A copy of the Licence is provided in the 'LICENCE' file in this project. +* You may also obtain a copy of the Licence at: +* +* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12 +* +* Unless required by applicable law or agreed to in +writing, software distributed under the Licence is +distributed on an "AS IS" basis, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +express or implied. +* See the Licence for the specific language governing +permissions and limitations under the Licence. +*/ +.card-header-icon[data-v-06938a02]{cursor:pointer}.dropdown.dropdown-select .dropdown-menu{padding-top:0}.dropdown.dropdown-select .dropdown-item:hover{background:#ffcd00;color:#000}.dropdown.dropdown-select label{width:100%} diff --git a/dev/dev_vue/templates/dev_vue/example-custom-list.html b/dev/dev_vue/templates/dev_vue/example-custom-list.html new file mode 100644 index 00000000..ae2b1938 --- /dev/null +++ b/dev/dev_vue/templates/dev_vue/example-custom-list.html @@ -0,0 +1,13 @@ +{% extends "base/base.html" %} +{% load static %} +{% load vue3 %} + +{% block html_head %} + {% load_vue_libs %} + + +{% endblock %} + +{% block content %} + {% vue CustomList :config=uu_list_config %} +{% endblock %} diff --git a/dev/dev_vue/urls.py b/dev/dev_vue/urls.py index 6c1babda..46f5be2d 100644 --- a/dev/dev_vue/urls.py +++ b/dev/dev_vue/urls.py @@ -1,11 +1,13 @@ from django.urls import path -from .views import ExampleDataListView, ListView +from .views import ExampleDataListView, ListView, ExampleCustomListView app_name = "dev_vue" urlpatterns = [ path("uu-list/", ListView.as_view(), name="list"), path("uu-list//", ListView.as_view(), name="dummy"), + path("custom-list/", ExampleCustomListView.as_view(), name="custom-list"), + path("custom-list//", ExampleCustomListView.as_view(), name="custom-dummy"), path("api/data/", ExampleDataListView.as_view(), name="data"), ] diff --git a/dev/dev_vue/views.py b/dev/dev_vue/views.py index 7d73db14..dc162103 100644 --- a/dev/dev_vue/views.py +++ b/dev/dev_vue/views.py @@ -130,3 +130,7 @@ class ListView(DDVListView): label="", ), ] + + +class ExampleCustomListView(ListView): + template_name = "dev_vue/example-custom-list.html" From 81c076d557c722fa16aa02c2cb6275025c09ed4f Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 20 Nov 2023 16:30:18 +0100 Subject: [PATCH 19/34] feat: added Django 5 support --- .github/workflows/django-tests.yml | 2 +- .sassrc | 6 + README.md | 7 +- dev/requirements.in | 3 +- dev/requirements.txt | 230 +++++++++++++++++++++-------- pyproject.toml | 18 +-- 6 files changed, 192 insertions(+), 74 deletions(-) create mode 100644 .sassrc diff --git a/.github/workflows/django-tests.yml b/.github/workflows/django-tests.yml index 56385c45..1832fa82 100644 --- a/.github/workflows/django-tests.yml +++ b/.github/workflows/django-tests.yml @@ -14,7 +14,7 @@ jobs: strategy: max-parallel: 2 matrix: - python-version: ['3.9', '3.10'] + python-version: ['3.11'] steps: - uses: actions/checkout@v2 diff --git a/.sassrc b/.sassrc new file mode 100644 index 00000000..b821c2e2 --- /dev/null +++ b/.sassrc @@ -0,0 +1,6 @@ +{ + "includePaths": [ + ".", + "assets/scss/" + ] +} \ No newline at end of file diff --git a/README.md b/README.md index cc621db4..e7ae11f7 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,10 @@ A collection of Django apps for CDH Django projects. Developed by the Documentation provided here: https://centrefordigitalhumanities.github.io/django-shared-core/ ## Currently targeting: -- Python 3.9 -- Python 3.10 -- Django 4.0 +- Python 3.9 (Django 4 only) +- Python 3.11 +- Django 4.0-4.2 +- Django 5.0 Tests are run using these versions; Some apps have lower requirements, but are not tested against these lower versions. check the app collection below for diff --git a/dev/requirements.in b/dev/requirements.in index efc35243..5624e569 100644 --- a/dev/requirements.in +++ b/dev/requirements.in @@ -1,4 +1,5 @@ -Django>=4.0,<4.1 +Django==5.0rc1 +../.[dev] django-braces django-modeltranslation django-impersonate diff --git a/dev/requirements.txt b/dev/requirements.txt index 602f1f64..94f867d4 100644 --- a/dev/requirements.txt +++ b/dev/requirements.txt @@ -1,128 +1,238 @@ # -# This file is autogenerated by pip-compile with Python 3.9 +# This file is autogenerated by pip-compile with Python 3.11 # by the following command: # -# pip-compile --resolver=backtracking requirements.in +# pip-compile --pre # -asgiref==3.6.0 +alabaster==0.7.13 + # via sphinx +asgiref==3.7.2 # via django -build==0.10.0 +babel==2.13.1 + # via sphinx +blessed==1.20.0 + # via curtsies +bpython==0.24 + # via cdh-django-core +build==1.0.3 # via pip-tools -certifi==2022.12.7 +certifi==2023.11.17 # via requests -cffi==1.15.1 +cffi==1.16.0 # via cryptography -charset-normalizer==3.0.1 +charset-normalizer==3.3.2 # via requests -click==8.1.3 +click==8.1.7 # via pip-tools closure==20191111 - # via -r requirements.in -cryptography==39.0.0 # via # -r requirements.in + # cdh-django-core +cryptography==41.0.5 + # via + # -r requirements.in + # cdh-django-core # pyopenssl # pysaml2 -defusedxml==0.7.1 +curtsies==0.4.2 + # via bpython +cwcwidth==0.1.9 + # via + # bpython + # curtsies +defusedxml==0.8.0rc2 # via # djangosaml2 # pysaml2 -django==4.0.8 +deprecated==1.2.14 + # via cdh-django-core +django==5.0rc1 # via # -r requirements.in + # cdh-django-core # django-braces # django-csp # django-debug-toolbar # django-extensions + # django-filter # django-modeltranslation # django-simple-menu # djangorestframework # djangosaml2 + # sphinxcontrib-django django-braces==1.15.0 - # via -r requirements.in + # via + # -r requirements.in + # cdh-django-core django-csp==3.7 - # via -r requirements.in -django-debug-toolbar==3.8.1 - # via -r requirements.in -django-extensions==3.2.1 - # via -r requirements.in -django-impersonate==1.8.2 - # via -r requirements.in -django-modeltranslation==0.18.7 - # via -r requirements.in -django-simple-menu==2.1.0 - # via -r requirements.in + # via + # -r requirements.in + # cdh-django-core +django-debug-toolbar==4.2.0 + # via + # -r requirements.in + # cdh-django-core +django-extensions==3.2.3 + # via + # -r requirements.in + # cdh-django-core +django-filter==23.3 + # via cdh-django-core +django-impersonate==1.9.1 + # via + # -r requirements.in + # cdh-django-core +django-modeltranslation==0.18.13b1 + # via + # -r requirements.in + # cdh-django-core +django-simple-menu==2.1.3 + # via + # -r requirements.in + # cdh-django-core djangorestframework==3.14.0 - # via -r requirements.in -djangosaml2==1.5.5 - # via -r requirements.in -elementpath==3.0.2 + # via + # -r requirements.in + # cdh-django-core +djangosaml2==1.8.0 + # via + # -r requirements.in + # cdh-django-core +docutils==0.20.1 + # via sphinx +elementpath==4.1.5 # via xmlschema +faker==20.0.3 + # via cdh-django-core +greenlet==3.0.1 + # via bpython idna==3.4 # via requests -importlib-metadata==6.0.0 - # via django-simple-menu +imagesize==1.4.1 + # via sphinx +jinja2==3.1.2 + # via sphinx lesscpy==0.15.1 + # via + # -r requirements.in + # cdh-django-core +markupsafe==2.1.3 + # via jinja2 +mysqlclient==2.2.0 # via -r requirements.in -mysqlclient==2.1.1 - # via -r requirements.in -packaging==23.0 - # via build -pip-tools==6.12.1 - # via -r requirements.in +packaging==23.2 + # via + # build + # sphinx +pbr==6.0.0 + # via sphinxcontrib-apidoc +pip-tools==7.3.0 + # via + # -r requirements.in + # cdh-django-core ply==3.11 # via lesscpy +pprintpp==0.4.0 + # via sphinxcontrib-django pscript==0.7.7 # via vbuild pycparser==2.21 # via cffi -pyjwt==2.6.0 - # via -r requirements.in -pyopenssl==23.0.0 +pygments==2.17.1 + # via + # bpython + # sphinx +pyjwt==2.8.0 + # via + # -r requirements.in + # cdh-django-core +pyopenssl==23.3.0 # via pysaml2 pyproject-hooks==1.0.0 # via build -pysaml2==7.2.1 +pysaml2==7.4.2 # via djangosaml2 pyscss==1.4.0 - # via -r requirements.in + # via + # -r requirements.in + # cdh-django-core python-dateutil==2.8.2 - # via pysaml2 + # via + # faker + # pysaml2 python-magic==0.4.27 - # via -r requirements.in -pytz==2022.7.1 + # via + # -r requirements.in + # cdh-django-core +pytz==2023.3.post1 # via # djangorestframework # pysaml2 -requests==2.28.2 +pyxdg==0.28 + # via bpython +requests==2.31.0 # via # -r requirements.in + # bpython + # cdh-django-core # pysaml2 + # sphinx six==1.16.0 # via - # pysaml2 + # blessed # pyscss # python-dateutil -sqlparse==0.4.3 +snowballstemmer==2.2.0 + # via sphinx +sphinx==7.2.6 + # via + # cdh-django-core + # sphinxcontrib-apidoc + # sphinxcontrib-applehelp + # sphinxcontrib-devhelp + # sphinxcontrib-django + # sphinxcontrib-htmlhelp + # sphinxcontrib-qthelp + # sphinxcontrib-serializinghtml + # uu-sphinx-theme +sphinxcontrib-apidoc==0.4.0 + # via cdh-django-core +sphinxcontrib-applehelp==1.0.7 + # via sphinx +sphinxcontrib-devhelp==1.0.5 + # via sphinx +sphinxcontrib-django==2.5 + # via sphinxcontrib-django2 +sphinxcontrib-django2==1.9 + # via cdh-django-core +sphinxcontrib-htmlhelp==2.0.4 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==1.0.6 + # via sphinx +sphinxcontrib-serializinghtml==1.1.9 + # via sphinx +sqlparse==0.4.4 # via # django # django-debug-toolbar -tomli==2.0.1 - # via - # build - # pyproject-hooks -typing-extensions==4.4.0 - # via django-modeltranslation -urllib3==1.26.14 +urllib3==2.1.0 # via requests -vbuild==0.8.1 - # via -r requirements.in -wheel==0.38.4 +uu-sphinx-theme @ git+https://github.com/CentreForDigitalHumanities/sphinx-theme.git@main + # via cdh-django-core +vbuild==0.8.2 + # via + # -r requirements.in + # cdh-django-core +wcwidth==0.2.10 + # via blessed +wheel==0.41.3 # via pip-tools -xmlschema==2.1.1 +wrapt==1.16.0 + # via deprecated +xmlschema==2.5.0 # via pysaml2 -zipp==3.11.0 - # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: # pip diff --git a/pyproject.toml b/pyproject.toml index 85b96348..f1cc598d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,13 +23,13 @@ classifiers = [ "Operating System :: Linux", ] dependencies = [ - "Django >=2.0,<5.0", + "Django >=2.0,<5.1", "Deprecated", ] [project.urls] -repository = "https://github.com/DH-IT-Portal-Development/django-shared-core" -documentation = "https://dh-it-portal-development.github.io/django-shared-core/" +repository = "https://github.com/CentreForDigitalHumanities/django-shared-core" +documentation = "https://centrefordigitalhumanities.github.io/django-shared-core/" [project.optional-dependencies] all = [ @@ -48,32 +48,32 @@ core = [ "djangorestframework", "django-csp", "cryptography", - "Django >=4.0,<5.0", + "Django >=4.0,<5.1", ] federated-auth = [ - "djangosaml2 <1.7", + "djangosaml2", ] files = [ "python-magic", - "Django >=4.0,<5.0", + "Django >=4.0,<5.1", ] integration_platform = [ "cdh-django-core[rest]", - "Django >=3.0,<5.0", + "Django >=3.0,<5.1", ] rest = [ "requests", "PyJWT", "djangorestframework", "django-filter", - "Django >=3.0,<5.0", + "Django >=3.0,<5.1", ] vue = [ "pyscss", "lesscpy", "closure", "vbuild", - "Django >=3.0,<5.0", + "Django >=3.0,<5.1", ] docs = [ "sphinx", From 3b19d5d449d749590b42c1dd9f7f0e34ec8b2f57 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Mon, 20 Nov 2023 16:35:42 +0100 Subject: [PATCH 20/34] Upped package version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f1cc598d..75630a82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,7 +8,7 @@ include-package-data = true [project] name = "cdh-django-core" description = "A Django apps library for CDH projects" -version = "3.1.0" +version = "3.2.0" readme = "README.md" authors = [ {name = "DH-IT Portal Development", email = "portaldev.gw@uu.nl"}, From 1cc2c2f30ce07d3abfc0507ac389caa553806e18 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Thu, 7 Dec 2023 12:51:49 +0100 Subject: [PATCH 21/34] feat: added select2 widget --- dev/main/forms.py | 14 ++++++++++++++ src/cdh/core/forms.py | 18 ++++++++++++++++++ .../cdh.core/js/widget/searchable-select.js | 3 +++ 3 files changed, 35 insertions(+) create mode 100644 src/cdh/core/static/cdh.core/js/widget/searchable-select.js diff --git a/dev/main/forms.py b/dev/main/forms.py index 77a47daf..3116f399 100644 --- a/dev/main/forms.py +++ b/dev/main/forms.py @@ -82,6 +82,20 @@ class FormStylesForm(forms.Form): widget=forms.RadioSelect, ) + searchable_select = forms.ChoiceField( + choices=[ + (1, "Train"), + (2, "Bus"), + (3, "Aeroplane"), + (4, "Bike"), + (5, "Feet"), + (6, "Magical Unicorn"), + (6, "Broom"), + (6, "Thestrals"), + ], + widget=core_fields.SearchableSelectWidget, + ) + integer = forms.IntegerField() float = forms.FloatField(help_text="Floating away") diff --git a/src/cdh/core/forms.py b/src/cdh/core/forms.py index 0f5b7edd..5d8fc497 100644 --- a/src/cdh/core/forms.py +++ b/src/cdh/core/forms.py @@ -99,6 +99,24 @@ def get_context(self, name, value, attrs): return super().get_context(name, value, attrs) +class SearchableSelectWidget(BootstrapSelect): + """A JS-baced widget for a searchable select. Currently using Select2 as + the backend.""" + + class Media: + js = [ + 'cdh.core/js/widget/searchable-select.js', + ] + + def get_context(self, name, value, attrs): + if "class" not in attrs: + attrs["class"] = "" + + attrs["class"] += " dsc-select2" + + return super().get_context(name, value, attrs) + + class BootstrapCheckboxInput(CheckboxInput): """Override of Django's version to use the right Bootstrap classes""" diff --git a/src/cdh/core/static/cdh.core/js/widget/searchable-select.js b/src/cdh/core/static/cdh.core/js/widget/searchable-select.js new file mode 100644 index 00000000..e22d7caa --- /dev/null +++ b/src/cdh/core/static/cdh.core/js/widget/searchable-select.js @@ -0,0 +1,3 @@ +$(() => { + $('.dsc-select2').select2(); +}) \ No newline at end of file From f013dda2334fec51388fc1cdff922194570913eb Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Thu, 7 Dec 2023 13:04:11 +0100 Subject: [PATCH 22/34] deps: update to uu bootstrap 1.5 alpha 1 --- package.json | 2 +- src/cdh/federated_auth/static/cdh.federated_auth/base.css | 2 +- yarn.lock | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ea4095c5..65fd8ba6 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "author": "Hum IT Portal Development & ILS Labs", "license": "Apache-2.0", "dependencies": { - "uu-bootstrap": "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0" + "uu-bootstrap": "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.1" }, "scripts": { "build-css": "yarn _build-css src/cdh/core/static/cdh.core/css/bootstrap.css --style=compressed", diff --git a/src/cdh/federated_auth/static/cdh.federated_auth/base.css b/src/cdh/federated_auth/static/cdh.federated_auth/base.css index 53325373..5169c37f 100644 --- a/src/cdh/federated_auth/static/cdh.federated_auth/base.css +++ b/src/cdh/federated_auth/static/cdh.federated_auth/base.css @@ -1 +1 @@ -.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#000 !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#000 !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#000 !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#000 !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-error{color:#fff !important;background-color:RGBA(var(--bs-error-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-blue{color:#fff !important;background-color:RGBA(var(--bs-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark-blue{color:#fff !important;background-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-indigo{color:#fff !important;background-color:RGBA(var(--bs-indigo-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-purple{color:#fff !important;background-color:RGBA(var(--bs-purple-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-pink{color:#fff !important;background-color:RGBA(var(--bs-pink-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-red{color:#fff !important;background-color:RGBA(var(--bs-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-bordeaux-red{color:#fff !important;background-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-brown{color:#fff !important;background-color:RGBA(var(--bs-brown-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cream{color:#000 !important;background-color:RGBA(var(--bs-cream-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-orange{color:#000 !important;background-color:RGBA(var(--bs-orange-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-yellow{color:#000 !important;background-color:RGBA(var(--bs-yellow-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-green{color:#000 !important;background-color:RGBA(var(--bs-green-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-teal{color:#000 !important;background-color:RGBA(var(--bs-teal-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cyan{color:#000 !important;background-color:RGBA(var(--bs-cyan-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-white{color:#000 !important;background-color:RGBA(var(--bs-white-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray{color:#fff !important;background-color:RGBA(var(--bs-gray-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray-dark{color:#fff !important;background-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(0, 0, 0, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 0, 0, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-error{color:RGBA(var(--bs-error-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-error-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-error:hover,.link-error:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(242, 242, 242, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(242, 242, 242, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(30, 30, 30, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(30, 30, 30, var(--bs-link-underline-opacity, 1)) !important}.link-blue{color:RGBA(var(--bs-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-blue:hover,.link-blue:focus{color:RGBA(66, 108, 158, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(66, 108, 158, var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue{color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue:hover,.link-dark-blue:focus{color:RGBA(0, 14, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 14, 51, var(--bs-link-underline-opacity, 1)) !important}.link-indigo{color:RGBA(var(--bs-indigo-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-indigo-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-indigo:hover,.link-indigo:focus{color:RGBA(82, 13, 194, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(82, 13, 194, var(--bs-link-underline-opacity, 1)) !important}.link-purple{color:RGBA(var(--bs-purple-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-purple-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-purple:hover,.link-purple:focus{color:RGBA(73, 26, 104, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(73, 26, 104, var(--bs-link-underline-opacity, 1)) !important}.link-pink{color:RGBA(var(--bs-pink-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-pink-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-pink:hover,.link-pink:focus{color:RGBA(171, 41, 106, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(171, 41, 106, var(--bs-link-underline-opacity, 1)) !important}.link-red{color:RGBA(var(--bs-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-red:hover,.link-red:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red{color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red:hover,.link-bordeaux-red:focus{color:RGBA(136, 17, 68, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(136, 17, 68, var(--bs-link-underline-opacity, 1)) !important}.link-brown{color:RGBA(var(--bs-brown-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-brown-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-brown:hover,.link-brown:focus{color:RGBA(88, 47, 28, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(88, 47, 28, var(--bs-link-underline-opacity, 1)) !important}.link-cream{color:RGBA(var(--bs-cream-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cream-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cream:hover,.link-cream:focus{color:RGBA(255, 235, 188, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 235, 188, var(--bs-link-underline-opacity, 1)) !important}.link-orange{color:RGBA(var(--bs-orange-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-orange-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-orange:hover,.link-orange:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-yellow{color:RGBA(var(--bs-yellow-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-yellow-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-yellow:hover,.link-yellow:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-green{color:RGBA(var(--bs-green-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-green-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-green:hover,.link-green:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-teal{color:RGBA(var(--bs-teal-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-teal-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-teal:hover,.link-teal:focus{color:RGBA(80, 185, 169, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(80, 185, 169, var(--bs-link-underline-opacity, 1)) !important}.link-cyan{color:RGBA(var(--bs-cyan-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cyan-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cyan:hover,.link-cyan:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-white{color:RGBA(var(--bs-white-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-white-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-white:hover,.link-white:focus{color:RGBA(255, 255, 255, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 255, 255, var(--bs-link-underline-opacity, 1)) !important}.link-gray{color:RGBA(var(--bs-gray-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray:hover,.link-gray:focus{color:RGBA(86, 86, 86, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 86, 86, var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark{color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark:hover,.link-gray-dark:focus{color:RGBA(42, 42, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 42, 42, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-error{--bs-focus-ring-color: rgba(var(--bs-error-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.focus-ring-blue{--bs-focus-ring-color: rgba(var(--bs-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark-blue{--bs-focus-ring-color: rgba(var(--bs-dark-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-indigo{--bs-focus-ring-color: rgba(var(--bs-indigo-rgb), var(--bs-focus-ring-opacity))}.focus-ring-purple{--bs-focus-ring-color: rgba(var(--bs-purple-rgb), var(--bs-focus-ring-opacity))}.focus-ring-pink{--bs-focus-ring-color: rgba(var(--bs-pink-rgb), var(--bs-focus-ring-opacity))}.focus-ring-red{--bs-focus-ring-color: rgba(var(--bs-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-bordeaux-red{--bs-focus-ring-color: rgba(var(--bs-bordeaux-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-brown{--bs-focus-ring-color: rgba(var(--bs-brown-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cream{--bs-focus-ring-color: rgba(var(--bs-cream-rgb), var(--bs-focus-ring-opacity))}.focus-ring-orange{--bs-focus-ring-color: rgba(var(--bs-orange-rgb), var(--bs-focus-ring-opacity))}.focus-ring-yellow{--bs-focus-ring-color: rgba(var(--bs-yellow-rgb), var(--bs-focus-ring-opacity))}.focus-ring-green{--bs-focus-ring-color: rgba(var(--bs-green-rgb), var(--bs-focus-ring-opacity))}.focus-ring-teal{--bs-focus-ring-color: rgba(var(--bs-teal-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cyan{--bs-focus-ring-color: rgba(var(--bs-cyan-rgb), var(--bs-focus-ring-opacity))}.focus-ring-white{--bs-focus-ring-color: rgba(var(--bs-white-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray{--bs-focus-ring-color: rgba(var(--bs-gray-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray-dark{--bs-focus-ring-color: rgba(var(--bs-gray-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-error{--bs-border-opacity: 1;border-color:rgba(var(--bs-error-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-blue-rgb), var(--bs-border-opacity)) !important}.border-dark-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-blue-rgb), var(--bs-border-opacity)) !important}.border-indigo{--bs-border-opacity: 1;border-color:rgba(var(--bs-indigo-rgb), var(--bs-border-opacity)) !important}.border-purple{--bs-border-opacity: 1;border-color:rgba(var(--bs-purple-rgb), var(--bs-border-opacity)) !important}.border-pink{--bs-border-opacity: 1;border-color:rgba(var(--bs-pink-rgb), var(--bs-border-opacity)) !important}.border-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-red-rgb), var(--bs-border-opacity)) !important}.border-bordeaux-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-border-opacity)) !important}.border-brown{--bs-border-opacity: 1;border-color:rgba(var(--bs-brown-rgb), var(--bs-border-opacity)) !important}.border-cream{--bs-border-opacity: 1;border-color:rgba(var(--bs-cream-rgb), var(--bs-border-opacity)) !important}.border-orange{--bs-border-opacity: 1;border-color:rgba(var(--bs-orange-rgb), var(--bs-border-opacity)) !important}.border-yellow{--bs-border-opacity: 1;border-color:rgba(var(--bs-yellow-rgb), var(--bs-border-opacity)) !important}.border-green{--bs-border-opacity: 1;border-color:rgba(var(--bs-green-rgb), var(--bs-border-opacity)) !important}.border-teal{--bs-border-opacity: 1;border-color:rgba(var(--bs-teal-rgb), var(--bs-border-opacity)) !important}.border-cyan{--bs-border-opacity: 1;border-color:rgba(var(--bs-cyan-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-gray{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-rgb), var(--bs-border-opacity)) !important}.border-gray-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.295rem + 0.54vw) !important}.fs-3{font-size:calc(1.265rem + 0.18vw) !important}.fs-4{font-size:1.2rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.4 !important}.lh-base{line-height:1.6 !important}.lh-lg{line-height:2.1 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-error{--bs-text-opacity: 1;color:rgba(var(--bs-error-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-blue{--bs-text-opacity: 1;color:rgba(var(--bs-blue-rgb), var(--bs-text-opacity)) !important}.text-dark-blue{--bs-text-opacity: 1;color:rgba(var(--bs-dark-blue-rgb), var(--bs-text-opacity)) !important}.text-indigo{--bs-text-opacity: 1;color:rgba(var(--bs-indigo-rgb), var(--bs-text-opacity)) !important}.text-purple{--bs-text-opacity: 1;color:rgba(var(--bs-purple-rgb), var(--bs-text-opacity)) !important}.text-pink{--bs-text-opacity: 1;color:rgba(var(--bs-pink-rgb), var(--bs-text-opacity)) !important}.text-red{--bs-text-opacity: 1;color:rgba(var(--bs-red-rgb), var(--bs-text-opacity)) !important}.text-bordeaux-red{--bs-text-opacity: 1;color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-text-opacity)) !important}.text-brown{--bs-text-opacity: 1;color:rgba(var(--bs-brown-rgb), var(--bs-text-opacity)) !important}.text-cream{--bs-text-opacity: 1;color:rgba(var(--bs-cream-rgb), var(--bs-text-opacity)) !important}.text-orange{--bs-text-opacity: 1;color:rgba(var(--bs-orange-rgb), var(--bs-text-opacity)) !important}.text-yellow{--bs-text-opacity: 1;color:rgba(var(--bs-yellow-rgb), var(--bs-text-opacity)) !important}.text-green{--bs-text-opacity: 1;color:rgba(var(--bs-green-rgb), var(--bs-text-opacity)) !important}.text-teal{--bs-text-opacity: 1;color:rgba(var(--bs-teal-rgb), var(--bs-text-opacity)) !important}.text-cyan{--bs-text-opacity: 1;color:rgba(var(--bs-cyan-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-gray{--bs-text-opacity: 1;color:rgba(var(--bs-gray-rgb), var(--bs-text-opacity)) !important}.text-gray-dark{--bs-text-opacity: 1;color:rgba(var(--bs-gray-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-error{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-error-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-indigo{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-indigo-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-purple{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-purple-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-pink{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-pink-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-bordeaux-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-brown{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-brown-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cream{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cream-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-orange{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-orange-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-yellow{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-yellow-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-green{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-green-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-teal{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-teal-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cyan{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cyan-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-white{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-white-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-error{--bs-bg-opacity: 1;background-color:rgba(var(--bs-error-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-blue-rgb), var(--bs-bg-opacity)) !important}.bg-dark-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-blue-rgb), var(--bs-bg-opacity)) !important}.bg-indigo{--bs-bg-opacity: 1;background-color:rgba(var(--bs-indigo-rgb), var(--bs-bg-opacity)) !important}.bg-purple{--bs-bg-opacity: 1;background-color:rgba(var(--bs-purple-rgb), var(--bs-bg-opacity)) !important}.bg-pink{--bs-bg-opacity: 1;background-color:rgba(var(--bs-pink-rgb), var(--bs-bg-opacity)) !important}.bg-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-red-rgb), var(--bs-bg-opacity)) !important}.bg-bordeaux-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity)) !important}.bg-brown{--bs-bg-opacity: 1;background-color:rgba(var(--bs-brown-rgb), var(--bs-bg-opacity)) !important}.bg-cream{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cream-rgb), var(--bs-bg-opacity)) !important}.bg-orange{--bs-bg-opacity: 1;background-color:rgba(var(--bs-orange-rgb), var(--bs-bg-opacity)) !important}.bg-yellow{--bs-bg-opacity: 1;background-color:rgba(var(--bs-yellow-rgb), var(--bs-bg-opacity)) !important}.bg-green{--bs-bg-opacity: 1;background-color:rgba(var(--bs-green-rgb), var(--bs-bg-opacity)) !important}.bg-teal{--bs-bg-opacity: 1;background-color:rgba(var(--bs-teal-rgb), var(--bs-bg-opacity)) !important}.bg-cyan{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cyan-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-gray{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-rgb), var(--bs-bg-opacity)) !important}.bg-gray-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}.cursor-auto{cursor:auto !important}.cursor-pointer{cursor:pointer !important}.cursor-grab{cursor:grab !important}.cursor-copy{cursor:copy !important}.cursor-default{cursor:default !important}.cursor-help{cursor:help !important}.cursor-text{cursor:text !important}.cursor-none{cursor:none !important}.cursor-not-allowed{cursor:not-allowed !important}.cursor-progress{cursor:progress !important}.cursor-wait{cursor:wait !important}.cursor-zoom-in{cursor:zoom-in !important}.cursor-zoom-out{cursor:zoom-out !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}.cursor-sm-auto{cursor:auto !important}.cursor-sm-pointer{cursor:pointer !important}.cursor-sm-grab{cursor:grab !important}.cursor-sm-copy{cursor:copy !important}.cursor-sm-default{cursor:default !important}.cursor-sm-help{cursor:help !important}.cursor-sm-text{cursor:text !important}.cursor-sm-none{cursor:none !important}.cursor-sm-not-allowed{cursor:not-allowed !important}.cursor-sm-progress{cursor:progress !important}.cursor-sm-wait{cursor:wait !important}.cursor-sm-zoom-in{cursor:zoom-in !important}.cursor-sm-zoom-out{cursor:zoom-out !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}.cursor-md-auto{cursor:auto !important}.cursor-md-pointer{cursor:pointer !important}.cursor-md-grab{cursor:grab !important}.cursor-md-copy{cursor:copy !important}.cursor-md-default{cursor:default !important}.cursor-md-help{cursor:help !important}.cursor-md-text{cursor:text !important}.cursor-md-none{cursor:none !important}.cursor-md-not-allowed{cursor:not-allowed !important}.cursor-md-progress{cursor:progress !important}.cursor-md-wait{cursor:wait !important}.cursor-md-zoom-in{cursor:zoom-in !important}.cursor-md-zoom-out{cursor:zoom-out !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}.cursor-lg-auto{cursor:auto !important}.cursor-lg-pointer{cursor:pointer !important}.cursor-lg-grab{cursor:grab !important}.cursor-lg-copy{cursor:copy !important}.cursor-lg-default{cursor:default !important}.cursor-lg-help{cursor:help !important}.cursor-lg-text{cursor:text !important}.cursor-lg-none{cursor:none !important}.cursor-lg-not-allowed{cursor:not-allowed !important}.cursor-lg-progress{cursor:progress !important}.cursor-lg-wait{cursor:wait !important}.cursor-lg-zoom-in{cursor:zoom-in !important}.cursor-lg-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}.cursor-xl-auto{cursor:auto !important}.cursor-xl-pointer{cursor:pointer !important}.cursor-xl-grab{cursor:grab !important}.cursor-xl-copy{cursor:copy !important}.cursor-xl-default{cursor:default !important}.cursor-xl-help{cursor:help !important}.cursor-xl-text{cursor:text !important}.cursor-xl-none{cursor:none !important}.cursor-xl-not-allowed{cursor:not-allowed !important}.cursor-xl-progress{cursor:progress !important}.cursor-xl-wait{cursor:wait !important}.cursor-xl-zoom-in{cursor:zoom-in !important}.cursor-xl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}.cursor-xxl-auto{cursor:auto !important}.cursor-xxl-pointer{cursor:pointer !important}.cursor-xxl-grab{cursor:grab !important}.cursor-xxl-copy{cursor:copy !important}.cursor-xxl-default{cursor:default !important}.cursor-xxl-help{cursor:help !important}.cursor-xxl-text{cursor:text !important}.cursor-xxl-none{cursor:none !important}.cursor-xxl-not-allowed{cursor:not-allowed !important}.cursor-xxl-progress{cursor:progress !important}.cursor-xxl-wait{cursor:wait !important}.cursor-xxl-zoom-in{cursor:zoom-in !important}.cursor-xxl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.7rem !important}.fs-3{font-size:1.4rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root,[data-bs-theme=light]{--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-gray-100: #efefef;--bs-gray-200: #e9e9e9;--bs-gray-300: #dedede;--bs-gray-400: #cecece;--bs-gray-500: #adadad;--bs-gray-600: #6c6c6c;--bs-gray-700: #494949;--bs-gray-800: #343434;--bs-gray-900: #212121;--bs-primary: #ffcd00;--bs-secondary: #000;--bs-success: #2db83d;--bs-info: #0dcaf0;--bs-warning: #f3965e;--bs-danger: #c00a35;--bs-error: #c00a35;--bs-light: #efefef;--bs-dark: #262626;--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-primary-rgb: 255, 205, 0;--bs-secondary-rgb: 0, 0, 0;--bs-success-rgb: 45, 184, 61;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 243, 150, 94;--bs-danger-rgb: 192, 10, 53;--bs-error-rgb: 192, 10, 53;--bs-light-rgb: 239, 239, 239;--bs-dark-rgb: 38, 38, 38;--bs-blue-rgb: 82, 135, 198;--bs-dark-blue-rgb: 0, 18, 64;--bs-indigo-rgb: 102, 16, 242;--bs-purple-rgb: 91, 33, 130;--bs-pink-rgb: 214, 51, 132;--bs-red-rgb: 192, 10, 53;--bs-bordeaux-red-rgb: 170, 21, 85;--bs-brown-rgb: 110, 59, 35;--bs-cream-rgb: 255, 230, 171;--bs-orange-rgb: 243, 150, 94;--bs-yellow-rgb: 255, 205, 0;--bs-green-rgb: 45, 184, 61;--bs-teal-rgb: 36, 167, 147;--bs-cyan-rgb: 13, 202, 240;--bs-white-rgb: 255, 255, 255;--bs-gray-rgb: 108, 108, 108;--bs-gray-dark-rgb: 52, 52, 52;--bs-primary-text-emphasis: #665200;--bs-secondary-text-emphasis: black;--bs-success-text-emphasis: #124a18;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #613c26;--bs-danger-text-emphasis: #4d0415;--bs-light-text-emphasis: #494949;--bs-dark-text-emphasis: #494949;--bs-primary-bg-subtle: #fff5cc;--bs-secondary-bg-subtle: #cccccc;--bs-success-bg-subtle: #d5f1d8;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fdeadf;--bs-danger-bg-subtle: #f2ced7;--bs-light-bg-subtle: #f7f7f7;--bs-dark-bg-subtle: #cecece;--bs-primary-border-subtle: #ffeb99;--bs-secondary-border-subtle: #999999;--bs-success-border-subtle: #abe3b1;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #fad5bf;--bs-danger-border-subtle: #e69dae;--bs-light-border-subtle: #e9e9e9;--bs-dark-border-subtle: #adadad;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Open Sans", "Verdana", -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.6;--bs-body-color: #212121;--bs-body-color-rgb: 33, 33, 33;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 33, 33, 0.75);--bs-secondary-color-rgb: 33, 33, 33;--bs-secondary-bg: #e9e9e9;--bs-secondary-bg-rgb: 233, 233, 233;--bs-tertiary-color: rgba(33, 33, 33, 0.5);--bs-tertiary-color-rgb: 33, 33, 33;--bs-tertiary-bg: #efefef;--bs-tertiary-bg-rgb: 239, 239, 239;--bs-heading-color: inherit;--bs-link-color: #000;--bs-link-color-rgb: 0, 0, 0;--bs-link-decoration: underline;--bs-link-hover-color: black;--bs-link-hover-color-rgb: 0, 0, 0;--bs-code-color: #000;--bs-highlight-bg: #fff5cc;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dedede;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0;--bs-border-radius-sm: 0;--bs-border-radius-lg: 0;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(255, 205, 0, 0.25);--bs-form-valid-color: #2db83d;--bs-form-valid-border-color: #2db83d;--bs-form-invalid-color: #c00a35;--bs-form-invalid-border-color: #c00a35}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.295rem + 0.54vw)}@media(min-width: 1200px){h2,.h2{font-size:1.7rem}}h3,.h3{font-size:calc(1.265rem + 0.18vw)}@media(min-width: 1200px){h3,.h3{font-size:1.4rem}}h4,.h4{font-size:1.2rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.85em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.85em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:0.85em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:0}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c6c6c}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 0;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 0;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.25rem}.g-1,.gy-1{--bs-gutter-y: 0.25rem}.g-2,.gx-2{--bs-gutter-x: 0.5rem}.g-2,.gy-2{--bs-gutter-y: 0.5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media(min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-body-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, 0.01);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, 0.05);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #fff5cc;--bs-table-border-color: #e6ddb8;--bs-table-striped-bg: #fcf3ca;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ddb8;--bs-table-active-color: #000;--bs-table-hover-bg: #f2e9c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #cccccc;--bs-table-border-color: #b8b8b8;--bs-table-striped-bg: #cacaca;--bs-table-striped-color: #000;--bs-table-active-bg: #b8b8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #c2c2c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d5f1d8;--bs-table-border-color: #c0d9c2;--bs-table-striped-bg: #d3efd6;--bs-table-striped-color: #000;--bs-table-active-bg: #c0d9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #cae5cd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #cdf2f9;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #c5e8ef;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fdeadf;--bs-table-border-color: #e4d3c9;--bs-table-striped-bg: #fae8dd;--bs-table-striped-color: #000;--bs-table-active-bg: #e4d3c9;--bs-table-active-color: #000;--bs-table-hover-bg: #f0ded4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f2ced7;--bs-table-border-color: #dab9c2;--bs-table-striped-bg: #f0ccd5;--bs-table-striped-color: #000;--bs-table-active-bg: #dab9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #e6c4cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #efefef;--bs-table-border-color: #d7d7d7;--bs-table-striped-bg: #ededed;--bs-table-striped-color: #000;--bs-table-active-bg: #d7d7d7;--bs-table-active-color: #000;--bs-table-hover-bg: #e3e3e3;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #262626;--bs-table-border-color: #3c3c3c;--bs-table-striped-bg: #282828;--bs-table-striped-color: #fff;--bs-table-active-bg: #3c3c3c;--bs-table-active-color: #fff;--bs-table-hover-bg: #313131;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-weight:500;color:#262626}.col-form-label{padding-top:calc(0.375rem + var(--bs-border-width));padding-bottom:calc(0.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;font-weight:500;line-height:1.6;color:#262626}.col-form-label-lg{padding-top:calc(0.5rem + var(--bs-border-width));padding-bottom:calc(0.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + var(--bs-border-width));padding-bottom:calc(0.25rem + var(--bs-border-width));font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:#fff;border-color:#000;outline:0;box-shadow:none}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.6em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.6;color:var(--bs-body-color);background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343434' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#000;outline:0;box-shadow:none}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:0 !important}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:0 !important}.form-check{display:block;min-height:1.6rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.3em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#000;outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.form-check-input:checked{background-color:#5287c6;border-color:#5287c6}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#ffcd00;border-color:#ffcd00;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23000'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}.form-range{width:100%;height:1rem;padding:0;appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,none}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,none}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#fff0b3}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#fff0b3}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c6c6c}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 1rem;--bs-btn-padding-y: 0.5rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.6;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0 rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-outline-primary{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-error{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-outline-blue{--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-outline-dark-blue{--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-outline-indigo{--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-outline-purple{--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-outline-pink{--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-outline-red{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-bordeaux-red{--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-outline-brown{--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-outline-cream{--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-outline-orange{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-yellow{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-green{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-teal{--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-outline-cyan{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-white{--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-outline-gray{--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-outline-gray-dark{--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 38, 38, 38;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.25rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.25rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c6c6c;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dedede;--bs-dropdown-bg: #343434;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dedede;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: #adadad;--bs-dropdown-header-color: #adadad}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: #cecece;--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) #cecece;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #cecece #cecece #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #000;--bs-nav-pills-link-active-bg: #ffcd00}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: 0.5rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25rem;--bs-navbar-toggler-padding-x: 0.75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 33, 33, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, 0.55);--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: 0;--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - 0);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #000;--bs-accordion-btn-bg: #ffcd00;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212121'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665200'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #000;--bs-accordion-btn-focus-box-shadow: none;--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #000;--bs-accordion-active-bg: #ffcd00}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #000;--bs-pagination-bg: #dedede;--bs-pagination-border-width: 0;--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #000;--bs-pagination-hover-bg: #ffcd00;--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: #000;--bs-pagination-focus-bg: #ffcd00;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-pagination-active-color: #000;--bs-pagination-active-bg: #ffcd00;--bs-pagination-active-border-color: #ffcd00;--bs-pagination-disabled-color: #adadad;--bs-pagination-disabled-bg: #efefef;--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0 * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 0.5rem;--bs-alert-margin-bottom: 0.5rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.625rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-error{--bs-alert-color: var(--bs-error-text-emphasis);--bs-alert-bg: var(--bs-error-bg-subtle);--bs-alert-border-color: var(--bs-error-border-subtle);--bs-alert-link-color: var(--bs-error-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}.alert-blue{--bs-alert-color: var(--bs-blue-text-emphasis);--bs-alert-bg: var(--bs-blue-bg-subtle);--bs-alert-border-color: var(--bs-blue-border-subtle);--bs-alert-link-color: var(--bs-blue-text-emphasis)}.alert-dark-blue{--bs-alert-color: var(--bs-dark-blue-text-emphasis);--bs-alert-bg: var(--bs-dark-blue-bg-subtle);--bs-alert-border-color: var(--bs-dark-blue-border-subtle);--bs-alert-link-color: var(--bs-dark-blue-text-emphasis)}.alert-indigo{--bs-alert-color: var(--bs-indigo-text-emphasis);--bs-alert-bg: var(--bs-indigo-bg-subtle);--bs-alert-border-color: var(--bs-indigo-border-subtle);--bs-alert-link-color: var(--bs-indigo-text-emphasis)}.alert-purple{--bs-alert-color: var(--bs-purple-text-emphasis);--bs-alert-bg: var(--bs-purple-bg-subtle);--bs-alert-border-color: var(--bs-purple-border-subtle);--bs-alert-link-color: var(--bs-purple-text-emphasis)}.alert-pink{--bs-alert-color: var(--bs-pink-text-emphasis);--bs-alert-bg: var(--bs-pink-bg-subtle);--bs-alert-border-color: var(--bs-pink-border-subtle);--bs-alert-link-color: var(--bs-pink-text-emphasis)}.alert-red{--bs-alert-color: var(--bs-red-text-emphasis);--bs-alert-bg: var(--bs-red-bg-subtle);--bs-alert-border-color: var(--bs-red-border-subtle);--bs-alert-link-color: var(--bs-red-text-emphasis)}.alert-bordeaux-red{--bs-alert-color: var(--bs-bordeaux-red-text-emphasis);--bs-alert-bg: var(--bs-bordeaux-red-bg-subtle);--bs-alert-border-color: var(--bs-bordeaux-red-border-subtle);--bs-alert-link-color: var(--bs-bordeaux-red-text-emphasis)}.alert-brown{--bs-alert-color: var(--bs-brown-text-emphasis);--bs-alert-bg: var(--bs-brown-bg-subtle);--bs-alert-border-color: var(--bs-brown-border-subtle);--bs-alert-link-color: var(--bs-brown-text-emphasis)}.alert-cream{--bs-alert-color: var(--bs-cream-text-emphasis);--bs-alert-bg: var(--bs-cream-bg-subtle);--bs-alert-border-color: var(--bs-cream-border-subtle);--bs-alert-link-color: var(--bs-cream-text-emphasis)}.alert-orange{--bs-alert-color: var(--bs-orange-text-emphasis);--bs-alert-bg: var(--bs-orange-bg-subtle);--bs-alert-border-color: var(--bs-orange-border-subtle);--bs-alert-link-color: var(--bs-orange-text-emphasis)}.alert-yellow{--bs-alert-color: var(--bs-yellow-text-emphasis);--bs-alert-bg: var(--bs-yellow-bg-subtle);--bs-alert-border-color: var(--bs-yellow-border-subtle);--bs-alert-link-color: var(--bs-yellow-text-emphasis)}.alert-green{--bs-alert-color: var(--bs-green-text-emphasis);--bs-alert-bg: var(--bs-green-bg-subtle);--bs-alert-border-color: var(--bs-green-border-subtle);--bs-alert-link-color: var(--bs-green-text-emphasis)}.alert-teal{--bs-alert-color: var(--bs-teal-text-emphasis);--bs-alert-bg: var(--bs-teal-bg-subtle);--bs-alert-border-color: var(--bs-teal-border-subtle);--bs-alert-link-color: var(--bs-teal-text-emphasis)}.alert-cyan{--bs-alert-color: var(--bs-cyan-text-emphasis);--bs-alert-bg: var(--bs-cyan-bg-subtle);--bs-alert-border-color: var(--bs-cyan-border-subtle);--bs-alert-link-color: var(--bs-cyan-text-emphasis)}.alert-white{--bs-alert-color: var(--bs-white-text-emphasis);--bs-alert-bg: var(--bs-white-bg-subtle);--bs-alert-border-color: var(--bs-white-border-subtle);--bs-alert-link-color: var(--bs-white-text-emphasis)}.alert-gray{--bs-alert-color: var(--bs-gray-text-emphasis);--bs-alert-bg: var(--bs-gray-bg-subtle);--bs-alert-border-color: var(--bs-gray-border-subtle);--bs-alert-link-color: var(--bs-gray-text-emphasis)}.alert-gray-dark{--bs-alert-color: var(--bs-gray-dark-text-emphasis);--bs-alert-bg: var(--bs-gray-dark-bg-subtle);--bs-alert-border-color: var(--bs-gray-dark-border-subtle);--bs-alert-link-color: var(--bs-gray-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #ffcd00;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #ffcd00;--bs-list-group-active-border-color: #ffcd00;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-error{--bs-list-group-color: var(--bs-error-text-emphasis);--bs-list-group-bg: var(--bs-error-bg-subtle);--bs-list-group-border-color: var(--bs-error-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-error-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-error-border-subtle);--bs-list-group-active-color: var(--bs-error-bg-subtle);--bs-list-group-active-bg: var(--bs-error-text-emphasis);--bs-list-group-active-border-color: var(--bs-error-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.list-group-item-blue{--bs-list-group-color: var(--bs-blue-text-emphasis);--bs-list-group-bg: var(--bs-blue-bg-subtle);--bs-list-group-border-color: var(--bs-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-blue-border-subtle);--bs-list-group-active-color: var(--bs-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-blue-text-emphasis)}.list-group-item-dark-blue{--bs-list-group-color: var(--bs-dark-blue-text-emphasis);--bs-list-group-bg: var(--bs-dark-blue-bg-subtle);--bs-list-group-border-color: var(--bs-dark-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-active-color: var(--bs-dark-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-blue-text-emphasis)}.list-group-item-indigo{--bs-list-group-color: var(--bs-indigo-text-emphasis);--bs-list-group-bg: var(--bs-indigo-bg-subtle);--bs-list-group-border-color: var(--bs-indigo-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-indigo-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-indigo-border-subtle);--bs-list-group-active-color: var(--bs-indigo-bg-subtle);--bs-list-group-active-bg: var(--bs-indigo-text-emphasis);--bs-list-group-active-border-color: var(--bs-indigo-text-emphasis)}.list-group-item-purple{--bs-list-group-color: var(--bs-purple-text-emphasis);--bs-list-group-bg: var(--bs-purple-bg-subtle);--bs-list-group-border-color: var(--bs-purple-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-purple-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-purple-border-subtle);--bs-list-group-active-color: var(--bs-purple-bg-subtle);--bs-list-group-active-bg: var(--bs-purple-text-emphasis);--bs-list-group-active-border-color: var(--bs-purple-text-emphasis)}.list-group-item-pink{--bs-list-group-color: var(--bs-pink-text-emphasis);--bs-list-group-bg: var(--bs-pink-bg-subtle);--bs-list-group-border-color: var(--bs-pink-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-pink-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-pink-border-subtle);--bs-list-group-active-color: var(--bs-pink-bg-subtle);--bs-list-group-active-bg: var(--bs-pink-text-emphasis);--bs-list-group-active-border-color: var(--bs-pink-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-bordeaux-red{--bs-list-group-color: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-bg: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-border-color: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-active-color: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-active-bg: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-bordeaux-red-text-emphasis)}.list-group-item-brown{--bs-list-group-color: var(--bs-brown-text-emphasis);--bs-list-group-bg: var(--bs-brown-bg-subtle);--bs-list-group-border-color: var(--bs-brown-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-brown-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-brown-border-subtle);--bs-list-group-active-color: var(--bs-brown-bg-subtle);--bs-list-group-active-bg: var(--bs-brown-text-emphasis);--bs-list-group-active-border-color: var(--bs-brown-text-emphasis)}.list-group-item-cream{--bs-list-group-color: var(--bs-cream-text-emphasis);--bs-list-group-bg: var(--bs-cream-bg-subtle);--bs-list-group-border-color: var(--bs-cream-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cream-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cream-border-subtle);--bs-list-group-active-color: var(--bs-cream-bg-subtle);--bs-list-group-active-bg: var(--bs-cream-text-emphasis);--bs-list-group-active-border-color: var(--bs-cream-text-emphasis)}.list-group-item-orange{--bs-list-group-color: var(--bs-orange-text-emphasis);--bs-list-group-bg: var(--bs-orange-bg-subtle);--bs-list-group-border-color: var(--bs-orange-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-orange-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-orange-border-subtle);--bs-list-group-active-color: var(--bs-orange-bg-subtle);--bs-list-group-active-bg: var(--bs-orange-text-emphasis);--bs-list-group-active-border-color: var(--bs-orange-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-teal{--bs-list-group-color: var(--bs-teal-text-emphasis);--bs-list-group-bg: var(--bs-teal-bg-subtle);--bs-list-group-border-color: var(--bs-teal-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-teal-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-teal-border-subtle);--bs-list-group-active-color: var(--bs-teal-bg-subtle);--bs-list-group-active-bg: var(--bs-teal-text-emphasis);--bs-list-group-active-border-color: var(--bs-teal-text-emphasis)}.list-group-item-cyan{--bs-list-group-color: var(--bs-cyan-text-emphasis);--bs-list-group-bg: var(--bs-cyan-bg-subtle);--bs-list-group-border-color: var(--bs-cyan-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cyan-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cyan-border-subtle);--bs-list-group-active-color: var(--bs-cyan-bg-subtle);--bs-list-group-active-bg: var(--bs-cyan-text-emphasis);--bs-list-group-active-border-color: var(--bs-cyan-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-gray{--bs-list-group-color: var(--bs-gray-text-emphasis);--bs-list-group-bg: var(--bs-gray-bg-subtle);--bs-list-group-border-color: var(--bs-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-border-subtle);--bs-list-group-active-color: var(--bs-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-text-emphasis)}.list-group-item-gray-dark{--bs-list-group-color: var(--bs-gray-dark-text-emphasis);--bs-list-group-bg: var(--bs-gray-dark-bg-subtle);--bs-list-group-border-color: var(--bs-gray-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-active-color: var(--bs-gray-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 0;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 9002;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: #212121;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: 0;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: 0;--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 0;--bs-modal-title-line-height: 1.6;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 0.0625rem;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.6}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%}}.accordion-item{margin-bottom:1rem}.alert-primary{--bs-alert-color: #000;--bs-alert-bg: #fff5cc;--bs-alert-border-color: #fff0b3;--bs-alert-link-color: #000}.alert-secondary{--bs-alert-color: #000;--bs-alert-bg: #cccccc;--bs-alert-border-color: #b3b3b3;--bs-alert-link-color: #000}.alert-success{--bs-alert-color: #000;--bs-alert-bg: #d5f1d8;--bs-alert-border-color: #c0eac5;--bs-alert-link-color: #000}.alert-info{--bs-alert-color: #000;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb;--bs-alert-link-color: #000}.alert-warning{--bs-alert-color: #000;--bs-alert-bg: #fdeadf;--bs-alert-border-color: #fbe0cf;--bs-alert-link-color: #000}.alert-danger{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-error{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-light{--bs-alert-color: #000;--bs-alert-bg: #fcfcfc;--bs-alert-border-color: #fafafa;--bs-alert-link-color: #000}.alert-dark{--bs-alert-color: #000;--bs-alert-bg: #d4d4d4;--bs-alert-border-color: #bebebe;--bs-alert-link-color: #000}.alert-blue{--bs-alert-color: #000;--bs-alert-bg: #dce7f4;--bs-alert-border-color: #cbdbee;--bs-alert-link-color: #000}.alert-dark-blue{--bs-alert-color: #000;--bs-alert-bg: #ccd0d9;--bs-alert-border-color: #b3b8c6;--bs-alert-link-color: #000}.alert-indigo{--bs-alert-color: #000;--bs-alert-bg: #e0cffc;--bs-alert-border-color: #d1b7fb;--bs-alert-link-color: #000}.alert-purple{--bs-alert-color: #000;--bs-alert-bg: #ded3e6;--bs-alert-border-color: #cebcda;--bs-alert-link-color: #000}.alert-pink{--bs-alert-color: #000;--bs-alert-bg: #f7d6e6;--bs-alert-border-color: #f3c2da;--bs-alert-link-color: #000}.alert-red{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-bordeaux-red{--bs-alert-color: #000;--bs-alert-bg: #eed0dd;--bs-alert-border-color: #e6b9cc;--bs-alert-link-color: #000}.alert-brown{--bs-alert-color: #000;--bs-alert-bg: #e2d8d3;--bs-alert-border-color: #d4c4bd;--bs-alert-link-color: #000}.alert-cream{--bs-alert-color: #000;--bs-alert-bg: #fffaee;--bs-alert-border-color: #fff8e6;--bs-alert-link-color: #000}.alert-orange{--bs-alert-color: #000;--bs-alert-bg: #fdeadf;--bs-alert-border-color: #fbe0cf;--bs-alert-link-color: #000}.alert-yellow{--bs-alert-color: #000;--bs-alert-bg: #fff5cc;--bs-alert-border-color: #fff0b3;--bs-alert-link-color: #000}.alert-green{--bs-alert-color: #000;--bs-alert-bg: #d5f1d8;--bs-alert-border-color: #c0eac5;--bs-alert-link-color: #000}.alert-teal{--bs-alert-color: #000;--bs-alert-bg: #d3ede9;--bs-alert-border-color: #bde5df;--bs-alert-link-color: #000}.alert-cyan{--bs-alert-color: #000;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb;--bs-alert-link-color: #000}.alert-white{--bs-alert-color: #000;--bs-alert-bg: white;--bs-alert-border-color: white;--bs-alert-link-color: #000}.alert-gray{--bs-alert-color: #000;--bs-alert-bg: #e2e2e2;--bs-alert-border-color: lightgray;--bs-alert-link-color: #000}.alert-gray-dark{--bs-alert-color: #000;--bs-alert-bg: #d6d6d6;--bs-alert-border-color: #c2c2c2;--bs-alert-link-color: #000}.alert p:last-child{margin-bottom:0}.text-bg-hover-primary:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-secondary:hover{color:#fff !important;background-color:RGBA(0, 0, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-success:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-info:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-warning:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-danger:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-error:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-light:hover{color:#000 !important;background-color:RGBA(239, 239, 239, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark:hover{color:#fff !important;background-color:RGBA(38, 38, 38, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-blue:hover{color:#fff !important;background-color:RGBA(82, 135, 198, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark-blue:hover{color:#fff !important;background-color:RGBA(0, 18, 64, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-indigo:hover{color:#fff !important;background-color:RGBA(102, 16, 242, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-purple:hover{color:#fff !important;background-color:RGBA(91, 33, 130, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-pink:hover{color:#fff !important;background-color:RGBA(214, 51, 132, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-red:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-bordeaux-red:hover{color:#fff !important;background-color:RGBA(170, 21, 85, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-brown:hover{color:#fff !important;background-color:RGBA(110, 59, 35, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cream:hover{color:#000 !important;background-color:RGBA(255, 230, 171, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-orange:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-yellow:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-green:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-teal:hover{color:#000 !important;background-color:RGBA(36, 167, 147, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cyan:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-white:hover{color:#000 !important;background-color:RGBA(255, 255, 255, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray:hover{color:#fff !important;background-color:RGBA(108, 108, 108, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray-dark:hover{color:#fff !important;background-color:RGBA(52, 52, 52, var(--bs-bg-opacity, 1)) !important}.btn{font-weight:bold}.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(0.5rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.25rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{display:inline-block;font-weight:900;border:.0625rem solid rgba(0,0,0,0);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{transition:none}}.btn.btn-arrow-right:hover::after,.btn.btn-arrow-right:hover::before,.btn.btn-arrow-left:hover::after,.btn.btn-arrow-left:hover::before{background:var(--bs-btn-hover-color);color:var(--bs-btn-hover-bg);border-color:#000}.btn.btn-arrow-right::after{content:">";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x));border-top-right-radius:var(--bs-btn-border-radius);border-bottom-right-radius:var(--bs-btn-border-radius)}.btn.btn-arrow-left::before{content:"<";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x));border-top-left-radius:var(--bs-btn-border-radius);border-bottom-left-radius:var(--bs-btn-border-radius)}.btn.btn-loading{position:relative;color:rgba(0,0,0,0)}.btn.btn-loading .btn-text{color:rgba(0,0,0,0)}.btn.btn-loading::after{border:.125rem solid #000;border-radius:999999px;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;height:1em;width:1em;position:absolute;left:calc(50% - .5em);top:calc(50% - .5em);animation:spinner-border .5s infinite linear}.btn.btn-loading.btn-primary::after{border-color:#000}.btn.btn-loading.btn-secondary::after{border-color:#fff}.btn.btn-loading.btn-success::after{border-color:#000}.btn.btn-loading.btn-info::after{border-color:#000}.btn.btn-loading.btn-warning::after{border-color:#000}.btn.btn-loading.btn-danger::after{border-color:#fff}.btn.btn-loading.btn-error::after{border-color:#fff}.btn.btn-loading.btn-light::after{border-color:#000}.btn.btn-loading.btn-dark::after{border-color:#fff}.btn.btn-loading.btn-blue::after{border-color:#fff}.btn.btn-loading.btn-dark-blue::after{border-color:#fff}.btn.btn-loading.btn-indigo::after{border-color:#fff}.btn.btn-loading.btn-purple::after{border-color:#fff}.btn.btn-loading.btn-pink::after{border-color:#fff}.btn.btn-loading.btn-red::after{border-color:#fff}.btn.btn-loading.btn-bordeaux-red::after{border-color:#fff}.btn.btn-loading.btn-brown::after{border-color:#fff}.btn.btn-loading.btn-cream::after{border-color:#000}.btn.btn-loading.btn-orange::after{border-color:#000}.btn.btn-loading.btn-yellow::after{border-color:#000}.btn.btn-loading.btn-green::after{border-color:#000}.btn.btn-loading.btn-teal::after{border-color:#000}.btn.btn-loading.btn-cyan::after{border-color:#000}.btn.btn-loading.btn-white::after{border-color:#000}.btn.btn-loading.btn-gray::after{border-color:#fff}.btn.btn-loading.btn-gray-dark::after{border-color:#fff}.btn-group{gap:.5rem}.btn-check:checked+.btn.btn-checked-primary,.btn-check:active+.btn.btn-checked-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-primary,.btn-check:active+.btn.btn-checked-outline-primary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-secondary,.btn-check:active+.btn.btn-checked-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-check:checked+.btn.btn-checked-outline-secondary,.btn-check:active+.btn.btn-checked-outline-secondary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-success,.btn-check:active+.btn.btn-checked-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-success,.btn-check:active+.btn.btn-checked-outline-success{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-info,.btn-check:active+.btn.btn-checked-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-info,.btn-check:active+.btn.btn-checked-outline-info{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-warning,.btn-check:active+.btn.btn-checked-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-warning,.btn-check:active+.btn.btn-checked-outline-warning{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-danger,.btn-check:active+.btn.btn-checked-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-danger,.btn-check:active+.btn.btn-checked-outline-danger{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-error,.btn-check:active+.btn.btn-checked-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-error,.btn-check:active+.btn.btn-checked-outline-error{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-light,.btn-check:active+.btn.btn-checked-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-check:checked+.btn.btn-checked-outline-light,.btn-check:active+.btn.btn-checked-outline-light{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark,.btn-check:active+.btn.btn-checked-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-check:checked+.btn.btn-checked-outline-dark,.btn-check:active+.btn.btn-checked-outline-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-blue,.btn-check:active+.btn.btn-checked-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-check:checked+.btn.btn-checked-outline-blue,.btn-check:active+.btn.btn-checked-outline-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark-blue,.btn-check:active+.btn.btn-checked-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-check:checked+.btn.btn-checked-outline-dark-blue,.btn-check:active+.btn.btn-checked-outline-dark-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-indigo,.btn-check:active+.btn.btn-checked-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-check:checked+.btn.btn-checked-outline-indigo,.btn-check:active+.btn.btn-checked-outline-indigo{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-purple,.btn-check:active+.btn.btn-checked-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-check:checked+.btn.btn-checked-outline-purple,.btn-check:active+.btn.btn-checked-outline-purple{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-pink,.btn-check:active+.btn.btn-checked-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-check:checked+.btn.btn-checked-outline-pink,.btn-check:active+.btn.btn-checked-outline-pink{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-red,.btn-check:active+.btn.btn-checked-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-red,.btn-check:active+.btn.btn-checked-outline-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-bordeaux-red,.btn-check:active+.btn.btn-checked-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-check:checked+.btn.btn-checked-outline-bordeaux-red,.btn-check:active+.btn.btn-checked-outline-bordeaux-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-brown,.btn-check:active+.btn.btn-checked-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-check:checked+.btn.btn-checked-outline-brown,.btn-check:active+.btn.btn-checked-outline-brown{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cream,.btn-check:active+.btn.btn-checked-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-check:checked+.btn.btn-checked-outline-cream,.btn-check:active+.btn.btn-checked-outline-cream{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-orange,.btn-check:active+.btn.btn-checked-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-orange,.btn-check:active+.btn.btn-checked-outline-orange{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-yellow,.btn-check:active+.btn.btn-checked-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-yellow,.btn-check:active+.btn.btn-checked-outline-yellow{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-green,.btn-check:active+.btn.btn-checked-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-green,.btn-check:active+.btn.btn-checked-outline-green{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-teal,.btn-check:active+.btn.btn-checked-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-check:checked+.btn.btn-checked-outline-teal,.btn-check:active+.btn.btn-checked-outline-teal{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cyan,.btn-check:active+.btn.btn-checked-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-cyan,.btn-check:active+.btn.btn-checked-outline-cyan{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-white,.btn-check:active+.btn.btn-checked-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-check:checked+.btn.btn-checked-outline-white,.btn-check:active+.btn.btn-checked-outline-white{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray,.btn-check:active+.btn.btn-checked-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-check:checked+.btn.btn-checked-outline-gray,.btn-check:active+.btn.btn-checked-outline-gray{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray-dark,.btn-check:active+.btn.btn-checked-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-check:checked+.btn.btn-checked-outline-gray-dark,.btn-check:active+.btn.btn-checked-outline-gray-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}.pagination{--bs-pagination-gap: 0.625rem;--bs-pagination-size: 2.5rem;--bs-pagination-button-bg: #000;--bs-pagination-button-color: #fff;--bs-pagination-ellipsis-color: #494949;gap:var(--bs-pagination-gap)}.pagination .page-item{height:100%}.pagination .page-item .page-link{cursor:pointer;height:var(--bs-pagination-size);line-height:var(--bs-pagination-size);padding-top:0;padding-bottom:0;text-align:center}.pagination .page-item:not(.page-button):not(.next):not(.previous):not(.first):not(.last) .page-link{width:var(--bs-pagination-size);padding:0}.pagination .page-item.page-button{font-weight:bold;user-select:none}.pagination .page-item.page-button .page-link{background-color:var(--bs-pagination-button-bg);color:var(--bs-pagination-button-color)}.pagination .page-item.page-button.disabled{cursor:not-allowed}.pagination .page-item.page-button.disabled .page-link{background-color:var(--bs-pagination-disabled-bg);color:var(--bs-pagination-disabled-color)}.pagination .page-item.active{font-weight:bold}.pagination .page-item.page-ellipsis .page-link{background:rgba(0,0,0,0);cursor:default;font-size:0}.pagination .page-item.page-ellipsis .page-link:before{font-size:1rem;color:var(--bs-pagination-ellipsis-color);content:"…"}.modal{--bs-modal-header-bg: #ffcd00;--bs-modal-header-color: #000;--bs-modal-header-font-weight: 500}.modal .modal-header{background-color:var(--bs-modal-header-bg);color:var(--bs-modal-header-color);font-weight:var(--bs-modal-header-font-weight)}.table.table-sticky-header thead{position:sticky;top:0}.table.table-sticky-header.table-sticky-header-top-0 thead{top:0 !important}.table.table-sticky-footer tfoot{position:sticky;bottom:0}@media(max-width: 768px){.uu-root-container .table.table-sticky-header thead{top:var(--bs-uu-navbar-mobile-height)}}.flex-fill{min-width:0}.font-serif{font-family:"Merriweather",serif}h1.hdr-underlined,.hdr-underlined.h1{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h2.hdr-underlined,.hdr-underlined.h2{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h3.hdr-underlined,.hdr-underlined.h3{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h4.hdr-underlined,.hdr-underlined.h4{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h5.hdr-underlined,.hdr-underlined.h5{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h6.hdr-underlined,.hdr-underlined.h6{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h7.hdr-underlined{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}.cdh-federated-auth .container{display:flex;justify-content:center;align-items:center;width:100vw;height:100vh}.cdh-federated-auth .container .content{width:25rem;padding:1rem;background:#fff}.cdh-federated-auth .container .content .logo{display:block;height:3.5rem;margin:0 auto 1rem auto}/*# sourceMappingURL=base.css.map */ +.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#000 !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#000 !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#000 !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#000 !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-error{color:#fff !important;background-color:RGBA(var(--bs-error-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-blue{color:#fff !important;background-color:RGBA(var(--bs-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark-blue{color:#fff !important;background-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-indigo{color:#fff !important;background-color:RGBA(var(--bs-indigo-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-purple{color:#fff !important;background-color:RGBA(var(--bs-purple-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-pink{color:#fff !important;background-color:RGBA(var(--bs-pink-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-red{color:#fff !important;background-color:RGBA(var(--bs-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-bordeaux-red{color:#fff !important;background-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-brown{color:#fff !important;background-color:RGBA(var(--bs-brown-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cream{color:#000 !important;background-color:RGBA(var(--bs-cream-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-orange{color:#000 !important;background-color:RGBA(var(--bs-orange-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-yellow{color:#000 !important;background-color:RGBA(var(--bs-yellow-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-green{color:#000 !important;background-color:RGBA(var(--bs-green-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-teal{color:#000 !important;background-color:RGBA(var(--bs-teal-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cyan{color:#000 !important;background-color:RGBA(var(--bs-cyan-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-white{color:#000 !important;background-color:RGBA(var(--bs-white-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray{color:#fff !important;background-color:RGBA(var(--bs-gray-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray-dark{color:#fff !important;background-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(0, 0, 0, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 0, 0, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-error{color:RGBA(var(--bs-error-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-error-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-error:hover,.link-error:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(242, 242, 242, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(242, 242, 242, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(30, 30, 30, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(30, 30, 30, var(--bs-link-underline-opacity, 1)) !important}.link-blue{color:RGBA(var(--bs-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-blue:hover,.link-blue:focus{color:RGBA(66, 108, 158, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(66, 108, 158, var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue{color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue:hover,.link-dark-blue:focus{color:RGBA(0, 14, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 14, 51, var(--bs-link-underline-opacity, 1)) !important}.link-indigo{color:RGBA(var(--bs-indigo-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-indigo-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-indigo:hover,.link-indigo:focus{color:RGBA(82, 13, 194, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(82, 13, 194, var(--bs-link-underline-opacity, 1)) !important}.link-purple{color:RGBA(var(--bs-purple-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-purple-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-purple:hover,.link-purple:focus{color:RGBA(73, 26, 104, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(73, 26, 104, var(--bs-link-underline-opacity, 1)) !important}.link-pink{color:RGBA(var(--bs-pink-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-pink-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-pink:hover,.link-pink:focus{color:RGBA(171, 41, 106, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(171, 41, 106, var(--bs-link-underline-opacity, 1)) !important}.link-red{color:RGBA(var(--bs-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-red:hover,.link-red:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red{color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red:hover,.link-bordeaux-red:focus{color:RGBA(136, 17, 68, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(136, 17, 68, var(--bs-link-underline-opacity, 1)) !important}.link-brown{color:RGBA(var(--bs-brown-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-brown-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-brown:hover,.link-brown:focus{color:RGBA(88, 47, 28, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(88, 47, 28, var(--bs-link-underline-opacity, 1)) !important}.link-cream{color:RGBA(var(--bs-cream-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cream-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cream:hover,.link-cream:focus{color:RGBA(255, 235, 188, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 235, 188, var(--bs-link-underline-opacity, 1)) !important}.link-orange{color:RGBA(var(--bs-orange-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-orange-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-orange:hover,.link-orange:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-yellow{color:RGBA(var(--bs-yellow-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-yellow-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-yellow:hover,.link-yellow:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-green{color:RGBA(var(--bs-green-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-green-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-green:hover,.link-green:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-teal{color:RGBA(var(--bs-teal-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-teal-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-teal:hover,.link-teal:focus{color:RGBA(80, 185, 169, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(80, 185, 169, var(--bs-link-underline-opacity, 1)) !important}.link-cyan{color:RGBA(var(--bs-cyan-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cyan-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cyan:hover,.link-cyan:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-white{color:RGBA(var(--bs-white-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-white-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-white:hover,.link-white:focus{color:RGBA(255, 255, 255, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 255, 255, var(--bs-link-underline-opacity, 1)) !important}.link-gray{color:RGBA(var(--bs-gray-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray:hover,.link-gray:focus{color:RGBA(86, 86, 86, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 86, 86, var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark{color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark:hover,.link-gray-dark:focus{color:RGBA(42, 42, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 42, 42, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-error{--bs-focus-ring-color: rgba(var(--bs-error-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.focus-ring-blue{--bs-focus-ring-color: rgba(var(--bs-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark-blue{--bs-focus-ring-color: rgba(var(--bs-dark-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-indigo{--bs-focus-ring-color: rgba(var(--bs-indigo-rgb), var(--bs-focus-ring-opacity))}.focus-ring-purple{--bs-focus-ring-color: rgba(var(--bs-purple-rgb), var(--bs-focus-ring-opacity))}.focus-ring-pink{--bs-focus-ring-color: rgba(var(--bs-pink-rgb), var(--bs-focus-ring-opacity))}.focus-ring-red{--bs-focus-ring-color: rgba(var(--bs-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-bordeaux-red{--bs-focus-ring-color: rgba(var(--bs-bordeaux-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-brown{--bs-focus-ring-color: rgba(var(--bs-brown-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cream{--bs-focus-ring-color: rgba(var(--bs-cream-rgb), var(--bs-focus-ring-opacity))}.focus-ring-orange{--bs-focus-ring-color: rgba(var(--bs-orange-rgb), var(--bs-focus-ring-opacity))}.focus-ring-yellow{--bs-focus-ring-color: rgba(var(--bs-yellow-rgb), var(--bs-focus-ring-opacity))}.focus-ring-green{--bs-focus-ring-color: rgba(var(--bs-green-rgb), var(--bs-focus-ring-opacity))}.focus-ring-teal{--bs-focus-ring-color: rgba(var(--bs-teal-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cyan{--bs-focus-ring-color: rgba(var(--bs-cyan-rgb), var(--bs-focus-ring-opacity))}.focus-ring-white{--bs-focus-ring-color: rgba(var(--bs-white-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray{--bs-focus-ring-color: rgba(var(--bs-gray-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray-dark{--bs-focus-ring-color: rgba(var(--bs-gray-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-error{--bs-border-opacity: 1;border-color:rgba(var(--bs-error-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-blue-rgb), var(--bs-border-opacity)) !important}.border-dark-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-blue-rgb), var(--bs-border-opacity)) !important}.border-indigo{--bs-border-opacity: 1;border-color:rgba(var(--bs-indigo-rgb), var(--bs-border-opacity)) !important}.border-purple{--bs-border-opacity: 1;border-color:rgba(var(--bs-purple-rgb), var(--bs-border-opacity)) !important}.border-pink{--bs-border-opacity: 1;border-color:rgba(var(--bs-pink-rgb), var(--bs-border-opacity)) !important}.border-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-red-rgb), var(--bs-border-opacity)) !important}.border-bordeaux-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-border-opacity)) !important}.border-brown{--bs-border-opacity: 1;border-color:rgba(var(--bs-brown-rgb), var(--bs-border-opacity)) !important}.border-cream{--bs-border-opacity: 1;border-color:rgba(var(--bs-cream-rgb), var(--bs-border-opacity)) !important}.border-orange{--bs-border-opacity: 1;border-color:rgba(var(--bs-orange-rgb), var(--bs-border-opacity)) !important}.border-yellow{--bs-border-opacity: 1;border-color:rgba(var(--bs-yellow-rgb), var(--bs-border-opacity)) !important}.border-green{--bs-border-opacity: 1;border-color:rgba(var(--bs-green-rgb), var(--bs-border-opacity)) !important}.border-teal{--bs-border-opacity: 1;border-color:rgba(var(--bs-teal-rgb), var(--bs-border-opacity)) !important}.border-cyan{--bs-border-opacity: 1;border-color:rgba(var(--bs-cyan-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-gray{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-rgb), var(--bs-border-opacity)) !important}.border-gray-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.295rem + 0.54vw) !important}.fs-3{font-size:calc(1.265rem + 0.18vw) !important}.fs-4{font-size:1.2rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.4 !important}.lh-base{line-height:1.6 !important}.lh-lg{line-height:2.1 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-error{--bs-text-opacity: 1;color:rgba(var(--bs-error-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-blue{--bs-text-opacity: 1;color:rgba(var(--bs-blue-rgb), var(--bs-text-opacity)) !important}.text-dark-blue{--bs-text-opacity: 1;color:rgba(var(--bs-dark-blue-rgb), var(--bs-text-opacity)) !important}.text-indigo{--bs-text-opacity: 1;color:rgba(var(--bs-indigo-rgb), var(--bs-text-opacity)) !important}.text-purple{--bs-text-opacity: 1;color:rgba(var(--bs-purple-rgb), var(--bs-text-opacity)) !important}.text-pink{--bs-text-opacity: 1;color:rgba(var(--bs-pink-rgb), var(--bs-text-opacity)) !important}.text-red{--bs-text-opacity: 1;color:rgba(var(--bs-red-rgb), var(--bs-text-opacity)) !important}.text-bordeaux-red{--bs-text-opacity: 1;color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-text-opacity)) !important}.text-brown{--bs-text-opacity: 1;color:rgba(var(--bs-brown-rgb), var(--bs-text-opacity)) !important}.text-cream{--bs-text-opacity: 1;color:rgba(var(--bs-cream-rgb), var(--bs-text-opacity)) !important}.text-orange{--bs-text-opacity: 1;color:rgba(var(--bs-orange-rgb), var(--bs-text-opacity)) !important}.text-yellow{--bs-text-opacity: 1;color:rgba(var(--bs-yellow-rgb), var(--bs-text-opacity)) !important}.text-green{--bs-text-opacity: 1;color:rgba(var(--bs-green-rgb), var(--bs-text-opacity)) !important}.text-teal{--bs-text-opacity: 1;color:rgba(var(--bs-teal-rgb), var(--bs-text-opacity)) !important}.text-cyan{--bs-text-opacity: 1;color:rgba(var(--bs-cyan-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-gray{--bs-text-opacity: 1;color:rgba(var(--bs-gray-rgb), var(--bs-text-opacity)) !important}.text-gray-dark{--bs-text-opacity: 1;color:rgba(var(--bs-gray-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-error{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-error-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-indigo{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-indigo-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-purple{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-purple-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-pink{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-pink-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-bordeaux-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-brown{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-brown-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cream{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cream-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-orange{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-orange-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-yellow{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-yellow-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-green{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-green-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-teal{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-teal-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cyan{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cyan-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-white{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-white-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-error{--bs-bg-opacity: 1;background-color:rgba(var(--bs-error-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-blue-rgb), var(--bs-bg-opacity)) !important}.bg-dark-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-blue-rgb), var(--bs-bg-opacity)) !important}.bg-indigo{--bs-bg-opacity: 1;background-color:rgba(var(--bs-indigo-rgb), var(--bs-bg-opacity)) !important}.bg-purple{--bs-bg-opacity: 1;background-color:rgba(var(--bs-purple-rgb), var(--bs-bg-opacity)) !important}.bg-pink{--bs-bg-opacity: 1;background-color:rgba(var(--bs-pink-rgb), var(--bs-bg-opacity)) !important}.bg-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-red-rgb), var(--bs-bg-opacity)) !important}.bg-bordeaux-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity)) !important}.bg-brown{--bs-bg-opacity: 1;background-color:rgba(var(--bs-brown-rgb), var(--bs-bg-opacity)) !important}.bg-cream{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cream-rgb), var(--bs-bg-opacity)) !important}.bg-orange{--bs-bg-opacity: 1;background-color:rgba(var(--bs-orange-rgb), var(--bs-bg-opacity)) !important}.bg-yellow{--bs-bg-opacity: 1;background-color:rgba(var(--bs-yellow-rgb), var(--bs-bg-opacity)) !important}.bg-green{--bs-bg-opacity: 1;background-color:rgba(var(--bs-green-rgb), var(--bs-bg-opacity)) !important}.bg-teal{--bs-bg-opacity: 1;background-color:rgba(var(--bs-teal-rgb), var(--bs-bg-opacity)) !important}.bg-cyan{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cyan-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-gray{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-rgb), var(--bs-bg-opacity)) !important}.bg-gray-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}.cursor-auto{cursor:auto !important}.cursor-pointer{cursor:pointer !important}.cursor-grab{cursor:grab !important}.cursor-copy{cursor:copy !important}.cursor-default{cursor:default !important}.cursor-help{cursor:help !important}.cursor-text{cursor:text !important}.cursor-none{cursor:none !important}.cursor-not-allowed{cursor:not-allowed !important}.cursor-progress{cursor:progress !important}.cursor-wait{cursor:wait !important}.cursor-zoom-in{cursor:zoom-in !important}.cursor-zoom-out{cursor:zoom-out !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}.cursor-sm-auto{cursor:auto !important}.cursor-sm-pointer{cursor:pointer !important}.cursor-sm-grab{cursor:grab !important}.cursor-sm-copy{cursor:copy !important}.cursor-sm-default{cursor:default !important}.cursor-sm-help{cursor:help !important}.cursor-sm-text{cursor:text !important}.cursor-sm-none{cursor:none !important}.cursor-sm-not-allowed{cursor:not-allowed !important}.cursor-sm-progress{cursor:progress !important}.cursor-sm-wait{cursor:wait !important}.cursor-sm-zoom-in{cursor:zoom-in !important}.cursor-sm-zoom-out{cursor:zoom-out !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}.cursor-md-auto{cursor:auto !important}.cursor-md-pointer{cursor:pointer !important}.cursor-md-grab{cursor:grab !important}.cursor-md-copy{cursor:copy !important}.cursor-md-default{cursor:default !important}.cursor-md-help{cursor:help !important}.cursor-md-text{cursor:text !important}.cursor-md-none{cursor:none !important}.cursor-md-not-allowed{cursor:not-allowed !important}.cursor-md-progress{cursor:progress !important}.cursor-md-wait{cursor:wait !important}.cursor-md-zoom-in{cursor:zoom-in !important}.cursor-md-zoom-out{cursor:zoom-out !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}.cursor-lg-auto{cursor:auto !important}.cursor-lg-pointer{cursor:pointer !important}.cursor-lg-grab{cursor:grab !important}.cursor-lg-copy{cursor:copy !important}.cursor-lg-default{cursor:default !important}.cursor-lg-help{cursor:help !important}.cursor-lg-text{cursor:text !important}.cursor-lg-none{cursor:none !important}.cursor-lg-not-allowed{cursor:not-allowed !important}.cursor-lg-progress{cursor:progress !important}.cursor-lg-wait{cursor:wait !important}.cursor-lg-zoom-in{cursor:zoom-in !important}.cursor-lg-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}.cursor-xl-auto{cursor:auto !important}.cursor-xl-pointer{cursor:pointer !important}.cursor-xl-grab{cursor:grab !important}.cursor-xl-copy{cursor:copy !important}.cursor-xl-default{cursor:default !important}.cursor-xl-help{cursor:help !important}.cursor-xl-text{cursor:text !important}.cursor-xl-none{cursor:none !important}.cursor-xl-not-allowed{cursor:not-allowed !important}.cursor-xl-progress{cursor:progress !important}.cursor-xl-wait{cursor:wait !important}.cursor-xl-zoom-in{cursor:zoom-in !important}.cursor-xl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}.cursor-xxl-auto{cursor:auto !important}.cursor-xxl-pointer{cursor:pointer !important}.cursor-xxl-grab{cursor:grab !important}.cursor-xxl-copy{cursor:copy !important}.cursor-xxl-default{cursor:default !important}.cursor-xxl-help{cursor:help !important}.cursor-xxl-text{cursor:text !important}.cursor-xxl-none{cursor:none !important}.cursor-xxl-not-allowed{cursor:not-allowed !important}.cursor-xxl-progress{cursor:progress !important}.cursor-xxl-wait{cursor:wait !important}.cursor-xxl-zoom-in{cursor:zoom-in !important}.cursor-xxl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.7rem !important}.fs-3{font-size:1.4rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root,[data-bs-theme=light]{--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-gray-100: #efefef;--bs-gray-200: #e9e9e9;--bs-gray-300: #dedede;--bs-gray-400: #cecece;--bs-gray-500: #adadad;--bs-gray-600: #6c6c6c;--bs-gray-700: #494949;--bs-gray-800: #343434;--bs-gray-900: #212121;--bs-primary: #ffcd00;--bs-secondary: #000;--bs-success: #2db83d;--bs-info: #0dcaf0;--bs-warning: #f3965e;--bs-danger: #c00a35;--bs-error: #c00a35;--bs-light: #efefef;--bs-dark: #262626;--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-primary-rgb: 255, 205, 0;--bs-secondary-rgb: 0, 0, 0;--bs-success-rgb: 45, 184, 61;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 243, 150, 94;--bs-danger-rgb: 192, 10, 53;--bs-error-rgb: 192, 10, 53;--bs-light-rgb: 239, 239, 239;--bs-dark-rgb: 38, 38, 38;--bs-blue-rgb: 82, 135, 198;--bs-dark-blue-rgb: 0, 18, 64;--bs-indigo-rgb: 102, 16, 242;--bs-purple-rgb: 91, 33, 130;--bs-pink-rgb: 214, 51, 132;--bs-red-rgb: 192, 10, 53;--bs-bordeaux-red-rgb: 170, 21, 85;--bs-brown-rgb: 110, 59, 35;--bs-cream-rgb: 255, 230, 171;--bs-orange-rgb: 243, 150, 94;--bs-yellow-rgb: 255, 205, 0;--bs-green-rgb: 45, 184, 61;--bs-teal-rgb: 36, 167, 147;--bs-cyan-rgb: 13, 202, 240;--bs-white-rgb: 255, 255, 255;--bs-gray-rgb: 108, 108, 108;--bs-gray-dark-rgb: 52, 52, 52;--bs-primary-text-emphasis: #665200;--bs-secondary-text-emphasis: black;--bs-success-text-emphasis: #124a18;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #613c26;--bs-danger-text-emphasis: #4d0415;--bs-light-text-emphasis: #494949;--bs-dark-text-emphasis: #494949;--bs-primary-bg-subtle: #fff5cc;--bs-secondary-bg-subtle: #cccccc;--bs-success-bg-subtle: #d5f1d8;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fdeadf;--bs-danger-bg-subtle: #f2ced7;--bs-light-bg-subtle: #f7f7f7;--bs-dark-bg-subtle: #cecece;--bs-primary-border-subtle: #ffeb99;--bs-secondary-border-subtle: #999999;--bs-success-border-subtle: #abe3b1;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #fad5bf;--bs-danger-border-subtle: #e69dae;--bs-light-border-subtle: #e9e9e9;--bs-dark-border-subtle: #adadad;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Open Sans", "Verdana", -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.6;--bs-body-color: #212121;--bs-body-color-rgb: 33, 33, 33;--bs-body-bg: #f6f6f6;--bs-body-bg-rgb: 246, 246, 246;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 33, 33, 0.75);--bs-secondary-color-rgb: 33, 33, 33;--bs-secondary-bg: #e9e9e9;--bs-secondary-bg-rgb: 233, 233, 233;--bs-tertiary-color: rgba(33, 33, 33, 0.5);--bs-tertiary-color-rgb: 33, 33, 33;--bs-tertiary-bg: #efefef;--bs-tertiary-bg-rgb: 239, 239, 239;--bs-heading-color: inherit;--bs-link-color: #000;--bs-link-color-rgb: 0, 0, 0;--bs-link-decoration: underline;--bs-link-hover-color: black;--bs-link-hover-color-rgb: 0, 0, 0;--bs-code-color: #000;--bs-highlight-bg: #fff5cc;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dedede;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0;--bs-border-radius-sm: 0;--bs-border-radius-lg: 0;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(255, 205, 0, 0.25);--bs-form-valid-color: #2db83d;--bs-form-valid-border-color: #2db83d;--bs-form-invalid-color: #c00a35;--bs-form-invalid-border-color: #c00a35}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dedede;--bs-body-color-rgb: 222, 222, 222;--bs-body-bg: #212121;--bs-body-bg-rgb: 33, 33, 33;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 222, 222, 0.75);--bs-secondary-color-rgb: 222, 222, 222;--bs-secondary-bg: #343434;--bs-secondary-bg-rgb: 52, 52, 52;--bs-tertiary-color: rgba(222, 222, 222, 0.5);--bs-tertiary-color-rgb: 222, 222, 222;--bs-tertiary-bg: #2b2b2b;--bs-tertiary-bg-rgb: 43, 43, 43;--bs-primary-text-emphasis: #ffe166;--bs-secondary-text-emphasis: #666666;--bs-success-text-emphasis: #81d48b;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #f8c09e;--bs-danger-text-emphasis: #d96c86;--bs-light-text-emphasis: #efefef;--bs-dark-text-emphasis: #dedede;--bs-primary-bg-subtle: #332900;--bs-secondary-bg-subtle: black;--bs-success-bg-subtle: #09250c;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #311e13;--bs-danger-bg-subtle: #26020b;--bs-light-bg-subtle: #343434;--bs-dark-bg-subtle: #1a1a1a;--bs-primary-border-subtle: #997b00;--bs-secondary-border-subtle: black;--bs-success-border-subtle: #1b6e25;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #925a38;--bs-danger-border-subtle: #730620;--bs-light-border-subtle: #494949;--bs-dark-border-subtle: #343434;--bs-heading-color: inherit;--bs-link-color: #ffe166;--bs-link-hover-color: #ffe785;--bs-link-color-rgb: 255, 225, 102;--bs-link-hover-color-rgb: 255, 231, 133;--bs-code-color: #fff;--bs-border-color: #494949;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #81d48b;--bs-form-valid-border-color: #81d48b;--bs-form-invalid-color: #d96c86;--bs-form-invalid-border-color: #d96c86}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.295rem + 0.54vw)}@media(min-width: 1200px){h2,.h2{font-size:1.7rem}}h3,.h3{font-size:calc(1.265rem + 0.18vw)}@media(min-width: 1200px){h3,.h3{font-size:1.4rem}}h4,.h4{font-size:1.2rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.85em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.85em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:0.85em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:0}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c6c6c}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 0;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 0;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.25rem}.g-1,.gy-1{--bs-gutter-y: 0.25rem}.g-2,.gx-2{--bs-gutter-x: 0.5rem}.g-2,.gy-2{--bs-gutter-y: 0.5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media(min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-body-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, 0.01);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, 0.05);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #fff5cc;--bs-table-border-color: #e6ddb8;--bs-table-striped-bg: #fcf3ca;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ddb8;--bs-table-active-color: #000;--bs-table-hover-bg: #f2e9c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #cccccc;--bs-table-border-color: #b8b8b8;--bs-table-striped-bg: #cacaca;--bs-table-striped-color: #000;--bs-table-active-bg: #b8b8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #c2c2c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d5f1d8;--bs-table-border-color: #c0d9c2;--bs-table-striped-bg: #d3efd6;--bs-table-striped-color: #000;--bs-table-active-bg: #c0d9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #cae5cd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #cdf2f9;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #c5e8ef;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fdeadf;--bs-table-border-color: #e4d3c9;--bs-table-striped-bg: #fae8dd;--bs-table-striped-color: #000;--bs-table-active-bg: #e4d3c9;--bs-table-active-color: #000;--bs-table-hover-bg: #f0ded4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f2ced7;--bs-table-border-color: #dab9c2;--bs-table-striped-bg: #f0ccd5;--bs-table-striped-color: #000;--bs-table-active-bg: #dab9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #e6c4cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #efefef;--bs-table-border-color: #d7d7d7;--bs-table-striped-bg: #ededed;--bs-table-striped-color: #000;--bs-table-active-bg: #d7d7d7;--bs-table-active-color: #000;--bs-table-hover-bg: #e3e3e3;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #262626;--bs-table-border-color: #3c3c3c;--bs-table-striped-bg: #282828;--bs-table-striped-color: #fff;--bs-table-active-bg: #3c3c3c;--bs-table-active-color: #fff;--bs-table-hover-bg: #313131;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-weight:500;color:#262626}.col-form-label{padding-top:calc(0.375rem + var(--bs-border-width));padding-bottom:calc(0.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;font-weight:500;line-height:1.6;color:#262626}.col-form-label-lg{padding-top:calc(0.5rem + var(--bs-border-width));padding-bottom:calc(0.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + var(--bs-border-width));padding-bottom:calc(0.25rem + var(--bs-border-width));font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:#fff;border-color:#000;outline:0;box-shadow:none}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.6em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.6;color:var(--bs-body-color);background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343434' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#000;outline:0;box-shadow:none}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:0 !important}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:0 !important}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dedede' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.6rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.3em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#000;outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.form-check-input:checked{background-color:#5287c6;border-color:#5287c6}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#ffcd00;border-color:#ffcd00;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23000'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1rem;padding:0;appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f6f6f6,none}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f6f6,none}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#fff0b3}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#fff0b3}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c6c6c}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 1rem;--bs-btn-padding-y: 0.5rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.6;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0 rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-outline-primary{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-error{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-outline-blue{--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-outline-dark-blue{--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-outline-indigo{--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-outline-purple{--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-outline-pink{--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-outline-red{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-bordeaux-red{--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-outline-brown{--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-outline-cream{--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-outline-orange{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-yellow{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-green{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-teal{--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-outline-cyan{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-white{--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-outline-gray{--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-outline-gray-dark{--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 38, 38, 38;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.25rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.25rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c6c6c;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dedede;--bs-dropdown-bg: #343434;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dedede;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: #adadad;--bs-dropdown-header-color: #adadad}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: #cecece;--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) #cecece;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #cecece #cecece #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #000;--bs-nav-pills-link-active-bg: #ffcd00}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: 0.5rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25rem;--bs-navbar-toggler-padding-x: 0.75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 33, 33, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, 0.55);--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: 0;--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - 0);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #000;--bs-accordion-btn-bg: #ffcd00;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212121'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665200'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #000;--bs-accordion-btn-focus-box-shadow: none;--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #000;--bs-accordion-active-bg: #ffcd00}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffe166'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffe166'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #000;--bs-pagination-bg: #dedede;--bs-pagination-border-width: 0;--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #000;--bs-pagination-hover-bg: #ffcd00;--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: #000;--bs-pagination-focus-bg: #ffcd00;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-pagination-active-color: #000;--bs-pagination-active-bg: #ffcd00;--bs-pagination-active-border-color: #ffcd00;--bs-pagination-disabled-color: #adadad;--bs-pagination-disabled-bg: #efefef;--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0 * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 0.5rem;--bs-alert-margin-bottom: 0.5rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.625rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-error{--bs-alert-color: var(--bs-error-text-emphasis);--bs-alert-bg: var(--bs-error-bg-subtle);--bs-alert-border-color: var(--bs-error-border-subtle);--bs-alert-link-color: var(--bs-error-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}.alert-blue{--bs-alert-color: var(--bs-blue-text-emphasis);--bs-alert-bg: var(--bs-blue-bg-subtle);--bs-alert-border-color: var(--bs-blue-border-subtle);--bs-alert-link-color: var(--bs-blue-text-emphasis)}.alert-dark-blue{--bs-alert-color: var(--bs-dark-blue-text-emphasis);--bs-alert-bg: var(--bs-dark-blue-bg-subtle);--bs-alert-border-color: var(--bs-dark-blue-border-subtle);--bs-alert-link-color: var(--bs-dark-blue-text-emphasis)}.alert-indigo{--bs-alert-color: var(--bs-indigo-text-emphasis);--bs-alert-bg: var(--bs-indigo-bg-subtle);--bs-alert-border-color: var(--bs-indigo-border-subtle);--bs-alert-link-color: var(--bs-indigo-text-emphasis)}.alert-purple{--bs-alert-color: var(--bs-purple-text-emphasis);--bs-alert-bg: var(--bs-purple-bg-subtle);--bs-alert-border-color: var(--bs-purple-border-subtle);--bs-alert-link-color: var(--bs-purple-text-emphasis)}.alert-pink{--bs-alert-color: var(--bs-pink-text-emphasis);--bs-alert-bg: var(--bs-pink-bg-subtle);--bs-alert-border-color: var(--bs-pink-border-subtle);--bs-alert-link-color: var(--bs-pink-text-emphasis)}.alert-red{--bs-alert-color: var(--bs-red-text-emphasis);--bs-alert-bg: var(--bs-red-bg-subtle);--bs-alert-border-color: var(--bs-red-border-subtle);--bs-alert-link-color: var(--bs-red-text-emphasis)}.alert-bordeaux-red{--bs-alert-color: var(--bs-bordeaux-red-text-emphasis);--bs-alert-bg: var(--bs-bordeaux-red-bg-subtle);--bs-alert-border-color: var(--bs-bordeaux-red-border-subtle);--bs-alert-link-color: var(--bs-bordeaux-red-text-emphasis)}.alert-brown{--bs-alert-color: var(--bs-brown-text-emphasis);--bs-alert-bg: var(--bs-brown-bg-subtle);--bs-alert-border-color: var(--bs-brown-border-subtle);--bs-alert-link-color: var(--bs-brown-text-emphasis)}.alert-cream{--bs-alert-color: var(--bs-cream-text-emphasis);--bs-alert-bg: var(--bs-cream-bg-subtle);--bs-alert-border-color: var(--bs-cream-border-subtle);--bs-alert-link-color: var(--bs-cream-text-emphasis)}.alert-orange{--bs-alert-color: var(--bs-orange-text-emphasis);--bs-alert-bg: var(--bs-orange-bg-subtle);--bs-alert-border-color: var(--bs-orange-border-subtle);--bs-alert-link-color: var(--bs-orange-text-emphasis)}.alert-yellow{--bs-alert-color: var(--bs-yellow-text-emphasis);--bs-alert-bg: var(--bs-yellow-bg-subtle);--bs-alert-border-color: var(--bs-yellow-border-subtle);--bs-alert-link-color: var(--bs-yellow-text-emphasis)}.alert-green{--bs-alert-color: var(--bs-green-text-emphasis);--bs-alert-bg: var(--bs-green-bg-subtle);--bs-alert-border-color: var(--bs-green-border-subtle);--bs-alert-link-color: var(--bs-green-text-emphasis)}.alert-teal{--bs-alert-color: var(--bs-teal-text-emphasis);--bs-alert-bg: var(--bs-teal-bg-subtle);--bs-alert-border-color: var(--bs-teal-border-subtle);--bs-alert-link-color: var(--bs-teal-text-emphasis)}.alert-cyan{--bs-alert-color: var(--bs-cyan-text-emphasis);--bs-alert-bg: var(--bs-cyan-bg-subtle);--bs-alert-border-color: var(--bs-cyan-border-subtle);--bs-alert-link-color: var(--bs-cyan-text-emphasis)}.alert-white{--bs-alert-color: var(--bs-white-text-emphasis);--bs-alert-bg: var(--bs-white-bg-subtle);--bs-alert-border-color: var(--bs-white-border-subtle);--bs-alert-link-color: var(--bs-white-text-emphasis)}.alert-gray{--bs-alert-color: var(--bs-gray-text-emphasis);--bs-alert-bg: var(--bs-gray-bg-subtle);--bs-alert-border-color: var(--bs-gray-border-subtle);--bs-alert-link-color: var(--bs-gray-text-emphasis)}.alert-gray-dark{--bs-alert-color: var(--bs-gray-dark-text-emphasis);--bs-alert-bg: var(--bs-gray-dark-bg-subtle);--bs-alert-border-color: var(--bs-gray-dark-border-subtle);--bs-alert-link-color: var(--bs-gray-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #ffcd00;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #ffcd00;--bs-list-group-active-border-color: #ffcd00;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-error{--bs-list-group-color: var(--bs-error-text-emphasis);--bs-list-group-bg: var(--bs-error-bg-subtle);--bs-list-group-border-color: var(--bs-error-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-error-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-error-border-subtle);--bs-list-group-active-color: var(--bs-error-bg-subtle);--bs-list-group-active-bg: var(--bs-error-text-emphasis);--bs-list-group-active-border-color: var(--bs-error-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.list-group-item-blue{--bs-list-group-color: var(--bs-blue-text-emphasis);--bs-list-group-bg: var(--bs-blue-bg-subtle);--bs-list-group-border-color: var(--bs-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-blue-border-subtle);--bs-list-group-active-color: var(--bs-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-blue-text-emphasis)}.list-group-item-dark-blue{--bs-list-group-color: var(--bs-dark-blue-text-emphasis);--bs-list-group-bg: var(--bs-dark-blue-bg-subtle);--bs-list-group-border-color: var(--bs-dark-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-active-color: var(--bs-dark-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-blue-text-emphasis)}.list-group-item-indigo{--bs-list-group-color: var(--bs-indigo-text-emphasis);--bs-list-group-bg: var(--bs-indigo-bg-subtle);--bs-list-group-border-color: var(--bs-indigo-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-indigo-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-indigo-border-subtle);--bs-list-group-active-color: var(--bs-indigo-bg-subtle);--bs-list-group-active-bg: var(--bs-indigo-text-emphasis);--bs-list-group-active-border-color: var(--bs-indigo-text-emphasis)}.list-group-item-purple{--bs-list-group-color: var(--bs-purple-text-emphasis);--bs-list-group-bg: var(--bs-purple-bg-subtle);--bs-list-group-border-color: var(--bs-purple-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-purple-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-purple-border-subtle);--bs-list-group-active-color: var(--bs-purple-bg-subtle);--bs-list-group-active-bg: var(--bs-purple-text-emphasis);--bs-list-group-active-border-color: var(--bs-purple-text-emphasis)}.list-group-item-pink{--bs-list-group-color: var(--bs-pink-text-emphasis);--bs-list-group-bg: var(--bs-pink-bg-subtle);--bs-list-group-border-color: var(--bs-pink-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-pink-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-pink-border-subtle);--bs-list-group-active-color: var(--bs-pink-bg-subtle);--bs-list-group-active-bg: var(--bs-pink-text-emphasis);--bs-list-group-active-border-color: var(--bs-pink-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-bordeaux-red{--bs-list-group-color: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-bg: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-border-color: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-active-color: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-active-bg: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-bordeaux-red-text-emphasis)}.list-group-item-brown{--bs-list-group-color: var(--bs-brown-text-emphasis);--bs-list-group-bg: var(--bs-brown-bg-subtle);--bs-list-group-border-color: var(--bs-brown-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-brown-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-brown-border-subtle);--bs-list-group-active-color: var(--bs-brown-bg-subtle);--bs-list-group-active-bg: var(--bs-brown-text-emphasis);--bs-list-group-active-border-color: var(--bs-brown-text-emphasis)}.list-group-item-cream{--bs-list-group-color: var(--bs-cream-text-emphasis);--bs-list-group-bg: var(--bs-cream-bg-subtle);--bs-list-group-border-color: var(--bs-cream-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cream-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cream-border-subtle);--bs-list-group-active-color: var(--bs-cream-bg-subtle);--bs-list-group-active-bg: var(--bs-cream-text-emphasis);--bs-list-group-active-border-color: var(--bs-cream-text-emphasis)}.list-group-item-orange{--bs-list-group-color: var(--bs-orange-text-emphasis);--bs-list-group-bg: var(--bs-orange-bg-subtle);--bs-list-group-border-color: var(--bs-orange-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-orange-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-orange-border-subtle);--bs-list-group-active-color: var(--bs-orange-bg-subtle);--bs-list-group-active-bg: var(--bs-orange-text-emphasis);--bs-list-group-active-border-color: var(--bs-orange-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-teal{--bs-list-group-color: var(--bs-teal-text-emphasis);--bs-list-group-bg: var(--bs-teal-bg-subtle);--bs-list-group-border-color: var(--bs-teal-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-teal-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-teal-border-subtle);--bs-list-group-active-color: var(--bs-teal-bg-subtle);--bs-list-group-active-bg: var(--bs-teal-text-emphasis);--bs-list-group-active-border-color: var(--bs-teal-text-emphasis)}.list-group-item-cyan{--bs-list-group-color: var(--bs-cyan-text-emphasis);--bs-list-group-bg: var(--bs-cyan-bg-subtle);--bs-list-group-border-color: var(--bs-cyan-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cyan-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cyan-border-subtle);--bs-list-group-active-color: var(--bs-cyan-bg-subtle);--bs-list-group-active-bg: var(--bs-cyan-text-emphasis);--bs-list-group-active-border-color: var(--bs-cyan-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-gray{--bs-list-group-color: var(--bs-gray-text-emphasis);--bs-list-group-bg: var(--bs-gray-bg-subtle);--bs-list-group-border-color: var(--bs-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-border-subtle);--bs-list-group-active-color: var(--bs-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-text-emphasis)}.list-group-item-gray-dark{--bs-list-group-color: var(--bs-gray-dark-text-emphasis);--bs-list-group-bg: var(--bs-gray-dark-bg-subtle);--bs-list-group-border-color: var(--bs-gray-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-active-color: var(--bs-gray-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 0;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 9002;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: #212121;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: 0;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: 0;--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 0;--bs-modal-title-line-height: 1.6;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 0.0625rem;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.6}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%}}.accordion-item{margin-bottom:1rem}.alert-primary{--bs-alert-color: #000;--bs-alert-bg: #fff5cc;--bs-alert-border-color: #fff0b3;--bs-alert-link-color: #000}.alert-secondary{--bs-alert-color: #000;--bs-alert-bg: #cccccc;--bs-alert-border-color: #b3b3b3;--bs-alert-link-color: #000}.alert-success{--bs-alert-color: #000;--bs-alert-bg: #d5f1d8;--bs-alert-border-color: #c0eac5;--bs-alert-link-color: #000}.alert-info{--bs-alert-color: #000;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb;--bs-alert-link-color: #000}.alert-warning{--bs-alert-color: #000;--bs-alert-bg: #fdeadf;--bs-alert-border-color: #fbe0cf;--bs-alert-link-color: #000}.alert-danger{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-error{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-light{--bs-alert-color: #000;--bs-alert-bg: #fcfcfc;--bs-alert-border-color: #fafafa;--bs-alert-link-color: #000}.alert-dark{--bs-alert-color: #000;--bs-alert-bg: #d4d4d4;--bs-alert-border-color: #bebebe;--bs-alert-link-color: #000}.alert-blue{--bs-alert-color: #000;--bs-alert-bg: #dce7f4;--bs-alert-border-color: #cbdbee;--bs-alert-link-color: #000}.alert-dark-blue{--bs-alert-color: #000;--bs-alert-bg: #ccd0d9;--bs-alert-border-color: #b3b8c6;--bs-alert-link-color: #000}.alert-indigo{--bs-alert-color: #000;--bs-alert-bg: #e0cffc;--bs-alert-border-color: #d1b7fb;--bs-alert-link-color: #000}.alert-purple{--bs-alert-color: #000;--bs-alert-bg: #ded3e6;--bs-alert-border-color: #cebcda;--bs-alert-link-color: #000}.alert-pink{--bs-alert-color: #000;--bs-alert-bg: #f7d6e6;--bs-alert-border-color: #f3c2da;--bs-alert-link-color: #000}.alert-red{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-bordeaux-red{--bs-alert-color: #000;--bs-alert-bg: #eed0dd;--bs-alert-border-color: #e6b9cc;--bs-alert-link-color: #000}.alert-brown{--bs-alert-color: #000;--bs-alert-bg: #e2d8d3;--bs-alert-border-color: #d4c4bd;--bs-alert-link-color: #000}.alert-cream{--bs-alert-color: #000;--bs-alert-bg: #fffaee;--bs-alert-border-color: #fff8e6;--bs-alert-link-color: #000}.alert-orange{--bs-alert-color: #000;--bs-alert-bg: #fdeadf;--bs-alert-border-color: #fbe0cf;--bs-alert-link-color: #000}.alert-yellow{--bs-alert-color: #000;--bs-alert-bg: #fff5cc;--bs-alert-border-color: #fff0b3;--bs-alert-link-color: #000}.alert-green{--bs-alert-color: #000;--bs-alert-bg: #d5f1d8;--bs-alert-border-color: #c0eac5;--bs-alert-link-color: #000}.alert-teal{--bs-alert-color: #000;--bs-alert-bg: #d3ede9;--bs-alert-border-color: #bde5df;--bs-alert-link-color: #000}.alert-cyan{--bs-alert-color: #000;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb;--bs-alert-link-color: #000}.alert-white{--bs-alert-color: #000;--bs-alert-bg: white;--bs-alert-border-color: white;--bs-alert-link-color: #000}.alert-gray{--bs-alert-color: #000;--bs-alert-bg: #e2e2e2;--bs-alert-border-color: lightgray;--bs-alert-link-color: #000}.alert-gray-dark{--bs-alert-color: #000;--bs-alert-bg: #d6d6d6;--bs-alert-border-color: #c2c2c2;--bs-alert-link-color: #000}.alert p:last-child{margin-bottom:0}.text-bg-hover-primary:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-secondary:hover{color:#fff !important;background-color:RGBA(0, 0, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-success:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-info:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-warning:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-danger:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-error:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-light:hover{color:#000 !important;background-color:RGBA(239, 239, 239, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark:hover{color:#fff !important;background-color:RGBA(38, 38, 38, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-blue:hover{color:#fff !important;background-color:RGBA(82, 135, 198, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark-blue:hover{color:#fff !important;background-color:RGBA(0, 18, 64, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-indigo:hover{color:#fff !important;background-color:RGBA(102, 16, 242, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-purple:hover{color:#fff !important;background-color:RGBA(91, 33, 130, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-pink:hover{color:#fff !important;background-color:RGBA(214, 51, 132, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-red:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-bordeaux-red:hover{color:#fff !important;background-color:RGBA(170, 21, 85, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-brown:hover{color:#fff !important;background-color:RGBA(110, 59, 35, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cream:hover{color:#000 !important;background-color:RGBA(255, 230, 171, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-orange:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-yellow:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-green:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-teal:hover{color:#000 !important;background-color:RGBA(36, 167, 147, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cyan:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-white:hover{color:#000 !important;background-color:RGBA(255, 255, 255, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray:hover{color:#fff !important;background-color:RGBA(108, 108, 108, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray-dark:hover{color:#fff !important;background-color:RGBA(52, 52, 52, var(--bs-bg-opacity, 1)) !important}.btn{font-weight:bold}.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(0.5rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.25rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{display:inline-block;font-weight:900;border:.0625rem solid rgba(0,0,0,0);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{transition:none}}.btn.btn-arrow-right:hover::after,.btn.btn-arrow-right:hover::before,.btn.btn-arrow-left:hover::after,.btn.btn-arrow-left:hover::before{background:var(--bs-btn-hover-color);color:var(--bs-btn-hover-bg);border-color:#000}.btn.btn-arrow-right::after{content:">";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x));border-top-right-radius:var(--bs-btn-border-radius);border-bottom-right-radius:var(--bs-btn-border-radius)}.btn.btn-arrow-left::before{content:"<";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x));border-top-left-radius:var(--bs-btn-border-radius);border-bottom-left-radius:var(--bs-btn-border-radius)}.btn.btn-loading{position:relative;color:rgba(0,0,0,0)}.btn.btn-loading .btn-text{color:rgba(0,0,0,0)}.btn.btn-loading::after{border:.125rem solid #000;border-radius:999999px;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;height:1em;width:1em;position:absolute;left:calc(50% - .5em);top:calc(50% - .5em);animation:spinner-border .5s infinite linear}.btn.btn-loading.btn-primary::after{border-color:#000}.btn.btn-loading.btn-secondary::after{border-color:#fff}.btn.btn-loading.btn-success::after{border-color:#000}.btn.btn-loading.btn-info::after{border-color:#000}.btn.btn-loading.btn-warning::after{border-color:#000}.btn.btn-loading.btn-danger::after{border-color:#fff}.btn.btn-loading.btn-error::after{border-color:#fff}.btn.btn-loading.btn-light::after{border-color:#000}.btn.btn-loading.btn-dark::after{border-color:#fff}.btn.btn-loading.btn-blue::after{border-color:#fff}.btn.btn-loading.btn-dark-blue::after{border-color:#fff}.btn.btn-loading.btn-indigo::after{border-color:#fff}.btn.btn-loading.btn-purple::after{border-color:#fff}.btn.btn-loading.btn-pink::after{border-color:#fff}.btn.btn-loading.btn-red::after{border-color:#fff}.btn.btn-loading.btn-bordeaux-red::after{border-color:#fff}.btn.btn-loading.btn-brown::after{border-color:#fff}.btn.btn-loading.btn-cream::after{border-color:#000}.btn.btn-loading.btn-orange::after{border-color:#000}.btn.btn-loading.btn-yellow::after{border-color:#000}.btn.btn-loading.btn-green::after{border-color:#000}.btn.btn-loading.btn-teal::after{border-color:#000}.btn.btn-loading.btn-cyan::after{border-color:#000}.btn.btn-loading.btn-white::after{border-color:#000}.btn.btn-loading.btn-gray::after{border-color:#fff}.btn.btn-loading.btn-gray-dark::after{border-color:#fff}.btn-group{gap:.5rem}.btn-check:checked+.btn.btn-checked-primary,.btn-check:active+.btn.btn-checked-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-primary,.btn-check:active+.btn.btn-checked-outline-primary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-secondary,.btn-check:active+.btn.btn-checked-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-check:checked+.btn.btn-checked-outline-secondary,.btn-check:active+.btn.btn-checked-outline-secondary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-success,.btn-check:active+.btn.btn-checked-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-success,.btn-check:active+.btn.btn-checked-outline-success{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-info,.btn-check:active+.btn.btn-checked-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-info,.btn-check:active+.btn.btn-checked-outline-info{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-warning,.btn-check:active+.btn.btn-checked-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-warning,.btn-check:active+.btn.btn-checked-outline-warning{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-danger,.btn-check:active+.btn.btn-checked-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-danger,.btn-check:active+.btn.btn-checked-outline-danger{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-error,.btn-check:active+.btn.btn-checked-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-error,.btn-check:active+.btn.btn-checked-outline-error{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-light,.btn-check:active+.btn.btn-checked-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-check:checked+.btn.btn-checked-outline-light,.btn-check:active+.btn.btn-checked-outline-light{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark,.btn-check:active+.btn.btn-checked-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-check:checked+.btn.btn-checked-outline-dark,.btn-check:active+.btn.btn-checked-outline-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-blue,.btn-check:active+.btn.btn-checked-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-check:checked+.btn.btn-checked-outline-blue,.btn-check:active+.btn.btn-checked-outline-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark-blue,.btn-check:active+.btn.btn-checked-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-check:checked+.btn.btn-checked-outline-dark-blue,.btn-check:active+.btn.btn-checked-outline-dark-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-indigo,.btn-check:active+.btn.btn-checked-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-check:checked+.btn.btn-checked-outline-indigo,.btn-check:active+.btn.btn-checked-outline-indigo{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-purple,.btn-check:active+.btn.btn-checked-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-check:checked+.btn.btn-checked-outline-purple,.btn-check:active+.btn.btn-checked-outline-purple{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-pink,.btn-check:active+.btn.btn-checked-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-check:checked+.btn.btn-checked-outline-pink,.btn-check:active+.btn.btn-checked-outline-pink{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-red,.btn-check:active+.btn.btn-checked-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-red,.btn-check:active+.btn.btn-checked-outline-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-bordeaux-red,.btn-check:active+.btn.btn-checked-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-check:checked+.btn.btn-checked-outline-bordeaux-red,.btn-check:active+.btn.btn-checked-outline-bordeaux-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-brown,.btn-check:active+.btn.btn-checked-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-check:checked+.btn.btn-checked-outline-brown,.btn-check:active+.btn.btn-checked-outline-brown{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cream,.btn-check:active+.btn.btn-checked-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-check:checked+.btn.btn-checked-outline-cream,.btn-check:active+.btn.btn-checked-outline-cream{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-orange,.btn-check:active+.btn.btn-checked-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-orange,.btn-check:active+.btn.btn-checked-outline-orange{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-yellow,.btn-check:active+.btn.btn-checked-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-yellow,.btn-check:active+.btn.btn-checked-outline-yellow{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-green,.btn-check:active+.btn.btn-checked-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-green,.btn-check:active+.btn.btn-checked-outline-green{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-teal,.btn-check:active+.btn.btn-checked-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-check:checked+.btn.btn-checked-outline-teal,.btn-check:active+.btn.btn-checked-outline-teal{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cyan,.btn-check:active+.btn.btn-checked-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-cyan,.btn-check:active+.btn.btn-checked-outline-cyan{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-white,.btn-check:active+.btn.btn-checked-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-check:checked+.btn.btn-checked-outline-white,.btn-check:active+.btn.btn-checked-outline-white{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray,.btn-check:active+.btn.btn-checked-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-check:checked+.btn.btn-checked-outline-gray,.btn-check:active+.btn.btn-checked-outline-gray{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray-dark,.btn-check:active+.btn.btn-checked-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-check:checked+.btn.btn-checked-outline-gray-dark,.btn-check:active+.btn.btn-checked-outline-gray-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}.pagination{--bs-pagination-gap: 0.625rem;--bs-pagination-size: 2.5rem;--bs-pagination-button-bg: #000;--bs-pagination-button-color: #fff;--bs-pagination-ellipsis-color: #494949;gap:var(--bs-pagination-gap)}.pagination .page-item{height:100%}.pagination .page-item .page-link{cursor:pointer;height:var(--bs-pagination-size);line-height:var(--bs-pagination-size);padding-top:0;padding-bottom:0;text-align:center}.pagination .page-item:not(.page-button):not(.next):not(.previous):not(.first):not(.last) .page-link{width:var(--bs-pagination-size);padding:0}.pagination .page-item.page-button{font-weight:bold;user-select:none}.pagination .page-item.page-button .page-link{background-color:var(--bs-pagination-button-bg);color:var(--bs-pagination-button-color)}.pagination .page-item.page-button.disabled{cursor:not-allowed}.pagination .page-item.page-button.disabled .page-link{background-color:var(--bs-pagination-disabled-bg);color:var(--bs-pagination-disabled-color)}.pagination .page-item.active{font-weight:bold}.pagination .page-item.page-ellipsis .page-link{background:rgba(0,0,0,0);cursor:default;font-size:0}.pagination .page-item.page-ellipsis .page-link:before{font-size:1rem;color:var(--bs-pagination-ellipsis-color);content:"…"}[data-bs-theme=dark] .pagination{--bs-pagination-button-bg-dark: #000;--bs-pagination-ellipsis-color: #dedede;--bs-pagination-color: #fff;--bs-pagination-bg: #6c6c6c;--bs-pagination-focus-color: #000;--bs-pagination-focus-bg: #ffcd00;--bs-pagination-hover-color: #000;--bs-pagination-hover-bg: #ffcd00;--bs-pagination-active-color: #000;--bs-pagination-active-bg: #ffcd00;--bs-pagination-disabled-color: #adadad;--bs-pagination-disabled-bg: #494949}.modal{--bs-modal-header-bg: #ffcd00;--bs-modal-header-color: #000;--bs-modal-header-font-weight: 500}.modal .modal-header{background-color:var(--bs-modal-header-bg);color:var(--bs-modal-header-color);font-weight:var(--bs-modal-header-font-weight)}[data-bs-theme=dark] .modal{--bs-modal-bg: #343434;--bs-modal-color: #efefef;--bs-modal-header-bg: #ffcd00;--bs-modal-header-color: #000}.table.table-sticky-header thead{position:sticky;top:0}.table.table-sticky-header.table-sticky-header-top-0 thead{top:0 !important}.table.table-sticky-footer tfoot{position:sticky;bottom:0}.table.loading tbody{position:relative}.table.loading tbody td{opacity:.4}.table.loading tbody:after{border:.2rem solid var(--bs-secondary);border-radius:999999px;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;height:3em;width:3em;position:absolute;left:calc(50% - 1.5em);top:calc(50% - 1.5em);animation:spinner-border .5s infinite linear}@media(max-width: 768px){.uu-root-container .table.table-sticky-header thead{top:var(--bs-uu-navbar-mobile-height)}}.form-control,.form-select{--bs-input-bg: #fff;background-color:var(--bs-input-bg)}[data-bs-theme=dark] .form-control,[data-bs-theme=dark] .form-select{--bs-input-bg: #212121}.flex-fill{min-width:0}.font-serif{font-family:"Merriweather",serif}h1.hdr-underlined,.hdr-underlined.h1{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h2.hdr-underlined,.hdr-underlined.h2{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h3.hdr-underlined,.hdr-underlined.h3{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h4.hdr-underlined,.hdr-underlined.h4{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h5.hdr-underlined,.hdr-underlined.h5{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h6.hdr-underlined,.hdr-underlined.h6{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h7.hdr-underlined{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}.cdh-federated-auth .container{display:flex;justify-content:center;align-items:center;width:100vw;height:100vh}.cdh-federated-auth .container .content{width:25rem;padding:1rem;background:#fff}.cdh-federated-auth .container .content .logo{display:block;height:3.5rem;margin:0 auto 1rem auto}/*# sourceMappingURL=base.css.map */ diff --git a/yarn.lock b/yarn.lock index eddfc3ef..ccc9a379 100644 --- a/yarn.lock +++ b/yarn.lock @@ -128,8 +128,8 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -"uu-bootstrap@git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.0": - version "1.5.0-alpha.0" - resolved "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#0bd740cae32d73770ed4ca7f4818612c8b4bff91" +"uu-bootstrap@git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.1": + version "1.5.0-alpha.1" + resolved "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#0d3d52fc6abdfbefa802368b728f556916be53fb" dependencies: bootstrap "5.3.1" From 07ecf509d90f77ef099ede8a995c434364e42567 Mon Sep 17 00:00:00 2001 From: Ty Mees Date: Tue, 2 Jan 2024 15:13:31 +0100 Subject: [PATCH 23/34] fix: remove broken experiment Fixes #96 --- src/cdh/vue/rest/fancylist_api_view.py | 52 -------------------------- 1 file changed, 52 deletions(-) diff --git a/src/cdh/vue/rest/fancylist_api_view.py b/src/cdh/vue/rest/fancylist_api_view.py index 05fca4c9..d7a87a6c 100644 --- a/src/cdh/vue/rest/fancylist_api_view.py +++ b/src/cdh/vue/rest/fancylist_api_view.py @@ -1,6 +1,5 @@ from typing import Dict, List, Any, Tuple -from django_filters.rest_framework import DjangoFilterBackend from rest_framework import pagination from rest_framework.filters import SearchFilter, OrderingFilter from rest_framework.generics import GenericAPIView @@ -192,54 +191,3 @@ def get_paginated_response(self, data): 'defaultItemsPerPage': self.view.get_default_items_per_page(), 'sortDefinitions': self.view._get_sort_definitions(), }) - - -class PagedFancyListApiView(FancyListApiView): - - filter_backends = [ - DjangoFilterBackend, - OrderingFilter, - SearchFilter, - ] - - @property - def filterset_fields(self): - return [f.field.replace('.', '__') for f in - self.get_filter_definitions()] - - @property - def ordering_fields(self): - return [s.field.replace('.', '__') for s in - self.get_sort_definitions()] - - @property - def ordering(self): - field, direction = self.get_default_sort() - - field = field.replace(".", "__") - - if direction == "desc": - return f"-{field}" - else: - return field - - @property - def search_fields(self): - return [f.replace('.', '__') for f in - self.get_searchable_fields()] - - @property - def paginator(self): - if not hasattr(self, '_paginator'): - if self.pagination_class is None: - self._paginator = FancyListPaginator(self) - else: - self._paginator = self.pagination_class() - return self._paginator - - def get(self, request, *args, **kwargs): - queryset = self.filter_queryset(self.get_queryset()) - - page = self.paginate_queryset(queryset) - serializer = self.get_serializer(page, many=True) - return self.get_paginated_response(serializer.data) From f3dfe3ce1f5ceb00815c65f81192f0466c850b52 Mon Sep 17 00:00:00 2001 From: Ben Date: Thu, 4 Apr 2024 12:15:00 +0200 Subject: [PATCH 24/34] use window.jQuery instead of window.$ to avoid clashes --- src/cdh/core/static/cdh.core/js/common.js | 98 ++++++++++++----------- 1 file changed, 50 insertions(+), 48 deletions(-) diff --git a/src/cdh/core/static/cdh.core/js/common.js b/src/cdh/core/static/cdh.core/js/common.js index 4bf2be9e..7c9affec 100644 --- a/src/cdh/core/static/cdh.core/js/common.js +++ b/src/cdh/core/static/cdh.core/js/common.js @@ -1,52 +1,54 @@ -$(function() { - // Turns al tables with the dt class into datatable tables - $('table.dt').DataTable( { - dom: 'Bfrtip', - buttons : [ - 'copyHtml5', - 'csvHtml5', - 'pdfHtml5', - 'print', - 'pageLength' - ], - order: [[0, 'desc']], - lengthMenu: [ - [10, 20, 50, -1], - ["10", "20", "50", "\u221e"] - ], - responsive: true, - paginationType: "full_numbers", - } ); +(function($) { + $(function() { + // Turns al tables with the dt class into datatable tables + $('table.dt').DataTable( { + dom: 'Bfrtip', + buttons : [ + 'copyHtml5', + 'csvHtml5', + 'pdfHtml5', + 'print', + 'pageLength' + ], + order: [[0, 'desc']], + lengthMenu: [ + [10, 20, 50, -1], + ["10", "20", "50", "\u221e"] + ], + responsive: true, + paginationType: "full_numbers", + } ); - // Enables select2 for all select boxes in forms - $('form table select').select2({ - 'width': 'style' - }); + // Enables select2 for all select boxes in forms + $('form table select').select2({ + 'width': 'style' + }); - // Turns all help text into nice (i) icons with qTip hover-text - $("[id^=id]").each(function() { - let help = $(this).nextAll('.helptext'); - if (help.html()) - { - let label = $(this).parent().parent().find('th label').first(); - let icon = $(''); - icon.html(' '); - icon.appendTo(label); - icon.qtip({ - content: { - text: help.html(), - }, - hide: { - fixed: true, - delay: 500, - }, - }); + // Turns all help text into nice (i) icons with qTip hover-text + $("[id^=id]").each(function() { + let help = $(this).nextAll('.helptext'); + if (help.html()) + { + let label = $(this).parent().parent().find('th label').first(); + let icon = $(''); + icon.html(' '); + icon.appendTo(label); + icon.qtip({ + content: { + text: help.html(), + }, + hide: { + fixed: true, + delay: 500, + }, + }); - // Django inserts an br when a help_text is present. Let's remove it - let prevElement = help.prev(); - if (prevElement.is('br')) - prevElement.remove(); - help.remove(); - } + // Django inserts an br when a help_text is present. Let's remove it + let prevElement = help.prev(); + if (prevElement.is('br')) + prevElement.remove(); + help.remove(); + } + }); }); -}); +})(jQuery); From b5d7e7925d75cc70ba84462e7f19ac4b8d2a1ad9 Mon Sep 17 00:00:00 2001 From: Tyler Mees Date: Thu, 4 Apr 2024 15:48:32 +0200 Subject: [PATCH 25/34] fix: use new mixin name for LogoutInitView BREAKING CHANGE: Drops support for 4.0 and lower --- src/cdh/federated_auth/saml/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cdh/federated_auth/saml/views.py b/src/cdh/federated_auth/saml/views.py index 5d1e3a05..95cdcfb4 100644 --- a/src/cdh/federated_auth/saml/views.py +++ b/src/cdh/federated_auth/saml/views.py @@ -1,7 +1,7 @@ from typing import Optional, Tuple from django.contrib.auth import REDIRECT_FIELD_NAME -from django.contrib.auth.views import SuccessURLAllowedHostsMixin +from django.contrib.auth.views import RedirectURLMixin from django.contrib.sites.shortcuts import get_current_site from django.http import HttpResponseRedirect from django.shortcuts import render, resolve_url @@ -106,7 +106,7 @@ def login_error(request, exception=None, status=403, **kwargs): ) -class LogoutInitView(SuccessURLAllowedHostsMixin, TemplateResponseMixin, +class LogoutInitView(RedirectURLMixin, TemplateResponseMixin, ContextMixin, DjangoSaml2LogoutInitView): """Custom LogoutInitView to handle logout requests for non-SAML users. Basically merges Django's LogoutView with DjangoSaml2's LogoutInitView From 40d30d332c147a4f1084523ba0fee0dda5d9fd9e Mon Sep 17 00:00:00 2001 From: Tyler Mees Date: Thu, 4 Apr 2024 15:48:43 +0200 Subject: [PATCH 26/34] docs: upped the minimum required versions to 2024 standards fed-auth is actually 4.1 now --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e7ae11f7..5f710374 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Documentation provided here: https://centrefordigitalhumanities.github.io/django ## Currently targeting: - Python 3.9 (Django 4 only) - Python 3.11 -- Django 4.0-4.2 +- Django 4.2 (lower versions might work, but unsupported) - Django 5.0 Tests are run using these versions; Some apps have lower requirements, but are @@ -54,7 +54,7 @@ Requires Django >= 4; Helper app to connect a Django application as a Service Provider to a Federated Authentication realm. Currently only supports SAML. -Requires Django >= 2; +Requires Django >= 4.1; ### Files (``cdh.files``) From a326f5e5e00b499ae202dda816f3103a6ab1b863 Mon Sep 17 00:00:00 2001 From: Tyler Mees Date: Tue, 9 Apr 2024 17:28:49 +0200 Subject: [PATCH 27/34] feat: new (semi) stand-alone mail app Based upon the old cdh.core.mail code, but with refactored template-code and non-blocking errors. (Including new logging). --- README.md | 10 + pyproject.toml | 5 +- src/cdh/mail/__init__.py | 0 src/cdh/mail/admin.py | 3 + src/cdh/mail/apps.py | 7 + src/cdh/mail/classes.py | 807 ++++++++++++++++++ src/cdh/mail/locale/en/LC_MESSAGES/django.mo | Bin 0 -> 526 bytes src/cdh/mail/locale/en/LC_MESSAGES/django.po | 25 + src/cdh/mail/locale/nl/LC_MESSAGES/django.mo | Bin 0 -> 509 bytes src/cdh/mail/locale/nl/LC_MESSAGES/django.po | 27 + src/cdh/mail/logger.py | 4 + src/cdh/mail/settings.py | 40 + .../js/tinymce-preview-mail-plugin.js | 64 ++ .../templates/cdh.mail/mail_template.html | 194 +++++ src/cdh/mail/utils.py | 261 ++++++ src/cdh/mail/views.py | 34 + src/cdh/mail/widgets.py | 52 ++ 17 files changed, 1532 insertions(+), 1 deletion(-) create mode 100644 src/cdh/mail/__init__.py create mode 100644 src/cdh/mail/admin.py create mode 100644 src/cdh/mail/apps.py create mode 100644 src/cdh/mail/classes.py create mode 100644 src/cdh/mail/locale/en/LC_MESSAGES/django.mo create mode 100644 src/cdh/mail/locale/en/LC_MESSAGES/django.po create mode 100644 src/cdh/mail/locale/nl/LC_MESSAGES/django.mo create mode 100644 src/cdh/mail/locale/nl/LC_MESSAGES/django.po create mode 100644 src/cdh/mail/logger.py create mode 100644 src/cdh/mail/settings.py create mode 100644 src/cdh/mail/static/cdh.mail/js/tinymce-preview-mail-plugin.js create mode 100644 src/cdh/mail/templates/cdh.mail/mail_template.html create mode 100644 src/cdh/mail/utils.py create mode 100644 src/cdh/mail/views.py create mode 100644 src/cdh/mail/widgets.py diff --git a/README.md b/README.md index 5f710374..85fc82ad 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,16 @@ Ready-to-use API clients for the UU's integration platform. Requires ``cdh.rest``; Requires Django >= 3; +### Mail (``cdh.mail``) + +Helper app to send emails with Django, both in-code and as user defined/written. Supports generating plain/html +emails from templates without having to define separate templates for each. + +Replaces `cdh.core.mail`. + +Requires Django >= 4.2; +Soft-requires `cdh.core`, when using the mail-editor widget. + ### Rest (``cdh.rest``) Contains code for both server and client roles. Server code contains some mixins, diff --git a/pyproject.toml b/pyproject.toml index 75630a82..f5545123 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ documentation = "https://centrefordigitalhumanities.github.io/django-shared-core [project.optional-dependencies] all = [ - "cdh-django-core[recommended,core,federated-auth,files,rest,vue]" + "cdh-django-core[recommended,core,mail,federated-auth,files,rest,vue]" ] recommended = [ "django-modeltranslation", @@ -50,6 +50,9 @@ core = [ "cryptography", "Django >=4.0,<5.1", ] +mail = [ + "Django >=4.2,<5.1", +] federated-auth = [ "djangosaml2", ] diff --git a/src/cdh/mail/__init__.py b/src/cdh/mail/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/src/cdh/mail/admin.py b/src/cdh/mail/admin.py new file mode 100644 index 00000000..8c38f3f3 --- /dev/null +++ b/src/cdh/mail/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/src/cdh/mail/apps.py b/src/cdh/mail/apps.py new file mode 100644 index 00000000..06a345b8 --- /dev/null +++ b/src/cdh/mail/apps.py @@ -0,0 +1,7 @@ +from django.apps import AppConfig + + +class MailConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'cdh.mail' + diff --git a/src/cdh/mail/classes.py b/src/cdh/mail/classes.py new file mode 100644 index 00000000..eaf6b96c --- /dev/null +++ b/src/cdh/mail/classes.py @@ -0,0 +1,807 @@ +import re +from abc import ABC, abstractmethod +from email.mime.base import MIMEBase +from functools import lru_cache +from typing import Dict, List, Optional, Tuple, Union + +from django.conf import settings +from django.core.mail import EmailMultiAlternatives +from django.template import Context, Engine, Template +from django.template.exceptions import TemplateDoesNotExist +from django.template.loader import get_template, render_to_string +from django.template.loader_tags import BlockNode, ExtendsNode +from django.utils.safestring import mark_safe +from django.utils.translation import gettext_lazy as _ +from django.utils import translation +from django.utils.functional import keep_lazy_text +from django.utils.html import _strip_once + +from .logger import logger +from .settings import CDH_EMAIL_THEME_SETTINGS, CDH_EMAIL_PLAIN_FALLBACK_TEMPLATE, CDH_EMAIL_HTML_FALLBACK_TEMPLATE, CDH_EMAIL_FAIL_SILENTLY + + +@keep_lazy_text +def _strip_tags(value) -> str: + """Return the given HTML with all tags stripped, and leading/trailing + whitespace stripped but with line breaks preserved. + + :meta private: + """ + value = str(value) + + # Manually replace
tags; to preserve intended newlines _strip_once + # just strips it but doesn't actually add a newline for rendering. Thus: + # 'hello
world' would become 'helloworld' instead of 'hello\nworld'. The + # \n in the regex is to make sure we don't add _two_ newlines if someone + # actually puts a newline after a
+ value = re.sub(r"
\n?", "\n", value) + + # Strip HTML tags + # Note: in typical case this loop executes _strip_once once. Loop condition + # is redundant, but helps to reduce number of executions of _strip_once. + while "<" in value and ">" in value: + new_value = _strip_once(value) + if value.count("<") == new_value.count("<"): + # _strip_once wasn't able to detect more tags. + break + value = new_value + + # Go over every line and strip + # This is needed because the stripping above doesn't account for indenting + # from the HTML structure + ret = "" + for line in value.split("\n"): + ret += line.strip() + # Add back the newline we split on + ret += '\n' + + # Remove any remaining leading/trailing whitespace (often from tags) + # before returning + return ret.strip() + + +class BaseEmail(ABC): + """Base class for all email classes. + + These params mostly correspond to Django's Message, so read those docs + for more details + + About render/template contexts: + When not supplied with both an HTML and a plain text email, the missing one + will be automatically generated. However, it will not use render contexts + of the other variant. For example, if you leave the plain text version to + be automatically generated, the plain text version will use plain_context + and not html_context. + + About theme settings: + The HTML template has some styling configuration to tweak the appearance of + the email. You can specify any changes on this class, but in most cases it's + better to apply app-wide changes using the CDH_EMAIL_THEME_SETTINGS config + value in settings.py + + About fallback templates: + These templates are used when generating a missing variant. For example, + if you supply a plain text template only, html_fallback_template will + be used as the base template for the generated HTML version. + When your app uses a custom base template, it's best to set this template + globally using the settings.py settings. It's provided on the class only + if your app uses multiple base templates. + + HTML base templates MUST have a block called 'content' and are encouraged to + have 'sender', 'banner' and 'footer' blocks. + Plain base templates use template vars instead of blocks, but the same + requirements apply on those vars as well. + """ + + def __init__( + self, + to: Union[str, List[str]], + subject: str, + language: str = 'nl', + from_email: Optional[str] = None, + headers: Optional[Dict[str, str]] = None, + attachments: Optional[List[Union[MIMEBase, Tuple[str, str, + str]]]] = None, + cc: Optional[List[str]] = None, + bcc: Optional[List[str]] = None, + reply_to: Optional[str] = None, + + context: Optional[Dict] = None, + plain_context: Optional[Dict] = None, + html_context: Optional[Dict] = None, + + theme_settings: Optional[Dict] = None, + + html_fallback_template: str = CDH_EMAIL_HTML_FALLBACK_TEMPLATE, + plain_fallback_template: str = CDH_EMAIL_PLAIN_FALLBACK_TEMPLATE, + + fail_silently: Union[bool, None] = None, + ): + """ + :param to: a list of recipients, can be plain email or formatted ("John + Doe ") + :type to: list of str + :param str subject: the email subject + :param str language: the language used during rendering the email. Uses + Django's i18n framework + :param from_email: the From: email address. Uses settings.EMAIL_FROM if + omitted + :type from_email: str or None + :param headers: any additional SMTP headers to be used + :type headers: dict or None + :param attachments: a list of email attachments to be sent along. + :type attachments: list of MimeBase or Tuple + :param cc: a list of recipients to put as CC: + :type cc: list of str or None + :param bcc: a list of recipients to put ad BCC: + :type bcc: list of str or None + :param reply_to: an email to be set as REPLY_TO: (not set if left empty) + :type reply_to: list of str or None + + :param dict context: any template context needed for both the templates + :param dict html_context: any template context needed by the HTML template, + will override values in context if both have them + :param dict plain_context: any template context needed by the plain + template, will override values in context if + both have them. + + :param dict theme_settings: a dict of overrides for the styling of the + HTML email does not need to contain all + values, only the ones you want to override. + :param str html_fallback_template: the base template for HTML emails used + for generating an HTML version of a + plain text email + :param str plain_fallback_template: the base template for plain text emails + used for generating a plain text version + of an HTML email + + :param bool fail_silently: whether errors during sending should be + suppressed. If not provided, defaults to CDH_EMAIL_FAIL_SILENTLY + """ + if not isinstance(to, list): + to = [to] + self.to = to + self.cc = cc + self.bcc = bcc + self.reply_to = reply_to + self.subject = subject + self.from_email = from_email or settings.EMAIL_FROM + self.language = language + self.headers = headers + self.attachments = attachments or [] + + self.context = context or {} + self.plain_context = plain_context or {} + self.html_context = html_context or {} + + self.fail_silently = fail_silently + if fail_silently is None: + self.fail_silently = CDH_EMAIL_FAIL_SILENTLY + + self.theme_settings = CDH_EMAIL_THEME_SETTINGS.copy() + if theme_settings: + self.apply_theme_settings(theme_settings) + + self.html_fallback_template = html_fallback_template + self.plain_fallback_template = plain_fallback_template + + def apply_theme_settings(self, theme_settings: dict) -> None: + """Applies theme settings + + :param dict theme_settings: a dict of overrides for the styling + of the HTML email does not need to + contain all values, only the ones you + want to override. + """ + self.theme_settings.update(theme_settings) + + def attach(self, filename, content=None, mimetype=None) -> None: + """Attach a new attachment to this email + + :param filename: either a string of the filename, or a MIMEBase object + representing the entire file + :type filename: str or MIMEBase + :param content: If filename is a string, the contents of the file. + Ignored otherwise + :type content: str or None + :param mimetype: If filename is a string, the mimetype of the file. + Ignored otherwise + :type mimetype: str or None + """ + if isinstance(filename, MIMEBase): + self.attachments.append(filename) + else: + self.attachments.append((filename, content, mimetype)) + + def send(self, connection=None, fail_silently=None) -> int: + """Sends the email + + If sending multiple emails in a row, it's recommended to create a + connection yourself and use them on all emails for performance reasons. + + :param connection: a Django email backend to send the mail with. If + omitted, the default backend will be used + :param bool fail_silently: whether errors during sending should be + suppressed + :return: number of emails sent + :rtype: int + """ + try: + if fail_silently is None: + fail_silently = self.fail_silently + + old_lang = translation.get_language() + translation.activate(self.language) + + email = EmailMultiAlternatives( + to=self.to, + subject=self.subject, + from_email=self.from_email, + reply_to=self.reply_to, + cc=self.cc, + bcc=self.bcc, + body=self._get_plain_body(), + connection=connection, + attachments=self.attachments, + headers=self.headers, + ) + + if html_body := self._get_html_body(): + email.attach_alternative( + html_body, + 'text/html' + ) + + translation.activate(old_lang) + + return email.send(fail_silently) + + except Exception as e: + if not fail_silently: + logger.error("Error during mail compose", exc_info=True) + raise e + # Log the error as critical if we're failing silently, to trigger some alarms + logger.critical("Error during mail compose", exc_info=True) + + + def _get_plain_context(self) -> dict: + context = self.context.copy() + context.update(self.plain_context) + + return context + + @abstractmethod + def _get_html_context(self) -> dict: + """Overrides must add the following keys: + has_sender, has_banner and has_footer + """ + context = self.context.copy() + context.update(self.html_context) + context['theme'] = self.theme_settings + + return context + + @abstractmethod + def _get_plain_body(self) -> str: + pass + + @abstractmethod + def _get_html_body(self) -> str: + pass + + +class TemplateEmail(BaseEmail): + """Regular Django template files based emails + + One of the two templates is required. If one is missing, it will be + generated from the other. + """ + + def __init__( + self, + *args, + html_template: Optional[str] = None, + plain_template: Optional[str] = None, + **kwargs + ): + + """ + + :param str html_template: the HTML template to send + :param str plain_template: the plain text template to send + + :param to: a list of recipients, can be plain email or formatted ("John + Doe ") + :type to: list of str + :param str subject: the email subject + :param str language: the language used during rendering the email. Uses + Django's i18n framework + :param from_email: the From: email address. Uses settings.EMAIL_FROM if + omitted + :type from_email: str or None + :param headers: any additional SMTP headers to be used + :type headers: dict or None + :param attachments: a list of email attachments to be sent along. + :type attachments: list of MimeBase or Tuple + :param cc: a list of recipients to put as CC: + :type cc: list of str or None + :param bcc: a list of recipients to put ad BCC: + :type bcc: list of str or None + :param reply_to: an email to be set as REPLY_TO: (not set if left empty) + :type reply_to: list of str or None + + :param dict context: any template context needed for both the templates + :param dict html_context: any template context needed by the HTML template, + will override values in context if both have them + :param dict plain_context: any template context needed by the plain + template, will override values in context if + both have them. + + :param dict theme_settings: a dict of overrides for the styling of the + HTML email does not need to contain all + values, only the ones you want to override. + :param str html_fallback_template: the base template for HTML emails used + for generating an HTML version of a + plain text email + :param str plain_fallback_template: the base template for plain text emails + used for generating a plain text version + of an HTML email + :param bool fail_silently: whether errors during sending should be + suppressed. If not provided, defaults to CDH_EMAIL_FAIL_SILENTLY + """ + super().__init__(*args, **kwargs) + if html_template is None and plain_template is None: + raise ValueError("No email templates supplied!") + + self.html_template = html_template + self.plain_template = plain_template + + self._html_blocks = None + + def _get_html_blocks(self) -> Dict[str, BlockNode]: + """Helper method to extract the individual content block nodes from the + supplied HTML template""" + if self._html_blocks or not self._has_html_body(): + return self._html_blocks + + self._html_blocks = { + 'sender': None, + 'banner': None, + 'content': None, + 'footer': None, + } + try: + html_template = get_template(self.html_template) + except TemplateDoesNotExist as e: + logger.error(f"Could not find HTML template ({self.html_template}) for email. Skipping block extraction.") + + if not self.fail_silently: + raise e + + return self._html_blocks + + self._html_blocks.update(self._resolve_html_blocks(html_template.template)) + + return self._html_blocks + + def _resolve_html_blocks(self, template: Template): + """" + Recursively resolve all blocks in a template and its parents, excluding the top-level template. + """ + blocks = {} + + for node in template.nodelist: + # Append the block to the dict if the node has (resolved) blocks + if hasattr(node, 'blocks'): + blocks.update(node.blocks) + + # If we encounter an ExtendsNode, we need to resolve the parent and add its blocks + # Note: as the 'root' template is not an ExtendsNode, it will be skipped. This is by design, as + # the blocks we're interested in are empty in the root template. (And thus need to be ignored) + if isinstance(node, ExtendsNode): + try: + context = Context({}) + context.template = template + blocks.update(self._resolve_html_blocks(node.get_parent(context))) + except Exception as e: + logger.error("Error resolving parent email template", exc_info=True) + + if not self.fail_silently: + raise e + + return blocks + + def _get_html_context(self) -> dict: + context = super()._get_html_context() + + if blocks := self._get_html_blocks(): + context['has_sender'] = blocks['sender'] is not None + context['has_banner'] = blocks['banner'] is not None + context['has_footer'] = blocks['footer'] is not None + + return context + + def _get_plain_body(self) -> Optional[str]: + if self.plain_template: + return render_to_string( + self.plain_template, + self._get_plain_context() + ) + + # If we don't have a Plain template, we're going to build our own! + if self._has_html_body(): + try: + # Build a render context Django can use + render_context = Context(self._get_plain_context()) + # Needed because Django's render requires these for metadata + render_context.template = get_template(self.html_template) + render_context.template.engine = Engine.get_default() + + # Render the content blocks individually and strip the HTML tags + # from them + blocks = { + name: "\n"+_strip_tags( + node.render( + render_context + ) + ) + for name, node in self._get_html_blocks().items() if node + } + + return render_to_string( + self.plain_fallback_template, + blocks + ).strip() + except Exception as e: + logger.error("Error during plain text email generation", exc_info=True) + + if not self.fail_silently: + raise e + + return None + + return None + + def _has_html_body(self) -> bool: + return self.html_template is not None + + def _get_html_body(self) -> Union[str, None]: + context = self._get_html_context() + if self._has_html_body(): + return render_to_string( + self.html_template, + context + ) + + try: + # If we don't have an HTML template, we're going to build our own! + # And paste in the plain content + engine = Engine.get_default() + template = engine.from_string( + "{% extends '" + self.html_fallback_template + "' %}" + "{% block content %}{{ plain_content|linebreaks }}{% endblock %}" + ) + + context['plain_content'] = self._get_plain_body() + except Exception as e: + logger.error("Error during HTML email generation", exc_info=True) + + if not self.fail_silently: + raise e + + return None + + return template.render(Context(context)) + + +class CTEVarDef: + """Descriptor class for user-usable variables in a Custom Template Email + + This class serves two roles: + - Provide information for help text generation + - Provide a default value when rendering the preview + """ + + def __init__( + self, + name: str, + help_text: str = None, + preview_value=None, + safe: bool = False, + **kwargs + ): + """ + :param str name: The variable name + :param help_text: a short description of what this var will output + (optional) + :type help_text: str or None + :param preview_value: a placeholder value that will be inserted when + rendering the preview (optional) + :param safe: if the contents of the var should be marked safe. + :type safe: bool + :param kwargs: Any other parameter passed to the class. Not used in + default implementations, but can be used for custom ones + :type kwargs: dict + """ + self.name = name + self.help_text = help_text + self.preview_value = preview_value + self.safe = safe + self.kwargs = kwargs + + +class CTETagPackage: + """Configuration class for loading template tag packages + + This class serves two roles: + - Providing information for loading template tag packages in the template + - Provide information for help text generation + + All packages need to be importable by the Django rendering engine + """ + + def __init__( + self, + package: str, + tags: List[Tuple[ + str, + Optional[list], + Optional[str], + ]]): + """ + :param str package: the name of the package to load + :param tags: a list of 3-tuples; The tuple should contain: + - The name of the usable tag inside the package + - A list of arguments that tag accepts + - A help string explaining what the tag does + """ + self.package = package + self.tags = tags + + +class BaseCustomTemplateEmail(BaseEmail): + """Email class for sending HTML emails using user supplied HTML templates + + DO NOT USE THIS CLASS FOR 'HARDCODED' EMAILS. Use :class:`.TemplateEmail` + instead. + + BE CAREFUL WHAT YOU EXPOSE TO THE USER. This method itself is safe, as + everything is run in a sandbox. However, template tags can have (nasty) + side effects outside the sandbox. Also, some vars might just expose more + than you thought. + + Unlike TemplateEmail, this class should be extended and not be used + directly. It uses class variables, which should not be set on an instance + level. + + :param user_variable_defs: a list of user usable variables + :type user_variable_defs: list of :class:`CTEVarDef` + :param template_tag_packages: a list of template tag packages to load + :type template_tag_packages: list of :class:`CTETagPackage` + """ + user_variable_defs: List[CTEVarDef] = [] + template_tag_packages: List[CTETagPackage] = [] + + def __init__( + self, + *args, + contents: str, + sender: Optional[str] = None, + banner: Optional[str] = None, + footer: Optional[str] = None, + **kwargs + ): + """ + :param to: a list of recipients, can be plain email or formatted ("John + Doe ") + :type to: list of str + :param str subject: the email subject + :param str language: the language used during rendering the email. Uses + Django's i18n framework + :param from_email: the From: email address. Uses settings.EMAIL_FROM if + omitted + :type from_email: str or None + :param headers: any additional SMTP headers to be used + :type headers: dict or None + :param attachments: a list of email attachments to be sent along. + :type attachments: list of MimeBase or Tuple + :param cc: a list of recipients to put as CC: + :type cc: list of str or None + :param bcc: a list of recipients to put ad BCC: + :type bcc: list of str or None + :param reply_to: an email to be set as REPLY_TO: (not set if left empty) + :type reply_to: list of str or None + + :param dict context: any template context needed for both the templates + :param dict html_context: any template context needed by the HTML template, + will override values in context if both have them + :param dict plain_context: any template context needed by the plain + template, will override values in context if + both have them. + + :param dict theme_settings: a dict of overrides for the styling of the + HTML email does not need to contain all + values, only the ones you want to override. + :param str html_fallback_template: the base template for HTML emails used + for generating an HTML version of a + plain text email + :param str plain_fallback_template: the base template for plain text emails + used for generating a plain text version + of an HTML email + """ + super().__init__(*args, **kwargs) + self.contents = contents + self.banner = banner + self.sender = sender + self.footer = footer + + @classmethod + @keep_lazy_text + def help_text(cls) -> str: + """A (marked_safe) string describing which vars and tags can be used + in this template. Intended to be used as a formfield help_text""" + help_text = "" + + if cls.user_variable_defs: + help_text += "" + help_text += _('cdh.mail.custom.help_text.variables') + help_text += "
" + + for var in cls.user_variable_defs: + help_text += "{{ " + var.name + " }}" + if var.help_text: + help_text += f": {var.help_text}" + help_text += "
" + + if cls.template_tag_packages: + if cls.user_variable_defs: + help_text += "
" + help_text += "" + help_text += _('cdh.mail.custom.help_text.tags') + help_text += "
" + + for package in cls.template_tag_packages: + for tag in package.tags: + help_text += "{% " + tag[0] + + if tag[1]: + for arg in tag[1]: + help_text += f" {arg}" + + help_text += " %}" + + if tag[2]: + help_text += f": {tag[2]}" + help_text += "
" + + return mark_safe(help_text) + + @lru_cache + def _get_template_from_string(self, string: str) -> Template: + engine = Engine.get_default() + return engine.from_string(string) + + @property + def _has_sender(self) -> bool: + return bool(self.sender) + + @property + def _has_banner(self) -> bool: + return bool(self.banner) + + @property + def _has_footer(self) -> bool: + return bool(self.footer) + + def render_preview(self): + """Returns a rendered HTML document as would be sent as the HTML + content. + + Uses the variable defaults as defined if nothing was supplied through + the context param. + """ + return self._get_html_body(True) + + def _get_html_context(self) -> dict: + context = super()._get_html_context() + + context['has_sender'] = self._has_sender + context['has_banner'] = self._has_banner + context['has_footer'] = self._has_footer + + return context + + def _generate_template_block(self, name, contents) -> str: + template = "{% block " + name + " %}" + template += contents + template += "{% endblock %}" + + return template + + def _generate_template_str(self) -> str: + template = "{% extends '" + self.html_fallback_template + "' %}" + + for tag in self.template_tag_packages: + template += "{% load " + tag.package + " %}" + + template += self._generate_template_block('content', self.contents) + + if self._has_sender: + template += self._generate_template_block('sender', self.sender) + if self._has_banner: + template += self._generate_template_block('banner', self.banner) + if self._has_footer: + template += self._generate_template_block('footer', self.footer) + + return template + + def _get_html_body(self, preview=False) -> str: + template = self._get_template_from_string( + self._generate_template_str() + ) + + context = self._get_html_context() + + if preview: + for var in self.user_variable_defs: + # Only apply the default if we don't have any value in the + # context already. Some previews are capable of adding some + # more specifc context, and we don't want to overwrite those. + if var.name not in context or not context[var.name]: + context[var.name] = var.preview_value + + # Mark any vars as safe if configured to do so + for var in self.user_variable_defs: + if var.name in context and var.safe: + context[var.name] = mark_safe(context[var.name]) + + try: + return template.render( + Context(context) + ) + except Exception as e: + logger.error("Error during HTML email generation", exc_info=True) + + if not self.fail_silently: + raise e + + return "" + + def _get_plain_part(self, content: str) -> str: + try: + ret = self._get_template_from_string(content).render( + Context(self._get_plain_context()) + ) + return "\n" + _strip_tags(ret) + except Exception as e: + logger.error("Error during plain-text-part email generation", exc_info=True) + + if not self.fail_silently: + raise e + + return "" + + def _get_plain_body(self) -> str: + context = { + 'content': self._get_plain_part(self.contents) + } + + if self._has_sender: + context['sender'] = self._get_plain_part(self.sender) + if self._has_banner: + context['banner'] = self._get_plain_part(self.banner) + if self._has_footer: + context['footer'] = self._get_plain_part(self.footer) + + try: + return render_to_string( + self.plain_fallback_template, + context + ).strip() + except Exception as e: + logger.error("Error during plain text email generation", exc_info=True) + + if not self.fail_silently: + raise e + + return "" diff --git a/src/cdh/mail/locale/en/LC_MESSAGES/django.mo b/src/cdh/mail/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..4effe9e662bb6cc84b6080d9796200e35cbb4e40 GIT binary patch literal 526 zcmaKpyH3L}6o$iX$p|Y#Ml2xYa1le5wy1`>5Ro)h+9JUMZemiS#ExvYf{mBp4R|hA z-hqh|5GoT#{`4Q)$M&z|_x06R2Vw=-1Wtf8AOz~T2etqP>;Nyo*^=YDfvy7|kZ*u~ zg2Hf?f#0a_bkc0~Ix|+4-jo;Bo#ju~vn)6NY|oh%Y*KLJ477UWsl`Etuemlt zNgoZ!`4zdK=$ah5>eEm5edQ$>2?!39G*g{%x5g;c*I%hqmcA3 z#, YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-04-09 10:13-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/cdh/mail/classes.py:618 +msgid "cdh.mail.custom.help_text.variables" +msgstr "Available variables" + +#: src/cdh/mail/classes.py:631 +msgid "cdh.mail.custom.help_text.tags" +msgstr "Available commands" diff --git a/src/cdh/mail/locale/nl/LC_MESSAGES/django.mo b/src/cdh/mail/locale/nl/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2f3c6a3bbb3a37f3a2bbfdd534692d4bc103d39a GIT binary patch literal 509 zcmaKoyH3L}6o$=h$;gb55d$FPa1jGaDI&BkL?lg>UL;t+BqlX-?8tTzY`g?-z;m&( z^8}oLP&bbJ=|7f#+rQ4o>hc?cS_0O9BVYxHfu`<&b$|hzz$, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-04-09 10:13-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: src/cdh/mail/classes.py:618 +msgid "cdh.mail.custom.help_text.variables" +msgstr "Variabelen" + +#: src/cdh/mail/classes.py:631 +msgid "cdh.mail.custom.help_text.tags" +msgstr "Commando's" diff --git a/src/cdh/mail/logger.py b/src/cdh/mail/logger.py new file mode 100644 index 00000000..d7d767f0 --- /dev/null +++ b/src/cdh/mail/logger.py @@ -0,0 +1,4 @@ +import logging + +logger = logging.getLogger('cdh.mail') + diff --git a/src/cdh/mail/settings.py b/src/cdh/mail/settings.py new file mode 100644 index 00000000..28aed56d --- /dev/null +++ b/src/cdh/mail/settings.py @@ -0,0 +1,40 @@ +from django.conf import settings + +CDH_EMAIL_THEME_SETTINGS = { + 'outer_container_width': '1000px', + 'main_background': "#eee", + 'banner_background': "#000", + 'banner_color': "#fff", + 'content_background': "#fff", + 'content_color': "#333", + 'footer_background': "#333", + 'footer_color': "#fff", + 'footer_stripe': True, + 'footer_stripe_color': "#C00A35", +} + +_theme_app_conf = getattr( + settings, + 'CDH_EMAIL_THEME_SETTINGS', + {}, +) + +CDH_EMAIL_THEME_SETTINGS.update(_theme_app_conf) + +CDH_EMAIL_PLAIN_FALLBACK_TEMPLATE = getattr( + settings, + 'CDH_EMAIL_PLAIN_FALLBACK_TEMPLATE', + "cdh.mail/plain_mail_fallback.txt", +) + +CDH_EMAIL_HTML_FALLBACK_TEMPLATE = getattr( + settings, + "CDH_EMAIL_HTML_FALLBACK_TEMPLATE", + "cdh.mail/mail_template.html", +) + +CDH_EMAIL_FAIL_SILENTLY = getattr( + settings, + 'CDH_EMAIL_FAIL_SILENTLY', + True, +) diff --git a/src/cdh/mail/static/cdh.mail/js/tinymce-preview-mail-plugin.js b/src/cdh/mail/static/cdh.mail/js/tinymce-preview-mail-plugin.js new file mode 100644 index 00000000..95a1f511 --- /dev/null +++ b/src/cdh/mail/static/cdh.mail/js/tinymce-preview-mail-plugin.js @@ -0,0 +1,64 @@ +function postToPopUp(url, windowoption, name, params) { + let form = document.createElement("form"); + form.setAttribute("method", "post"); + form.setAttribute("action", url); + form.setAttribute("target", name); + for (let i in params) { + if (params.hasOwnProperty(i)) { + let input = document.createElement('input'); + input.type = 'hidden'; + input.name = i; + input.value = params[i]; + form.appendChild(input); + } + } + document.body.appendChild(form); + window.open("post.htm", name, windowoption); + form.submit(); + document.body.removeChild(form); +} + +$(function () { + + tinymce.PluginManager.add('preview-mail', (editor, url) => { + + editor.ui.registry.addButton('preview-mail', { + text: 'Preview Email', + onAction: () => { + let csrf = $('input[name="csrfmiddlewaretoken"]').val(); + + let params = { + 'contents': editor.getContent(), + 'csrfmiddlewaretoken': csrf, + } + + let textarea = $(editor.getElement()); + + let previewUrl = textarea.data('preview-url'); + + let senderField = textarea.data('sender-field'); + let bannerField = textarea.data('banner-field'); + let footerField = textarea.data('footer-field'); + + if (senderField !== undefined) + params['sender'] = $("#id_" + senderField).val(); + if (bannerField !== undefined) + params['banner'] = $("#id_" + bannerField).val(); + if (footerField !== undefined) + params['footer'] = $("#id_" + footerField).val(); + + postToPopUp( + previewUrl, + "width=1200, height=600, left=100, top=100, resizable=yes, scrollbars=yes", + "MailPreview", + params + ); + } + }); + + return { + name: 'preview-mail', + }; + }); + +}); diff --git a/src/cdh/mail/templates/cdh.mail/mail_template.html b/src/cdh/mail/templates/cdh.mail/mail_template.html new file mode 100644 index 00000000..797ec00f --- /dev/null +++ b/src/cdh/mail/templates/cdh.mail/mail_template.html @@ -0,0 +1,194 @@ +{% load i18n %} +{% get_current_language as LANGUAGE_CODE %} + + + + + + + + + + + + +
+ + + + + +
+ + + + {# Logo and sender #} + + + {# Banner #} + {% if has_banner %} + + + + {% endif %} + + {# Content #} + + + {% if has_footer %} + + {# Footer #} + + + {% if theme.footer_stripe %} + + {# Stylistic footer stripe #} + + + {% endif %} + {% else %} + {# If we have no footer, we put a height spacer at the end for visual looks #} + {# In other words, it looks like a weird abrupt end if there's no footer and no spacer #} + + + + {% endif %} +
+ + + + + {% if has_sender %} + + {% endif %} + +
+ Universiteit Utrecht + +

+ {% block sender %}{% endblock %} +

+
+ +
+ + + + + +
+ {% block banner %}{% endblock %} +
+ +
+ + + + + +
+ {% block content %}{% endblock %} +
+ +
+ + + + + +
+ {% block footer %}{% endblock %} +
+ +
+ +
+
+ + diff --git a/src/cdh/mail/utils.py b/src/cdh/mail/utils.py new file mode 100644 index 00000000..44d331d4 --- /dev/null +++ b/src/cdh/mail/utils.py @@ -0,0 +1,261 @@ +from typing import List, Optional, Tuple, Union + +from django.conf import settings +from django.core.mail import get_connection + +from .classes import TemplateEmail + + +def send_template_email( + recipient_list: List[str], + subject: str, + template_context: dict, + html_template: Optional[str] = None, + plain_template: Optional[str] = None, + from_email: Optional[str] = None, + plain_context: Optional[dict] = None, + html_context: Optional[dict] = None, + language: str = 'nl', + fail_silently: Union[bool, None] = None +) -> int: + """ + Light wrapper for :class:`.TemplateEmail`. + + You need to provide at least one of the template variants (HTML or plain). + Or both, if you want. + + :param recipient_list: list of recipients + :type recipient_list: list of str + :param str subject: Email subject + :param str from_email: the FROM: value. Uses settings.FROM_EMAIL if omitted + :param str html_template: the HTML template to render + :param str plain_template: the plain template to render + :param dict template_context: any context data needed for rendering the + templates + :param dict html_context: additional context data for the HTML template + :param dict plain_context: additional context data for the plain template + :param str language: the langauge code used during rendering + :param bool fail_silently: whether errors during sending should be + suppressed. If not provided, defaults to CDH_EMAIL_FAIL_SILENTLY + :returns: the number of emails send + :rtype: int + :raises ValueError: if no template at all was supplied + """ + if html_template is None and plain_template is None: + raise ValueError("No template(s) specified") + + if plain_context is None: + plain_context = {} + if html_context is None: + html_context = {} + + email = TemplateEmail( + to=recipient_list, + subject=subject, + from_email=from_email, + html_template=html_template, + plain_template=plain_template, + context=template_context, + plain_context=plain_context, + html_context=html_context, + language=language, + fail_silently=fail_silently, + ) + + return email.send() + + +def send_mass_personalised_mass_mail( + datatuple: List[Tuple[str, dict, List[str]]], + template_context: dict, + html_template: Optional[str] = None, + plain_template: Optional[str] = None, + from_email: str = None, + plain_context: dict = None, + html_context: dict = None, + language: str = 'nl', + fail_silently: Union[bool, None] = None, +) -> int: + """ + Given a datatuple of (subject, personal_context, recipient_list), + send each message to each recipient list. + + personal_context and template_context will be merged together to create + a personalised email. + + html_context and plain_context can be used to override something in the + regular template_context for either the html version of the plain text + version. (Note: you can also add a key that does not exist in + template_context) + + :param datatuple: A tuple of tuples: (subject, personal_context, recipient_list) + :type datatuple: tuple[str, dict, list[str]] + :param str from_email: the FROM: value. Uses settings.FROM_EMAIL if omitted + :param str html_template: the HTML template to render + :param str plain_template: the plain template to render + :param dict template_context: any context data needed for rendering the + templates + :param dict html_context: additional context data for the HTML template + :param dict plain_context: additional context data for the plain template + :param str language: the langauge code used during rendering + :param bool fail_silently: whether errors during sending should be + suppressed. If not provided, defaults to CDH_EMAIL_FAIL_SILENTLY + :returns: the number of emails send + :rtype: int + :raises ValueError: if no template at all was supplied + """ + if html_template is None and plain_template is None: + raise ValueError("No template(s) specified") + + if plain_context is None: + plain_context = {} + if html_context is None: + html_context = {} + + sent = 0 + from_email = from_email or settings.FROM_EMAIL + connection = get_connection() + + # We reuse the same object to improve rendering speed + # e.g. to make sure we don't recreate templates constantly + email = TemplateEmail( + to=[], + subject="", + from_email=from_email, + html_template=html_template, + plain_template=plain_template, + context=template_context, + plain_context=plain_context, + html_context=html_context, + connection=connection, + language=language, + fail_silently=fail_silently, + ) + + for subject, personal_context, recipient_list in datatuple: + # Copy the personal context and extend it with the generic context + context = personal_context.copy() + context.update(template_context) + + # Copy our newly made context, and extend it with the plain_context + plain_text_context = context.copy() + plain_text_context.update(plain_context) + + # And now the same for the HTML version + html_text_context = context.copy() + html_text_context.update(html_context) + + email.to = recipient_list + email.subject = subject + email.context = context + email.html_context = html_text_context + email.plain_context = plain_text_context + + sent += email.send() + + return sent + + +def send_mass_personalised_custom_mail( + datatuple: List[Tuple[str, dict, List[str]]], + email_class, + template_context: dict, + contents: str, + sender: Optional[str] = None, + banner: Optional[str] = None, + footer: Optional[str] = None, + from_email: str = None, + plain_context: dict = None, + html_context: dict = None, + language: str = 'nl', + fail_silently: Union[bool, None] = None, +) -> int: + """ + Given a datatuple of (subject, personal_context, recipient_list), + send each message to each recipient list. + + This method takes advantage of :class:`.BaseCustomTemplateEmail` caching + to make sure the custom templates are only built once, speeding up + rendering. + + personal_context and template_context will be merged together to create + a personalised email. + + html_context and plain_context can be used to override something in the + regular template_context for either the html version of the plain text + version. (Note: you can also add a key that does not exist in + template_context) + + :param datatuple: A tuple of tuples: (subject, personal_context, recipient_list) + :type datatuple: tuple[str, dict, list[str]] + :param str from_email: the FROM: value. Uses settings.FROM_EMAIL if omitted + :param email_class: the custom email class to use + :type email_class: extension of :class:`.BaseCustomTemplateEmail` + :param str contents: the template code for the contents block + :param sender: the template code for the sender block + :type sender: str or None + :param banner: the template code for the banner block + :type banner: str or None + :param footer: the template code for the footer block + :type footer: str or None + :param dict template_context: any context data needed for rendering the + templates + :param dict html_context: additional context data for the HTML template + :param dict plain_context: additional context data for the plain template + :param str language: the langauge code used during rendering + :param bool fail_silently: whether errors during sending should be + suppressed. If not provided, defaults to CDH_EMAIL_FAIL_SILENTLY + :returns: the number of emails send + :rtype: int + """ + if plain_context is None: + plain_context = {} + if html_context is None: + html_context = {} + + sent = 0 + from_email = from_email or settings.FROM_EMAIL + connection = get_connection() + + # We reuse the same object to improve rendering speed + # e.g. to make sure we don't recreate templates constantly + email = email_class( + to=[], + subject="", + from_email=from_email, + contents=contents, + sender=sender, + banner=banner, + footer=footer, + context=template_context, + plain_context=plain_context, + html_context=html_context, + connection=connection, + language=language, + fail_silently=fail_silently, + ) + + for subject, personal_context, recipient_list in datatuple: + # Copy the personal context and extend it with the generic context + context = personal_context.copy() + context.update(template_context) + + # Copy our newly made context, and extend it with the plain_context + plain_text_context = context.copy() + plain_text_context.update(plain_context) + + # And now the same for the HTML version + html_text_context = context.copy() + html_text_context.update(html_context) + + email.to = recipient_list + email.subject = subject + email.context = context + email.html_context = html_text_context + email.plain_context = plain_text_context + + sent += email.send() + + return sent + + diff --git a/src/cdh/mail/views.py b/src/cdh/mail/views.py new file mode 100644 index 00000000..2b0fcb3c --- /dev/null +++ b/src/cdh/mail/views.py @@ -0,0 +1,34 @@ +from django.http import HttpResponse +from django.views import generic + + +class BaseEmailPreviewView(generic.View): + """Base view for viewing previews of custom emails + + :param email_class: the specific class to render + """ + email_class = None + + def post(self, request, *args, **kwargs): + email_class_kwargs = { + 'to': 'example@example.org', + 'subject': 'Test Email', + 'contents': request.POST.get('contents', None), + 'sender': request.POST.get('sender', None), + 'banner': request.POST.get('banner', None), + 'footer': request.POST.get('footer', None), + 'context': self.get_preview_context(), + } + + msg = self.email_class(**email_class_kwargs) + + return HttpResponse(msg.render_preview()) + + def get_preview_context(self): + """A method to provide any additional context to the preview email. + + Most of this _should_ be handled by the email class itself, but this + method can be used if you want some dynamic defaults. Any defaults + specified in the Email class will be overwritten by data supplied here. + """ + return {} diff --git a/src/cdh/mail/widgets.py b/src/cdh/mail/widgets.py new file mode 100644 index 00000000..72395da8 --- /dev/null +++ b/src/cdh/mail/widgets.py @@ -0,0 +1,52 @@ +from typing import Optional + +from cdh.core.forms import TinyMCEWidget + + +class EmailContentEditWidget(TinyMCEWidget): + """A custom widget to handle editing custom email templates using TinyMCE. + + At the moment this should only be used on the 'contents' template. + + Will add a 'preview email' button to the editor. + """ + class Media: + js = ['cdh.mail/js/tinymce-preview-mail-plugin.js'] + + def __init__( + self, + preview_url, + *args, + sender_field: Optional[str] = None, + banner_field: Optional[str] = None, + footer_field: Optional[str] = None, + **kwargs + ): + """ + :param preview_url: a resolved URL for the EmailPreviewView to use + :param sender_field: (optional) the formfield describing the 'sender' + template + :param banner_field: (optional) the formfield describing the 'banner' + template + :param footer_field: (optional) the formfield describing the 'footer' + template + """ + super().__init__(*args, **kwargs) + + self.preview_url = preview_url + self.sender_field = sender_field + self.banner_field = banner_field + self.footer_field = footer_field + + self.toolbar += " | preview-mail" + self.plugins.append('preview-mail') + + def get_context(self, *args, **kwargs): + context = super().get_context(*args, **kwargs) + + context['preview_url'] = self.preview_url + context['sender_field'] = self.sender_field + context['banner_field'] = self.banner_field + context['footer_field'] = self.footer_field + + return context From 51de62ce965ccb618a965cee084cc13b9edc0f3d Mon Sep 17 00:00:00 2001 From: Tyler Mees Date: Tue, 9 Apr 2024 17:32:31 +0200 Subject: [PATCH 28/34] chore: mark cdh.core.mail as deprecated --- src/cdh/core/mail/classes.py | 25 +++++++++++++++++++++++++ src/cdh/core/mail/utils.py | 13 +++++++++++++ src/cdh/core/mail/views.py | 5 +++++ src/cdh/core/mail/widgets.py | 5 +++++ 4 files changed, 48 insertions(+) diff --git a/src/cdh/core/mail/classes.py b/src/cdh/core/mail/classes.py index 2f0f8f5a..6bc0152b 100644 --- a/src/cdh/core/mail/classes.py +++ b/src/cdh/core/mail/classes.py @@ -4,6 +4,7 @@ from functools import lru_cache from typing import Dict, List, Optional, Tuple, Union +from deprecated.sphinx import deprecated from django.conf import settings from django.core.mail import EmailMultiAlternatives from django.template import Context, Engine, Template @@ -19,6 +20,10 @@ CDH_EMAIL_PLAIN_FALLBACK_TEMPLATE, CDH_EMAIL_HTML_FALLBACK_TEMPLATE +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) @keep_lazy_text def _strip_tags(value) -> str: """Return the given HTML with all tags stripped, and leading/trailing @@ -59,6 +64,10 @@ def _strip_tags(value) -> str: return ret.strip() +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) class BaseEmail(ABC): """Base class for all email classes. @@ -267,6 +276,10 @@ def _get_html_body(self) -> str: pass +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) class TemplateEmail(BaseEmail): """Regular Django template files based emails @@ -422,6 +435,10 @@ def _get_html_body(self) -> str: return template.render(Context(context)) +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) class CTEVarDef: """Descriptor class for user-usable variables in a Custom Template Email @@ -458,6 +475,10 @@ def __init__( self.kwargs = kwargs +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) class CTETagPackage: """Configuration class for loading template tag packages @@ -487,6 +508,10 @@ def __init__( self.tags = tags +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) class BaseCustomTemplateEmail(BaseEmail): """Email class for sending HTML emails using user supplied HTML templates diff --git a/src/cdh/core/mail/utils.py b/src/cdh/core/mail/utils.py index 9a7231fa..26fe8be7 100644 --- a/src/cdh/core/mail/utils.py +++ b/src/cdh/core/mail/utils.py @@ -1,11 +1,16 @@ from typing import List, Optional, Tuple +from deprecated.sphinx import deprecated from django.conf import settings from django.core.mail import get_connection from cdh.core.mail import TemplateEmail +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) def send_template_email( recipient_list: List[str], subject: str, @@ -61,6 +66,10 @@ def send_template_email( return email.send() +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) def send_mass_personalised_mass_mail( datatuple: List[Tuple[str, dict, List[str]]], template_context: dict, @@ -148,6 +157,10 @@ def send_mass_personalised_mass_mail( return sent +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) def send_mass_personalised_custom_mail( datatuple: List[Tuple[str, dict, List[str]]], email_class, diff --git a/src/cdh/core/mail/views.py b/src/cdh/core/mail/views.py index 2b0fcb3c..311c6242 100644 --- a/src/cdh/core/mail/views.py +++ b/src/cdh/core/mail/views.py @@ -1,7 +1,12 @@ +from deprecated.sphinx import deprecated from django.http import HttpResponse from django.views import generic +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) class BaseEmailPreviewView(generic.View): """Base view for viewing previews of custom emails diff --git a/src/cdh/core/mail/widgets.py b/src/cdh/core/mail/widgets.py index f44640f8..302e38bb 100644 --- a/src/cdh/core/mail/widgets.py +++ b/src/cdh/core/mail/widgets.py @@ -2,8 +2,13 @@ from cdh.core.file_loading import add_js_file from cdh.core.forms import TinyMCEWidget +from deprecated.sphinx import deprecated +@deprecated( + version='3.2', + reason="Replaced by cdh.mail" +) class EmailContentEditWidget(TinyMCEWidget): """A custom widget to handle editing custom email templates using TinyMCE. From 0ce5c6badc8ac94de4752bceeee77898260a6423 Mon Sep 17 00:00:00 2001 From: Tyler Mees Date: Tue, 9 Apr 2024 17:42:24 +0200 Subject: [PATCH 29/34] fix: added missing template --- dev/dev_mail/templates/dev_mail/base_test_mail.html | 13 +++++++++++++ .../mail/templates/cdh.mail/plain_mail_fallback.txt | 4 ++++ 2 files changed, 17 insertions(+) create mode 100644 dev/dev_mail/templates/dev_mail/base_test_mail.html create mode 100644 src/cdh/mail/templates/cdh.mail/plain_mail_fallback.txt diff --git a/dev/dev_mail/templates/dev_mail/base_test_mail.html b/dev/dev_mail/templates/dev_mail/base_test_mail.html new file mode 100644 index 00000000..4e1706bb --- /dev/null +++ b/dev/dev_mail/templates/dev_mail/base_test_mail.html @@ -0,0 +1,13 @@ +{% extends 'cdh.core/mail_template.html' %} + +{% block sender %} + Dev project +{% endblock %} + +{% block footer %} +

+ + I am but a mere Python programme. I'm afraid I cannot respond to any replies! + +

+{% endblock %} diff --git a/src/cdh/mail/templates/cdh.mail/plain_mail_fallback.txt b/src/cdh/mail/templates/cdh.mail/plain_mail_fallback.txt new file mode 100644 index 00000000..6dad8080 --- /dev/null +++ b/src/cdh/mail/templates/cdh.mail/plain_mail_fallback.txt @@ -0,0 +1,4 @@ +{% load i18n %}{% get_current_language as LANGUAGE_CODE %}{% if sender %}{% if LANGUAGE_CODE == 'en' %}{{ sender }} - Utrecht University{% else %}{{ sender }} - Universiteit Utrecht{% endif %}{% endif %} +{% if banner %}{{ banner}}{% endif %} +{{ content }} +{% if footer %}{{ footer }}{% endif %} From 7dd75d971aa602732acf18a35bbd4fee8fafe24f Mon Sep 17 00:00:00 2001 From: Tyler Mees Date: Thu, 25 Apr 2024 16:31:00 +0200 Subject: [PATCH 30/34] feat: new custom date-inputs in NL format --- assets/scss/vanillajs-datepicker.scss | 4 + package.json | 4 +- src/cdh/core/forms.py | 116 + .../cdh.core/css/vanillajs-datepicker.css | 1 + .../cdh.core/css/vanillajs-datepicker.css.map | 1 + .../static/cdh.core/js/datepicker-full.js | 3075 +++++++++++++++++ .../static/cdh.core/js/datepicker-full.min.js | 1 + .../static/cdh.core/js/widget/datepicker.js | 7 + yarn.lock | 5 + 9 files changed, 3213 insertions(+), 1 deletion(-) create mode 100644 assets/scss/vanillajs-datepicker.scss create mode 100644 src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css create mode 100644 src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css.map create mode 100644 src/cdh/core/static/cdh.core/js/datepicker-full.js create mode 100644 src/cdh/core/static/cdh.core/js/datepicker-full.min.js create mode 100644 src/cdh/core/static/cdh.core/js/widget/datepicker.js diff --git a/assets/scss/vanillajs-datepicker.scss b/assets/scss/vanillajs-datepicker.scss new file mode 100644 index 00000000..7ec4254d --- /dev/null +++ b/assets/scss/vanillajs-datepicker.scss @@ -0,0 +1,4 @@ + +@import "node_modules/uu-bootstrap/scss/configuration"; + +@import "node_modules/vanillajs-datepicker/sass/datepicker-bs5"; \ No newline at end of file diff --git a/package.json b/package.json index 65fd8ba6..40dd7ad3 100644 --- a/package.json +++ b/package.json @@ -5,12 +5,14 @@ "author": "Hum IT Portal Development & ILS Labs", "license": "Apache-2.0", "dependencies": { - "uu-bootstrap": "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.1" + "uu-bootstrap": "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#1.5.0-alpha.1", + "vanillajs-datepicker": "^1.3.4" }, "scripts": { "build-css": "yarn _build-css src/cdh/core/static/cdh.core/css/bootstrap.css --style=compressed", "_build-css": "sass -I . assets/scss/bootstrap.scss", "watch-css": "yarn _build-css src/cdh/core/static/cdh.core/css/bootstrap.css --watch", + "build-datepicker-css": "sass -I . assets/scss/vanillajs-datepicker.scss src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css --style=compressed", "build-fedauth-css": "sass -I . assets/scss/federated_auth.scss src/cdh/federated_auth/static/cdh.federated_auth/base.css --style=compressed" }, "devDependencies": { diff --git a/src/cdh/core/forms.py b/src/cdh/core/forms.py index 5d8fc497..6258a37b 100644 --- a/src/cdh/core/forms.py +++ b/src/cdh/core/forms.py @@ -374,6 +374,122 @@ class SplitDateTimeField(forms.SplitDateTimeField): widget = SplitDateTimeWidget +class BootstrapDateInput(forms.DateInput): + class Media: + js = [ + 'cdh.core/js/datepicker-full.js', + 'cdh.core/js/widget/datepicker.js', + ] + css = { + 'all': ['cdh.core/css/vanillajs-datepicker.css',], + } + + def __init__(self, attrs=None): + if attrs is None: + attrs = {} + if 'class' not in attrs: + attrs['class'] = '' + + if 'placeholder' not in attrs: + attrs['placeholder'] = 'dd-mm-yyyy' + + attrs['class'] += ' bootstrap-datepicker' + super().__init__(attrs=attrs, format='%d-%m-%Y') + + + def value_from_datadict(self, data, files, name): + val = data.get(name) + + try: + # Transform the date to the format Django expects (ISO) + day, month, year = val.split('-') + return f"{year}-{month}-{day}" + except (ValueError, AttributeError): + return None + + +class BootstrapSplitDateInput(BootstrapMultiWidget): + """A widget for a date input, split into three fields""" + + def __init__(self, attrs=None): + day_attrs = attrs if attrs else {} + + day_attrs['min'] = 1 + day_attrs['max'] = 31 + + month_attrs = attrs if attrs else {} + + year_attrs = attrs if attrs else {} + year_attrs['placeholder'] = _('core:fields:month:year_placeholder') + if hasattr(year_attrs, 'year_min'): + year_attrs['min'] = year_attrs.get('year_min') + if hasattr(year_attrs, 'year_max'): + year_attrs['max'] = year_attrs.get('year_max') + + widgets = { + 'day': NumberInput( + attrs=day_attrs, + ), + 'month': BootstrapSelect( + attrs=month_attrs, + choices=( + ('', _('core:fields:month:month_placeholder')), + (1, _('core:fields:month:january')), + (2, _('core:fields:month:february')), + (3, _('core:fields:month:march')), + (4, _('core:fields:month:april')), + (5, _('core:fields:month:may')), + (6, _('core:fields:month:june')), + (7, _('core:fields:month:july')), + (8, _('core:fields:month:august')), + (9, _('core:fields:month:september')), + (10, _('core:fields:month:october')), + (11, _('core:fields:month:november')), + (12, _('core:fields:month:december')), + ), + ), + 'year': NumberInput( + attrs=year_attrs, + ), + } + super().__init__(widgets, attrs) + + def value_from_datadict(self, data, files, name): + processed_data = [ + widget.value_from_datadict(data, files, name + widget_name) + for widget_name, widget in zip(self.widgets_names, self.widgets) + ] + + day, month, year = processed_data + + try: + day = int(day) if day else None + month = int(month) if month else None + year = int(year) if year else None + except ValueError: + return None + + if day and month and year: + return f"{year}-{month:02d}-{day:02d}" + + return None + + def decompress(self, value): + if value: + if isinstance(value, str): + try: + year, month, day = value.split('-', maxsplit=2) + return [int(day), int(month), int(year)] + except ValueError: + pass + elif isinstance(value, list): + return value + elif isinstance(value, date) or isinstance(value, datetime): + return [int(value.day), int(value.month), int(value.year)] + + return [None, None, None] + + class MonthInput(TextInput): input_type = "month" diff --git a/src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css b/src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css new file mode 100644 index 00000000..91eda796 --- /dev/null +++ b/src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css @@ -0,0 +1 @@ +.datepicker{width:min-content}.datepicker:not(.active){display:none}.datepicker-dropdown{position:absolute;z-index:1000;padding-top:4px}.datepicker-dropdown.datepicker-orient-top{padding-top:0;padding-bottom:4px}.datepicker-picker{display:flex;flex-direction:column;border-radius:0;background-color:#fff}.datepicker-dropdown .datepicker-picker{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)}.datepicker-main{flex:auto;padding:2px}.datepicker-footer{box-shadow:inset 0 1px 1px rgba(0,0,0,.1);background-color:#efefef}.datepicker-title{box-shadow:inset 0 -1px 1px rgba(0,0,0,.1);background-color:#efefef;padding:.375rem .75rem;text-align:center;font-weight:700}.datepicker-controls{display:flex}.datepicker-header .datepicker-controls{padding:2px 2px 0}.datepicker-controls .btn{border-color:#efefef;background-color:#fff}.datepicker-controls .btn:hover{border-color:#d7d7d7;background-color:#ddd;color:#000}.datepicker-controls .btn:focus{border-color:#d7d7d7;box-shadow:0 0 0 0 rgba(203,203,203,.5);background-color:#ddd;color:#000}.datepicker-controls .btn:disabled{border-color:#efefef;background-color:#efefef;color:#000}.datepicker-controls .btn:not(:disabled):active{border-color:#d1d1d1;background-color:#d7d7d7;color:#000}.datepicker-controls .btn:not(:disabled):active:focus{box-shadow:0 0 0 0 rgba(203,203,203,.5)}.datepicker-header .datepicker-controls .btn{border-color:rgba(0,0,0,0);font-weight:bold}.datepicker-footer .datepicker-controls .btn{flex:auto;margin:calc(.375rem - 1px) .375rem;border-radius:0;font-size:.875rem}.datepicker-controls .view-switch{flex:auto}.datepicker-controls .prev-button,.datepicker-controls .next-button{padding-right:.375rem;padding-left:.375rem;flex:0 0 14.2857142857%}.datepicker-controls .prev-button.disabled,.datepicker-controls .next-button.disabled{visibility:hidden}.datepicker-view,.datepicker-grid{display:flex}.datepicker-view{align-items:stretch;width:15.75rem}.datepicker-grid{flex-wrap:wrap;flex:auto}.datepicker .days{display:flex;flex-direction:column;flex:auto}.datepicker .days-of-week{display:flex}.datepicker .week-numbers{display:flex;flex-direction:column;flex:0 0 9.6774193548%}.datepicker .weeks{display:flex;flex-direction:column;align-items:stretch;flex:auto}.datepicker span{display:flex;align-items:center;justify-content:center;border-radius:0;cursor:default;-webkit-touch-callout:none;user-select:none}.datepicker .dow{height:1.5rem;font-size:.9375rem;font-weight:700}.datepicker .week{flex:auto;color:#dedede;font-size:.875rem}.datepicker-cell,.datepicker .days .dow{flex-basis:14.2857142857%}.datepicker-cell{height:2.25rem}.datepicker-cell:not(.day){flex-basis:25%;height:4.5rem}.datepicker-cell:not(.disabled):hover{background-color:#f9f9f9;cursor:pointer}.datepicker-cell.focused:not(.selected){background-color:#e3e3e3}.datepicker-cell.selected,.datepicker-cell.selected:hover{background-color:#ffcd00;color:#fff;font-weight:600}.datepicker-cell.disabled{color:rgba(33,33,33,.5)}.datepicker-cell.prev:not(.disabled),.datepicker-cell.next:not(.disabled){color:#6c6c6c}.datepicker-cell.prev.selected,.datepicker-cell.next.selected{color:#e6e6e6}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today){border-radius:0;background-color:#efefef}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today):not(.disabled):hover{background-color:#e9e9e9}.datepicker-cell.highlighted:not(.selected):not(.range):not(.today).focused{background-color:#e3e3e3}.datepicker-cell.today:not(.selected){background-color:#24a793}.datepicker-cell.today:not(.selected):not(.disabled){color:#fff}.datepicker-cell.today.focused:not(.selected){background-color:#23a38f}.datepicker-cell.range-end:not(.selected),.datepicker-cell.range-start:not(.selected){background-color:#000;color:#fff}.datepicker-cell.range-end.focused:not(.selected),.datepicker-cell.range-start.focused:not(.selected){background-color:#000}.datepicker-cell.range-start:not(.range-end){border-radius:0 0 0 0}.datepicker-cell.range-end:not(.range-start){border-radius:0 0 0 0}.datepicker-cell.range{border-radius:0;background-color:#e9e9e9}.datepicker-cell.range:not(.disabled):not(.focused):not(.today):hover{background-color:#e3e3e3}.datepicker-cell.range.disabled{color:#d2d2d2}.datepicker-cell.range.focused{background-color:#ddd}.datepicker-input.in-edit{border-color:#ffe26d}.datepicker-input.in-edit:focus,.datepicker-input.in-edit:active{box-shadow:0 0 .25em .25em rgba(255,226,109,.2)}/*# sourceMappingURL=vanillajs-datepicker.css.map */ diff --git a/src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css.map b/src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css.map new file mode 100644 index 00000000..feee4ad0 --- /dev/null +++ b/src/cdh/core/static/cdh.core/css/vanillajs-datepicker.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../../../../../node_modules/vanillajs-datepicker/sass/datepicker.scss","../../../../../../node_modules/bootstrap/scss/_variables.scss","../../../../../../node_modules/vanillajs-datepicker/sass/datepicker-bs5.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/bootstrap/_misc.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_colors.scss","../../../../../../node_modules/vanillajs-datepicker/sass/_mixins.scss"],"names":[],"mappings":"AAgFA,YACE,kBAEA,yBACE,aAIJ,qBACE,kBACA,QCghCkC,KD/gClC,YE/EmB,IFiFnB,2CACE,cACA,eEnFiB,IFuFrB,mBACE,aACA,sBACA,cGtGc,EHuGd,iBItFM,KJwFN,wCACE,WCoc0B,6BDhc9B,iBACE,UACA,YAGF,mBACE,WA9CqB,+BA+CrB,iBIlGS,QJqGX,kBACE,WApDoB,gCAqDpB,iBIvGS,QJwGT,uBACA,kBACA,YCkf4B,ID/e9B,qBACE,aAEA,wCACE,kBE1FF,0BASE,aEhCO,QFiCP,iBEnCI,KFqCJ,gCACE,aARa,QASb,iBAViB,KAWjB,WAGF,gCACE,aAda,QAeb,wCACA,iBAjBiB,KAkBjB,WAGF,mCACE,aEjDK,QFkDL,iBElDK,QFmDL,WAGF,gDACE,aAzBc,QA0Bd,iBA3BkB,QA4BlB,WAEA,sDACE,wCAIJ,6CGjFF,2BACA,iBHoFE,6CGhFF,UACA,mCACA,cFRiB,EESjB,UJ6lB4B,QDvY5B,kCACE,UAGF,oEAEE,sBACA,qBACA,wBAEA,sFACE,kBAKN,kCAEE,aAGF,iBACE,oBACA,MAjMc,SAoMhB,iBACE,eACA,UAIA,kBACE,aACA,sBACA,UAGF,0BACE,aAGF,0BACE,aACA,sBACA,uBAGF,mBACE,aACA,sBACA,oBACA,UAGF,iBACE,aACA,mBACA,uBACA,cG3RY,EH4RZ,eACA,2BACA,iBAGF,iBACE,OA9OY,OA+OZ,UA9Oe,SA+Of,YC2U0B,IDpU5B,kBACE,UACA,MIxRO,QJyRP,UCyT0B,QDrT9B,wCACE,WAzOe,eA4OjB,iBAGE,OEvSkB,QFySlB,2BACE,eACA,OArQmB,OAwQrB,sCACE,iBArQ6B,QAsQ7B,eAGF,wCACE,iBEnT6B,QFuT7B,0DAEE,iBIxUG,QJyUH,MI5TE,KJ6TF,YEpUoB,IFwUxB,0BACE,ME9TqB,kBFmUrB,0EACE,MErUmB,QFwUrB,8DACE,MA9R4B,QAkShC,oEACE,gBACA,iBIhVO,QJkVP,yFACE,iBAxSuC,QA2SzC,4EACE,iBEvV2B,QF4V7B,sCACE,iBIrWC,QJuWD,qDACE,MIlWA,KJsWJ,8CACE,iBA3TiC,QA+TrC,sFACE,iBI7VI,KJ8VJ,MI7WI,KJgXN,sGACE,iBAlUwC,KAsUxC,6CACE,sBAaF,6CACE,sBAYJ,uBACE,gBACA,iBI/YO,QJiZP,sEACE,iBArW4B,QAwW9B,gCACE,MAvW+B,QA0WjC,+BACE,iBA5W4B,KAuXlC,0BACE,aEtZ8B,QFwZ9B,iEAEE,WAvX0B","file":"vanillajs-datepicker.css"} \ No newline at end of file diff --git a/src/cdh/core/static/cdh.core/js/datepicker-full.js b/src/cdh/core/static/cdh.core/js/datepicker-full.js new file mode 100644 index 00000000..7392e08c --- /dev/null +++ b/src/cdh/core/static/cdh.core/js/datepicker-full.js @@ -0,0 +1,3075 @@ +(function () { + 'use strict'; + + function lastItemOf(arr) { + return arr[arr.length - 1]; + } + + // push only the items not included in the array + function pushUnique(arr, ...items) { + items.forEach((item) => { + if (arr.includes(item)) { + return; + } + arr.push(item); + }); + return arr; + } + + function stringToArray(str, separator) { + // convert empty string to an empty array + return str ? str.split(separator) : []; + } + + function isInRange(testVal, min, max) { + const minOK = min === undefined || testVal >= min; + const maxOK = max === undefined || testVal <= max; + return minOK && maxOK; + } + + function limitToRange(val, min, max) { + if (val < min) { + return min; + } + if (val > max) { + return max; + } + return val; + } + + function createTagRepeat(tagName, repeat, attributes = {}, index = 0, html = '') { + const openTagSrc = Object.keys(attributes).reduce((src, attr) => { + let val = attributes[attr]; + if (typeof val === 'function') { + val = val(index); + } + return `${src} ${attr}="${val}"`; + }, tagName); + html += `<${openTagSrc}>`; + + const next = index + 1; + return next < repeat + ? createTagRepeat(tagName, repeat, attributes, next, html) + : html; + } + + // Remove the spacing surrounding tags for HTML parser not to create text nodes + // before/after elements + function optimizeTemplateHTML(html) { + return html.replace(/>\s+/g, '>').replace(/\s+ name.toLowerCase().startsWith(monthName); + // compare with both short and full names because some locales have periods + // in the short names (not equal to the first X letters of the full names) + monthIndex = locale.monthsShort.findIndex(compareNames); + if (monthIndex < 0) { + monthIndex = locale.months.findIndex(compareNames); + } + if (monthIndex < 0) { + return NaN; + } + } + + newDate.setMonth(monthIndex); + return newDate.getMonth() !== normalizeMonth(monthIndex) + ? newDate.setDate(0) + : newDate.getTime(); + }, + d(date, day) { + return new Date(date).setDate(parseInt(day, 10)); + }, + }; + // format functions for date parts + const formatFns = { + d(date) { + return date.getDate(); + }, + dd(date) { + return padZero(date.getDate(), 2); + }, + D(date, locale) { + return locale.daysShort[date.getDay()]; + }, + DD(date, locale) { + return locale.days[date.getDay()]; + }, + m(date) { + return date.getMonth() + 1; + }, + mm(date) { + return padZero(date.getMonth() + 1, 2); + }, + M(date, locale) { + return locale.monthsShort[date.getMonth()]; + }, + MM(date, locale) { + return locale.months[date.getMonth()]; + }, + y(date) { + return date.getFullYear(); + }, + yy(date) { + return padZero(date.getFullYear(), 2).slice(-2); + }, + yyyy(date) { + return padZero(date.getFullYear(), 4); + }, + }; + + // get month index in normal range (0 - 11) from any number + function normalizeMonth(monthIndex) { + return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12); + } + + function padZero(num, length) { + return num.toString().padStart(length, '0'); + } + + function parseFormatString(format) { + if (typeof format !== 'string') { + throw new Error("Invalid date format."); + } + if (format in knownFormats) { + return knownFormats[format]; + } + + // sprit the format string into parts and seprators + const separators = format.split(reFormatTokens); + const parts = format.match(new RegExp(reFormatTokens, 'g')); + if (separators.length === 0 || !parts) { + throw new Error("Invalid date format."); + } + + // collect format functions used in the format + const partFormatters = parts.map(token => formatFns[token]); + + // collect parse function keys used in the format + // iterate over parseFns' keys in order to keep the order of the keys. + const partParserKeys = Object.keys(parseFns).reduce((keys, key) => { + const token = parts.find(part => part[0] !== 'D' && part[0].toLowerCase() === key); + if (token) { + keys.push(key); + } + return keys; + }, []); + + return knownFormats[format] = { + parser(dateStr, locale) { + const dateParts = dateStr.split(reNonDateParts).reduce((dtParts, part, index) => { + if (part.length > 0 && parts[index]) { + const token = parts[index][0]; + if (token === 'M') { + dtParts.m = part; + } else if (token !== 'D') { + dtParts[token] = part; + } + } + return dtParts; + }, {}); + + // iterate over partParserkeys so that the parsing is made in the oder + // of year, month and day to prevent the day parser from correcting last + // day of month wrongly + return partParserKeys.reduce((origDate, key) => { + const newDate = parseFns[key](origDate, dateParts[key], locale); + // ingnore the part failed to parse + return isNaN(newDate) ? origDate : newDate; + }, today()); + }, + formatter(date, locale) { + let dateStr = partFormatters.reduce((str, fn, index) => { + return str += `${separators[index]}${fn(date, locale)}`; + }, ''); + // separators' length is always parts' length + 1, + return dateStr += lastItemOf(separators); + }, + }; + } + + function parseDate(dateStr, format, locale) { + if (dateStr instanceof Date || typeof dateStr === 'number') { + const date = stripTime(dateStr); + return isNaN(date) ? undefined : date; + } + if (!dateStr) { + return undefined; + } + if (dateStr === 'today') { + return today(); + } + + if (format && format.toValue) { + const date = format.toValue(dateStr, format, locale); + return isNaN(date) ? undefined : stripTime(date); + } + + return parseFormatString(format).parser(dateStr, locale); + } + + function formatDate(date, format, locale) { + if (isNaN(date) || (!date && date !== 0)) { + return ''; + } + + const dateObj = typeof date === 'number' ? new Date(date) : date; + + if (format.toDisplay) { + return format.toDisplay(dateObj, format, locale); + } + + return parseFormatString(format).formatter(dateObj, locale); + } + + const range = document.createRange(); + + function parseHTML(html) { + return range.createContextualFragment(html); + } + + function getParent(el) { + return el.parentElement + || (el.parentNode instanceof ShadowRoot ? el.parentNode.host : undefined); + } + + function isActiveElement(el) { + return el.getRootNode().activeElement === el; + } + + function hideElement(el) { + if (el.style.display === 'none') { + return; + } + // back up the existing display setting in data-style-display + if (el.style.display) { + el.dataset.styleDisplay = el.style.display; + } + el.style.display = 'none'; + } + + function showElement(el) { + if (el.style.display !== 'none') { + return; + } + if (el.dataset.styleDisplay) { + // restore backed-up dispay property + el.style.display = el.dataset.styleDisplay; + delete el.dataset.styleDisplay; + } else { + el.style.display = ''; + } + } + + function emptyChildNodes(el) { + if (el.firstChild) { + el.removeChild(el.firstChild); + emptyChildNodes(el); + } + } + + function replaceChildNodes(el, newChildNodes) { + emptyChildNodes(el); + if (newChildNodes instanceof DocumentFragment) { + el.appendChild(newChildNodes); + } else if (typeof newChildNodes === 'string') { + el.appendChild(parseHTML(newChildNodes)); + } else if (typeof newChildNodes.forEach === 'function') { + newChildNodes.forEach((node) => { + el.appendChild(node); + }); + } + } + + const listenerRegistry = new WeakMap(); + const {addEventListener, removeEventListener} = EventTarget.prototype; + + // Register event listeners to a key object + // listeners: array of listener definitions; + // - each definition must be a flat array of event target and the arguments + // used to call addEventListener() on the target + function registerListeners(keyObj, listeners) { + let registered = listenerRegistry.get(keyObj); + if (!registered) { + registered = []; + listenerRegistry.set(keyObj, registered); + } + listeners.forEach((listener) => { + addEventListener.call(...listener); + registered.push(listener); + }); + } + + function unregisterListeners(keyObj) { + let listeners = listenerRegistry.get(keyObj); + if (!listeners) { + return; + } + listeners.forEach((listener) => { + removeEventListener.call(...listener); + }); + listenerRegistry.delete(keyObj); + } + + // Event.composedPath() polyfill for Edge + // based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec + if (!Event.prototype.composedPath) { + const getComposedPath = (node, path = []) => { + path.push(node); + + let parent; + if (node.parentNode) { + parent = node.parentNode; + } else if (node.host) { // ShadowRoot + parent = node.host; + } else if (node.defaultView) { // Document + parent = node.defaultView; + } + return parent ? getComposedPath(parent, path) : path; + }; + + Event.prototype.composedPath = function () { + return getComposedPath(this.target); + }; + } + + function findFromPath(path, criteria, currentTarget) { + const [node, ...rest] = path; + if (criteria(node)) { + return node; + } + if (node === currentTarget || node.tagName === 'HTML' || rest.length === 0) { + // stop when reaching currentTarget or + return; + } + return findFromPath(rest, criteria, currentTarget); + } + + // Search for the actual target of a delegated event + function findElementInEventPath(ev, selector) { + const criteria = typeof selector === 'function' + ? selector + : el => el instanceof Element && el.matches(selector); + return findFromPath(ev.composedPath(), criteria, ev.currentTarget); + } + + // default locales + const locales = { + en: { + days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], + daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], + daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], + months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], + monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + today: "Today", + clear: "Clear", + titleFormat: "MM y" + } + }; + + // config options updatable by setOptions() and their default values + const defaultOptions = { + autohide: false, + beforeShowDay: null, + beforeShowDecade: null, + beforeShowMonth: null, + beforeShowYear: null, + clearButton: false, + dateDelimiter: ',', + datesDisabled: [], + daysOfWeekDisabled: [], + daysOfWeekHighlighted: [], + defaultViewDate: undefined, // placeholder, defaults to today() by the program + disableTouchKeyboard: false, + enableOnReadonly: true, + format: 'mm/dd/yyyy', + language: 'en', + maxDate: null, + maxNumberOfDates: 1, + maxView: 3, + minDate: null, + nextArrow: '»', + orientation: 'auto', + pickLevel: 0, + prevArrow: '«', + showDaysOfWeek: true, + showOnClick: true, + showOnFocus: true, + startView: 0, + title: '', + todayButton: false, + todayButtonMode: 0, + todayHighlight: false, + updateOnBlur: true, + weekNumbers: 0, + weekStart: 0, + }; + + const { + language: defaultLang, + format: defaultFormat, + weekStart: defaultWeekStart, + } = defaultOptions; + + // Reducer function to filter out invalid day-of-week from the input + function sanitizeDOW(dow, day) { + return dow.length < 6 && day >= 0 && day < 7 + ? pushUnique(dow, day) + : dow; + } + + function determineGetWeekMethod(numberingMode, weekStart) { + const methodId = numberingMode === 4 + ? (weekStart === 6 ? 3 : !weekStart + 1) + : numberingMode; + switch (methodId) { + case 1: + return getIsoWeek; + case 2: + return getWesternTradWeek; + case 3: + return getMidEasternWeek; + } + } + + function updateWeekStart(newValue, config, weekNumbers) { + config.weekStart = newValue; + config.weekEnd = (newValue + 6) % 7; + if (weekNumbers === 4) { + config.getWeekNumber = determineGetWeekMethod(4, newValue); + } + return newValue; + } + + // validate input date. if invalid, fallback to the original value + function validateDate(value, format, locale, origValue) { + const date = parseDate(value, format, locale); + return date !== undefined ? date : origValue; + } + + // Validate viewId. if invalid, fallback to the original value + function validateViewId(value, origValue, max = 3) { + const viewId = parseInt(value, 10); + return viewId >= 0 && viewId <= max ? viewId : origValue; + } + + function replaceOptions(options, from, to, convert = undefined) { + if (from in options) { + if (!(to in options)) { + options[to] = convert ? convert(options[from]) : options[from]; + } + delete options[from]; + } + } + + // Create Datepicker configuration to set + function processOptions(options, datepicker) { + const inOpts = Object.assign({}, options); + const config = {}; + const locales = datepicker.constructor.locales; + const rangeEnd = !!datepicker.rangeSideIndex; + let { + datesDisabled, + format, + language, + locale, + maxDate, + maxView, + minDate, + pickLevel, + startView, + weekNumbers, + weekStart, + } = datepicker.config || {}; + + // for backword compatibility + replaceOptions(inOpts, 'calendarWeeks', 'weekNumbers', val => val ? 1 : 0); + replaceOptions(inOpts, 'clearBtn', 'clearButton'); + replaceOptions(inOpts, 'todayBtn', 'todayButton'); + replaceOptions(inOpts, 'todayBtnMode', 'todayButtonMode'); + + if (inOpts.language) { + let lang; + if (inOpts.language !== language) { + if (locales[inOpts.language]) { + lang = inOpts.language; + } else { + // Check if langauge + region tag can fallback to the one without + // region (e.g. fr-CA → fr) + lang = inOpts.language.split('-')[0]; + if (!locales[lang]) { + lang = false; + } + } + } + delete inOpts.language; + if (lang) { + language = config.language = lang; + + // update locale as well when updating language + const origLocale = locale || locales[defaultLang]; + // use default language's properties for the fallback + locale = Object.assign({ + format: defaultFormat, + weekStart: defaultWeekStart + }, locales[defaultLang]); + if (language !== defaultLang) { + Object.assign(locale, locales[language]); + } + config.locale = locale; + // if format and/or weekStart are the same as old locale's defaults, + // update them to new locale's defaults + if (format === origLocale.format) { + format = config.format = locale.format; + } + if (weekStart === origLocale.weekStart) { + weekStart = updateWeekStart(locale.weekStart, config, weekNumbers); + } + } + } + + if (inOpts.format) { + const hasToDisplay = typeof inOpts.format.toDisplay === 'function'; + const hasToValue = typeof inOpts.format.toValue === 'function'; + const validFormatString = reFormatTokens.test(inOpts.format); + if ((hasToDisplay && hasToValue) || validFormatString) { + format = config.format = inOpts.format; + } + delete inOpts.format; + } + + //*** pick level ***// + let newPickLevel = pickLevel; + if ('pickLevel' in inOpts) { + newPickLevel = validateViewId(inOpts.pickLevel, pickLevel, 2); + delete inOpts.pickLevel; + } + if (newPickLevel !== pickLevel) { + if (newPickLevel > pickLevel) { + // complement current minDate/madDate so that the existing range will be + // expanded to fit the new level later + if (!('minDate' in inOpts)) { + inOpts.minDate = minDate; + } + if (!('maxDate' in inOpts)) { + inOpts.maxDate = maxDate; + } + } + // complement datesDisabled so that it will be reset later + if (datesDisabled && !inOpts.datesDisabled) { + inOpts.datesDisabled = []; + } + pickLevel = config.pickLevel = newPickLevel; + } + + //*** dates ***// + // while min and maxDate for "no limit" in the options are better to be null + // (especially when updating), the ones in the config have to be undefined + // because null is treated as 0 (= unix epoch) when comparing with time value + let minDt = minDate; + let maxDt = maxDate; + if ('minDate' in inOpts) { + const defaultMinDt = dateValue(0, 0, 1); + minDt = inOpts.minDate === null + ? defaultMinDt // set 0000-01-01 to prevent negative values for year + : validateDate(inOpts.minDate, format, locale, minDt); + if (minDt !== defaultMinDt) { + minDt = regularizeDate(minDt, pickLevel, false); + } + delete inOpts.minDate; + } + if ('maxDate' in inOpts) { + maxDt = inOpts.maxDate === null + ? undefined + : validateDate(inOpts.maxDate, format, locale, maxDt); + if (maxDt !== undefined) { + maxDt = regularizeDate(maxDt, pickLevel, true); + } + delete inOpts.maxDate; + } + if (maxDt < minDt) { + minDate = config.minDate = maxDt; + maxDate = config.maxDate = minDt; + } else { + if (minDate !== minDt) { + minDate = config.minDate = minDt; + } + if (maxDate !== maxDt) { + maxDate = config.maxDate = maxDt; + } + } + + if (inOpts.datesDisabled) { + const dtsDisabled = inOpts.datesDisabled; + if (typeof dtsDisabled === 'function') { + config.datesDisabled = null; + config.checkDisabled = (timeValue, viewId) => dtsDisabled( + new Date(timeValue), + viewId, + rangeEnd + ); + } else { + const disabled = config.datesDisabled = dtsDisabled.reduce((dates, dt) => { + const date = parseDate(dt, format, locale); + return date !== undefined + ? pushUnique(dates, regularizeDate(date, pickLevel, rangeEnd)) + : dates; + }, []); + config.checkDisabled = timeValue => disabled.includes(timeValue); + } + delete inOpts.datesDisabled; + } + if ('defaultViewDate' in inOpts) { + const viewDate = parseDate(inOpts.defaultViewDate, format, locale); + if (viewDate !== undefined) { + config.defaultViewDate = viewDate; + } + delete inOpts.defaultViewDate; + } + + //*** days of week ***// + if ('weekStart' in inOpts) { + const wkStart = Number(inOpts.weekStart) % 7; + if (!isNaN(wkStart)) { + weekStart = updateWeekStart(wkStart, config, weekNumbers); + } + delete inOpts.weekStart; + } + if (inOpts.daysOfWeekDisabled) { + config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []); + delete inOpts.daysOfWeekDisabled; + } + if (inOpts.daysOfWeekHighlighted) { + config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []); + delete inOpts.daysOfWeekHighlighted; + } + + //*** week numbers ***// + if ('weekNumbers' in inOpts) { + let method = inOpts.weekNumbers; + if (method) { + const getWeekNumber = typeof method === 'function' + ? (timeValue, startOfWeek) => method(new Date(timeValue), startOfWeek) + : determineGetWeekMethod((method = parseInt(method, 10)), weekStart); + if (getWeekNumber) { + weekNumbers = config.weekNumbers = method; + config.getWeekNumber = getWeekNumber; + } + } else { + weekNumbers = config.weekNumbers = 0; + config.getWeekNumber = null; + } + delete inOpts.weekNumbers; + } + + //*** multi date ***// + if ('maxNumberOfDates' in inOpts) { + const maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10); + if (maxNumberOfDates >= 0) { + config.maxNumberOfDates = maxNumberOfDates; + config.multidate = maxNumberOfDates !== 1; + } + delete inOpts.maxNumberOfDates; + } + if (inOpts.dateDelimiter) { + config.dateDelimiter = String(inOpts.dateDelimiter); + delete inOpts.dateDelimiter; + } + + //*** view ***// + let newMaxView = maxView; + if ('maxView' in inOpts) { + newMaxView = validateViewId(inOpts.maxView, maxView); + delete inOpts.maxView; + } + // ensure max view >= pick level + newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView; + if (newMaxView !== maxView) { + maxView = config.maxView = newMaxView; + } + + let newStartView = startView; + if ('startView' in inOpts) { + newStartView = validateViewId(inOpts.startView, newStartView); + delete inOpts.startView; + } + // ensure pick level <= start view <= max view + if (newStartView < pickLevel) { + newStartView = pickLevel; + } else if (newStartView > maxView) { + newStartView = maxView; + } + if (newStartView !== startView) { + config.startView = newStartView; + } + + //*** template ***// + if (inOpts.prevArrow) { + const prevArrow = parseHTML(inOpts.prevArrow); + if (prevArrow.childNodes.length > 0) { + config.prevArrow = prevArrow.childNodes; + } + delete inOpts.prevArrow; + } + if (inOpts.nextArrow) { + const nextArrow = parseHTML(inOpts.nextArrow); + if (nextArrow.childNodes.length > 0) { + config.nextArrow = nextArrow.childNodes; + } + delete inOpts.nextArrow; + } + + //*** misc ***// + if ('disableTouchKeyboard' in inOpts) { + config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard; + delete inOpts.disableTouchKeyboard; + } + if (inOpts.orientation) { + const orientation = inOpts.orientation.toLowerCase().split(/\s+/g); + config.orientation = { + x: orientation.find(x => (x === 'left' || x === 'right')) || 'auto', + y: orientation.find(y => (y === 'top' || y === 'bottom')) || 'auto', + }; + delete inOpts.orientation; + } + if ('todayButtonMode' in inOpts) { + switch(inOpts.todayButtonMode) { + case 0: + case 1: + config.todayButtonMode = inOpts.todayButtonMode; + } + delete inOpts.todayButtonMode; + } + + //*** copy the rest ***// + Object.entries(inOpts).forEach(([key, value]) => { + if (value !== undefined && key in defaultOptions) { + config[key] = value; + } + }); + + return config; + } + + const defaultShortcutKeys = { + show: {key: 'ArrowDown'}, + hide: null, + toggle: {key: 'Escape'}, + prevButton: {key: 'ArrowLeft', ctrlOrMetaKey: true}, + nextButton: {key: 'ArrowRight', ctrlOrMetaKey: true}, + viewSwitch: {key: 'ArrowUp', ctrlOrMetaKey: true}, + clearButton: {key: 'Backspace', ctrlOrMetaKey: true}, + todayButton: {key: '.', ctrlOrMetaKey: true}, + exitEditMode: {key: 'ArrowDown', ctrlOrMetaKey: true}, + }; + + function createShortcutKeyConfig(options) { + return Object.keys(defaultShortcutKeys).reduce((keyDefs, shortcut) => { + const keyDef = options[shortcut] === undefined + ? defaultShortcutKeys[shortcut] + : options[shortcut]; + const key = keyDef && keyDef.key; + if (!key || typeof key !== 'string') { + return keyDefs; + } + + const normalizedDef = { + key, + ctrlOrMetaKey: !!(keyDef.ctrlOrMetaKey || keyDef.ctrlKey || keyDef.metaKey), + }; + if (key.length > 1) { + normalizedDef.altKey = !!keyDef.altKey; + normalizedDef.shiftKey = !!keyDef.shiftKey; + } + keyDefs[shortcut] = normalizedDef; + return keyDefs; + }, {}); + } + + const getButtons = buttonList => buttonList + .map(classes => ``) + .join(''); + + const pickerTemplate = optimizeTemplateHTML(`
+
+
+
+
+ ${getButtons([ + 'prev-button prev-btn', + 'view-switch', + 'next-button next-btn', + ])} +
+
+
+ +
+
`); + + const daysTemplate = optimizeTemplateHTML(`
+
${createTagRepeat('span', 7, {class: 'dow'})}
+
${createTagRepeat('span', 42)}
+
`); + + const weekNumbersTemplate = optimizeTemplateHTML(`
+
+
${createTagRepeat('span', 6, {class: 'week'})}
+
`); + + // Base class of the view classes + class View { + constructor(picker, config) { + Object.assign(this, config, { + picker, + element: parseHTML(`
`).firstChild, + selected: [], + isRangeEnd: !!picker.datepicker.rangeSideIndex, + }); + this.init(this.picker.datepicker.config); + } + + init(options) { + if ('pickLevel' in options) { + this.isMinView = this.id === options.pickLevel; + } + this.setOptions(options); + this.updateFocus(); + this.updateSelection(); + } + + prepareForRender(switchLabel, prevButtonDisabled, nextButtonDisabled) { + // refresh disabled years on every render in order to clear the ones added + // by beforeShow hook at previous render + this.disabled = []; + + const picker = this.picker; + picker.setViewSwitchLabel(switchLabel); + picker.setPrevButtonDisabled(prevButtonDisabled); + picker.setNextButtonDisabled(nextButtonDisabled); + } + + setDisabled(date, classList) { + classList.add('disabled'); + pushUnique(this.disabled, date); + } + + // Execute beforeShow() callback and apply the result to the element + // args: + performBeforeHook(el, timeValue) { + let result = this.beforeShow(new Date(timeValue)); + switch (typeof result) { + case 'boolean': + result = {enabled: result}; + break; + case 'string': + result = {classes: result}; + } + + if (result) { + const classList = el.classList; + if (result.enabled === false) { + this.setDisabled(timeValue, classList); + } + if (result.classes) { + const extraClasses = result.classes.split(/\s+/); + classList.add(...extraClasses); + if (extraClasses.includes('disabled')) { + this.setDisabled(timeValue, classList); + } + } + if (result.content) { + replaceChildNodes(el, result.content); + } + } + } + + renderCell(el, content, cellVal, date, {selected, range}, outOfScope, extraClasses = []) { + el.textContent = content; + if (this.isMinView) { + el.dataset.date = date; + } + + const classList = el.classList; + el.className = `datepicker-cell ${this.cellClass}`; + if (cellVal < this.first) { + classList.add('prev'); + } else if (cellVal > this.last) { + classList.add('next'); + } + classList.add(...extraClasses); + if (outOfScope || this.checkDisabled(date, this.id)) { + this.setDisabled(date, classList); + } + if (range) { + const [rangeStart, rangeEnd] = range; + if (cellVal > rangeStart && cellVal < rangeEnd) { + classList.add('range'); + } + if (cellVal === rangeStart) { + classList.add('range-start'); + } + if (cellVal === rangeEnd) { + classList.add('range-end'); + } + } + if (selected.includes(cellVal)) { + classList.add('selected'); + } + if (cellVal === this.focused) { + classList.add('focused'); + } + + if (this.beforeShow) { + this.performBeforeHook(el, date); + } + } + + refreshCell(el, cellVal, selected, [rangeStart, rangeEnd]) { + const classList = el.classList; + classList.remove('range', 'range-start', 'range-end', 'selected', 'focused'); + if (cellVal > rangeStart && cellVal < rangeEnd) { + classList.add('range'); + } + if (cellVal === rangeStart) { + classList.add('range-start'); + } + if (cellVal === rangeEnd) { + classList.add('range-end'); + } + if (selected.includes(cellVal)) { + classList.add('selected'); + } + if (cellVal === this.focused) { + classList.add('focused'); + } + } + + changeFocusedCell(cellIndex) { + this.grid.querySelectorAll('.focused').forEach((el) => { + el.classList.remove('focused'); + }); + this.grid.children[cellIndex].classList.add('focused'); + } + } + + class DaysView extends View { + constructor(picker) { + super(picker, { + id: 0, + name: 'days', + cellClass: 'day', + }); + } + + init(options, onConstruction = true) { + if (onConstruction) { + const inner = parseHTML(daysTemplate).firstChild; + this.dow = inner.firstChild; + this.grid = inner.lastChild; + this.element.appendChild(inner); + } + super.init(options); + } + + setOptions(options) { + let updateDOW; + + if ('minDate' in options) { + this.minDate = options.minDate; + } + if ('maxDate' in options) { + this.maxDate = options.maxDate; + } + if (options.checkDisabled) { + this.checkDisabled = options.checkDisabled; + } + if (options.daysOfWeekDisabled) { + this.daysOfWeekDisabled = options.daysOfWeekDisabled; + updateDOW = true; + } + if (options.daysOfWeekHighlighted) { + this.daysOfWeekHighlighted = options.daysOfWeekHighlighted; + } + if ('todayHighlight' in options) { + this.todayHighlight = options.todayHighlight; + } + if ('weekStart' in options) { + this.weekStart = options.weekStart; + this.weekEnd = options.weekEnd; + updateDOW = true; + } + if (options.locale) { + const locale = this.locale = options.locale; + this.dayNames = locale.daysMin; + this.switchLabelFormat = locale.titleFormat; + updateDOW = true; + } + if ('beforeShowDay' in options) { + this.beforeShow = typeof options.beforeShowDay === 'function' + ? options.beforeShowDay + : undefined; + } + + if ('weekNumbers' in options) { + if (options.weekNumbers && !this.weekNumbers) { + const weeksElem = parseHTML(weekNumbersTemplate).firstChild; + this.weekNumbers = { + element: weeksElem, + dow: weeksElem.firstChild, + weeks: weeksElem.lastChild, + }; + this.element.insertBefore(weeksElem, this.element.firstChild); + } else if (this.weekNumbers && !options.weekNumbers) { + this.element.removeChild(this.weekNumbers.element); + this.weekNumbers = null; + } + } + + if ('getWeekNumber' in options) { + this.getWeekNumber = options.getWeekNumber; + } + + if ('showDaysOfWeek' in options) { + if (options.showDaysOfWeek) { + showElement(this.dow); + if (this.weekNumbers) { + showElement(this.weekNumbers.dow); + } + } else { + hideElement(this.dow); + if (this.weekNumbers) { + hideElement(this.weekNumbers.dow); + } + } + } + + // update days-of-week when locale, daysOfweekDisabled or weekStart is changed + if (updateDOW) { + Array.from(this.dow.children).forEach((el, index) => { + const dow = (this.weekStart + index) % 7; + el.textContent = this.dayNames[dow]; + el.className = this.daysOfWeekDisabled.includes(dow) ? 'dow disabled' : 'dow'; + }); + } + } + + // Apply update on the focused date to view's settings + updateFocus() { + const viewDate = new Date(this.picker.viewDate); + const viewYear = viewDate.getFullYear(); + const viewMonth = viewDate.getMonth(); + const firstOfMonth = dateValue(viewYear, viewMonth, 1); + const start = dayOfTheWeekOf(firstOfMonth, this.weekStart, this.weekStart); + + this.first = firstOfMonth; + this.last = dateValue(viewYear, viewMonth + 1, 0); + this.start = start; + this.focused = this.picker.viewDate; + } + + // Apply update on the selected dates to view's settings + updateSelection() { + const {dates, rangepicker} = this.picker.datepicker; + this.selected = dates; + if (rangepicker) { + this.range = rangepicker.dates; + } + } + + // Update the entire view UI + render() { + // update today marker on ever render + this.today = this.todayHighlight ? today() : undefined; + + this.prepareForRender( + formatDate(this.focused, this.switchLabelFormat, this.locale), + this.first <= this.minDate, + this.last >= this.maxDate + ); + + if (this.weekNumbers) { + const weekStart = this.weekStart; + const startOfWeek = dayOfTheWeekOf(this.first, weekStart, weekStart); + Array.from(this.weekNumbers.weeks.children).forEach((el, index) => { + const dateOfWeekStart = addWeeks(startOfWeek, index); + el.textContent = this.getWeekNumber(dateOfWeekStart, weekStart); + if (index > 3) { + el.classList[dateOfWeekStart > this.last ? 'add' : 'remove']('next'); + } + }); + } + Array.from(this.grid.children).forEach((el, index) => { + const current = addDays(this.start, index); + const dateObj = new Date(current); + const day = dateObj.getDay(); + const extraClasses = []; + + if (this.today === current) { + extraClasses.push('today'); + } + if (this.daysOfWeekHighlighted.includes(day)) { + extraClasses.push('highlighted'); + } + + this.renderCell( + el, + dateObj.getDate(), + current, + current, + this, + current < this.minDate + || current > this.maxDate + || this.daysOfWeekDisabled.includes(day), + extraClasses + ); + }); + } + + // Update the view UI by applying the changes of selected and focused items + refresh() { + const range = this.range || []; + Array.from(this.grid.children).forEach((el) => { + this.refreshCell(el, Number(el.dataset.date), this.selected, range); + }); + } + + // Update the view UI by applying the change of focused item + refreshFocus() { + this.changeFocusedCell(Math.round((this.focused - this.start) / 86400000)); + } + } + + function computeMonthRange(range, thisYear) { + if (!range || !range[0] || !range[1]) { + return; + } + + const [[startY, startM], [endY, endM]] = range; + if (startY > thisYear || endY < thisYear) { + return; + } + return [ + startY === thisYear ? startM : -1, + endY === thisYear ? endM : 12, + ]; + } + + class MonthsView extends View { + constructor(picker) { + super(picker, { + id: 1, + name: 'months', + cellClass: 'month', + }); + } + + init(options, onConstruction = true) { + if (onConstruction) { + this.grid = this.element; + this.element.classList.add('months', 'datepicker-grid'); + this.grid.appendChild(parseHTML(createTagRepeat('span', 12, {'data-month': ix => ix}))); + this.first = 0; + this.last = 11; + } + super.init(options); + } + + setOptions(options) { + if (options.locale) { + this.monthNames = options.locale.monthsShort; + } + if ('minDate' in options) { + if (options.minDate === undefined) { + this.minYear = this.minMonth = this.minDate = undefined; + } else { + const minDateObj = new Date(options.minDate); + this.minYear = minDateObj.getFullYear(); + this.minMonth = minDateObj.getMonth(); + this.minDate = minDateObj.setDate(1); + } + } + if ('maxDate' in options) { + if (options.maxDate === undefined) { + this.maxYear = this.maxMonth = this.maxDate = undefined; + } else { + const maxDateObj = new Date(options.maxDate); + this.maxYear = maxDateObj.getFullYear(); + this.maxMonth = maxDateObj.getMonth(); + this.maxDate = dateValue(this.maxYear, this.maxMonth + 1, 0); + } + } + if (options.checkDisabled) { + this.checkDisabled = this.isMinView || options.datesDisabled === null + ? options.checkDisabled + : () => false; + } + if ('beforeShowMonth' in options) { + this.beforeShow = typeof options.beforeShowMonth === 'function' + ? options.beforeShowMonth + : undefined; + } + } + + // Update view's settings to reflect the viewDate set on the picker + updateFocus() { + const viewDate = new Date(this.picker.viewDate); + this.year = viewDate.getFullYear(); + this.focused = viewDate.getMonth(); + } + + // Update view's settings to reflect the selected dates + updateSelection() { + const {dates, rangepicker} = this.picker.datepicker; + this.selected = dates.reduce((selected, timeValue) => { + const date = new Date(timeValue); + const year = date.getFullYear(); + const month = date.getMonth(); + if (selected[year] === undefined) { + selected[year] = [month]; + } else { + pushUnique(selected[year], month); + } + return selected; + }, {}); + if (rangepicker && rangepicker.dates) { + this.range = rangepicker.dates.map(timeValue => { + const date = new Date(timeValue); + return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()]; + }); + } + } + + // Update the entire view UI + render() { + this.prepareForRender( + this.year, + this.year <= this.minYear, + this.year >= this.maxYear + ); + + const selected = this.selected[this.year] || []; + const yrOutOfRange = this.year < this.minYear || this.year > this.maxYear; + const isMinYear = this.year === this.minYear; + const isMaxYear = this.year === this.maxYear; + const range = computeMonthRange(this.range, this.year); + + Array.from(this.grid.children).forEach((el, index) => { + const date = regularizeDate(new Date(this.year, index, 1), 1, this.isRangeEnd); + + this.renderCell( + el, + this.monthNames[index], + index, + date, + {selected, range}, + yrOutOfRange + || isMinYear && index < this.minMonth + || isMaxYear && index > this.maxMonth + ); + }); + } + + // Update the view UI by applying the changes of selected and focused items + refresh() { + const selected = this.selected[this.year] || []; + const range = computeMonthRange(this.range, this.year) || []; + Array.from(this.grid.children).forEach((el, index) => { + this.refreshCell(el, index, selected, range); + }); + } + + // Update the view UI by applying the change of focused item + refreshFocus() { + this.changeFocusedCell(this.focused); + } + } + + function toTitleCase(word) { + return [...word].reduce((str, ch, ix) => str += ix ? ch : ch.toUpperCase(), ''); + } + + // Class representing the years and decades view elements + class YearsView extends View { + constructor(picker, config) { + super(picker, config); + } + + init(options, onConstruction = true) { + if (onConstruction) { + this.navStep = this.step * 10; + this.beforeShowOption = `beforeShow${toTitleCase(this.cellClass)}`; + this.grid = this.element; + this.element.classList.add(this.name, 'datepicker-grid'); + this.grid.appendChild(parseHTML(createTagRepeat('span', 12))); + } + super.init(options); + } + + setOptions(options) { + if ('minDate' in options) { + if (options.minDate === undefined) { + this.minYear = this.minDate = undefined; + } else { + this.minYear = startOfYearPeriod(options.minDate, this.step); + this.minDate = dateValue(this.minYear, 0, 1); + } + } + if ('maxDate' in options) { + if (options.maxDate === undefined) { + this.maxYear = this.maxDate = undefined; + } else { + this.maxYear = startOfYearPeriod(options.maxDate, this.step); + this.maxDate = dateValue(this.maxYear, 11, 31); + } + } + if (options.checkDisabled) { + this.checkDisabled = this.isMinView || options.datesDisabled === null + ? options.checkDisabled + : () => false; + } + if (this.beforeShowOption in options) { + const beforeShow = options[this.beforeShowOption]; + this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined; + } + } + + // Update view's settings to reflect the viewDate set on the picker + updateFocus() { + const viewDate = new Date(this.picker.viewDate); + const first = startOfYearPeriod(viewDate, this.navStep); + const last = first + 9 * this.step; + + this.first = first; + this.last = last; + this.start = first - this.step; + this.focused = startOfYearPeriod(viewDate, this.step); + } + + // Update view's settings to reflect the selected dates + updateSelection() { + const {dates, rangepicker} = this.picker.datepicker; + this.selected = dates.reduce((years, timeValue) => { + return pushUnique(years, startOfYearPeriod(timeValue, this.step)); + }, []); + if (rangepicker && rangepicker.dates) { + this.range = rangepicker.dates.map(timeValue => { + if (timeValue !== undefined) { + return startOfYearPeriod(timeValue, this.step); + } + }); + } + } + + // Update the entire view UI + render() { + this.prepareForRender( + `${this.first}-${this.last}`, + this.first <= this.minYear, + this.last >= this.maxYear + ); + + Array.from(this.grid.children).forEach((el, index) => { + const current = this.start + (index * this.step); + const date = regularizeDate(new Date(current, 0, 1), 2, this.isRangeEnd); + + el.dataset.year = current; + this.renderCell( + el, + current, + current, + date, + this, + current < this.minYear || current > this.maxYear + ); + }); + } + + // Update the view UI by applying the changes of selected and focused items + refresh() { + const range = this.range || []; + Array.from(this.grid.children).forEach((el) => { + this.refreshCell(el, Number(el.textContent), this.selected, range); + }); + } + + // Update the view UI by applying the change of focused item + refreshFocus() { + this.changeFocusedCell(Math.round((this.focused - this.start) / this.step)); + } + } + + function triggerDatepickerEvent(datepicker, type) { + const options = { + bubbles: true, + cancelable: true, + detail: { + date: datepicker.getDate(), + viewDate: new Date(datepicker.picker.viewDate), + viewId: datepicker.picker.currentView.id, + datepicker, + }, + }; + datepicker.element.dispatchEvent(new CustomEvent(type, options)); + } + + // direction: -1 (to previous), 1 (to next) + function goToPrevOrNext(datepicker, direction) { + const {config, picker} = datepicker; + const {currentView, viewDate} = picker; + let newViewDate; + switch (currentView.id) { + case 0: + newViewDate = addMonths(viewDate, direction); + break; + case 1: + newViewDate = addYears(viewDate, direction); + break; + default: + newViewDate = addYears(viewDate, direction * currentView.navStep); + } + newViewDate = limitToRange(newViewDate, config.minDate, config.maxDate); + picker.changeFocus(newViewDate).render(); + } + + function switchView(datepicker) { + const viewId = datepicker.picker.currentView.id; + if (viewId === datepicker.config.maxView) { + return; + } + datepicker.picker.changeView(viewId + 1).render(); + } + + function clearSelection(datepicker) { + datepicker.setDate({clear: true}); + } + + function goToOrSelectToday(datepicker) { + const currentDate = today(); + if (datepicker.config.todayButtonMode === 1) { + datepicker.setDate(currentDate, {forceRefresh: true, viewDate: currentDate}); + } else { + datepicker.setFocusedDate(currentDate, true); + } + } + + function unfocus(datepicker) { + const onBlur = () => { + if (datepicker.config.updateOnBlur) { + datepicker.update({revert: true}); + } else { + datepicker.refresh('input'); + } + datepicker.hide(); + }; + const element = datepicker.element; + + if (isActiveElement(element)) { + element.addEventListener('blur', onBlur, {once: true}); + } else { + onBlur(); + } + } + + function goToSelectedMonthOrYear(datepicker, selection) { + const picker = datepicker.picker; + const viewDate = new Date(picker.viewDate); + const viewId = picker.currentView.id; + const newDate = viewId === 1 + ? addMonths(viewDate, selection - viewDate.getMonth()) + : addYears(viewDate, selection - viewDate.getFullYear()); + + picker.changeFocus(newDate).changeView(viewId - 1).render(); + } + + function onClickViewSwitch(datepicker) { + switchView(datepicker); + } + + function onClickPrevButton(datepicker) { + goToPrevOrNext(datepicker, -1); + } + + function onClickNextButton(datepicker) { + goToPrevOrNext(datepicker, 1); + } + + // For the picker's main block to delegete the events from `datepicker-cell`s + function onClickView(datepicker, ev) { + const target = findElementInEventPath(ev, '.datepicker-cell'); + if (!target || target.classList.contains('disabled')) { + return; + } + + const {id, isMinView} = datepicker.picker.currentView; + const data = target.dataset; + if (isMinView) { + datepicker.setDate(Number(data.date)); + } else if (id === 1) { + goToSelectedMonthOrYear(datepicker, Number(data.month)); + } else { + goToSelectedMonthOrYear(datepicker, Number(data.year)); + } + } + + function onMousedownPicker(ev) { + ev.preventDefault(); + } + + const orientClasses = ['left', 'top', 'right', 'bottom'].reduce((obj, key) => { + obj[key] = `datepicker-orient-${key}`; + return obj; + }, {}); + const toPx = num => num ? `${num}px` : num; + + function processPickerOptions(picker, options) { + if ('title' in options) { + if (options.title) { + picker.controls.title.textContent = options.title; + showElement(picker.controls.title); + } else { + picker.controls.title.textContent = ''; + hideElement(picker.controls.title); + } + } + if (options.prevArrow) { + const prevButton = picker.controls.prevButton; + emptyChildNodes(prevButton); + options.prevArrow.forEach((node) => { + prevButton.appendChild(node.cloneNode(true)); + }); + } + if (options.nextArrow) { + const nextButton = picker.controls.nextButton; + emptyChildNodes(nextButton); + options.nextArrow.forEach((node) => { + nextButton.appendChild(node.cloneNode(true)); + }); + } + if (options.locale) { + picker.controls.todayButton.textContent = options.locale.today; + picker.controls.clearButton.textContent = options.locale.clear; + } + if ('todayButton' in options) { + if (options.todayButton) { + showElement(picker.controls.todayButton); + } else { + hideElement(picker.controls.todayButton); + } + } + if ('minDate' in options || 'maxDate' in options) { + const {minDate, maxDate} = picker.datepicker.config; + picker.controls.todayButton.disabled = !isInRange(today(), minDate, maxDate); + } + if ('clearButton' in options) { + if (options.clearButton) { + showElement(picker.controls.clearButton); + } else { + hideElement(picker.controls.clearButton); + } + } + } + + // Compute view date to reset, which will be... + // - the last item of the selected dates or defaultViewDate if no selection + // - limitted to minDate or maxDate if it exceeds the range + function computeResetViewDate(datepicker) { + const {dates, config, rangeSideIndex} = datepicker; + const viewDate = dates.length > 0 + ? lastItemOf(dates) + : regularizeDate(config.defaultViewDate, config.pickLevel, rangeSideIndex); + return limitToRange(viewDate, config.minDate, config.maxDate); + } + + // Change current view's view date + function setViewDate(picker, newDate) { + if (!('_oldViewDate' in picker) && newDate !== picker.viewDate) { + picker._oldViewDate = picker.viewDate; + } + picker.viewDate = newDate; + + // return whether the new date is in different period on time from the one + // displayed in the current view + // when true, the view needs to be re-rendered on the next UI refresh. + const {id, year, first, last} = picker.currentView; + const viewYear = new Date(newDate).getFullYear(); + switch (id) { + case 0: + return newDate < first || newDate > last; + case 1: + return viewYear !== year; + default: + return viewYear < first || viewYear > last; + } + } + + function getTextDirection(el) { + return window.getComputedStyle(el).direction; + } + + // find the closet scrollable ancestor elemnt under the body + function findScrollParents(el) { + const parent = getParent(el); + if (parent === document.body || !parent) { + return; + } + + // checking overflow only is enough because computed overflow cannot be + // visible or a combination of visible and other when either axis is set + // to other than visible. + // (Setting one axis to other than 'visible' while the other is 'visible' + // results in the other axis turning to 'auto') + return window.getComputedStyle(parent).overflow !== 'visible' + ? parent + : findScrollParents(parent); + } + + // Class representing the picker UI + class Picker { + constructor(datepicker) { + const {config, inputField} = this.datepicker = datepicker; + + const template = pickerTemplate.replace(/%buttonClass%/g, config.buttonClass); + const element = this.element = parseHTML(template).firstChild; + const [header, main, footer] = element.firstChild.children; + const title = header.firstElementChild; + const [prevButton, viewSwitch, nextButton] = header.lastElementChild.children; + const [todayButton, clearButton] = footer.firstChild.children; + const controls = { + title, + prevButton, + viewSwitch, + nextButton, + todayButton, + clearButton, + }; + this.main = main; + this.controls = controls; + + const elementClass = inputField ? 'dropdown' : 'inline'; + element.classList.add(`datepicker-${elementClass}`); + + processPickerOptions(this, config); + this.viewDate = computeResetViewDate(datepicker); + + // set up event listeners + registerListeners(datepicker, [ + [element, 'mousedown', onMousedownPicker], + [main, 'click', onClickView.bind(null, datepicker)], + [controls.viewSwitch, 'click', onClickViewSwitch.bind(null, datepicker)], + [controls.prevButton, 'click', onClickPrevButton.bind(null, datepicker)], + [controls.nextButton, 'click', onClickNextButton.bind(null, datepicker)], + [controls.todayButton, 'click', goToOrSelectToday.bind(null, datepicker)], + [controls.clearButton, 'click', clearSelection.bind(null, datepicker)], + ]); + + // set up views + this.views = [ + new DaysView(this), + new MonthsView(this), + new YearsView(this, {id: 2, name: 'years', cellClass: 'year', step: 1}), + new YearsView(this, {id: 3, name: 'decades', cellClass: 'decade', step: 10}), + ]; + this.currentView = this.views[config.startView]; + + this.currentView.render(); + this.main.appendChild(this.currentView.element); + if (config.container) { + config.container.appendChild(this.element); + } else { + inputField.after(this.element); + } + } + + setOptions(options) { + processPickerOptions(this, options); + this.views.forEach((view) => { + view.init(options, false); + }); + this.currentView.render(); + } + + detach() { + this.element.remove(); + } + + show() { + if (this.active) { + return; + } + + const {datepicker, element} = this; + const inputField = datepicker.inputField; + if (inputField) { + // ensure picker's direction matches input's + const inputDirection = getTextDirection(inputField); + if (inputDirection !== getTextDirection(getParent(element))) { + element.dir = inputDirection; + } else if (element.dir) { + element.removeAttribute('dir'); + } + + // Determine the picker's position first to prevent `orientation: 'auto'` + // from being miscalculated to 'bottom' after the picker temporarily + // shown below the input field expands the document height if the field + // is at the bottom edge of the document + this.place(); + element.classList.add('active'); + + if (datepicker.config.disableTouchKeyboard) { + inputField.blur(); + } + } else { + element.classList.add('active'); + } + this.active = true; + triggerDatepickerEvent(datepicker, 'show'); + } + + hide() { + if (!this.active) { + return; + } + this.datepicker.exitEditMode(); + this.element.classList.remove('active'); + this.active = false; + triggerDatepickerEvent(this.datepicker, 'hide'); + } + + place() { + const {classList, style} = this.element; + // temporarily display the picker to get its size and offset parent + style.display = 'block'; + + const { + width: calendarWidth, + height: calendarHeight, + } = this.element.getBoundingClientRect(); + const offsetParent = this.element.offsetParent; + // turn the picker back to hidden so that the position is determined with + // the state before it is shown. + style.display = ''; + + const {config, inputField} = this.datepicker; + const { + left: inputLeft, + top: inputTop, + right: inputRight, + bottom: inputBottom, + width: inputWidth, + height: inputHeight + } = inputField.getBoundingClientRect(); + let {x: orientX, y: orientY} = config.orientation; + let left = inputLeft; + let top = inputTop; + + // caliculate offsetLeft/Top of inputField + if (offsetParent === document.body || !offsetParent) { + left += window.scrollX; + top += window.scrollY; + } else { + const offsetParentRect = offsetParent.getBoundingClientRect(); + left -= offsetParentRect.left - offsetParent.scrollLeft; + top -= offsetParentRect.top - offsetParent.scrollTop; + } + + // caliculate the boundaries of the visible area that contains inputField + const scrollParent = findScrollParents(inputField); + let scrollAreaLeft = 0; + let scrollAreaTop = 0; + let { + clientWidth: scrollAreaRight, + clientHeight: scrollAreaBottom, + } = document.documentElement; + + if (scrollParent) { + const scrollParentRect = scrollParent.getBoundingClientRect(); + if (scrollParentRect.top > 0) { + scrollAreaTop = scrollParentRect.top; + } + if (scrollParentRect.left > 0) { + scrollAreaLeft = scrollParentRect.left; + } + if (scrollParentRect.right < scrollAreaRight) { + scrollAreaRight = scrollParentRect.right; + } + if (scrollParentRect.bottom < scrollAreaBottom) { + scrollAreaBottom = scrollParentRect.bottom; + } + } + + // determine the horizontal orientation and left position + let adjustment = 0; + if (orientX === 'auto') { + if (inputLeft < scrollAreaLeft) { + orientX = 'left'; + adjustment = scrollAreaLeft - inputLeft; + } else if (inputLeft + calendarWidth > scrollAreaRight) { + orientX = 'right'; + if (scrollAreaRight < inputRight) { + adjustment = scrollAreaRight - inputRight; + } + } else if (getTextDirection(inputField) === 'rtl') { + orientX = inputRight - calendarWidth < scrollAreaLeft ? 'left' : 'right'; + } else { + orientX = 'left'; + } + } + if (orientX === 'right') { + left += inputWidth - calendarWidth; + } + left += adjustment; + + // determine the vertical orientation and top position + if (orientY === 'auto') { + if (inputTop - calendarHeight > scrollAreaTop) { + orientY = inputBottom + calendarHeight > scrollAreaBottom ? 'top' : 'bottom'; + } else { + orientY = 'bottom'; + } + } + if (orientY === 'top') { + top -= calendarHeight; + } else { + top += inputHeight; + } + + classList.remove(...Object.values(orientClasses)); + classList.add(orientClasses[orientX], orientClasses[orientY]); + + style.left = toPx(left); + style.top = toPx(top); + } + + setViewSwitchLabel(labelText) { + this.controls.viewSwitch.textContent = labelText; + } + + setPrevButtonDisabled(disabled) { + this.controls.prevButton.disabled = disabled; + } + + setNextButtonDisabled(disabled) { + this.controls.nextButton.disabled = disabled; + } + + changeView(viewId) { + const currentView = this.currentView; + if (viewId !== currentView.id) { + if (!this._oldView) { + this._oldView = currentView; + } + this.currentView = this.views[viewId]; + this._renderMethod = 'render'; + } + return this; + } + + // Change the focused date (view date) + changeFocus(newViewDate) { + this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus'; + this.views.forEach((view) => { + view.updateFocus(); + }); + return this; + } + + // Apply the change of the selected dates + update(viewDate = undefined) { + const newViewDate = viewDate === undefined + ? computeResetViewDate(this.datepicker) + : viewDate; + this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh'; + this.views.forEach((view) => { + view.updateFocus(); + view.updateSelection(); + }); + return this; + } + + // Refresh the picker UI + render(quickRender = true) { + const {currentView, datepicker, _oldView: oldView} = this; + const oldViewDate = new Date(this._oldViewDate); + const renderMethod = (quickRender && this._renderMethod) || 'render'; + delete this._oldView; + delete this._oldViewDate; + delete this._renderMethod; + + currentView[renderMethod](); + if (oldView) { + this.main.replaceChild(currentView.element, oldView.element); + triggerDatepickerEvent(datepicker, 'changeView'); + } + if (!isNaN(oldViewDate)) { + const newViewDate = new Date(this.viewDate); + if (newViewDate.getFullYear() !== oldViewDate.getFullYear()) { + triggerDatepickerEvent(datepicker, 'changeYear'); + } + if (newViewDate.getMonth() !== oldViewDate.getMonth()) { + triggerDatepickerEvent(datepicker, 'changeMonth'); + } + } + } + } + + // Find the closest date that doesn't meet the condition for unavailable date + // Returns undefined if no available date is found + // addFn: function to calculate the next date + // - args: time value, amount + // increase: amount to pass to addFn + // testFn: function to test the unavailability of the date + // - args: time value; return: true if unavailable + function findNextAvailableOne(date, addFn, increase, testFn, min, max) { + if (!isInRange(date, min, max)) { + return; + } + if (testFn(date)) { + const newDate = addFn(date, increase); + return findNextAvailableOne(newDate, addFn, increase, testFn, min, max); + } + return date; + } + + // direction: -1 (left/up), 1 (right/down) + // vertical: true for up/down, false for left/right + function moveByArrowKey(datepicker, direction, vertical) { + const picker = datepicker.picker; + const currentView = picker.currentView; + const step = currentView.step || 1; + let viewDate = picker.viewDate; + let addFn; + switch (currentView.id) { + case 0: + viewDate = addDays(viewDate, vertical ? direction * 7 : direction); + addFn = addDays; + break; + case 1: + viewDate = addMonths(viewDate, vertical ? direction * 4 : direction); + addFn = addMonths; + break; + default: + viewDate = addYears(viewDate, direction * (vertical ? 4 : 1) * step); + addFn = addYears; + } + viewDate = findNextAvailableOne( + viewDate, + addFn, + direction < 0 ? -step : step, + (date) => currentView.disabled.includes(date), + currentView.minDate, + currentView.maxDate + ); + if (viewDate !== undefined) { + picker.changeFocus(viewDate).render(); + } + } + + function onKeydown(datepicker, ev) { + const {config, picker, editMode} = datepicker; + const active = picker.active; + const {key, altKey, shiftKey} = ev; + const ctrlOrMetaKey = ev.ctrlKey || ev.metaKey; + const cancelEvent = () => { + ev.preventDefault(); + ev.stopPropagation(); + }; + + // tab/enter keys should not be taken by shortcut keys + if (key === 'Tab') { + unfocus(datepicker); + return; + } + if (key === 'Enter') { + if (!active) { + datepicker.update(); + } else if (editMode) { + datepicker.exitEditMode({update: true, autohide: config.autohide}); + } else { + const currentView = picker.currentView; + if (currentView.isMinView) { + datepicker.setDate(picker.viewDate); + } else { + picker.changeView(currentView.id - 1).render(); + cancelEvent(); + } + } + return; + } + + const shortcutKeys = config.shortcutKeys; + const keyInfo = {key, ctrlOrMetaKey, altKey, shiftKey}; + const shortcut = Object.keys(shortcutKeys).find((item) => { + const keyDef = shortcutKeys[item]; + return !Object.keys(keyDef).find(prop => keyDef[prop] !== keyInfo[prop]); + }); + if (shortcut) { + let action; + if (shortcut === 'toggle') { + action = shortcut; + } else if (editMode) { + if (shortcut === 'exitEditMode') { + action = shortcut; + } + } else if (active) { + if (shortcut === 'hide') { + action = shortcut; + } else if (shortcut === 'prevButton') { + action = [goToPrevOrNext, [datepicker, -1]]; + } else if (shortcut === 'nextButton') { + action = [goToPrevOrNext, [datepicker, 1]]; + } else if (shortcut === 'viewSwitch') { + action = [switchView, [datepicker]]; + } else if (config.clearButton && shortcut === 'clearButton') { + action = [clearSelection, [datepicker]]; + } else if (config.todayButton && shortcut === 'todayButton') { + action = [goToOrSelectToday, [datepicker]]; + } + } else if (shortcut === 'show') { + action = shortcut; + } + if (action) { + if (Array.isArray(action)) { + action[0].apply(null, action[1]); + } else { + datepicker[action](); + } + cancelEvent(); + return; + } + } + + // perform as a regular when picker in hidden or in edit mode + if (!active || editMode) { + return; + } + + const handleArrowKeyPress = (direction, vertical) => { + if (shiftKey || ctrlOrMetaKey || altKey) { + datepicker.enterEditMode(); + } else { + moveByArrowKey(datepicker, direction, vertical); + ev.preventDefault(); + } + }; + + if (key === 'ArrowLeft') { + handleArrowKeyPress(-1, false); + } else if (key === 'ArrowRight') { + handleArrowKeyPress(1, false); + } else if (key === 'ArrowUp') { + handleArrowKeyPress(-1, true); + } else if (key === 'ArrowDown') { + handleArrowKeyPress(1, true); + } else if ( + key === 'Backspace' + || key === 'Delete' + // When autofill is performed, Chromium-based browsers trigger fake + // keydown/keyup events that don't have the `key` property (on Edge, + // keyup only) in addition to the input event. Therefore, we need to + // check the existence of `key`'s value before checking the length. + // (issue #144) + || (key && key.length === 1 && !ctrlOrMetaKey) + ) { + datepicker.enterEditMode(); + } + } + + function onFocus(datepicker) { + if (datepicker.config.showOnFocus && !datepicker._showing) { + datepicker.show(); + } + } + + // for the prevention for entering edit mode while getting focus on click + function onMousedown(datepicker, ev) { + const el = ev.target; + if (datepicker.picker.active || datepicker.config.showOnClick) { + el._active = isActiveElement(el); + el._clicking = setTimeout(() => { + delete el._active; + delete el._clicking; + }, 2000); + } + } + + function onClickInput(datepicker, ev) { + const el = ev.target; + if (!el._clicking) { + return; + } + clearTimeout(el._clicking); + delete el._clicking; + + if (el._active) { + datepicker.enterEditMode(); + } + delete el._active; + + if (datepicker.config.showOnClick) { + datepicker.show(); + } + } + + function onPaste(datepicker, ev) { + if (ev.clipboardData.types.includes('text/plain')) { + datepicker.enterEditMode(); + } + } + + // for the `document` to delegate the events from outside the picker/input field + function onClickOutside(datepicker, ev) { + const {element, picker} = datepicker; + // check both picker's and input's activeness to make updateOnBlur work in + // the cases where... + // - picker is hidden by ESC key press → input stays focused + // - input is unfocused by closing mobile keyboard → piker is kept shown + if (!picker.active && !isActiveElement(element)) { + return; + } + const pickerElem = picker.element; + if (findElementInEventPath(ev, el => el === element || el === pickerElem)) { + return; + } + unfocus(datepicker); + } + + function stringifyDates(dates, config) { + return dates + .map(dt => formatDate(dt, config.format, config.locale)) + .join(config.dateDelimiter); + } + + // parse input dates and create an array of time values for selection + // returns undefined if there are no valid dates in inputDates + // when origDates (current selection) is passed, the function works to mix + // the input dates into the current selection + function processInputDates(datepicker, inputDates, clear = false) { + if (inputDates.length === 0) { + // empty input is considered valid unless origiDates is passed + return clear ? [] : undefined; + } + + const {config, dates: origDates, rangeSideIndex} = datepicker; + const {pickLevel, maxNumberOfDates} = config; + let newDates = inputDates.reduce((dates, dt) => { + let date = parseDate(dt, config.format, config.locale); + if (date === undefined) { + return dates; + } + // adjust to 1st of the month/Jan 1st of the year + // or to the last day of the monh/Dec 31st of the year if the datepicker + // is the range-end picker of a rangepicker + date = regularizeDate(date, pickLevel, rangeSideIndex); + if ( + isInRange(date, config.minDate, config.maxDate) + && !dates.includes(date) + && !config.checkDisabled(date, pickLevel) + && (pickLevel > 0 || !config.daysOfWeekDisabled.includes(new Date(date).getDay())) + ) { + dates.push(date); + } + return dates; + }, []); + if (newDates.length === 0) { + return; + } + if (config.multidate && !clear) { + // get the synmetric difference between origDates and newDates + newDates = newDates.reduce((dates, date) => { + if (!origDates.includes(date)) { + dates.push(date); + } + return dates; + }, origDates.filter(date => !newDates.includes(date))); + } + // do length check always because user can input multiple dates regardless of the mode + return maxNumberOfDates && newDates.length > maxNumberOfDates + ? newDates.slice(maxNumberOfDates * -1) + : newDates; + } + + // refresh the UI elements + // modes: 1: input only, 2, picker only, 3 both + function refreshUI(datepicker, mode = 3, quickRender = true, viewDate = undefined) { + const {config, picker, inputField} = datepicker; + if (mode & 2) { + const newView = picker.active ? config.pickLevel : config.startView; + picker.update(viewDate).changeView(newView).render(quickRender); + } + if (mode & 1 && inputField) { + inputField.value = stringifyDates(datepicker.dates, config); + } + } + + function setDate(datepicker, inputDates, options) { + const config = datepicker.config; + let {clear, render, autohide, revert, forceRefresh, viewDate} = options; + if (render === undefined) { + render = true; + } + if (!render) { + autohide = forceRefresh = false; + } else if (autohide === undefined) { + autohide = config.autohide; + } + viewDate = parseDate(viewDate, config.format, config.locale); + + const newDates = processInputDates(datepicker, inputDates, clear); + if (!newDates && !revert) { + return; + } + if (newDates && newDates.toString() !== datepicker.dates.toString()) { + datepicker.dates = newDates; + refreshUI(datepicker, render ? 3 : 1, true, viewDate); + triggerDatepickerEvent(datepicker, 'changeDate'); + } else { + refreshUI(datepicker, forceRefresh ? 3 : 1, true, viewDate); + } + + if (autohide) { + datepicker.hide(); + } + } + + function getOutputConverter(datepicker, format) { + return format + ? date => formatDate(date, format, datepicker.config.locale) + : date => new Date(date); + } + + /** + * Class representing a date picker + */ + class Datepicker { + /** + * Create a date picker + * @param {Element} element - element to bind a date picker + * @param {Object} [options] - config options + * @param {DateRangePicker} [rangepicker] - DateRangePicker instance the + * date picker belongs to. Use this only when creating date picker as a part + * of date range picker + */ + constructor(element, options = {}, rangepicker = undefined) { + element.datepicker = this; + this.element = element; + this.dates = []; + + // initialize config + const config = this.config = Object.assign({ + buttonClass: (options.buttonClass && String(options.buttonClass)) || 'button', + container: null, + defaultViewDate: today(), + maxDate: undefined, + minDate: undefined, + }, processOptions(defaultOptions, this)); + + // configure by type + let inputField; + if (element.tagName === 'INPUT') { + inputField = this.inputField = element; + inputField.classList.add('datepicker-input'); + if (options.container) { + // omit string type check because it doesn't guarantee to avoid errors + // (invalid selector string causes abend with sytax error) + config.container = options.container instanceof HTMLElement + ? options.container + : document.querySelector(options.container); + } + } else { + config.container = element; + } + if (rangepicker) { + // check validiry + const index = rangepicker.inputs.indexOf(inputField); + const datepickers = rangepicker.datepickers; + if (index < 0 || index > 1 || !Array.isArray(datepickers)) { + throw Error('Invalid rangepicker object.'); + } + // attach itaelf to the rangepicker here so that processInputDates() can + // determine if this is the range-end picker of the rangepicker while + // setting inital values when pickLevel > 0 + datepickers[index] = this; + this.rangepicker = rangepicker; + this.rangeSideIndex = index; + } + + // set up config + this._options = options; + Object.assign(config, processOptions(options, this)); + config.shortcutKeys = createShortcutKeyConfig(options.shortcutKeys || {}); + + // process initial value + const initialDates = stringToArray( + element.value || element.dataset.date, + config.dateDelimiter + ); + delete element.dataset.date; + const inputDateValues = processInputDates(this, initialDates); + if (inputDateValues && inputDateValues.length > 0) { + this.dates = inputDateValues; + } + if (inputField) { + inputField.value = stringifyDates(this.dates, config); + } + + // set up picekr element + const picker = this.picker = new Picker(this); + + const keydownListener = [element, 'keydown', onKeydown.bind(null, this)]; + if (inputField) { + registerListeners(this, [ + keydownListener, + [inputField, 'focus', onFocus.bind(null, this)], + [inputField, 'mousedown', onMousedown.bind(null, this)], + [inputField, 'click', onClickInput.bind(null, this)], + [inputField, 'paste', onPaste.bind(null, this)], + // To detect a click on outside, just listening to mousedown is enough, + // no need to listen to touchstart. + // Actually, listening to touchstart can be a problem because, while + // mousedown is fired only on tapping but not on swiping/pinching, + // touchstart is fired on swiping/pinching as well. + // (issue #95) + [document, 'mousedown', onClickOutside.bind(null, this)], + [window, 'resize', picker.place.bind(picker)] + ]); + } else { + registerListeners(this, [keydownListener]); + this.show(); + } + } + + /** + * Format Date object or time value in given format and language + * @param {Date|Number} date - date or time value to format + * @param {String|Object} format - format string or object that contains + * toDisplay() custom formatter, whose signature is + * - args: + * - date: {Date} - Date instance of the date passed to the method + * - format: {Object} - the format object passed to the method + * - locale: {Object} - locale for the language specified by `lang` + * - return: + * {String} formatted date + * @param {String} [lang=en] - language code for the locale to use + * @return {String} formatted date + */ + static formatDate(date, format, lang) { + return formatDate(date, format, lang && locales[lang] || locales.en); + } + + /** + * Parse date string + * @param {String|Date|Number} dateStr - date string, Date object or time + * value to parse + * @param {String|Object} format - format string or object that contains + * toValue() custom parser, whose signature is + * - args: + * - dateStr: {String|Date|Number} - the dateStr passed to the method + * - format: {Object} - the format object passed to the method + * - locale: {Object} - locale for the language specified by `lang` + * - return: + * {Date|Number} parsed date or its time value + * @param {String} [lang=en] - language code for the locale to use + * @return {Number} time value of parsed date + */ + static parseDate(dateStr, format, lang) { + return parseDate(dateStr, format, lang && locales[lang] || locales.en); + } + + /** + * @type {Object} - Installed locales in `[languageCode]: localeObject` format + * en`:_English (US)_ is pre-installed. + */ + static get locales() { + return locales; + } + + /** + * @type {Boolean} - Whether the picker element is shown. `true` whne shown + */ + get active() { + return !!(this.picker && this.picker.active); + } + + /** + * @type {HTMLDivElement} - DOM object of picker element + */ + get pickerElement() { + return this.picker ? this.picker.element : undefined; + } + + /** + * Set new values to the config options + * @param {Object} options - config options to update + */ + setOptions(options) { + const newOptions = processOptions(options, this); + Object.assign(this._options, options); + Object.assign(this.config, newOptions); + this.picker.setOptions(newOptions); + + refreshUI(this, 3); + } + + /** + * Show the picker element + */ + show() { + if (this.inputField) { + const {config, inputField} = this; + if (inputField.disabled || (inputField.readOnly && !config.enableOnReadonly)) { + return; + } + if (!isActiveElement(inputField) && !config.disableTouchKeyboard) { + this._showing = true; + inputField.focus(); + delete this._showing; + } + } + this.picker.show(); + } + + /** + * Hide the picker element + * Not available on inline picker + */ + hide() { + if (!this.inputField) { + return; + } + this.picker.hide(); + this.picker.update().changeView(this.config.startView).render(); + } + + /** + * Toggle the display of the picker element + * Not available on inline picker + * + * Unlike hide(), the picker does not return to the start view when hiding. + */ + toggle() { + if (!this.picker.active) { + this.show(); + } else if (this.inputField) { + this.picker.hide(); + } + } + + /** + * Destroy the Datepicker instance + * @return {Detepicker} - the instance destroyed + */ + destroy() { + this.hide(); + unregisterListeners(this); + this.picker.detach(); + const element = this.element; + element.classList.remove('datepicker-input'); + delete element.datepicker; + return this; + } + + /** + * Get the selected date(s) + * + * The method returns a Date object of selected date by default, and returns + * an array of selected dates in multidate mode. If format string is passed, + * it returns date string(s) formatted in given format. + * + * @param {String} [format] - format string to stringify the date(s) + * @return {Date|String|Date[]|String[]} - selected date(s), or if none is + * selected, empty array in multidate mode and undefined in sigledate mode + */ + getDate(format = undefined) { + const callback = getOutputConverter(this, format); + + if (this.config.multidate) { + return this.dates.map(callback); + } + if (this.dates.length > 0) { + return callback(this.dates[0]); + } + } + + /** + * Set selected date(s) + * + * In multidate mode, you can pass multiple dates as a series of arguments + * or an array. (Since each date is parsed individually, the type of the + * dates doesn't have to be the same.) + * The given dates are used to toggle the select status of each date. The + * number of selected dates is kept from exceeding the length set to + * maxNumberOfDates. + * + * With clear: true option, the method can be used to clear the selection + * and to replace the selection instead of toggling in multidate mode. + * If the option is passed with no date arguments or an empty dates array, + * it works as "clear" (clear the selection then set nothing), and if the + * option is passed with new dates to select, it works as "replace" (clear + * the selection then set the given dates) + * + * When render: false option is used, the method omits re-rendering the + * picker element. In this case, you need to call refresh() method later in + * order for the picker element to reflect the changes. The input field is + * refreshed always regardless of this option. + * + * When invalid (unparsable, repeated, disabled or out-of-range) dates are + * passed, the method ignores them and applies only valid ones. In the case + * that all the given dates are invalid, which is distinguished from passing + * no dates, the method considers it as an error and leaves the selection + * untouched. (The input field also remains untouched unless revert: true + * option is used.) + * Replacing the selection with the same date(s) also causes a similar + * situation. In both cases, the method does not refresh the picker element + * unless forceRefresh: true option is used. + * + * If viewDate option is used, the method changes the focused date to the + * specified date instead of the last item of the selection. + * + * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date + * objects, time values or mix of those for new selection + * @param {Object} [options] - function options + * - clear: {boolean} - Whether to clear the existing selection + * defualt: false + * - render: {boolean} - Whether to re-render the picker element + * default: true + * - autohide: {boolean} - Whether to hide the picker element after re-render + * Ignored when used with render: false + * default: config.autohide + * - revert: {boolean} - Whether to refresh the input field when all the + * passed dates are invalid + * default: false + * - forceRefresh: {boolean} - Whether to refresh the picker element when + * passed dates don't change the existing selection + * default: false + * - viewDate: {Date|Number|String} - Date to be focused after setiing date(s) + * default: The last item of the resulting selection, or defaultViewDate + * config option if none is selected + */ + setDate(...args) { + const dates = [...args]; + const opts = {}; + const lastArg = lastItemOf(args); + if ( + lastArg + && typeof lastArg === 'object' + && !Array.isArray(lastArg) + && !(lastArg instanceof Date) + ) { + Object.assign(opts, dates.pop()); + } + + const inputDates = Array.isArray(dates[0]) ? dates[0] : dates; + setDate(this, inputDates, opts); + } + + /** + * Update the selected date(s) with input field's value + * Not available on inline picker + * + * The input field will be refreshed with properly formatted date string. + * + * In the case that all the entered dates are invalid (unparsable, repeated, + * disabled or out-of-range), which is distinguished from empty input field, + * the method leaves the input field untouched as well as the selection by + * default. If revert: true option is used in this case, the input field is + * refreshed with the existing selection. + * The method also doesn't refresh the picker element in this case and when + * the entered dates are the same as the existing selection. If + * forceRefresh: true option is used, the picker element is refreshed in + * these cases too. + * + * @param {Object} [options] - function options + * - autohide: {boolean} - whether to hide the picker element after refresh + * default: false + * - revert: {boolean} - Whether to refresh the input field when all the + * passed dates are invalid + * default: false + * - forceRefresh: {boolean} - Whether to refresh the picer element when + * input field's value doesn't change the existing selection + * default: false + */ + update(options = undefined) { + if (!this.inputField) { + return; + } + + const opts = Object.assign(options || {}, {clear: true, render: true, viewDate: undefined}); + const inputDates = stringToArray(this.inputField.value, this.config.dateDelimiter); + setDate(this, inputDates, opts); + } + + /** + * Get the focused date + * + * The method returns a Date object of focused date by default. If format + * string is passed, it returns date string formatted in given format. + * + * @param {String} [format] - format string to stringify the date + * @return {Date|String} - focused date (viewDate) + */ + getFocusedDate(format = undefined) { + return getOutputConverter(this, format)(this.picker.viewDate); + } + + /** + * Set focused date + * + * By default, the method updates the focus on the view shown at the time, + * or the one set to the startView config option if the picker is hidden. + * When resetView: true is passed, the view displayed is changed to the + * pickLevel config option's if the picker is shown. + * + * @param {Date|Number|String} viewDate - date string, Date object, time + * values of the date to focus + * @param {Boolean} [resetView] - whether to change the view to pickLevel + * config option's when the picker is shown. Ignored when the picker is + * hidden + */ + setFocusedDate(viewDate, resetView = false) { + const {config, picker, active, rangeSideIndex} = this; + const pickLevel = config.pickLevel; + const newViewDate = parseDate(viewDate, config.format, config.locale); + if (newViewDate === undefined) { + return; + } + + picker.changeFocus(regularizeDate(newViewDate, pickLevel, rangeSideIndex)); + if (active && resetView) { + picker.changeView(pickLevel); + } + picker.render(); + } + + /** + * Refresh the picker element and the associated input field + * @param {String} [target] - target item when refreshing one item only + * 'picker' or 'input' + * @param {Boolean} [forceRender] - whether to re-render the picker element + * regardless of its state instead of optimized refresh + */ + refresh(target = undefined, forceRender = false) { + if (target && typeof target !== 'string') { + forceRender = target; + target = undefined; + } + + let mode; + if (target === 'picker') { + mode = 2; + } else if (target === 'input') { + mode = 1; + } else { + mode = 3; + } + refreshUI(this, mode, !forceRender); + } + + /** + * Enter edit mode + * Not available on inline picker or when the picker element is hidden + */ + enterEditMode() { + const inputField = this.inputField; + if (!inputField || inputField.readOnly || !this.picker.active || this.editMode) { + return; + } + this.editMode = true; + inputField.classList.add('in-edit'); + } + + /** + * Exit from edit mode + * Not available on inline picker + * @param {Object} [options] - function options + * - update: {boolean} - whether to call update() after exiting + * If false, input field is revert to the existing selection + * default: false + */ + exitEditMode(options = undefined) { + if (!this.inputField || !this.editMode) { + return; + } + const opts = Object.assign({update: false}, options); + delete this.editMode; + this.inputField.classList.remove('in-edit'); + if (opts.update) { + this.update(opts); + } + } + } + + // filter out the config options inapproprite to pass to Datepicker + function filterOptions(options) { + const newOpts = Object.assign({}, options); + + delete newOpts.inputs; + delete newOpts.allowOneSidedRange; + delete newOpts.maxNumberOfDates; // to ensure each datepicker handles a single date + + return newOpts; + } + + function setupDatepicker(rangepicker, changeDateListener, el, options) { + registerListeners(rangepicker, [ + [el, 'changeDate', changeDateListener], + ]); + new Datepicker(el, options, rangepicker); + } + + function onChangeDate(rangepicker, ev) { + // to prevent both datepickers trigger the other side's update each other + if (rangepicker._updating) { + return; + } + rangepicker._updating = true; + + const target = ev.target; + if (target.datepicker === undefined) { + return; + } + + const datepickers = rangepicker.datepickers; + const [datepicker0, datepicker1] = datepickers; + const setDateOptions = {render: false}; + const changedSide = rangepicker.inputs.indexOf(target); + const otherSide = changedSide === 0 ? 1 : 0; + const changedDate = datepickers[changedSide].dates[0]; + const otherDate = datepickers[otherSide].dates[0]; + + if (changedDate !== undefined && otherDate !== undefined) { + // if the start of the range > the end, swap them + if (changedSide === 0 && changedDate > otherDate) { + datepicker0.setDate(otherDate, setDateOptions); + datepicker1.setDate(changedDate, setDateOptions); + } else if (changedSide === 1 && changedDate < otherDate) { + datepicker0.setDate(changedDate, setDateOptions); + datepicker1.setDate(otherDate, setDateOptions); + } + } else if (!rangepicker.allowOneSidedRange) { + // to prevent the range from becoming one-sided, copy changed side's + // selection (no matter if it's empty) to the other side + if (changedDate !== undefined || otherDate !== undefined) { + setDateOptions.clear = true; + datepickers[otherSide].setDate(datepickers[changedSide].dates, setDateOptions); + } + } + datepickers.forEach((datepicker) => { + datepicker.picker.update().render(); + }); + delete rangepicker._updating; + } + + /** + * Class representing a date range picker + */ + class DateRangePicker { + /** + * Create a date range picker + * @param {Element} element - element to bind a date range picker + * @param {Object} [options] - config options + */ + constructor(element, options = {}) { + let inputs = Array.isArray(options.inputs) + ? options.inputs + : Array.from(element.querySelectorAll('input')); + if (inputs.length < 2) { + return; + } + + element.rangepicker = this; + this.element = element; + this.inputs = inputs = inputs.slice(0, 2); + Object.freeze(inputs); + this.allowOneSidedRange = !!options.allowOneSidedRange; + + const changeDateListener = onChangeDate.bind(null, this); + const cleanOptions = filterOptions(options); + // in order for initial date setup to work right when pcicLvel > 0, + // let Datepicker constructor add the instance to the rangepicker + const datepickers = this.datepickers = []; + inputs.forEach((input) => { + setupDatepicker(this, changeDateListener, input, cleanOptions); + }); + Object.freeze(datepickers); + Object.defineProperty(this, 'dates', { + get() { + return datepickers.map(datepicker => datepicker.dates[0]); + }, + }); + // normalize the range if inital dates are given + if (datepickers[0].dates.length > 0) { + onChangeDate(this, {target: inputs[0]}); + } else if (datepickers[1].dates.length > 0) { + onChangeDate(this, {target: inputs[1]}); + } + } + + /** + * Set new values to the config options + * @param {Object} options - config options to update + */ + setOptions(options) { + this.allowOneSidedRange = !!options.allowOneSidedRange; + + const cleanOptions = filterOptions(options); + this.datepickers.forEach((datepicker) => { + datepicker.setOptions(cleanOptions); + }); + } + + /** + * Destroy the DateRangePicker instance + * @return {DateRangePicker} - the instance destroyed + */ + destroy() { + this.datepickers.forEach((datepicker) => { + datepicker.destroy(); + }); + unregisterListeners(this); + delete this.element.rangepicker; + } + + /** + * Get the start and end dates of the date range + * + * The method returns Date objects by default. If format string is passed, + * it returns date strings formatted in given format. + * The result array always contains 2 items (start date/end date) and + * undefined is used for unselected side. (e.g. If none is selected, + * the result will be [undefined, undefined]. If only the end date is set + * when allowOneSidedRange config option is true, [undefined, endDate] will + * be returned.) + * + * @param {String} [format] - Format string to stringify the dates + * @return {Array} - Start and end dates + */ + getDates(format = undefined) { + const callback = format + ? date => formatDate(date, format, this.datepickers[0].config.locale) + : date => new Date(date); + + return this.dates.map(date => date === undefined ? date : callback(date)); + } + + /** + * Set the start and end dates of the date range + * + * The method calls datepicker.setDate() internally using each of the + * arguments in start→end order. + * + * When a clear: true option object is passed instead of a date, the method + * clears the date. + * + * If an invalid date, the same date as the current one or an option object + * without clear: true is passed, the method considers that argument as an + * "ineffective" argument because calling datepicker.setDate() with those + * values makes no changes to the date selection. + * + * When the allowOneSidedRange config option is false, passing {clear: true} + * to clear the range works only when it is done to the last effective + * argument (in other words, passed to rangeEnd or to rangeStart along with + * ineffective rangeEnd). This is because when the date range is changed, + * it gets normalized based on the last change at the end of the changing + * process. + * + * @param {Date|Number|String|Object} rangeStart - Start date of the range + * or {clear: true} to clear the date + * @param {Date|Number|String|Object} rangeEnd - End date of the range + * or {clear: true} to clear the date + */ + setDates(rangeStart, rangeEnd) { + const { + datepickers: [datepicker0, datepicker1], + inputs: [input0, input1], + dates: [origDate0, origDate1], + } = this; + + // If range normalization runs on every change, we can't set a new range + // that starts after the end of the current range correctly because the + // normalization process swaps start↔︎end right after setting the new start + // date. To prevent this, the normalization process needs to run once after + // both of the new dates are set. + this._updating = true; + datepicker0.setDate(rangeStart); + datepicker1.setDate(rangeEnd); + delete this._updating; + + if (datepicker1.dates[0] !== origDate1) { + onChangeDate(this, {target: input1}); + } else if (datepicker0.dates[0] !== origDate0) { + onChangeDate(this, {target: input0}); + } + } + } + + window.Datepicker = Datepicker; + window.DateRangePicker = DateRangePicker; + +})(); diff --git a/src/cdh/core/static/cdh.core/js/datepicker-full.min.js b/src/cdh/core/static/cdh.core/js/datepicker-full.min.js new file mode 100644 index 00000000..c692ff04 --- /dev/null +++ b/src/cdh/core/static/cdh.core/js/datepicker-full.min.js @@ -0,0 +1 @@ +!function(){"use strict";function e(e){return e[e.length-1]}function t(e,...t){return t.forEach((t=>{e.includes(t)||e.push(t)})),e}function i(e,t){return e?e.split(t):[]}function s(e,t,i){return(void 0===t||e>=t)&&(void 0===i||e<=i)}function n(e,t,i){return ei?i:e}function a(e,t,i={},s=0,n=""){n+=`<${Object.keys(i).reduce(((e,t)=>{let n=i[t];return"function"==typeof n&&(n=n(s)),`${e} ${t}="${n}"`}),e)}>`;const r=s+1;return r\s+/g,">").replace(/\s+new Date(e).setFullYear(parseInt(t,10)),m(e,t,i){const s=new Date(e);let n=parseInt(t,10)-1;if(isNaN(n)){if(!t)return NaN;const e=t.toLowerCase(),s=t=>t.toLowerCase().startsWith(e);if(n=i.monthsShort.findIndex(s),n<0&&(n=i.months.findIndex(s)),n<0)return NaN}return s.setMonth(n),s.getMonth()!==N(n)?s.setDate(0):s.getTime()},d:(e,t)=>new Date(e).setDate(parseInt(t,10))},S={d:e=>e.getDate(),dd:e=>C(e.getDate(),2),D:(e,t)=>t.daysShort[e.getDay()],DD:(e,t)=>t.days[e.getDay()],m:e=>e.getMonth()+1,mm:e=>C(e.getMonth()+1,2),M:(e,t)=>t.monthsShort[e.getMonth()],MM:(e,t)=>t.months[e.getMonth()],y:e=>e.getFullYear(),yy:e=>C(e.getFullYear(),2).slice(-2),yyyy:e=>C(e.getFullYear(),4)};function N(e){return e>-1?e%12:N(e+12)}function C(e,t){return e.toString().padStart(t,"0")}function F(t){if("string"!=typeof t)throw new Error("Invalid date format.");if(t in M)return M[t];const i=t.split(v),s=t.match(new RegExp(v,"g"));if(0===i.length||!s)throw new Error("Invalid date format.");const n=s.map((e=>S[e])),a=Object.keys(O).reduce(((e,t)=>(s.find((e=>"D"!==e[0]&&e[0].toLowerCase()===t))&&e.push(t),e)),[]);return M[t]={parser(e,t){const i=e.split(x).reduce(((e,t,i)=>{if(t.length>0&&s[i]){const n=s[i][0];"M"===n?e.m=t:"D"!==n&&(e[n]=t)}return e}),{});return a.reduce(((e,s)=>{const n=O[s](e,i[s],t);return isNaN(n)?e:n}),d())},formatter:(t,s)=>n.reduce(((e,n,a)=>e+`${i[a]}${n(t,s)}`),"")+e(i)}}function V(e,t,i){if(e instanceof Date||"number"==typeof e){const t=o(e);return isNaN(t)?void 0:t}if(e){if("today"===e)return d();if(t&&t.toValue){const s=t.toValue(e,t,i);return isNaN(s)?void 0:o(s)}return F(t).parser(e,i)}}function B(e,t,i){if(isNaN(e)||!e&&0!==e)return"";const s="number"==typeof e?new Date(e):e;return t.toDisplay?t.toDisplay(s,t,i):F(t).formatter(s,i)}const E=document.createRange();function A(e){return E.createContextualFragment(e)}function L(e){return e.parentElement||(e.parentNode instanceof ShadowRoot?e.parentNode.host:void 0)}function Y(e){return e.getRootNode().activeElement===e}function W(e){"none"!==e.style.display&&(e.style.display&&(e.dataset.styleDisplay=e.style.display),e.style.display="none")}function _(e){"none"===e.style.display&&(e.dataset.styleDisplay?(e.style.display=e.dataset.styleDisplay,delete e.dataset.styleDisplay):e.style.display="")}function K(e){e.firstChild&&(e.removeChild(e.firstChild),K(e))}const R=new WeakMap,{addEventListener:j,removeEventListener:T}=EventTarget.prototype;function H(e,t){let i=R.get(e);i||(i=[],R.set(e,i)),t.forEach((e=>{j.call(...e),i.push(e)}))}function $(e){let t=R.get(e);t&&(t.forEach((e=>{T.call(...e)})),R.delete(e))}if(!Event.prototype.composedPath){const e=(t,i=[])=>{let s;return i.push(t),t.parentNode?s=t.parentNode:t.host?s=t.host:t.defaultView&&(s=t.defaultView),s?e(s,i):i};Event.prototype.composedPath=function(){return e(this.target)}}function I(e,t,i){const[s,...n]=e;return t(s)?s:s!==i&&"HTML"!==s.tagName&&0!==n.length?I(n,t,i):void 0}function P(e,t){const i="function"==typeof t?t:e=>e instanceof Element&&e.matches(t);return I(e.composedPath(),i,e.currentTarget)}const J={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM y"}},U={autohide:!1,beforeShowDay:null,beforeShowDecade:null,beforeShowMonth:null,beforeShowYear:null,clearButton:!1,dateDelimiter:",",datesDisabled:[],daysOfWeekDisabled:[],daysOfWeekHighlighted:[],defaultViewDate:void 0,disableTouchKeyboard:!1,enableOnReadonly:!0,format:"mm/dd/yyyy",language:"en",maxDate:null,maxNumberOfDates:1,maxView:3,minDate:null,nextArrow:"»",orientation:"auto",pickLevel:0,prevArrow:"«",showDaysOfWeek:!0,showOnClick:!0,showOnFocus:!0,startView:0,title:"",todayButton:!1,todayButtonMode:0,todayHighlight:!1,updateOnBlur:!0,weekNumbers:0,weekStart:0},{language:q,format:z,weekStart:X}=U;function G(e,i){return e.length<6&&i>=0&&i<7?t(e,i):e}function Q(e,t){switch(4===e?6===t?3:!t+1:e){case 1:return w;case 2:return y;case 3:return D}}function Z(e,t,i){return t.weekStart=e,t.weekEnd=(e+6)%7,4===i&&(t.getWeekNumber=Q(4,e)),e}function ee(e,t,i,s){const n=V(e,t,i);return void 0!==n?n:s}function te(e,t,i=3){const s=parseInt(e,10);return s>=0&&s<=i?s:t}function ie(e,t,i,s=void 0){t in e&&(i in e||(e[i]=s?s(e[t]):e[t]),delete e[t])}function se(e,i){const s=Object.assign({},e),n={},a=i.constructor.locales,r=!!i.rangeSideIndex;let{datesDisabled:o,format:d,language:l,locale:h,maxDate:u,maxView:f,minDate:p,pickLevel:m,startView:w,weekNumbers:g,weekStart:y}=i.config||{};if(ie(s,"calendarWeeks","weekNumbers",(e=>e?1:0)),ie(s,"clearBtn","clearButton"),ie(s,"todayBtn","todayButton"),ie(s,"todayBtnMode","todayButtonMode"),s.language){let e;if(s.language!==l&&(a[s.language]?e=s.language:(e=s.language.split("-")[0],a[e]||(e=!1))),delete s.language,e){l=n.language=e;const t=h||a[q];h=Object.assign({format:z,weekStart:X},a[q]),l!==q&&Object.assign(h,a[l]),n.locale=h,d===t.format&&(d=n.format=h.format),y===t.weekStart&&(y=Z(h.weekStart,n,g))}}if(s.format){const e="function"==typeof s.format.toDisplay,t="function"==typeof s.format.toValue,i=v.test(s.format);(e&&t||i)&&(d=n.format=s.format),delete s.format}let D=m;"pickLevel"in s&&(D=te(s.pickLevel,m,2),delete s.pickLevel),D!==m&&(D>m&&("minDate"in s||(s.minDate=p),"maxDate"in s||(s.maxDate=u)),o&&!s.datesDisabled&&(s.datesDisabled=[]),m=n.pickLevel=D);let k=p,x=u;if("minDate"in s){const e=c(0,0,1);k=null===s.minDate?e:ee(s.minDate,d,h,k),k!==e&&(k=b(k,m,!1)),delete s.minDate}if("maxDate"in s&&(x=null===s.maxDate?void 0:ee(s.maxDate,d,h,x),void 0!==x&&(x=b(x,m,!0)),delete s.maxDate),xe(new Date(t),i,r);else{const i=n.datesDisabled=e.reduce(((e,i)=>{const s=V(i,d,h);return void 0!==s?t(e,b(s,m,r)):e}),[]);n.checkDisabled=e=>i.includes(e)}delete s.datesDisabled}if("defaultViewDate"in s){const e=V(s.defaultViewDate,d,h);void 0!==e&&(n.defaultViewDate=e),delete s.defaultViewDate}if("weekStart"in s){const e=Number(s.weekStart)%7;isNaN(e)||(y=Z(e,n,g)),delete s.weekStart}if(s.daysOfWeekDisabled&&(n.daysOfWeekDisabled=s.daysOfWeekDisabled.reduce(G,[]),delete s.daysOfWeekDisabled),s.daysOfWeekHighlighted&&(n.daysOfWeekHighlighted=s.daysOfWeekHighlighted.reduce(G,[]),delete s.daysOfWeekHighlighted),"weekNumbers"in s){let e=s.weekNumbers;if(e){const t="function"==typeof e?(t,i)=>e(new Date(t),i):Q(e=parseInt(e,10),y);t&&(g=n.weekNumbers=e,n.getWeekNumber=t)}else g=n.weekNumbers=0,n.getWeekNumber=null;delete s.weekNumbers}if("maxNumberOfDates"in s){const e=parseInt(s.maxNumberOfDates,10);e>=0&&(n.maxNumberOfDates=e,n.multidate=1!==e),delete s.maxNumberOfDates}s.dateDelimiter&&(n.dateDelimiter=String(s.dateDelimiter),delete s.dateDelimiter);let M=f;"maxView"in s&&(M=te(s.maxView,f),delete s.maxView),M=m>M?m:M,M!==f&&(f=n.maxView=M);let O=w;if("startView"in s&&(O=te(s.startView,O),delete s.startView),Of&&(O=f),O!==w&&(n.startView=O),s.prevArrow){const e=A(s.prevArrow);e.childNodes.length>0&&(n.prevArrow=e.childNodes),delete s.prevArrow}if(s.nextArrow){const e=A(s.nextArrow);e.childNodes.length>0&&(n.nextArrow=e.childNodes),delete s.nextArrow}if("disableTouchKeyboard"in s&&(n.disableTouchKeyboard="ontouchstart"in document&&!!s.disableTouchKeyboard,delete s.disableTouchKeyboard),s.orientation){const e=s.orientation.toLowerCase().split(/\s+/g);n.orientation={x:e.find((e=>"left"===e||"right"===e))||"auto",y:e.find((e=>"top"===e||"bottom"===e))||"auto"},delete s.orientation}if("todayButtonMode"in s){switch(s.todayButtonMode){case 0:case 1:n.todayButtonMode=s.todayButtonMode}delete s.todayButtonMode}return Object.entries(s).forEach((([e,t])=>{void 0!==t&&e in U&&(n[e]=t)})),n}const ne={show:{key:"ArrowDown"},hide:null,toggle:{key:"Escape"},prevButton:{key:"ArrowLeft",ctrlOrMetaKey:!0},nextButton:{key:"ArrowRight",ctrlOrMetaKey:!0},viewSwitch:{key:"ArrowUp",ctrlOrMetaKey:!0},clearButton:{key:"Backspace",ctrlOrMetaKey:!0},todayButton:{key:".",ctrlOrMetaKey:!0},exitEditMode:{key:"ArrowDown",ctrlOrMetaKey:!0}};const ae=e=>e.map((e=>``)).join(""),re=r(`
\n
\n
\n
\n
\n ${ae(["prev-button prev-btn","view-switch","next-button next-btn"])}\n
\n
\n
\n \n
\n
`),oe=r(`
\n
${a("span",7,{class:"dow"})}
\n
${a("span",42)}
\n
`),de=r(`
\n
\n
${a("span",6,{class:"week"})}
\n
`);class ce{constructor(e,t){Object.assign(this,t,{picker:e,element:A('
').firstChild,selected:[],isRangeEnd:!!e.datepicker.rangeSideIndex}),this.init(this.picker.datepicker.config)}init(e){"pickLevel"in e&&(this.isMinView=this.id===e.pickLevel),this.setOptions(e),this.updateFocus(),this.updateSelection()}prepareForRender(e,t,i){this.disabled=[];const s=this.picker;s.setViewSwitchLabel(e),s.setPrevButtonDisabled(t),s.setNextButtonDisabled(i)}setDisabled(e,i){i.add("disabled"),t(this.disabled,e)}performBeforeHook(e,t){let i=this.beforeShow(new Date(t));switch(typeof i){case"boolean":i={enabled:i};break;case"string":i={classes:i}}if(i){const s=e.classList;if(!1===i.enabled&&this.setDisabled(t,s),i.classes){const e=i.classes.split(/\s+/);s.add(...e),e.includes("disabled")&&this.setDisabled(t,s)}i.content&&function(e,t){K(e),t instanceof DocumentFragment?e.appendChild(t):"string"==typeof t?e.appendChild(A(t)):"function"==typeof t.forEach&&t.forEach((t=>{e.appendChild(t)}))}(e,i.content)}}renderCell(e,t,i,s,{selected:n,range:a},r,o=[]){e.textContent=t,this.isMinView&&(e.dataset.date=s);const d=e.classList;if(e.className=`datepicker-cell ${this.cellClass}`,ithis.last&&d.add("next"),d.add(...o),(r||this.checkDisabled(s,this.id))&&this.setDisabled(s,d),a){const[e,t]=a;i>e&&is&&t{e.classList.remove("focused")})),this.grid.children[e].classList.add("focused")}}class le extends ce{constructor(e){super(e,{id:0,name:"days",cellClass:"day"})}init(e,t=!0){if(t){const e=A(oe).firstChild;this.dow=e.firstChild,this.grid=e.lastChild,this.element.appendChild(e)}super.init(e)}setOptions(e){let t;if("minDate"in e&&(this.minDate=e.minDate),"maxDate"in e&&(this.maxDate=e.maxDate),e.checkDisabled&&(this.checkDisabled=e.checkDisabled),e.daysOfWeekDisabled&&(this.daysOfWeekDisabled=e.daysOfWeekDisabled,t=!0),e.daysOfWeekHighlighted&&(this.daysOfWeekHighlighted=e.daysOfWeekHighlighted),"todayHighlight"in e&&(this.todayHighlight=e.todayHighlight),"weekStart"in e&&(this.weekStart=e.weekStart,this.weekEnd=e.weekEnd,t=!0),e.locale){const i=this.locale=e.locale;this.dayNames=i.daysMin,this.switchLabelFormat=i.titleFormat,t=!0}if("beforeShowDay"in e&&(this.beforeShow="function"==typeof e.beforeShowDay?e.beforeShowDay:void 0),"weekNumbers"in e)if(e.weekNumbers&&!this.weekNumbers){const e=A(de).firstChild;this.weekNumbers={element:e,dow:e.firstChild,weeks:e.lastChild},this.element.insertBefore(e,this.element.firstChild)}else this.weekNumbers&&!e.weekNumbers&&(this.element.removeChild(this.weekNumbers.element),this.weekNumbers=null);"getWeekNumber"in e&&(this.getWeekNumber=e.getWeekNumber),"showDaysOfWeek"in e&&(e.showDaysOfWeek?(_(this.dow),this.weekNumbers&&_(this.weekNumbers.dow)):(W(this.dow),this.weekNumbers&&W(this.weekNumbers.dow))),t&&Array.from(this.dow.children).forEach(((e,t)=>{const i=(this.weekStart+t)%7;e.textContent=this.dayNames[i],e.className=this.daysOfWeekDisabled.includes(i)?"dow disabled":"dow"}))}updateFocus(){const e=new Date(this.picker.viewDate),t=e.getFullYear(),i=e.getMonth(),s=c(t,i,1),n=p(s,this.weekStart,this.weekStart);this.first=s,this.last=c(t,i+1,0),this.start=n,this.focused=this.picker.viewDate}updateSelection(){const{dates:e,rangepicker:t}=this.picker.datepicker;this.selected=e,t&&(this.range=t.dates)}render(){if(this.today=this.todayHighlight?d():void 0,this.prepareForRender(B(this.focused,this.switchLabelFormat,this.locale),this.first<=this.minDate,this.last>=this.maxDate),this.weekNumbers){const e=this.weekStart,t=p(this.first,e,e);Array.from(this.weekNumbers.weeks.children).forEach(((i,s)=>{const n=l(t,7*s);i.textContent=this.getWeekNumber(n,e),s>3&&i.classList[n>this.last?"add":"remove"]("next")}))}Array.from(this.grid.children).forEach(((e,t)=>{const i=l(this.start,t),s=new Date(i),n=s.getDay(),a=[];this.today===i&&a.push("today"),this.daysOfWeekHighlighted.includes(n)&&a.push("highlighted"),this.renderCell(e,s.getDate(),i,i,this,ithis.maxDate||this.daysOfWeekDisabled.includes(n),a)}))}refresh(){const e=this.range||[];Array.from(this.grid.children).forEach((t=>{this.refreshCell(t,Number(t.dataset.date),this.selected,e)}))}refreshFocus(){this.changeFocusedCell(Math.round((this.focused-this.start)/864e5))}}function he(e,t){if(!e||!e[0]||!e[1])return;const[[i,s],[n,a]]=e;return i>t||ne}))),this.first=0,this.last=11),super.init(e)}setOptions(e){if(e.locale&&(this.monthNames=e.locale.monthsShort),"minDate"in e)if(void 0===e.minDate)this.minYear=this.minMonth=this.minDate=void 0;else{const t=new Date(e.minDate);this.minYear=t.getFullYear(),this.minMonth=t.getMonth(),this.minDate=t.setDate(1)}if("maxDate"in e)if(void 0===e.maxDate)this.maxYear=this.maxMonth=this.maxDate=void 0;else{const t=new Date(e.maxDate);this.maxYear=t.getFullYear(),this.maxMonth=t.getMonth(),this.maxDate=c(this.maxYear,this.maxMonth+1,0)}e.checkDisabled&&(this.checkDisabled=this.isMinView||null===e.datesDisabled?e.checkDisabled:()=>!1),"beforeShowMonth"in e&&(this.beforeShow="function"==typeof e.beforeShowMonth?e.beforeShowMonth:void 0)}updateFocus(){const e=new Date(this.picker.viewDate);this.year=e.getFullYear(),this.focused=e.getMonth()}updateSelection(){const{dates:e,rangepicker:i}=this.picker.datepicker;this.selected=e.reduce(((e,i)=>{const s=new Date(i),n=s.getFullYear(),a=s.getMonth();return void 0===e[n]?e[n]=[a]:t(e[n],a),e}),{}),i&&i.dates&&(this.range=i.dates.map((e=>{const t=new Date(e);return isNaN(t)?void 0:[t.getFullYear(),t.getMonth()]})))}render(){this.prepareForRender(this.year,this.year<=this.minYear,this.year>=this.maxYear);const e=this.selected[this.year]||[],t=this.yearthis.maxYear,i=this.year===this.minYear,s=this.year===this.maxYear,n=he(this.range,this.year);Array.from(this.grid.children).forEach(((a,r)=>{const o=b(new Date(this.year,r,1),1,this.isRangeEnd);this.renderCell(a,this.monthNames[r],r,o,{selected:e,range:n},t||i&&rthis.maxMonth)}))}refresh(){const e=this.selected[this.year]||[],t=he(this.range,this.year)||[];Array.from(this.grid.children).forEach(((i,s)=>{this.refreshCell(i,s,e,t)}))}refreshFocus(){this.changeFocusedCell(this.focused)}}class fe extends ce{constructor(e,t){super(e,t)}init(e,t=!0){var i;t&&(this.navStep=10*this.step,this.beforeShowOption=`beforeShow${i=this.cellClass,[...i].reduce(((e,t,i)=>e+(i?t:t.toUpperCase())),"")}`,this.grid=this.element,this.element.classList.add(this.name,"datepicker-grid"),this.grid.appendChild(A(a("span",12)))),super.init(e)}setOptions(e){if("minDate"in e&&(void 0===e.minDate?this.minYear=this.minDate=void 0:(this.minYear=k(e.minDate,this.step),this.minDate=c(this.minYear,0,1))),"maxDate"in e&&(void 0===e.maxDate?this.maxYear=this.maxDate=void 0:(this.maxYear=k(e.maxDate,this.step),this.maxDate=c(this.maxYear,11,31))),e.checkDisabled&&(this.checkDisabled=this.isMinView||null===e.datesDisabled?e.checkDisabled:()=>!1),this.beforeShowOption in e){const t=e[this.beforeShowOption];this.beforeShow="function"==typeof t?t:void 0}}updateFocus(){const e=new Date(this.picker.viewDate),t=k(e,this.navStep),i=t+9*this.step;this.first=t,this.last=i,this.start=t-this.step,this.focused=k(e,this.step)}updateSelection(){const{dates:e,rangepicker:i}=this.picker.datepicker;this.selected=e.reduce(((e,i)=>t(e,k(i,this.step))),[]),i&&i.dates&&(this.range=i.dates.map((e=>{if(void 0!==e)return k(e,this.step)})))}render(){this.prepareForRender(`${this.first}-${this.last}`,this.first<=this.minYear,this.last>=this.maxYear),Array.from(this.grid.children).forEach(((e,t)=>{const i=this.start+t*this.step,s=b(new Date(i,0,1),2,this.isRangeEnd);e.dataset.year=i,this.renderCell(e,i,i,s,this,ithis.maxYear)}))}refresh(){const e=this.range||[];Array.from(this.grid.children).forEach((t=>{this.refreshCell(t,Number(t.textContent),this.selected,e)}))}refreshFocus(){this.changeFocusedCell(Math.round((this.focused-this.start)/this.step))}}function pe(e,t){const i={bubbles:!0,cancelable:!0,detail:{date:e.getDate(),viewDate:new Date(e.picker.viewDate),viewId:e.picker.currentView.id,datepicker:e}};e.element.dispatchEvent(new CustomEvent(t,i))}function me(e,t){const{config:i,picker:s}=e,{currentView:a,viewDate:r}=s;let o;switch(a.id){case 0:o=h(r,t);break;case 1:o=u(r,t);break;default:o=u(r,t*a.navStep)}o=n(o,i.minDate,i.maxDate),s.changeFocus(o).render()}function we(e){const t=e.picker.currentView.id;t!==e.config.maxView&&e.picker.changeView(t+1).render()}function ge(e){e.setDate({clear:!0})}function ye(e){const t=d();1===e.config.todayButtonMode?e.setDate(t,{forceRefresh:!0,viewDate:t}):e.setFocusedDate(t,!0)}function De(e){const t=()=>{e.config.updateOnBlur?e.update({revert:!0}):e.refresh("input"),e.hide()},i=e.element;Y(i)?i.addEventListener("blur",t,{once:!0}):t()}function ke(e,t){const i=e.picker,s=new Date(i.viewDate),n=i.currentView.id,a=1===n?h(s,t-s.getMonth()):u(s,t-s.getFullYear());i.changeFocus(a).changeView(n-1).render()}function be(e){we(e)}function ve(e){me(e,-1)}function xe(e){me(e,1)}function Me(e,t){const i=P(t,".datepicker-cell");if(!i||i.classList.contains("disabled"))return;const{id:s,isMinView:n}=e.picker.currentView,a=i.dataset;n?e.setDate(Number(a.date)):ke(e,Number(1===s?a.month:a.year))}function Oe(e){e.preventDefault()}const Se=["left","top","right","bottom"].reduce(((e,t)=>(e[t]=`datepicker-orient-${t}`,e)),{}),Ne=e=>e?`${e}px`:e;function Ce(e,t){if("title"in t&&(t.title?(e.controls.title.textContent=t.title,_(e.controls.title)):(e.controls.title.textContent="",W(e.controls.title))),t.prevArrow){const i=e.controls.prevButton;K(i),t.prevArrow.forEach((e=>{i.appendChild(e.cloneNode(!0))}))}if(t.nextArrow){const i=e.controls.nextButton;K(i),t.nextArrow.forEach((e=>{i.appendChild(e.cloneNode(!0))}))}if(t.locale&&(e.controls.todayButton.textContent=t.locale.today,e.controls.clearButton.textContent=t.locale.clear),"todayButton"in t&&(t.todayButton?_(e.controls.todayButton):W(e.controls.todayButton)),"minDate"in t||"maxDate"in t){const{minDate:t,maxDate:i}=e.datepicker.config;e.controls.todayButton.disabled=!s(d(),t,i)}"clearButton"in t&&(t.clearButton?_(e.controls.clearButton):W(e.controls.clearButton))}function Fe(t){const{dates:i,config:s,rangeSideIndex:a}=t;return n(i.length>0?e(i):b(s.defaultViewDate,s.pickLevel,a),s.minDate,s.maxDate)}function Ve(e,t){"_oldViewDate"in e||t===e.viewDate||(e._oldViewDate=e.viewDate),e.viewDate=t;const{id:i,year:s,first:n,last:a}=e.currentView,r=new Date(t).getFullYear();switch(i){case 0:return ta;case 1:return r!==s;default:return ra}}function Be(e){return window.getComputedStyle(e).direction}function Ee(e){const t=L(e);if(t!==document.body&&t)return"visible"!==window.getComputedStyle(t).overflow?t:Ee(t)}class Ae{constructor(e){const{config:t,inputField:i}=this.datepicker=e,s=re.replace(/%buttonClass%/g,t.buttonClass),n=this.element=A(s).firstChild,[a,r,o]=n.firstChild.children,d=a.firstElementChild,[c,l,h]=a.lastElementChild.children,[u,f]=o.firstChild.children,p={title:d,prevButton:c,viewSwitch:l,nextButton:h,todayButton:u,clearButton:f};this.main=r,this.controls=p;const m=i?"dropdown":"inline";n.classList.add(`datepicker-${m}`),Ce(this,t),this.viewDate=Fe(e),H(e,[[n,"mousedown",Oe],[r,"click",Me.bind(null,e)],[p.viewSwitch,"click",be.bind(null,e)],[p.prevButton,"click",ve.bind(null,e)],[p.nextButton,"click",xe.bind(null,e)],[p.todayButton,"click",ye.bind(null,e)],[p.clearButton,"click",ge.bind(null,e)]]),this.views=[new le(this),new ue(this),new fe(this,{id:2,name:"years",cellClass:"year",step:1}),new fe(this,{id:3,name:"decades",cellClass:"decade",step:10})],this.currentView=this.views[t.startView],this.currentView.render(),this.main.appendChild(this.currentView.element),t.container?t.container.appendChild(this.element):i.after(this.element)}setOptions(e){Ce(this,e),this.views.forEach((t=>{t.init(e,!1)})),this.currentView.render()}detach(){this.element.remove()}show(){if(this.active)return;const{datepicker:e,element:t}=this,i=e.inputField;if(i){const s=Be(i);s!==Be(L(t))?t.dir=s:t.dir&&t.removeAttribute("dir"),this.place(),t.classList.add("active"),e.config.disableTouchKeyboard&&i.blur()}else t.classList.add("active");this.active=!0,pe(e,"show")}hide(){this.active&&(this.datepicker.exitEditMode(),this.element.classList.remove("active"),this.active=!1,pe(this.datepicker,"hide"))}place(){const{classList:e,style:t}=this.element;t.display="block";const{width:i,height:s}=this.element.getBoundingClientRect(),n=this.element.offsetParent;t.display="";const{config:a,inputField:r}=this.datepicker,{left:o,top:d,right:c,bottom:l,width:h,height:u}=r.getBoundingClientRect();let{x:f,y:p}=a.orientation,m=o,w=d;if(n!==document.body&&n){const e=n.getBoundingClientRect();m-=e.left-n.scrollLeft,w-=e.top-n.scrollTop}else m+=window.scrollX,w+=window.scrollY;const g=Ee(r);let y=0,D=0,{clientWidth:k,clientHeight:b}=document.documentElement;if(g){const e=g.getBoundingClientRect();e.top>0&&(D=e.top),e.left>0&&(y=e.left),e.rightk?(f="right",kD&&l+s>b?"top":"bottom"),"top"===p?w-=s:w+=u,e.remove(...Object.values(Se)),e.add(Se[f],Se[p]),t.left=Ne(m),t.top=Ne(w)}setViewSwitchLabel(e){this.controls.viewSwitch.textContent=e}setPrevButtonDisabled(e){this.controls.prevButton.disabled=e}setNextButtonDisabled(e){this.controls.nextButton.disabled=e}changeView(e){const t=this.currentView;return e!==t.id&&(this._oldView||(this._oldView=t),this.currentView=this.views[e],this._renderMethod="render"),this}changeFocus(e){return this._renderMethod=Ve(this,e)?"render":"refreshFocus",this.views.forEach((e=>{e.updateFocus()})),this}update(e=void 0){const t=void 0===e?Fe(this.datepicker):e;return this._renderMethod=Ve(this,t)?"render":"refresh",this.views.forEach((e=>{e.updateFocus(),e.updateSelection()})),this}render(e=!0){const{currentView:t,datepicker:i,_oldView:s}=this,n=new Date(this._oldViewDate),a=e&&this._renderMethod||"render";if(delete this._oldView,delete this._oldViewDate,delete this._renderMethod,t[a](),s&&(this.main.replaceChild(t.element,s.element),pe(i,"changeView")),!isNaN(n)){const e=new Date(this.viewDate);e.getFullYear()!==n.getFullYear()&&pe(i,"changeYear"),e.getMonth()!==n.getMonth()&&pe(i,"changeMonth")}}}function Le(e,t,i,n,a,r){if(s(e,a,r)){if(n(e)){return Le(t(e,i),t,i,n,a,r)}return e}}function Ye(e,t,i){const s=e.picker,n=s.currentView,a=n.step||1;let r,o=s.viewDate;switch(n.id){case 0:o=l(o,i?7*t:t),r=l;break;case 1:o=h(o,i?4*t:t),r=h;break;default:o=u(o,t*(i?4:1)*a),r=u}o=Le(o,r,t<0?-a:a,(e=>n.disabled.includes(e)),n.minDate,n.maxDate),void 0!==o&&s.changeFocus(o).render()}function We(e,t){const{config:i,picker:s,editMode:n}=e,a=s.active,{key:r,altKey:o,shiftKey:d}=t,c=t.ctrlKey||t.metaKey,l=()=>{t.preventDefault(),t.stopPropagation()};if("Tab"===r)return void De(e);if("Enter"===r){if(a)if(n)e.exitEditMode({update:!0,autohide:i.autohide});else{const t=s.currentView;t.isMinView?e.setDate(s.viewDate):(s.changeView(t.id-1).render(),l())}else e.update();return}const h=i.shortcutKeys,u={key:r,ctrlOrMetaKey:c,altKey:o,shiftKey:d},f=Object.keys(h).find((e=>{const t=h[e];return!Object.keys(t).find((e=>t[e]!==u[e]))}));if(f){let t;if("toggle"===f?t=f:n?"exitEditMode"===f&&(t=f):a?"hide"===f?t=f:"prevButton"===f?t=[me,[e,-1]]:"nextButton"===f?t=[me,[e,1]]:"viewSwitch"===f?t=[we,[e]]:i.clearButton&&"clearButton"===f?t=[ge,[e]]:i.todayButton&&"todayButton"===f&&(t=[ye,[e]]):"show"===f&&(t=f),t)return Array.isArray(t)?t[0].apply(null,t[1]):e[t](),void l()}if(!a||n)return;const p=(i,s)=>{d||c||o?e.enterEditMode():(Ye(e,i,s),t.preventDefault())};"ArrowLeft"===r?p(-1,!1):"ArrowRight"===r?p(1,!1):"ArrowUp"===r?p(-1,!0):"ArrowDown"===r?p(1,!0):("Backspace"===r||"Delete"===r||r&&1===r.length&&!c)&&e.enterEditMode()}function _e(e){e.config.showOnFocus&&!e._showing&&e.show()}function Ke(e,t){const i=t.target;(e.picker.active||e.config.showOnClick)&&(i._active=Y(i),i._clicking=setTimeout((()=>{delete i._active,delete i._clicking}),2e3))}function Re(e,t){const i=t.target;i._clicking&&(clearTimeout(i._clicking),delete i._clicking,i._active&&e.enterEditMode(),delete i._active,e.config.showOnClick&&e.show())}function je(e,t){t.clipboardData.types.includes("text/plain")&&e.enterEditMode()}function Te(e,t){const{element:i,picker:s}=e;if(!s.active&&!Y(i))return;const n=s.element;P(t,(e=>e===i||e===n))||De(e)}function He(e,t){return e.map((e=>B(e,t.format,t.locale))).join(t.dateDelimiter)}function $e(e,t,i=!1){if(0===t.length)return i?[]:void 0;const{config:n,dates:a,rangeSideIndex:r}=e,{pickLevel:o,maxNumberOfDates:d}=n;let c=t.reduce(((e,t)=>{let i=V(t,n.format,n.locale);return void 0===i||(i=b(i,o,r),!s(i,n.minDate,n.maxDate)||e.includes(i)||n.checkDisabled(i,o)||!(o>0)&&n.daysOfWeekDisabled.includes(new Date(i).getDay())||e.push(i)),e}),[]);return 0!==c.length?(n.multidate&&!i&&(c=c.reduce(((e,t)=>(a.includes(t)||e.push(t),e)),a.filter((e=>!c.includes(e))))),d&&c.length>d?c.slice(-1*d):c):void 0}function Ie(e,t=3,i=!0,s=void 0){const{config:n,picker:a,inputField:r}=e;if(2&t){const e=a.active?n.pickLevel:n.startView;a.update(s).changeView(e).render(i)}1&t&&r&&(r.value=He(e.dates,n))}function Pe(e,t,i){const s=e.config;let{clear:n,render:a,autohide:r,revert:o,forceRefresh:d,viewDate:c}=i;void 0===a&&(a=!0),a?void 0===r&&(r=s.autohide):r=d=!1,c=V(c,s.format,s.locale);const l=$e(e,t,n);(l||o)&&(l&&l.toString()!==e.dates.toString()?(e.dates=l,Ie(e,a?3:1,!0,c),pe(e,"changeDate")):Ie(e,d?3:1,!0,c),r&&e.hide())}function Je(e,t){return t?i=>B(i,t,e.config.locale):e=>new Date(e)}class Ue{constructor(e,t={},s=void 0){e.datepicker=this,this.element=e,this.dates=[];const n=this.config=Object.assign({buttonClass:t.buttonClass&&String(t.buttonClass)||"button",container:null,defaultViewDate:d(),maxDate:void 0,minDate:void 0},se(U,this));let a;if("INPUT"===e.tagName?(a=this.inputField=e,a.classList.add("datepicker-input"),t.container&&(n.container=t.container instanceof HTMLElement?t.container:document.querySelector(t.container))):n.container=e,s){const e=s.inputs.indexOf(a),t=s.datepickers;if(e<0||e>1||!Array.isArray(t))throw Error("Invalid rangepicker object.");t[e]=this,this.rangepicker=s,this.rangeSideIndex=e}this._options=t,Object.assign(n,se(t,this)),n.shortcutKeys=function(e){return Object.keys(ne).reduce(((t,i)=>{const s=void 0===e[i]?ne[i]:e[i],n=s&&s.key;if(!n||"string"!=typeof n)return t;const a={key:n,ctrlOrMetaKey:!!(s.ctrlOrMetaKey||s.ctrlKey||s.metaKey)};return n.length>1&&(a.altKey=!!s.altKey,a.shiftKey=!!s.shiftKey),t[i]=a,t}),{})}(t.shortcutKeys||{});const r=i(e.value||e.dataset.date,n.dateDelimiter);delete e.dataset.date;const o=$e(this,r);o&&o.length>0&&(this.dates=o),a&&(a.value=He(this.dates,n));const c=this.picker=new Ae(this),l=[e,"keydown",We.bind(null,this)];a?H(this,[l,[a,"focus",_e.bind(null,this)],[a,"mousedown",Ke.bind(null,this)],[a,"click",Re.bind(null,this)],[a,"paste",je.bind(null,this)],[document,"mousedown",Te.bind(null,this)],[window,"resize",c.place.bind(c)]]):(H(this,[l]),this.show())}static formatDate(e,t,i){return B(e,t,i&&J[i]||J.en)}static parseDate(e,t,i){return V(e,t,i&&J[i]||J.en)}static get locales(){return J}get active(){return!(!this.picker||!this.picker.active)}get pickerElement(){return this.picker?this.picker.element:void 0}setOptions(e){const t=se(e,this);Object.assign(this._options,e),Object.assign(this.config,t),this.picker.setOptions(t),Ie(this,3)}show(){if(this.inputField){const{config:e,inputField:t}=this;if(t.disabled||t.readOnly&&!e.enableOnReadonly)return;Y(t)||e.disableTouchKeyboard||(this._showing=!0,t.focus(),delete this._showing)}this.picker.show()}hide(){this.inputField&&(this.picker.hide(),this.picker.update().changeView(this.config.startView).render())}toggle(){this.picker.active?this.inputField&&this.picker.hide():this.show()}destroy(){this.hide(),$(this),this.picker.detach();const e=this.element;return e.classList.remove("datepicker-input"),delete e.datepicker,this}getDate(e=void 0){const t=Je(this,e);return this.config.multidate?this.dates.map(t):this.dates.length>0?t(this.dates[0]):void 0}setDate(...t){const i=[...t],s={},n=e(t);!n||"object"!=typeof n||Array.isArray(n)||n instanceof Date||Object.assign(s,i.pop());Pe(this,Array.isArray(i[0])?i[0]:i,s)}update(e=void 0){if(!this.inputField)return;const t=Object.assign(e||{},{clear:!0,render:!0,viewDate:void 0});Pe(this,i(this.inputField.value,this.config.dateDelimiter),t)}getFocusedDate(e=void 0){return Je(this,e)(this.picker.viewDate)}setFocusedDate(e,t=!1){const{config:i,picker:s,active:n,rangeSideIndex:a}=this,r=i.pickLevel,o=V(e,i.format,i.locale);void 0!==o&&(s.changeFocus(b(o,r,a)),n&&t&&s.changeView(r),s.render())}refresh(e=void 0,t=!1){let i;e&&"string"!=typeof e&&(t=e,e=void 0),i="picker"===e?2:"input"===e?1:3,Ie(this,i,!t)}enterEditMode(){const e=this.inputField;e&&!e.readOnly&&this.picker.active&&!this.editMode&&(this.editMode=!0,e.classList.add("in-edit"))}exitEditMode(e=void 0){if(!this.inputField||!this.editMode)return;const t=Object.assign({update:!1},e);delete this.editMode,this.inputField.classList.remove("in-edit"),t.update&&this.update(t)}}function qe(e){const t=Object.assign({},e);return delete t.inputs,delete t.allowOneSidedRange,delete t.maxNumberOfDates,t}function ze(e,t){if(e._updating)return;e._updating=!0;const i=t.target;if(void 0===i.datepicker)return;const s=e.datepickers,[n,a]=s,r={render:!1},o=e.inputs.indexOf(i),d=0===o?1:0,c=s[o].dates[0],l=s[d].dates[0];void 0!==c&&void 0!==l?0===o&&c>l?(n.setDate(l,r),a.setDate(c,r)):1===o&&c{e.picker.update().render()})),delete e._updating}window.Datepicker=Ue,window.DateRangePicker=class{constructor(e,t={}){let i=Array.isArray(t.inputs)?t.inputs:Array.from(e.querySelectorAll("input"));if(i.length<2)return;e.rangepicker=this,this.element=e,this.inputs=i=i.slice(0,2),Object.freeze(i),this.allowOneSidedRange=!!t.allowOneSidedRange;const s=ze.bind(null,this),n=qe(t),a=this.datepickers=[];i.forEach((e=>{!function(e,t,i,s){H(e,[[i,"changeDate",t]]),new Ue(i,s,e)}(this,s,e,n)})),Object.freeze(a),Object.defineProperty(this,"dates",{get:()=>a.map((e=>e.dates[0]))}),a[0].dates.length>0?ze(this,{target:i[0]}):a[1].dates.length>0&&ze(this,{target:i[1]})}setOptions(e){this.allowOneSidedRange=!!e.allowOneSidedRange;const t=qe(e);this.datepickers.forEach((e=>{e.setOptions(t)}))}destroy(){this.datepickers.forEach((e=>{e.destroy()})),$(this),delete this.element.rangepicker}getDates(e=void 0){const t=e?t=>B(t,e,this.datepickers[0].config.locale):e=>new Date(e);return this.dates.map((e=>void 0===e?e:t(e)))}setDates(e,t){const{datepickers:[i,s],inputs:[n,a],dates:[r,o]}=this;this._updating=!0,i.setDate(e),s.setDate(t),delete this._updating,s.dates[0]!==o?ze(this,{target:a}):i.dates[0]!==r&&ze(this,{target:n})}}}(); \ No newline at end of file diff --git a/src/cdh/core/static/cdh.core/js/widget/datepicker.js b/src/cdh/core/static/cdh.core/js/widget/datepicker.js new file mode 100644 index 00000000..f10c3977 --- /dev/null +++ b/src/cdh/core/static/cdh.core/js/widget/datepicker.js @@ -0,0 +1,7 @@ +$(function() { + const elem = document.querySelector('.bootstrap-datepicker'); + const datepicker = new Datepicker(elem, { + buttonClass: 'btn', + format: 'dd-mm-yyyy', + }); +}); \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ccc9a379..047564f1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -133,3 +133,8 @@ to-regex-range@^5.0.1: resolved "git+ssh://git@github.com/DH-IT-Portal-Development/bootstrap-theme.git#0d3d52fc6abdfbefa802368b728f556916be53fb" dependencies: bootstrap "5.3.1" + +vanillajs-datepicker@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/vanillajs-datepicker/-/vanillajs-datepicker-1.3.4.tgz#69b42f9106e944c248b7479249889ee1fd8465ef" + integrity sha512-waOyp2Ay+K1VA/B5cNlFgSNzFR9efCVKaoyMyNEAhAwmKLzMB9nCJs6Vqmo6HuHWA98VEHXbgz5thZ7hH/uohA== From b43c065f77a6d0cffac178273ad7c24466081570 Mon Sep 17 00:00:00 2001 From: Tyler Mees Date: Thu, 25 Apr 2024 16:31:15 +0200 Subject: [PATCH 31/34] refactor: remove old datepicker library --- .../cdh.core/js/bootstrap-datetimepicker.js | 1967 ----------------- .../js/bootstrap-datetimepicker.min.js | 1 - 2 files changed, 1968 deletions(-) delete mode 100644 src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.js delete mode 100644 src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.min.js diff --git a/src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.js b/src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.js deleted file mode 100644 index f66d69c1..00000000 --- a/src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.js +++ /dev/null @@ -1,1967 +0,0 @@ -/* ========================================================= - * bootstrap-datetimepicker.js - * ========================================================= - * Copyright 2012 Stefan Petre - * - * Improvements by Andrew Rowls - * Improvements by Sébastien Malot - * Improvements by Yun Lai - * Improvements by Kenneth Henderick - * Improvements by CuGBabyBeaR - * Improvements by Christian Vaas - * - * Project URL : http://www.malot.fr/bootstrap-datetimepicker - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - -(function(factory){ - if (typeof define === 'function' && define.amd) - define(['jquery'], factory); - else if (typeof exports === 'object') - factory(require('jquery')); - else - factory(jQuery); - -}(function($, undefined){ - - // Add ECMA262-5 Array methods if not supported natively (IE8) - if (!('indexOf' in Array.prototype)) { - Array.prototype.indexOf = function (find, i) { - if (i === undefined) i = 0; - if (i < 0) i += this.length; - if (i < 0) i = 0; - for (var n = this.length; i < n; i++) { - if (i in this && this[i] === find) { - return i; - } - } - return -1; - } - } - - // Add timezone abbreviation support for ie6+, Chrome, Firefox - function timeZoneAbbreviation() { - var abbreviation, date, formattedStr, i, len, matchedStrings, ref, str; - date = (new Date()).toString(); - formattedStr = ((ref = date.split('(')[1]) != null ? ref.slice(0, -1) : 0) || date.split(' '); - if (formattedStr instanceof Array) { - matchedStrings = []; - for (var i = 0, len = formattedStr.length; i < len; i++) { - str = formattedStr[i]; - if ((abbreviation = (ref = str.match(/\b[A-Z]+\b/)) !== null) ? ref[0] : 0) { - matchedStrings.push(abbreviation); - } - } - formattedStr = matchedStrings.pop(); - } - return formattedStr; - } - - function UTCDate() { - return new Date(Date.UTC.apply(Date, arguments)); - } - - // Picker object - var Datetimepicker = function (element, options) { - var that = this; - - this.element = $(element); - - // add container for single page application - // when page switch the datetimepicker div will be removed also. - this.container = options.container || 'body'; - - this.language = options.language || this.element.data('date-language') || 'en'; - this.language = this.language in dates ? this.language : this.language.split('-')[0]; // fr-CA fallback to fr - this.language = this.language in dates ? this.language : 'en'; - this.isRTL = dates[this.language].rtl || false; - this.formatType = options.formatType || this.element.data('format-type') || 'standard'; - this.format = DPGlobal.parseFormat(options.format || this.element.data('date-format') || dates[this.language].format || DPGlobal.getDefaultFormat(this.formatType, 'input'), this.formatType); - this.isInline = false; - this.isVisible = false; - this.isInput = this.element.is('input'); - this.fontAwesome = options.fontAwesome || this.element.data('font-awesome') || false; - - this.bootcssVer = options.bootcssVer || (this.isInput ? (this.element.is('.form-control') ? 3 : 2) : ( this.bootcssVer = this.element.is('.input-group') ? 3 : 2 )); - - this.component = this.element.is('.date') ? ( this.bootcssVer === 3 ? this.element.find('.input-group-addon .glyphicon-th, .input-group-addon .glyphicon-time, .input-group-addon .glyphicon-remove, .input-group-addon .glyphicon-calendar, .input-group-addon .fa-calendar, .input-group-addon .fa-clock-o').parent() : this.element.find('.add-on .icon-th, .add-on .icon-time, .add-on .icon-calendar, .add-on .fa-calendar, .add-on .fa-clock-o').parent()) : false; - this.componentReset = this.element.is('.date') ? ( this.bootcssVer === 3 ? this.element.find('.input-group-addon .glyphicon-remove, .input-group-addon .fa-times').parent():this.element.find('.add-on .icon-remove, .add-on .fa-times').parent()) : false; - this.hasInput = this.component && this.element.find('input').length; - if (this.component && this.component.length === 0) { - this.component = false; - } - this.linkField = options.linkField || this.element.data('link-field') || false; - this.linkFormat = DPGlobal.parseFormat(options.linkFormat || this.element.data('link-format') || DPGlobal.getDefaultFormat(this.formatType, 'link'), this.formatType); - this.minuteStep = options.minuteStep || this.element.data('minute-step') || 5; - this.pickerPosition = options.pickerPosition || this.element.data('picker-position') || 'bottom-right'; - this.showMeridian = options.showMeridian || this.element.data('show-meridian') || false; - this.initialDate = options.initialDate || new Date(); - this.zIndex = options.zIndex || this.element.data('z-index') || undefined; - this.title = typeof options.title === 'undefined' ? false : options.title; - this.timezone = options.timezone || timeZoneAbbreviation(); - - this.icons = { - leftArrow: this.fontAwesome ? 'fa-arrow-left' : (this.bootcssVer === 3 ? 'glyphicon-arrow-left' : 'icon-arrow-left'), - rightArrow: this.fontAwesome ? 'fa-arrow-right' : (this.bootcssVer === 3 ? 'glyphicon-arrow-right' : 'icon-arrow-right') - } - this.icontype = this.fontAwesome ? 'fa' : 'glyphicon'; - - this._attachEvents(); - - this.clickedOutside = function (e) { - // Clicked outside the datetimepicker, hide it - if ($(e.target).closest('.datetimepicker').length === 0) { - that.hide(); - } - } - - this.formatViewType = 'datetime'; - if ('formatViewType' in options) { - this.formatViewType = options.formatViewType; - } else if ('formatViewType' in this.element.data()) { - this.formatViewType = this.element.data('formatViewType'); - } - - this.minView = 0; - if ('minView' in options) { - this.minView = options.minView; - } else if ('minView' in this.element.data()) { - this.minView = this.element.data('min-view'); - } - this.minView = DPGlobal.convertViewMode(this.minView); - - this.maxView = DPGlobal.modes.length - 1; - if ('maxView' in options) { - this.maxView = options.maxView; - } else if ('maxView' in this.element.data()) { - this.maxView = this.element.data('max-view'); - } - this.maxView = DPGlobal.convertViewMode(this.maxView); - - this.wheelViewModeNavigation = false; - if ('wheelViewModeNavigation' in options) { - this.wheelViewModeNavigation = options.wheelViewModeNavigation; - } else if ('wheelViewModeNavigation' in this.element.data()) { - this.wheelViewModeNavigation = this.element.data('view-mode-wheel-navigation'); - } - - this.wheelViewModeNavigationInverseDirection = false; - - if ('wheelViewModeNavigationInverseDirection' in options) { - this.wheelViewModeNavigationInverseDirection = options.wheelViewModeNavigationInverseDirection; - } else if ('wheelViewModeNavigationInverseDirection' in this.element.data()) { - this.wheelViewModeNavigationInverseDirection = this.element.data('view-mode-wheel-navigation-inverse-dir'); - } - - this.wheelViewModeNavigationDelay = 100; - if ('wheelViewModeNavigationDelay' in options) { - this.wheelViewModeNavigationDelay = options.wheelViewModeNavigationDelay; - } else if ('wheelViewModeNavigationDelay' in this.element.data()) { - this.wheelViewModeNavigationDelay = this.element.data('view-mode-wheel-navigation-delay'); - } - - this.startViewMode = 2; - if ('startView' in options) { - this.startViewMode = options.startView; - } else if ('startView' in this.element.data()) { - this.startViewMode = this.element.data('start-view'); - } - this.startViewMode = DPGlobal.convertViewMode(this.startViewMode); - this.viewMode = this.startViewMode; - - this.viewSelect = this.minView; - if ('viewSelect' in options) { - this.viewSelect = options.viewSelect; - } else if ('viewSelect' in this.element.data()) { - this.viewSelect = this.element.data('view-select'); - } - this.viewSelect = DPGlobal.convertViewMode(this.viewSelect); - - this.forceParse = true; - if ('forceParse' in options) { - this.forceParse = options.forceParse; - } else if ('dateForceParse' in this.element.data()) { - this.forceParse = this.element.data('date-force-parse'); - } - var template = this.bootcssVer === 3 ? DPGlobal.templateV3 : DPGlobal.template; - while (template.indexOf('{iconType}') !== -1) { - template = template.replace('{iconType}', this.icontype); - } - while (template.indexOf('{leftArrow}') !== -1) { - template = template.replace('{leftArrow}', this.icons.leftArrow); - } - while (template.indexOf('{rightArrow}') !== -1) { - template = template.replace('{rightArrow}', this.icons.rightArrow); - } - this.picker = $(template) - .appendTo(this.isInline ? this.element : this.container) // 'body') - .on({ - click: $.proxy(this.click, this), - mousedown: $.proxy(this.mousedown, this) - }); - - if (this.wheelViewModeNavigation) { - if ($.fn.mousewheel) { - this.picker.on({mousewheel: $.proxy(this.mousewheel, this)}); - } else { - console.log('Mouse Wheel event is not supported. Please include the jQuery Mouse Wheel plugin before enabling this option'); - } - } - - if (this.isInline) { - this.picker.addClass('datetimepicker-inline'); - } else { - this.picker.addClass('datetimepicker-dropdown-' + this.pickerPosition + ' dropdown-menu'); - } - if (this.isRTL) { - this.picker.addClass('datetimepicker-rtl'); - var selector = this.bootcssVer === 3 ? '.prev span, .next span' : '.prev i, .next i'; - this.picker.find(selector).toggleClass(this.icons.leftArrow + ' ' + this.icons.rightArrow); - } - - $(document).on('mousedown touchend', this.clickedOutside); - - this.autoclose = false; - if ('autoclose' in options) { - this.autoclose = options.autoclose; - } else if ('dateAutoclose' in this.element.data()) { - this.autoclose = this.element.data('date-autoclose'); - } - - this.keyboardNavigation = true; - if ('keyboardNavigation' in options) { - this.keyboardNavigation = options.keyboardNavigation; - } else if ('dateKeyboardNavigation' in this.element.data()) { - this.keyboardNavigation = this.element.data('date-keyboard-navigation'); - } - - this.todayBtn = (options.todayBtn || this.element.data('date-today-btn') || false); - this.clearBtn = (options.clearBtn || this.element.data('date-clear-btn') || false); - this.todayHighlight = (options.todayHighlight || this.element.data('date-today-highlight') || false); - - this.weekStart = 0; - if (typeof options.weekStart !== 'undefined') { - this.weekStart = options.weekStart; - } else if (typeof this.element.data('date-weekstart') !== 'undefined') { - this.weekStart = this.element.data('date-weekstart'); - } else if (typeof dates[this.language].weekStart !== 'undefined') { - this.weekStart = dates[this.language].weekStart; - } - this.weekStart = this.weekStart % 7; - this.weekEnd = ((this.weekStart + 6) % 7); - this.onRenderDay = function (date) { - var render = (options.onRenderDay || function () { return []; })(date); - if (typeof render === 'string') { - render = [render]; - } - var res = ['day']; - return res.concat((render ? render : [])); - }; - this.onRenderHour = function (date) { - var render = (options.onRenderHour || function () { return []; })(date); - var res = ['hour']; - if (typeof render === 'string') { - render = [render]; - } - return res.concat((render ? render : [])); - }; - this.onRenderMinute = function (date) { - var render = (options.onRenderMinute || function () { return []; })(date); - var res = ['minute']; - if (typeof render === 'string') { - render = [render]; - } - if (date < this.startDate || date > this.endDate) { - res.push('disabled'); - } else if (Math.floor(this.date.getUTCMinutes() / this.minuteStep) === Math.floor(date.getUTCMinutes() / this.minuteStep)) { - res.push('active'); - } - return res.concat((render ? render : [])); - }; - this.onRenderYear = function (date) { - var render = (options.onRenderYear || function () { return []; })(date); - var res = ['year']; - if (typeof render === 'string') { - render = [render]; - } - if (this.date.getUTCFullYear() === date.getUTCFullYear()) { - res.push('active'); - } - var currentYear = date.getUTCFullYear(); - var endYear = this.endDate.getUTCFullYear(); - if (date < this.startDate || currentYear > endYear) { - res.push('disabled'); - } - return res.concat((render ? render : [])); - } - this.onRenderMonth = function (date) { - var render = (options.onRenderMonth || function () { return []; })(date); - var res = ['month']; - if (typeof render === 'string') { - render = [render]; - } - return res.concat((render ? render : [])); - } - this.startDate = new Date(-8639968443048000); - this.endDate = new Date(8639968443048000); - this.datesDisabled = []; - this.daysOfWeekDisabled = []; - this.setStartDate(options.startDate || this.element.data('date-startdate')); - this.setEndDate(options.endDate || this.element.data('date-enddate')); - this.setDatesDisabled(options.datesDisabled || this.element.data('date-dates-disabled')); - this.setDaysOfWeekDisabled(options.daysOfWeekDisabled || this.element.data('date-days-of-week-disabled')); - this.setMinutesDisabled(options.minutesDisabled || this.element.data('date-minute-disabled')); - this.setHoursDisabled(options.hoursDisabled || this.element.data('date-hour-disabled')); - this.fillDow(); - this.fillMonths(); - this.update(); - this.showMode(); - - if (this.isInline) { - this.show(); - } - }; - - Datetimepicker.prototype = { - constructor: Datetimepicker, - - _events: [], - _attachEvents: function () { - this._detachEvents(); - if (this.isInput) { // single input - this._events = [ - [this.element, { - focus: $.proxy(this.show, this), - keyup: $.proxy(this.update, this), - keydown: $.proxy(this.keydown, this) - }] - ]; - } - else if (this.component && this.hasInput) { // component: input + button - this._events = [ - // For components that are not readonly, allow keyboard nav - [this.element.find('input'), { - focus: $.proxy(this.show, this), - keyup: $.proxy(this.update, this), - keydown: $.proxy(this.keydown, this) - }], - [this.component, { - click: $.proxy(this.show, this) - }] - ]; - if (this.componentReset) { - this._events.push([ - this.componentReset, - {click: $.proxy(this.reset, this)} - ]); - } - } - else if (this.element.is('div')) { // inline datetimepicker - this.isInline = true; - } - else { - this._events = [ - [this.element, { - click: $.proxy(this.show, this) - }] - ]; - } - for (var i = 0, el, ev; i < this._events.length; i++) { - el = this._events[i][0]; - ev = this._events[i][1]; - el.on(ev); - } - }, - - _detachEvents: function () { - for (var i = 0, el, ev; i < this._events.length; i++) { - el = this._events[i][0]; - ev = this._events[i][1]; - el.off(ev); - } - this._events = []; - }, - - show: function (e) { - this.picker.show(); - this.height = this.component ? this.component.outerHeight() : this.element.outerHeight(); - if (this.forceParse) { - this.update(); - } - this.place(); - $(window).on('resize', $.proxy(this.place, this)); - if (e) { - e.stopPropagation(); - e.preventDefault(); - } - this.isVisible = true; - this.element.trigger({ - type: 'show', - date: this.date - }); - }, - - hide: function () { - if (!this.isVisible) return; - if (this.isInline) return; - this.picker.hide(); - $(window).off('resize', this.place); - this.viewMode = this.startViewMode; - this.showMode(); - if (!this.isInput) { - $(document).off('mousedown', this.hide); - } - - if ( - this.forceParse && - ( - this.isInput && this.element.val() || - this.hasInput && this.element.find('input').val() - ) - ) - this.setValue(); - this.isVisible = false; - this.element.trigger({ - type: 'hide', - date: this.date - }); - }, - - remove: function () { - this._detachEvents(); - $(document).off('mousedown', this.clickedOutside); - this.picker.remove(); - delete this.picker; - delete this.element.data().datetimepicker; - }, - - getDate: function () { - var d = this.getUTCDate(); - if (d === null) { - return null; - } - return new Date(d.getTime() + (d.getTimezoneOffset() * 60000)); - }, - - getUTCDate: function () { - return this.date; - }, - - getInitialDate: function () { - return this.initialDate - }, - - setInitialDate: function (initialDate) { - this.initialDate = initialDate; - }, - - setDate: function (d) { - this.setUTCDate(new Date(d.getTime() - (d.getTimezoneOffset() * 60000))); - }, - - setUTCDate: function (d) { - if (d >= this.startDate && d <= this.endDate) { - this.date = d; - this.setValue(); - this.viewDate = this.date; - this.fill(); - } else { - this.element.trigger({ - type: 'outOfRange', - date: d, - startDate: this.startDate, - endDate: this.endDate - }); - } - }, - - setFormat: function (format) { - this.format = DPGlobal.parseFormat(format, this.formatType); - var element; - if (this.isInput) { - element = this.element; - } else if (this.component) { - element = this.element.find('input'); - } - if (element && element.val()) { - this.setValue(); - } - }, - - setValue: function () { - var formatted = this.getFormattedDate(); - if (!this.isInput) { - if (this.component) { - this.element.find('input').val(formatted); - } - this.element.data('date', formatted); - } else { - this.element.val(formatted); - } - if (this.linkField) { - $('#' + this.linkField).val(this.getFormattedDate(this.linkFormat)); - } - }, - - getFormattedDate: function (format) { - format = format || this.format; - return DPGlobal.formatDate(this.date, format, this.language, this.formatType, this.timezone); - }, - - setStartDate: function (startDate) { - this.startDate = startDate || this.startDate; - if (this.startDate.valueOf() !== 8639968443048000) { - this.startDate = DPGlobal.parseDate(this.startDate, this.format, this.language, this.formatType, this.timezone); - } - this.update(); - this.updateNavArrows(); - }, - - setEndDate: function (endDate) { - this.endDate = endDate || this.endDate; - if (this.endDate.valueOf() !== 8639968443048000) { - this.endDate = DPGlobal.parseDate(this.endDate, this.format, this.language, this.formatType, this.timezone); - } - this.update(); - this.updateNavArrows(); - }, - - setDatesDisabled: function (datesDisabled) { - this.datesDisabled = datesDisabled || []; - if (!$.isArray(this.datesDisabled)) { - this.datesDisabled = this.datesDisabled.split(/,\s*/); - } - var mThis = this; - this.datesDisabled = $.map(this.datesDisabled, function (d) { - return DPGlobal.parseDate(d, mThis.format, mThis.language, mThis.formatType, mThis.timezone).toDateString(); - }); - this.update(); - this.updateNavArrows(); - }, - - setTitle: function (selector, value) { - return this.picker.find(selector) - .find('th:eq(1)') - .text(this.title === false ? value : this.title); - }, - - setDaysOfWeekDisabled: function (daysOfWeekDisabled) { - this.daysOfWeekDisabled = daysOfWeekDisabled || []; - if (!$.isArray(this.daysOfWeekDisabled)) { - this.daysOfWeekDisabled = this.daysOfWeekDisabled.split(/,\s*/); - } - this.daysOfWeekDisabled = $.map(this.daysOfWeekDisabled, function (d) { - return parseInt(d, 10); - }); - this.update(); - this.updateNavArrows(); - }, - - setMinutesDisabled: function (minutesDisabled) { - this.minutesDisabled = minutesDisabled || []; - if (!$.isArray(this.minutesDisabled)) { - this.minutesDisabled = this.minutesDisabled.split(/,\s*/); - } - this.minutesDisabled = $.map(this.minutesDisabled, function (d) { - return parseInt(d, 10); - }); - this.update(); - this.updateNavArrows(); - }, - - setHoursDisabled: function (hoursDisabled) { - this.hoursDisabled = hoursDisabled || []; - if (!$.isArray(this.hoursDisabled)) { - this.hoursDisabled = this.hoursDisabled.split(/,\s*/); - } - this.hoursDisabled = $.map(this.hoursDisabled, function (d) { - return parseInt(d, 10); - }); - this.update(); - this.updateNavArrows(); - }, - - place: function () { - if (this.isInline) return; - - if (!this.zIndex) { - var index_highest = 0; - $('div').each(function () { - var index_current = parseInt($(this).css('zIndex'), 10); - if (index_current > index_highest) { - index_highest = index_current; - } - }); - this.zIndex = index_highest + 10; - } - - var offset, top, left, containerOffset; - if (this.container instanceof $) { - containerOffset = this.container.offset(); - } else { - containerOffset = $(this.container).offset(); - } - - if (this.component) { - offset = this.component.offset(); - left = offset.left; - if (this.pickerPosition === 'bottom-left' || this.pickerPosition === 'top-left') { - left += this.component.outerWidth() - this.picker.outerWidth(); - } - } else { - offset = this.element.offset(); - left = offset.left; - if (this.pickerPosition === 'bottom-left' || this.pickerPosition === 'top-left') { - left += this.element.outerWidth() - this.picker.outerWidth(); - } - } - - var bodyWidth = document.body.clientWidth || window.innerWidth; - if (left + 220 > bodyWidth) { - left = bodyWidth - 220; - } - - if (this.pickerPosition === 'top-left' || this.pickerPosition === 'top-right') { - top = offset.top - this.picker.outerHeight(); - } else { - top = offset.top + this.height; - } - - top = top - containerOffset.top; - left = left - containerOffset.left; - - this.picker.css({ - top: top, - left: left, - zIndex: this.zIndex - }); - }, - - hour_minute: "^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]", - - update: function () { - var date, fromArgs = false; - if (arguments && arguments.length && (typeof arguments[0] === 'string' || arguments[0] instanceof Date)) { - date = arguments[0]; - fromArgs = true; - } else { - date = (this.isInput ? this.element.val() : this.element.find('input').val()) || this.element.data('date') || this.initialDate; - if (typeof date === 'string') { - date = date.replace(/^\s+|\s+$/g,''); - } - } - - if (!date) { - date = new Date(); - fromArgs = false; - } - - if (typeof date === "string") { - if (new RegExp(this.hour_minute).test(date) || new RegExp(this.hour_minute + ":[0-5][0-9]").test(date)) { - date = this.getDate() - } - } - - this.date = DPGlobal.parseDate(date, this.format, this.language, this.formatType, this.timezone); - - if (fromArgs) this.setValue(); - - if (this.date < this.startDate) { - this.viewDate = new Date(this.startDate); - } else if (this.date > this.endDate) { - this.viewDate = new Date(this.endDate); - } else { - this.viewDate = new Date(this.date); - } - this.fill(); - }, - - fillDow: function () { - var dowCnt = this.weekStart, - html = ''; - while (dowCnt < this.weekStart + 7) { - html += '' + dates[this.language].daysMin[(dowCnt++) % 7] + ''; - } - html += ''; - this.picker.find('.datetimepicker-days thead').append(html); - }, - - fillMonths: function () { - var html = ''; - var d = new Date(this.viewDate); - for (var i = 0; i < 12; i++) { - d.setUTCMonth(i); - var classes = this.onRenderMonth(d); - html += '' + dates[this.language].monthsShort[i] + ''; - } - this.picker.find('.datetimepicker-months td').html(html); - }, - - fill: function () { - if (!this.date || !this.viewDate) { - return; - } - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(), - dayMonth = d.getUTCDate(), - hours = d.getUTCHours(), - startYear = this.startDate.getUTCFullYear(), - startMonth = this.startDate.getUTCMonth(), - endYear = this.endDate.getUTCFullYear(), - endMonth = this.endDate.getUTCMonth() + 1, - currentDate = (new UTCDate(this.date.getUTCFullYear(), this.date.getUTCMonth(), this.date.getUTCDate())).valueOf(), - today = new Date(); - this.setTitle('.datetimepicker-days', dates[this.language].months[month] + ' ' + year) - if (this.formatViewType === 'time') { - var formatted = this.getFormattedDate(); - this.setTitle('.datetimepicker-hours', formatted); - this.setTitle('.datetimepicker-minutes', formatted); - } else { - this.setTitle('.datetimepicker-hours', dayMonth + ' ' + dates[this.language].months[month] + ' ' + year); - this.setTitle('.datetimepicker-minutes', dayMonth + ' ' + dates[this.language].months[month] + ' ' + year); - } - this.picker.find('tfoot th.today') - .text(dates[this.language].today || dates['en'].today) - .toggle(this.todayBtn !== false); - this.picker.find('tfoot th.clear') - .text(dates[this.language].clear || dates['en'].clear) - .toggle(this.clearBtn !== false); - this.updateNavArrows(); - this.fillMonths(); - var prevMonth = UTCDate(year, month - 1, 28, 0, 0, 0, 0), - day = DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth()); - prevMonth.setUTCDate(day); - prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - this.weekStart + 7) % 7); - var nextMonth = new Date(prevMonth); - nextMonth.setUTCDate(nextMonth.getUTCDate() + 42); - nextMonth = nextMonth.valueOf(); - var html = []; - var classes; - while (prevMonth.valueOf() < nextMonth) { - if (prevMonth.getUTCDay() === this.weekStart) { - html.push(''); - } - classes = this.onRenderDay(prevMonth); - if (prevMonth.getUTCFullYear() < year || (prevMonth.getUTCFullYear() === year && prevMonth.getUTCMonth() < month)) { - classes.push('old'); - } else if (prevMonth.getUTCFullYear() > year || (prevMonth.getUTCFullYear() === year && prevMonth.getUTCMonth() > month)) { - classes.push('new'); - } - // Compare internal UTC date with local today, not UTC today - if (this.todayHighlight && - prevMonth.getUTCFullYear() === today.getFullYear() && - prevMonth.getUTCMonth() === today.getMonth() && - prevMonth.getUTCDate() === today.getDate()) { - classes.push('today'); - } - if (prevMonth.valueOf() === currentDate) { - classes.push('active'); - } - if ((prevMonth.valueOf() + 86400000) <= this.startDate || prevMonth.valueOf() > this.endDate || - $.inArray(prevMonth.getUTCDay(), this.daysOfWeekDisabled) !== -1 || - $.inArray(prevMonth.toDateString(), this.datesDisabled) !== -1) { - classes.push('disabled'); - } - html.push('' + prevMonth.getUTCDate() + ''); - if (prevMonth.getUTCDay() === this.weekEnd) { - html.push(''); - } - prevMonth.setUTCDate(prevMonth.getUTCDate() + 1); - } - this.picker.find('.datetimepicker-days tbody').empty().append(html.join('')); - - html = []; - var txt = '', meridian = '', meridianOld = ''; - var hoursDisabled = this.hoursDisabled || []; - d = new Date(this.viewDate) - for (var i = 0; i < 24; i++) { - d.setUTCHours(i); - classes = this.onRenderHour(d); - if (hoursDisabled.indexOf(i) !== -1) { - classes.push('disabled'); - } - var actual = UTCDate(year, month, dayMonth, i); - // We want the previous hour for the startDate - if ((actual.valueOf() + 3600000) <= this.startDate || actual.valueOf() > this.endDate) { - classes.push('disabled'); - } else if (hours === i) { - classes.push('active'); - } - if (this.showMeridian && dates[this.language].meridiem.length === 2) { - meridian = (i < 12 ? dates[this.language].meridiem[0] : dates[this.language].meridiem[1]); - if (meridian !== meridianOld) { - if (meridianOld !== '') { - html.push(''); - } - html.push('
' + meridian.toUpperCase() + ''); - } - meridianOld = meridian; - txt = (i % 12 ? i % 12 : 12); - if (i < 12) { - classes.push('hour_am'); - } else { - classes.push('hour_pm'); - } - html.push('' + txt + ''); - if (i === 23) { - html.push('
'); - } - } else { - txt = i + ':00'; - html.push('' + txt + ''); - } - } - this.picker.find('.datetimepicker-hours td').html(html.join('')); - - html = []; - txt = ''; - meridian = ''; - meridianOld = ''; - var minutesDisabled = this.minutesDisabled || []; - d = new Date(this.viewDate); - for (var i = 0; i < 60; i += this.minuteStep) { - if (minutesDisabled.indexOf(i) !== -1) continue; - d.setUTCMinutes(i); - d.setUTCSeconds(0); - classes = this.onRenderMinute(d); - if (this.showMeridian && dates[this.language].meridiem.length === 2) { - meridian = (hours < 12 ? dates[this.language].meridiem[0] : dates[this.language].meridiem[1]); - if (meridian !== meridianOld) { - if (meridianOld !== '') { - html.push(''); - } - html.push('
' + meridian.toUpperCase() + ''); - } - meridianOld = meridian; - txt = (hours % 12 ? hours % 12 : 12); - html.push('' + txt + ':' + (i < 10 ? '0' + i : i) + ''); - if (i === 59) { - html.push('
'); - } - } else { - txt = i + ':00'; - html.push('' + hours + ':' + (i < 10 ? '0' + i : i) + ''); - } - } - this.picker.find('.datetimepicker-minutes td').html(html.join('')); - - var currentYear = this.date.getUTCFullYear(); - var months = this.setTitle('.datetimepicker-months', year) - .end() - .find('.month').removeClass('active'); - if (currentYear === year) { - // getUTCMonths() returns 0 based, and we need to select the next one - // To cater bootstrap 2 we don't need to select the next one - months.eq(this.date.getUTCMonth()).addClass('active'); - } - if (year < startYear || year > endYear) { - months.addClass('disabled'); - } - if (year === startYear) { - months.slice(0, startMonth).addClass('disabled'); - } - if (year === endYear) { - months.slice(endMonth).addClass('disabled'); - } - - html = ''; - year = parseInt(year / 10, 10) * 10; - var yearCont = this.setTitle('.datetimepicker-years', year + '-' + (year + 9)) - .end() - .find('td'); - year -= 1; - d = new Date(this.viewDate); - for (var i = -1; i < 11; i++) { - d.setUTCFullYear(year); - classes = this.onRenderYear(d); - if (i === -1 || i === 10) { - classes.push(old); - } - html += '' + year + ''; - year += 1; - } - yearCont.html(html); - this.place(); - }, - - updateNavArrows: function () { - var d = new Date(this.viewDate), - year = d.getUTCFullYear(), - month = d.getUTCMonth(), - day = d.getUTCDate(), - hour = d.getUTCHours(); - switch (this.viewMode) { - case 0: - if (year <= this.startDate.getUTCFullYear() - && month <= this.startDate.getUTCMonth() - && day <= this.startDate.getUTCDate() - && hour <= this.startDate.getUTCHours()) { - this.picker.find('.prev').css({visibility: 'hidden'}); - } else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (year >= this.endDate.getUTCFullYear() - && month >= this.endDate.getUTCMonth() - && day >= this.endDate.getUTCDate() - && hour >= this.endDate.getUTCHours()) { - this.picker.find('.next').css({visibility: 'hidden'}); - } else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - case 1: - if (year <= this.startDate.getUTCFullYear() - && month <= this.startDate.getUTCMonth() - && day <= this.startDate.getUTCDate()) { - this.picker.find('.prev').css({visibility: 'hidden'}); - } else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (year >= this.endDate.getUTCFullYear() - && month >= this.endDate.getUTCMonth() - && day >= this.endDate.getUTCDate()) { - this.picker.find('.next').css({visibility: 'hidden'}); - } else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - case 2: - if (year <= this.startDate.getUTCFullYear() - && month <= this.startDate.getUTCMonth()) { - this.picker.find('.prev').css({visibility: 'hidden'}); - } else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (year >= this.endDate.getUTCFullYear() - && month >= this.endDate.getUTCMonth()) { - this.picker.find('.next').css({visibility: 'hidden'}); - } else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - case 3: - case 4: - if (year <= this.startDate.getUTCFullYear()) { - this.picker.find('.prev').css({visibility: 'hidden'}); - } else { - this.picker.find('.prev').css({visibility: 'visible'}); - } - if (year >= this.endDate.getUTCFullYear()) { - this.picker.find('.next').css({visibility: 'hidden'}); - } else { - this.picker.find('.next').css({visibility: 'visible'}); - } - break; - } - }, - - mousewheel: function (e) { - - e.preventDefault(); - e.stopPropagation(); - - if (this.wheelPause) { - return; - } - - this.wheelPause = true; - - var originalEvent = e.originalEvent; - - var delta = originalEvent.wheelDelta; - - var mode = delta > 0 ? 1 : (delta === 0) ? 0 : -1; - - if (this.wheelViewModeNavigationInverseDirection) { - mode = -mode; - } - - this.showMode(mode); - - setTimeout($.proxy(function () { - - this.wheelPause = false - - }, this), this.wheelViewModeNavigationDelay); - - }, - - click: function (e) { - e.stopPropagation(); - e.preventDefault(); - var target = $(e.target).closest('span, td, th, legend'); - if (target.is('.' + this.icontype)) { - target = $(target).parent().closest('span, td, th, legend'); - } - if (target.length === 1) { - if (target.is('.disabled')) { - this.element.trigger({ - type: 'outOfRange', - date: this.viewDate, - startDate: this.startDate, - endDate: this.endDate - }); - return; - } - switch (target[0].nodeName.toLowerCase()) { - case 'th': - switch (target[0].className) { - case 'switch': - this.showMode(1); - break; - case 'prev': - case 'next': - var dir = DPGlobal.modes[this.viewMode].navStep * (target[0].className === 'prev' ? -1 : 1); - switch (this.viewMode) { - case 0: - this.viewDate = this.moveHour(this.viewDate, dir); - break; - case 1: - this.viewDate = this.moveDate(this.viewDate, dir); - break; - case 2: - this.viewDate = this.moveMonth(this.viewDate, dir); - break; - case 3: - case 4: - this.viewDate = this.moveYear(this.viewDate, dir); - break; - } - this.fill(); - this.element.trigger({ - type: target[0].className + ':' + this.convertViewModeText(this.viewMode), - date: this.viewDate, - startDate: this.startDate, - endDate: this.endDate - }); - break; - case 'clear': - this.reset(); - if (this.autoclose) { - this.hide(); - } - break; - case 'today': - var date = new Date(); - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0); - - // Respect startDate and endDate. - if (date < this.startDate) date = this.startDate; - else if (date > this.endDate) date = this.endDate; - - this.viewMode = this.startViewMode; - this.showMode(0); - this._setDate(date); - this.fill(); - if (this.autoclose) { - this.hide(); - } - break; - } - break; - case 'span': - if (!target.is('.disabled')) { - var year = this.viewDate.getUTCFullYear(), - month = this.viewDate.getUTCMonth(), - day = this.viewDate.getUTCDate(), - hours = this.viewDate.getUTCHours(), - minutes = this.viewDate.getUTCMinutes(), - seconds = this.viewDate.getUTCSeconds(); - - if (target.is('.month')) { - this.viewDate.setUTCDate(1); - month = target.parent().find('span').index(target); - day = this.viewDate.getUTCDate(); - this.viewDate.setUTCMonth(month); - this.element.trigger({ - type: 'changeMonth', - date: this.viewDate - }); - if (this.viewSelect >= 3) { - this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); - } - } else if (target.is('.year')) { - this.viewDate.setUTCDate(1); - year = parseInt(target.text(), 10) || 0; - this.viewDate.setUTCFullYear(year); - this.element.trigger({ - type: 'changeYear', - date: this.viewDate - }); - if (this.viewSelect >= 4) { - this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); - } - } else if (target.is('.hour')) { - hours = parseInt(target.text(), 10) || 0; - if (target.hasClass('hour_am') || target.hasClass('hour_pm')) { - if (hours === 12 && target.hasClass('hour_am')) { - hours = 0; - } else if (hours !== 12 && target.hasClass('hour_pm')) { - hours += 12; - } - } - this.viewDate.setUTCHours(hours); - this.element.trigger({ - type: 'changeHour', - date: this.viewDate - }); - if (this.viewSelect >= 1) { - this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); - } - } else if (target.is('.minute')) { - minutes = parseInt(target.text().substr(target.text().indexOf(':') + 1), 10) || 0; - this.viewDate.setUTCMinutes(minutes); - this.element.trigger({ - type: 'changeMinute', - date: this.viewDate - }); - if (this.viewSelect >= 0) { - this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); - } - } - if (this.viewMode !== 0) { - var oldViewMode = this.viewMode; - this.showMode(-1); - this.fill(); - if (oldViewMode === this.viewMode && this.autoclose) { - this.hide(); - } - } else { - this.fill(); - if (this.autoclose) { - this.hide(); - } - } - } - break; - case 'td': - if (target.is('.day') && !target.is('.disabled')) { - var day = parseInt(target.text(), 10) || 1; - var year = this.viewDate.getUTCFullYear(), - month = this.viewDate.getUTCMonth(), - hours = this.viewDate.getUTCHours(), - minutes = this.viewDate.getUTCMinutes(), - seconds = this.viewDate.getUTCSeconds(); - if (target.is('.old')) { - if (month === 0) { - month = 11; - year -= 1; - } else { - month -= 1; - } - } else if (target.is('.new')) { - if (month === 11) { - month = 0; - year += 1; - } else { - month += 1; - } - } - this.viewDate.setUTCFullYear(year); - this.viewDate.setUTCMonth(month, day); - this.element.trigger({ - type: 'changeDay', - date: this.viewDate - }); - if (this.viewSelect >= 2) { - this._setDate(UTCDate(year, month, day, hours, minutes, seconds, 0)); - } - } - var oldViewMode = this.viewMode; - this.showMode(-1); - this.fill(); - if (oldViewMode === this.viewMode && this.autoclose) { - this.hide(); - } - break; - } - } - }, - - _setDate: function (date, which) { - if (!which || which === 'date') - this.date = date; - if (!which || which === 'view') - this.viewDate = date; - this.fill(); - this.setValue(); - var element; - if (this.isInput) { - element = this.element; - } else if (this.component) { - element = this.element.find('input'); - } - if (element) { - element.change(); - } - this.element.trigger({ - type: 'changeDate', - date: this.getDate() - }); - if(date === null) - this.date = this.viewDate; - }, - - moveMinute: function (date, dir) { - if (!dir) return date; - var new_date = new Date(date.valueOf()); - //dir = dir > 0 ? 1 : -1; - new_date.setUTCMinutes(new_date.getUTCMinutes() + (dir * this.minuteStep)); - return new_date; - }, - - moveHour: function (date, dir) { - if (!dir) return date; - var new_date = new Date(date.valueOf()); - //dir = dir > 0 ? 1 : -1; - new_date.setUTCHours(new_date.getUTCHours() + dir); - return new_date; - }, - - moveDate: function (date, dir) { - if (!dir) return date; - var new_date = new Date(date.valueOf()); - //dir = dir > 0 ? 1 : -1; - new_date.setUTCDate(new_date.getUTCDate() + dir); - return new_date; - }, - - moveMonth: function (date, dir) { - if (!dir) return date; - var new_date = new Date(date.valueOf()), - day = new_date.getUTCDate(), - month = new_date.getUTCMonth(), - mag = Math.abs(dir), - new_month, test; - dir = dir > 0 ? 1 : -1; - if (mag === 1) { - test = dir === -1 - // If going back one month, make sure month is not current month - // (eg, Mar 31 -> Feb 31 === Feb 28, not Mar 02) - ? function () { - return new_date.getUTCMonth() === month; - } - // If going forward one month, make sure month is as expected - // (eg, Jan 31 -> Feb 31 === Feb 28, not Mar 02) - : function () { - return new_date.getUTCMonth() !== new_month; - }; - new_month = month + dir; - new_date.setUTCMonth(new_month); - // Dec -> Jan (12) or Jan -> Dec (-1) -- limit expected date to 0-11 - if (new_month < 0 || new_month > 11) - new_month = (new_month + 12) % 12; - } else { - // For magnitudes >1, move one month at a time... - for (var i = 0; i < mag; i++) - // ...which might decrease the day (eg, Jan 31 to Feb 28, etc)... - new_date = this.moveMonth(new_date, dir); - // ...then reset the day, keeping it in the new month - new_month = new_date.getUTCMonth(); - new_date.setUTCDate(day); - test = function () { - return new_month !== new_date.getUTCMonth(); - }; - } - // Common date-resetting loop -- if date is beyond end of month, make it - // end of month - while (test()) { - new_date.setUTCDate(--day); - new_date.setUTCMonth(new_month); - } - return new_date; - }, - - moveYear: function (date, dir) { - return this.moveMonth(date, dir * 12); - }, - - dateWithinRange: function (date) { - return date >= this.startDate && date <= this.endDate; - }, - - keydown: function (e) { - if (this.picker.is(':not(:visible)')) { - if (e.keyCode === 27) // allow escape to hide and re-show picker - this.show(); - return; - } - var dateChanged = false, - dir, newDate, newViewDate; - switch (e.keyCode) { - case 27: // escape - this.hide(); - e.preventDefault(); - break; - case 37: // left - case 39: // right - if (!this.keyboardNavigation) break; - dir = e.keyCode === 37 ? -1 : 1; - var viewMode = this.viewMode; - if (e.ctrlKey) { - viewMode += 2; - } else if (e.shiftKey) { - viewMode += 1; - } - if (viewMode === 4) { - newDate = this.moveYear(this.date, dir); - newViewDate = this.moveYear(this.viewDate, dir); - } else if (viewMode === 3) { - newDate = this.moveMonth(this.date, dir); - newViewDate = this.moveMonth(this.viewDate, dir); - } else if (viewMode === 2) { - newDate = this.moveDate(this.date, dir); - newViewDate = this.moveDate(this.viewDate, dir); - } else if (viewMode === 1) { - newDate = this.moveHour(this.date, dir); - newViewDate = this.moveHour(this.viewDate, dir); - } else if (viewMode === 0) { - newDate = this.moveMinute(this.date, dir); - newViewDate = this.moveMinute(this.viewDate, dir); - } - if (this.dateWithinRange(newDate)) { - this.date = newDate; - this.viewDate = newViewDate; - this.setValue(); - this.update(); - e.preventDefault(); - dateChanged = true; - } - break; - case 38: // up - case 40: // down - if (!this.keyboardNavigation) break; - dir = e.keyCode === 38 ? -1 : 1; - viewMode = this.viewMode; - if (e.ctrlKey) { - viewMode += 2; - } else if (e.shiftKey) { - viewMode += 1; - } - if (viewMode === 4) { - newDate = this.moveYear(this.date, dir); - newViewDate = this.moveYear(this.viewDate, dir); - } else if (viewMode === 3) { - newDate = this.moveMonth(this.date, dir); - newViewDate = this.moveMonth(this.viewDate, dir); - } else if (viewMode === 2) { - newDate = this.moveDate(this.date, dir * 7); - newViewDate = this.moveDate(this.viewDate, dir * 7); - } else if (viewMode === 1) { - if (this.showMeridian) { - newDate = this.moveHour(this.date, dir * 6); - newViewDate = this.moveHour(this.viewDate, dir * 6); - } else { - newDate = this.moveHour(this.date, dir * 4); - newViewDate = this.moveHour(this.viewDate, dir * 4); - } - } else if (viewMode === 0) { - newDate = this.moveMinute(this.date, dir * 4); - newViewDate = this.moveMinute(this.viewDate, dir * 4); - } - if (this.dateWithinRange(newDate)) { - this.date = newDate; - this.viewDate = newViewDate; - this.setValue(); - this.update(); - e.preventDefault(); - dateChanged = true; - } - break; - case 13: // enter - if (this.viewMode !== 0) { - var oldViewMode = this.viewMode; - this.showMode(-1); - this.fill(); - if (oldViewMode === this.viewMode && this.autoclose) { - this.hide(); - } - } else { - this.fill(); - if (this.autoclose) { - this.hide(); - } - } - e.preventDefault(); - break; - case 9: // tab - this.hide(); - break; - } - if (dateChanged) { - var element; - if (this.isInput) { - element = this.element; - } else if (this.component) { - element = this.element.find('input'); - } - if (element) { - element.change(); - } - this.element.trigger({ - type: 'changeDate', - date: this.getDate() - }); - } - }, - - showMode: function (dir) { - if (dir) { - var newViewMode = Math.max(0, Math.min(DPGlobal.modes.length - 1, this.viewMode + dir)); - if (newViewMode >= this.minView && newViewMode <= this.maxView) { - this.element.trigger({ - type: 'changeMode', - date: this.viewDate, - oldViewMode: this.viewMode, - newViewMode: newViewMode - }); - - this.viewMode = newViewMode; - } - } - /* - vitalets: fixing bug of very special conditions: - jquery 1.7.1 + webkit + show inline datetimepicker in bootstrap popover. - Method show() does not set display css correctly and datetimepicker is not shown. - Changed to .css('display', 'block') solve the problem. - See https://github.com/vitalets/x-editable/issues/37 - - In jquery 1.7.2+ everything works fine. - */ - //this.picker.find('>div').hide().filter('.datetimepicker-'+DPGlobal.modes[this.viewMode].clsName).show(); - this.picker.find('>div').hide().filter('.datetimepicker-' + DPGlobal.modes[this.viewMode].clsName).css('display', 'block'); - this.updateNavArrows(); - }, - - reset: function () { - this._setDate(null, 'date'); - }, - - convertViewModeText: function (viewMode) { - switch (viewMode) { - case 4: - return 'decade'; - case 3: - return 'year'; - case 2: - return 'month'; - case 1: - return 'day'; - case 0: - return 'hour'; - } - } - }; - - var old = $.fn.datetimepicker; - $.fn.datetimepicker = function (option) { - var args = Array.apply(null, arguments); - args.shift(); - var internal_return; - this.each(function () { - var $this = $(this), - data = $this.data('datetimepicker'), - options = typeof option === 'object' && option; - if (!data) { - $this.data('datetimepicker', (data = new Datetimepicker(this, $.extend({}, $.fn.datetimepicker.defaults, options)))); - } - if (typeof option === 'string' && typeof data[option] === 'function') { - internal_return = data[option].apply(data, args); - if (internal_return !== undefined) { - return false; - } - } - }); - if (internal_return !== undefined) - return internal_return; - else - return this; - }; - - $.fn.datetimepicker.defaults = { - }; - $.fn.datetimepicker.Constructor = Datetimepicker; - var dates = $.fn.datetimepicker.dates = { - en: { - days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], - daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], - daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'], - months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], - meridiem: ['am', 'pm'], - suffix: ['st', 'nd', 'rd', 'th'], - today: 'Today', - clear: 'Clear' - } - }; - - var DPGlobal = { - modes: [ - { - clsName: 'minutes', - navFnc: 'Hours', - navStep: 1 - }, - { - clsName: 'hours', - navFnc: 'Date', - navStep: 1 - }, - { - clsName: 'days', - navFnc: 'Month', - navStep: 1 - }, - { - clsName: 'months', - navFnc: 'FullYear', - navStep: 1 - }, - { - clsName: 'years', - navFnc: 'FullYear', - navStep: 10 - } - ], - isLeapYear: function (year) { - return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0)) - }, - getDaysInMonth: function (year, month) { - return [31, (DPGlobal.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] - }, - getDefaultFormat: function (type, field) { - if (type === 'standard') { - if (field === 'input') - return 'yyyy-mm-dd hh:ii'; - else - return 'yyyy-mm-dd hh:ii:ss'; - } else if (type === 'php') { - if (field === 'input') - return 'Y-m-d H:i'; - else - return 'Y-m-d H:i:s'; - } else { - throw new Error('Invalid format type.'); - } - }, - validParts: function (type) { - if (type === 'standard') { - return /t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g; - } else if (type === 'php') { - return /[dDjlNwzFmMnStyYaABgGhHis]/g; - } else { - throw new Error('Invalid format type.'); - } - }, - nonpunctuation: /[^ -\/:-@\[-`{-~\t\n\rTZ]+/g, - parseFormat: function (format, type) { - // IE treats \0 as a string end in inputs (truncating the value), - // so it's a bad format delimiter, anyway - var separators = format.replace(this.validParts(type), '\0').split('\0'), - parts = format.match(this.validParts(type)); - if (!separators || !separators.length || !parts || parts.length === 0) { - throw new Error('Invalid date format.'); - } - return {separators: separators, parts: parts}; - }, - parseDate: function (date, format, language, type, timezone) { - if (date instanceof Date) { - var dateUTC = new Date(date.valueOf() - date.getTimezoneOffset() * 60000); - dateUTC.setMilliseconds(0); - return dateUTC; - } - if (/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(date)) { - format = this.parseFormat('yyyy-mm-dd', type); - } - if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(date)) { - format = this.parseFormat('yyyy-mm-dd hh:ii', type); - } - if (/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(date)) { - format = this.parseFormat('yyyy-mm-dd hh:ii:ss', type); - } - if (/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(date)) { - var part_re = /([-+]\d+)([dmwy])/, - parts = date.match(/([-+]\d+)([dmwy])/g), - part, dir; - date = new Date(); - for (var i = 0; i < parts.length; i++) { - part = part_re.exec(parts[i]); - dir = parseInt(part[1]); - switch (part[2]) { - case 'd': - date.setUTCDate(date.getUTCDate() + dir); - break; - case 'm': - date = Datetimepicker.prototype.moveMonth.call(Datetimepicker.prototype, date, dir); - break; - case 'w': - date.setUTCDate(date.getUTCDate() + dir * 7); - break; - case 'y': - date = Datetimepicker.prototype.moveYear.call(Datetimepicker.prototype, date, dir); - break; - } - } - return UTCDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 0); - } - var parts = date && date.toString().match(this.nonpunctuation) || [], - date = new Date(0, 0, 0, 0, 0, 0, 0), - parsed = {}, - setters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'D', 'DD', 'd', 'dd', 'H', 'HH', 'p', 'P', 'z', 'Z'], - setters_map = { - hh: function (d, v) { - return d.setUTCHours(v); - }, - h: function (d, v) { - return d.setUTCHours(v); - }, - HH: function (d, v) { - return d.setUTCHours(v === 12 ? 0 : v); - }, - H: function (d, v) { - return d.setUTCHours(v === 12 ? 0 : v); - }, - ii: function (d, v) { - return d.setUTCMinutes(v); - }, - i: function (d, v) { - return d.setUTCMinutes(v); - }, - ss: function (d, v) { - return d.setUTCSeconds(v); - }, - s: function (d, v) { - return d.setUTCSeconds(v); - }, - yyyy: function (d, v) { - return d.setUTCFullYear(v); - }, - yy: function (d, v) { - return d.setUTCFullYear(2000 + v); - }, - m: function (d, v) { - v -= 1; - while (v < 0) v += 12; - v %= 12; - d.setUTCMonth(v); - while (d.getUTCMonth() !== v) - if (isNaN(d.getUTCMonth())) - return d; - else - d.setUTCDate(d.getUTCDate() - 1); - return d; - }, - d: function (d, v) { - return d.setUTCDate(v); - }, - p: function (d, v) { - return d.setUTCHours(v === 1 ? d.getUTCHours() + 12 : d.getUTCHours()); - }, - z: function () { - return timezone - } - }, - val, filtered, part; - setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m']; - setters_map['dd'] = setters_map['d']; - setters_map['P'] = setters_map['p']; - setters_map['Z'] = setters_map['z']; - date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()); - if (parts.length === format.parts.length) { - for (var i = 0, cnt = format.parts.length; i < cnt; i++) { - val = parseInt(parts[i], 10); - part = format.parts[i]; - if (isNaN(val)) { - switch (part) { - case 'MM': - filtered = $(dates[language].months).filter(function () { - var m = this.slice(0, parts[i].length), - p = parts[i].slice(0, m.length); - return m === p; - }); - val = $.inArray(filtered[0], dates[language].months) + 1; - break; - case 'M': - filtered = $(dates[language].monthsShort).filter(function () { - var m = this.slice(0, parts[i].length), - p = parts[i].slice(0, m.length); - return m.toLowerCase() === p.toLowerCase(); - }); - val = $.inArray(filtered[0], dates[language].monthsShort) + 1; - break; - case 'p': - case 'P': - val = $.inArray(parts[i].toLowerCase(), dates[language].meridiem); - break; - case 'z': - case 'Z': - timezone; - break; - - } - } - parsed[part] = val; - } - for (var i = 0, s; i < setters_order.length; i++) { - s = setters_order[i]; - if (s in parsed && !isNaN(parsed[s])) - setters_map[s](date, parsed[s]) - } - } - return date; - }, - formatDate: function (date, format, language, type, timezone) { - if (date === null) { - return ''; - } - var val; - if (type === 'standard') { - val = { - t: date.getTime(), - // year - yy: date.getUTCFullYear().toString().substring(2), - yyyy: date.getUTCFullYear(), - // month - m: date.getUTCMonth() + 1, - M: dates[language].monthsShort[date.getUTCMonth()], - MM: dates[language].months[date.getUTCMonth()], - // day - d: date.getUTCDate(), - D: dates[language].daysShort[date.getUTCDay()], - DD: dates[language].days[date.getUTCDay()], - p: (dates[language].meridiem.length === 2 ? dates[language].meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''), - // hour - h: date.getUTCHours(), - // minute - i: date.getUTCMinutes(), - // second - s: date.getUTCSeconds(), - // timezone - z: timezone - }; - - if (dates[language].meridiem.length === 2) { - val.H = (val.h % 12 === 0 ? 12 : val.h % 12); - } - else { - val.H = val.h; - } - val.HH = (val.H < 10 ? '0' : '') + val.H; - val.P = val.p.toUpperCase(); - val.Z = val.z; - val.hh = (val.h < 10 ? '0' : '') + val.h; - val.ii = (val.i < 10 ? '0' : '') + val.i; - val.ss = (val.s < 10 ? '0' : '') + val.s; - val.dd = (val.d < 10 ? '0' : '') + val.d; - val.mm = (val.m < 10 ? '0' : '') + val.m; - } else if (type === 'php') { - // php format - val = { - // year - y: date.getUTCFullYear().toString().substring(2), - Y: date.getUTCFullYear(), - // month - F: dates[language].months[date.getUTCMonth()], - M: dates[language].monthsShort[date.getUTCMonth()], - n: date.getUTCMonth() + 1, - t: DPGlobal.getDaysInMonth(date.getUTCFullYear(), date.getUTCMonth()), - // day - j: date.getUTCDate(), - l: dates[language].days[date.getUTCDay()], - D: dates[language].daysShort[date.getUTCDay()], - w: date.getUTCDay(), // 0 -> 6 - N: (date.getUTCDay() === 0 ? 7 : date.getUTCDay()), // 1 -> 7 - S: (date.getUTCDate() % 10 <= dates[language].suffix.length ? dates[language].suffix[date.getUTCDate() % 10 - 1] : ''), - // hour - a: (dates[language].meridiem.length === 2 ? dates[language].meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''), - g: (date.getUTCHours() % 12 === 0 ? 12 : date.getUTCHours() % 12), - G: date.getUTCHours(), - // minute - i: date.getUTCMinutes(), - // second - s: date.getUTCSeconds() - }; - val.m = (val.n < 10 ? '0' : '') + val.n; - val.d = (val.j < 10 ? '0' : '') + val.j; - val.A = val.a.toString().toUpperCase(); - val.h = (val.g < 10 ? '0' : '') + val.g; - val.H = (val.G < 10 ? '0' : '') + val.G; - val.i = (val.i < 10 ? '0' : '') + val.i; - val.s = (val.s < 10 ? '0' : '') + val.s; - } else { - throw new Error('Invalid format type.'); - } - var date = [], - seps = $.extend([], format.separators); - for (var i = 0, cnt = format.parts.length; i < cnt; i++) { - if (seps.length) { - date.push(seps.shift()); - } - date.push(val[format.parts[i]]); - } - if (seps.length) { - date.push(seps.shift()); - } - return date.join(''); - }, - convertViewMode: function (viewMode) { - switch (viewMode) { - case 4: - case 'decade': - viewMode = 4; - break; - case 3: - case 'year': - viewMode = 3; - break; - case 2: - case 'month': - viewMode = 2; - break; - case 1: - case 'day': - viewMode = 1; - break; - case 0: - case 'hour': - viewMode = 0; - break; - } - - return viewMode; - }, - headTemplate: '' + - '' + - '' + - '' + - '' + - '' + - '', - headTemplateV3: '' + - '' + - ' ' + - '' + - ' ' + - '' + - '', - contTemplate: '', - footTemplate: '' + - '' + - '' + - '' - }; - DPGlobal.template = '
' + - '
' + - '' + - DPGlobal.headTemplate + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplate + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplate + - '' + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplate + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplate + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
'; - DPGlobal.templateV3 = '
' + - '
' + - '' + - DPGlobal.headTemplateV3 + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplateV3 + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplateV3 + - '' + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplateV3 + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
' + - '' + - DPGlobal.headTemplateV3 + - DPGlobal.contTemplate + - DPGlobal.footTemplate + - '
' + - '
' + - '
'; - $.fn.datetimepicker.DPGlobal = DPGlobal; - - /* DATETIMEPICKER NO CONFLICT - * =================== */ - - $.fn.datetimepicker.noConflict = function () { - $.fn.datetimepicker = old; - return this; - }; - - /* DATETIMEPICKER DATA-API - * ================== */ - - $(document).on( - 'focus.datetimepicker.data-api click.datetimepicker.data-api', - '[data-provide="datetimepicker"]', - function (e) { - var $this = $(this); - if ($this.data('datetimepicker')) return; - e.preventDefault(); - // component click requires us to explicitly show it - $this.datetimepicker('show'); - } - ); - $(function () { - $('[data-provide="datetimepicker-inline"]').datetimepicker(); - }); - -})); diff --git a/src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.min.js b/src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.min.js deleted file mode 100644 index eba15ce5..00000000 --- a/src/cdh/core/static/cdh.core/js/bootstrap-datetimepicker.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{if(typeof exports==="object"){a(require("jquery"))}else{a(jQuery)}}}(function(d,f){if(!("indexOf" in Array.prototype)){Array.prototype.indexOf=function(k,j){if(j===f){j=0}if(j<0){j+=this.length}if(j<0){j=0}for(var l=this.length;jthis.endDate){o.push("disabled")}else{if(Math.floor(this.date.getUTCMinutes()/this.minuteStep)===Math.floor(n.getUTCMinutes()/this.minuteStep)){o.push("active")}}return o.concat((p?p:[]))};this.onRenderYear=function(o){var q=(j.onRenderYear||function(){return[]})(o);var p=["year"];if(typeof q==="string"){q=[q]}if(this.date.getUTCFullYear()===o.getUTCFullYear()){p.push("active")}var n=o.getUTCFullYear();var r=this.endDate.getUTCFullYear();if(or){p.push("disabled")}return p.concat((q?q:[]))};this.onRenderMonth=function(n){var p=(j.onRenderMonth||function(){return[]})(n);var o=["month"];if(typeof p==="string"){p=[p]}return o.concat((p?p:[]))};this.startDate=new Date(-8639968443048000);this.endDate=new Date(8639968443048000);this.datesDisabled=[];this.daysOfWeekDisabled=[];this.setStartDate(j.startDate||this.element.data("date-startdate"));this.setEndDate(j.endDate||this.element.data("date-enddate"));this.setDatesDisabled(j.datesDisabled||this.element.data("date-dates-disabled"));this.setDaysOfWeekDisabled(j.daysOfWeekDisabled||this.element.data("date-days-of-week-disabled"));this.setMinutesDisabled(j.minutesDisabled||this.element.data("date-minute-disabled"));this.setHoursDisabled(j.hoursDisabled||this.element.data("date-hour-disabled"));this.fillDow();this.fillMonths();this.update();this.showMode();if(this.isInline){this.show()}};g.prototype={constructor:g,_events:[],_attachEvents:function(){this._detachEvents();if(this.isInput){this._events=[[this.element,{focus:d.proxy(this.show,this),keyup:d.proxy(this.update,this),keydown:d.proxy(this.keydown,this)}]]}else{if(this.component&&this.hasInput){this._events=[[this.element.find("input"),{focus:d.proxy(this.show,this),keyup:d.proxy(this.update,this),keydown:d.proxy(this.keydown,this)}],[this.component,{click:d.proxy(this.show,this)}]];if(this.componentReset){this._events.push([this.componentReset,{click:d.proxy(this.reset,this)}])}}else{if(this.element.is("div")){this.isInline=true}else{this._events=[[this.element,{click:d.proxy(this.show,this)}]]}}}for(var j=0,k,l;j=this.startDate&&i<=this.endDate){this.date=i;this.setValue();this.viewDate=this.date;this.fill()}else{this.element.trigger({type:"outOfRange",date:i,startDate:this.startDate,endDate:this.endDate})}},setFormat:function(j){this.format=c.parseFormat(j,this.formatType);var i;if(this.isInput){i=this.element}else{if(this.component){i=this.element.find("input")}}if(i&&i.val()){this.setValue()}},setValue:function(){var i=this.getFormattedDate();if(!this.isInput){if(this.component){this.element.find("input").val(i)}this.element.data("date",i)}else{this.element.val(i)}if(this.linkField){d("#"+this.linkField).val(this.getFormattedDate(this.linkFormat))}},getFormattedDate:function(i){i=i||this.format;return c.formatDate(this.date,i,this.language,this.formatType,this.timezone)},setStartDate:function(i){this.startDate=i||this.startDate;if(this.startDate.valueOf()!==8639968443048000){this.startDate=c.parseDate(this.startDate,this.format,this.language,this.formatType,this.timezone)}this.update();this.updateNavArrows()},setEndDate:function(i){this.endDate=i||this.endDate;if(this.endDate.valueOf()!==8639968443048000){this.endDate=c.parseDate(this.endDate,this.format,this.language,this.formatType,this.timezone)}this.update();this.updateNavArrows()},setDatesDisabled:function(j){this.datesDisabled=j||[];if(!d.isArray(this.datesDisabled)){this.datesDisabled=this.datesDisabled.split(/,\s*/)}var i=this;this.datesDisabled=d.map(this.datesDisabled,function(k){return c.parseDate(k,i.format,i.language,i.formatType,i.timezone).toDateString()});this.update();this.updateNavArrows()},setTitle:function(i,j){return this.picker.find(i).find("th:eq(1)").text(this.title===false?j:this.title)},setDaysOfWeekDisabled:function(i){this.daysOfWeekDisabled=i||[];if(!d.isArray(this.daysOfWeekDisabled)){this.daysOfWeekDisabled=this.daysOfWeekDisabled.split(/,\s*/)}this.daysOfWeekDisabled=d.map(this.daysOfWeekDisabled,function(j){return parseInt(j,10)});this.update();this.updateNavArrows()},setMinutesDisabled:function(i){this.minutesDisabled=i||[];if(!d.isArray(this.minutesDisabled)){this.minutesDisabled=this.minutesDisabled.split(/,\s*/)}this.minutesDisabled=d.map(this.minutesDisabled,function(j){return parseInt(j,10)});this.update();this.updateNavArrows()},setHoursDisabled:function(i){this.hoursDisabled=i||[];if(!d.isArray(this.hoursDisabled)){this.hoursDisabled=this.hoursDisabled.split(/,\s*/)}this.hoursDisabled=d.map(this.hoursDisabled,function(j){return parseInt(j,10)});this.update();this.updateNavArrows()},place:function(){if(this.isInline){return}if(!this.zIndex){var j=0;d("div").each(function(){var o=parseInt(d(this).css("zIndex"),10);if(o>j){j=o}});this.zIndex=j+10}var n,m,l,k;if(this.container instanceof d){k=this.container.offset()}else{k=d(this.container).offset()}if(this.component){n=this.component.offset();l=n.left;if(this.pickerPosition==="bottom-left"||this.pickerPosition==="top-left"){l+=this.component.outerWidth()-this.picker.outerWidth()}}else{n=this.element.offset();l=n.left;if(this.pickerPosition==="bottom-left"||this.pickerPosition==="top-left"){l+=this.element.outerWidth()-this.picker.outerWidth()}}var i=document.body.clientWidth||window.innerWidth;if(l+220>i){l=i-220}if(this.pickerPosition==="top-left"||this.pickerPosition==="top-right"){m=n.top-this.picker.outerHeight()}else{m=n.top+this.height}m=m-k.top;l=l-k.left;this.picker.css({top:m,left:l,zIndex:this.zIndex})},hour_minute:"^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]",update:function(){var i,j=false;if(arguments&&arguments.length&&(typeof arguments[0]==="string"||arguments[0] instanceof Date)){i=arguments[0];j=true}else{i=(this.isInput?this.element.val():this.element.find("input").val())||this.element.data("date")||this.initialDate;if(typeof i==="string"){i=i.replace(/^\s+|\s+$/g,"")}}if(!i){i=new Date();j=false}if(typeof i==="string"){if(new RegExp(this.hour_minute).test(i)||new RegExp(this.hour_minute+":[0-5][0-9]").test(i)){i=this.getDate()}}this.date=c.parseDate(i,this.format,this.language,this.formatType,this.timezone);if(j){this.setValue()}if(this.datethis.endDate){this.viewDate=new Date(this.endDate)}else{this.viewDate=new Date(this.date)}}this.fill()},fillDow:function(){var i=this.weekStart,j="";while(i'+e[this.language].daysMin[(i++)%7]+""}j+="";this.picker.find(".datetimepicker-days thead").append(j)},fillMonths:function(){var l="";var m=new Date(this.viewDate);for(var k=0;k<12;k++){m.setUTCMonth(k);var j=this.onRenderMonth(m);l+=''+e[this.language].monthsShort[k]+""}this.picker.find(".datetimepicker-months td").html(l)},fill:function(){if(!this.date||!this.viewDate){return}var E=new Date(this.viewDate),t=E.getUTCFullYear(),G=E.getUTCMonth(),n=E.getUTCDate(),A=E.getUTCHours(),w=this.startDate.getUTCFullYear(),B=this.startDate.getUTCMonth(),p=this.endDate.getUTCFullYear(),x=this.endDate.getUTCMonth()+1,q=(new h(this.date.getUTCFullYear(),this.date.getUTCMonth(),this.date.getUTCDate())).valueOf(),D=new Date();this.setTitle(".datetimepicker-days",e[this.language].months[G]+" "+t);if(this.formatViewType==="time"){var k=this.getFormattedDate();this.setTitle(".datetimepicker-hours",k);this.setTitle(".datetimepicker-minutes",k)}else{this.setTitle(".datetimepicker-hours",n+" "+e[this.language].months[G]+" "+t);this.setTitle(".datetimepicker-minutes",n+" "+e[this.language].months[G]+" "+t)}this.picker.find("tfoot th.today").text(e[this.language].today||e.en.today).toggle(this.todayBtn!==false);this.picker.find("tfoot th.clear").text(e[this.language].clear||e.en.clear).toggle(this.clearBtn!==false);this.updateNavArrows();this.fillMonths();var I=h(t,G-1,28,0,0,0,0),z=c.getDaysInMonth(I.getUTCFullYear(),I.getUTCMonth());I.setUTCDate(z);I.setUTCDate(z-(I.getUTCDay()-this.weekStart+7)%7);var j=new Date(I);j.setUTCDate(j.getUTCDate()+42);j=j.valueOf();var r=[];var F;while(I.valueOf()")}F=this.onRenderDay(I);if(I.getUTCFullYear()t||(I.getUTCFullYear()===t&&I.getUTCMonth()>G)){F.push("new")}}if(this.todayHighlight&&I.getUTCFullYear()===D.getFullYear()&&I.getUTCMonth()===D.getMonth()&&I.getUTCDate()===D.getDate()){F.push("today")}if(I.valueOf()===q){F.push("active")}if((I.valueOf()+86400000)<=this.startDate||I.valueOf()>this.endDate||d.inArray(I.getUTCDay(),this.daysOfWeekDisabled)!==-1||d.inArray(I.toDateString(),this.datesDisabled)!==-1){F.push("disabled")}r.push(''+I.getUTCDate()+"");if(I.getUTCDay()===this.weekEnd){r.push("")}I.setUTCDate(I.getUTCDate()+1)}this.picker.find(".datetimepicker-days tbody").empty().append(r.join(""));r=[];var u="",C="",s="";var l=this.hoursDisabled||[];E=new Date(this.viewDate);for(var y=0;y<24;y++){E.setUTCHours(y);F=this.onRenderHour(E);if(l.indexOf(y)!==-1){F.push("disabled")}var v=h(t,G,n,y);if((v.valueOf()+3600000)<=this.startDate||v.valueOf()>this.endDate){F.push("disabled")}else{if(A===y){F.push("active")}}if(this.showMeridian&&e[this.language].meridiem.length===2){C=(y<12?e[this.language].meridiem[0]:e[this.language].meridiem[1]);if(C!==s){if(s!==""){r.push("")}r.push('
'+C.toUpperCase()+"")}s=C;u=(y%12?y%12:12);if(y<12){F.push("hour_am")}else{F.push("hour_pm")}r.push(''+u+"");if(y===23){r.push("
")}}else{u=y+":00";r.push(''+u+"")}}this.picker.find(".datetimepicker-hours td").html(r.join(""));r=[];u="";C="";s="";var m=this.minutesDisabled||[];E=new Date(this.viewDate);for(var y=0;y<60;y+=this.minuteStep){if(m.indexOf(y)!==-1){continue}E.setUTCMinutes(y);E.setUTCSeconds(0);F=this.onRenderMinute(E);if(this.showMeridian&&e[this.language].meridiem.length===2){C=(A<12?e[this.language].meridiem[0]:e[this.language].meridiem[1]);if(C!==s){if(s!==""){r.push("")}r.push('
'+C.toUpperCase()+"")}s=C;u=(A%12?A%12:12);r.push(''+u+":"+(y<10?"0"+y:y)+"");if(y===59){r.push("
")}}else{u=y+":00";r.push(''+A+":"+(y<10?"0"+y:y)+"")}}this.picker.find(".datetimepicker-minutes td").html(r.join(""));var J=this.date.getUTCFullYear();var o=this.setTitle(".datetimepicker-months",t).end().find(".month").removeClass("active");if(J===t){o.eq(this.date.getUTCMonth()).addClass("active")}if(tp){o.addClass("disabled")}if(t===w){o.slice(0,B).addClass("disabled")}if(t===p){o.slice(x).addClass("disabled")}r="";t=parseInt(t/10,10)*10;var H=this.setTitle(".datetimepicker-years",t+"-"+(t+9)).end().find("td");t-=1;E=new Date(this.viewDate);for(var y=-1;y<11;y++){E.setUTCFullYear(t);F=this.onRenderYear(E);if(y===-1||y===10){F.push(b)}r+=''+t+"";t+=1}H.html(r);this.place()},updateNavArrows:function(){var m=new Date(this.viewDate),k=m.getUTCFullYear(),l=m.getUTCMonth(),j=m.getUTCDate(),i=m.getUTCHours();switch(this.viewMode){case 0:if(k<=this.startDate.getUTCFullYear()&&l<=this.startDate.getUTCMonth()&&j<=this.startDate.getUTCDate()&&i<=this.startDate.getUTCHours()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()&&l>=this.endDate.getUTCMonth()&&j>=this.endDate.getUTCDate()&&i>=this.endDate.getUTCHours()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 1:if(k<=this.startDate.getUTCFullYear()&&l<=this.startDate.getUTCMonth()&&j<=this.startDate.getUTCDate()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()&&l>=this.endDate.getUTCMonth()&&j>=this.endDate.getUTCDate()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 2:if(k<=this.startDate.getUTCFullYear()&&l<=this.startDate.getUTCMonth()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()&&l>=this.endDate.getUTCMonth()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break;case 3:case 4:if(k<=this.startDate.getUTCFullYear()){this.picker.find(".prev").css({visibility:"hidden"})}else{this.picker.find(".prev").css({visibility:"visible"})}if(k>=this.endDate.getUTCFullYear()){this.picker.find(".next").css({visibility:"hidden"})}else{this.picker.find(".next").css({visibility:"visible"})}break}},mousewheel:function(j){j.preventDefault();j.stopPropagation();if(this.wheelPause){return}this.wheelPause=true;var i=j.originalEvent;var l=i.wheelDelta;var k=l>0?1:(l===0)?0:-1;if(this.wheelViewModeNavigationInverseDirection){k=-k}this.showMode(k);setTimeout(d.proxy(function(){this.wheelPause=false},this),this.wheelViewModeNavigationDelay)},click:function(m){m.stopPropagation();m.preventDefault();var n=d(m.target).closest("span, td, th, legend");if(n.is("."+this.icontype)){n=d(n).parent().closest("span, td, th, legend")}if(n.length===1){if(n.is(".disabled")){this.element.trigger({type:"outOfRange",date:this.viewDate,startDate:this.startDate,endDate:this.endDate});return}switch(n[0].nodeName.toLowerCase()){case"th":switch(n[0].className){case"switch":this.showMode(1);break;case"prev":case"next":var i=c.modes[this.viewMode].navStep*(n[0].className==="prev"?-1:1);switch(this.viewMode){case 0:this.viewDate=this.moveHour(this.viewDate,i);break;case 1:this.viewDate=this.moveDate(this.viewDate,i);break;case 2:this.viewDate=this.moveMonth(this.viewDate,i);break;case 3:case 4:this.viewDate=this.moveYear(this.viewDate,i);break}this.fill();this.element.trigger({type:n[0].className+":"+this.convertViewModeText(this.viewMode),date:this.viewDate,startDate:this.startDate,endDate:this.endDate});break;case"clear":this.reset();if(this.autoclose){this.hide()}break;case"today":var j=new Date();j=h(j.getFullYear(),j.getMonth(),j.getDate(),j.getHours(),j.getMinutes(),j.getSeconds(),0);if(jthis.endDate){j=this.endDate}}this.viewMode=this.startViewMode;this.showMode(0);this._setDate(j);this.fill();if(this.autoclose){this.hide()}break}break;case"span":if(!n.is(".disabled")){var p=this.viewDate.getUTCFullYear(),o=this.viewDate.getUTCMonth(),q=this.viewDate.getUTCDate(),r=this.viewDate.getUTCHours(),k=this.viewDate.getUTCMinutes(),s=this.viewDate.getUTCSeconds();if(n.is(".month")){this.viewDate.setUTCDate(1);o=n.parent().find("span").index(n);q=this.viewDate.getUTCDate();this.viewDate.setUTCMonth(o);this.element.trigger({type:"changeMonth",date:this.viewDate});if(this.viewSelect>=3){this._setDate(h(p,o,q,r,k,s,0))}}else{if(n.is(".year")){this.viewDate.setUTCDate(1);p=parseInt(n.text(),10)||0;this.viewDate.setUTCFullYear(p);this.element.trigger({type:"changeYear",date:this.viewDate});if(this.viewSelect>=4){this._setDate(h(p,o,q,r,k,s,0))}}else{if(n.is(".hour")){r=parseInt(n.text(),10)||0;if(n.hasClass("hour_am")||n.hasClass("hour_pm")){if(r===12&&n.hasClass("hour_am")){r=0}else{if(r!==12&&n.hasClass("hour_pm")){r+=12}}}this.viewDate.setUTCHours(r);this.element.trigger({type:"changeHour",date:this.viewDate});if(this.viewSelect>=1){this._setDate(h(p,o,q,r,k,s,0))}}else{if(n.is(".minute")){k=parseInt(n.text().substr(n.text().indexOf(":")+1),10)||0;this.viewDate.setUTCMinutes(k);this.element.trigger({type:"changeMinute",date:this.viewDate});if(this.viewSelect>=0){this._setDate(h(p,o,q,r,k,s,0))}}}}}if(this.viewMode!==0){var l=this.viewMode;this.showMode(-1);this.fill();if(l===this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}}break;case"td":if(n.is(".day")&&!n.is(".disabled")){var q=parseInt(n.text(),10)||1;var p=this.viewDate.getUTCFullYear(),o=this.viewDate.getUTCMonth(),r=this.viewDate.getUTCHours(),k=this.viewDate.getUTCMinutes(),s=this.viewDate.getUTCSeconds();if(n.is(".old")){if(o===0){o=11;p-=1}else{o-=1}}else{if(n.is(".new")){if(o===11){o=0;p+=1}else{o+=1}}}this.viewDate.setUTCFullYear(p);this.viewDate.setUTCMonth(o,q);this.element.trigger({type:"changeDay",date:this.viewDate});if(this.viewSelect>=2){this._setDate(h(p,o,q,r,k,s,0))}}var l=this.viewMode;this.showMode(-1);this.fill();if(l===this.viewMode&&this.autoclose){this.hide()}break}}},_setDate:function(i,k){if(!k||k==="date"){this.date=i}if(!k||k==="view"){this.viewDate=i}this.fill();this.setValue();var j;if(this.isInput){j=this.element}else{if(this.component){j=this.element.find("input")}}if(j){j.change()}this.element.trigger({type:"changeDate",date:this.getDate()});if(i===null){this.date=this.viewDate}},moveMinute:function(j,i){if(!i){return j}var k=new Date(j.valueOf());k.setUTCMinutes(k.getUTCMinutes()+(i*this.minuteStep));return k},moveHour:function(j,i){if(!i){return j}var k=new Date(j.valueOf());k.setUTCHours(k.getUTCHours()+i);return k},moveDate:function(j,i){if(!i){return j}var k=new Date(j.valueOf());k.setUTCDate(k.getUTCDate()+i);return k},moveMonth:function(j,k){if(!k){return j}var n=new Date(j.valueOf()),r=n.getUTCDate(),o=n.getUTCMonth(),m=Math.abs(k),q,p;k=k>0?1:-1;if(m===1){p=k===-1?function(){return n.getUTCMonth()===o}:function(){return n.getUTCMonth()!==q};q=o+k;n.setUTCMonth(q);if(q<0||q>11){q=(q+12)%12}}else{for(var l=0;l=this.startDate&&i<=this.endDate},keydown:function(o){if(this.picker.is(":not(:visible)")){if(o.keyCode===27){this.show()}return}var k=false,j,i,n;switch(o.keyCode){case 27:this.hide();o.preventDefault();break;case 37:case 39:if(!this.keyboardNavigation){break}j=o.keyCode===37?-1:1;var m=this.viewMode;if(o.ctrlKey){m+=2}else{if(o.shiftKey){m+=1}}if(m===4){i=this.moveYear(this.date,j);n=this.moveYear(this.viewDate,j)}else{if(m===3){i=this.moveMonth(this.date,j);n=this.moveMonth(this.viewDate,j)}else{if(m===2){i=this.moveDate(this.date,j);n=this.moveDate(this.viewDate,j)}else{if(m===1){i=this.moveHour(this.date,j);n=this.moveHour(this.viewDate,j)}else{if(m===0){i=this.moveMinute(this.date,j);n=this.moveMinute(this.viewDate,j)}}}}}if(this.dateWithinRange(i)){this.date=i;this.viewDate=n;this.setValue();this.update();o.preventDefault();k=true}break;case 38:case 40:if(!this.keyboardNavigation){break}j=o.keyCode===38?-1:1;m=this.viewMode;if(o.ctrlKey){m+=2}else{if(o.shiftKey){m+=1}}if(m===4){i=this.moveYear(this.date,j);n=this.moveYear(this.viewDate,j)}else{if(m===3){i=this.moveMonth(this.date,j);n=this.moveMonth(this.viewDate,j)}else{if(m===2){i=this.moveDate(this.date,j*7);n=this.moveDate(this.viewDate,j*7)}else{if(m===1){if(this.showMeridian){i=this.moveHour(this.date,j*6);n=this.moveHour(this.viewDate,j*6)}else{i=this.moveHour(this.date,j*4);n=this.moveHour(this.viewDate,j*4)}}else{if(m===0){i=this.moveMinute(this.date,j*4);n=this.moveMinute(this.viewDate,j*4)}}}}}if(this.dateWithinRange(i)){this.date=i;this.viewDate=n;this.setValue();this.update();o.preventDefault();k=true}break;case 13:if(this.viewMode!==0){var p=this.viewMode;this.showMode(-1);this.fill();if(p===this.viewMode&&this.autoclose){this.hide()}}else{this.fill();if(this.autoclose){this.hide()}}o.preventDefault();break;case 9:this.hide();break}if(k){var l;if(this.isInput){l=this.element}else{if(this.component){l=this.element.find("input")}}if(l){l.change()}this.element.trigger({type:"changeDate",date:this.getDate()})}},showMode:function(i){if(i){var j=Math.max(0,Math.min(c.modes.length-1,this.viewMode+i));if(j>=this.minView&&j<=this.maxView){this.element.trigger({type:"changeMode",date:this.viewDate,oldViewMode:this.viewMode,newViewMode:j});this.viewMode=j}}this.picker.find(">div").hide().filter(".datetimepicker-"+c.modes[this.viewMode].clsName).css("display","block");this.updateNavArrows()},reset:function(){this._setDate(null,"date")},convertViewModeText:function(i){switch(i){case 4:return"decade";case 3:return"year";case 2:return"month";case 1:return"day";case 0:return"hour"}}};var b=d.fn.datetimepicker;d.fn.datetimepicker=function(k){var i=Array.apply(null,arguments);i.shift();var j;this.each(function(){var n=d(this),m=n.data("datetimepicker"),l=typeof k==="object"&&k;if(!m){n.data("datetimepicker",(m=new g(this,d.extend({},d.fn.datetimepicker.defaults,l))))}if(typeof k==="string"&&typeof m[k]==="function"){j=m[k].apply(m,i);if(j!==f){return false}}});if(j!==f){return j}else{return this}};d.fn.datetimepicker.defaults={};d.fn.datetimepicker.Constructor=g;var e=d.fn.datetimepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa","Su"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],meridiem:["am","pm"],suffix:["st","nd","rd","th"],today:"Today",clear:"Clear"}};var c={modes:[{clsName:"minutes",navFnc:"Hours",navStep:1},{clsName:"hours",navFnc:"Date",navStep:1},{clsName:"days",navFnc:"Month",navStep:1},{clsName:"months",navFnc:"FullYear",navStep:1},{clsName:"years",navFnc:"FullYear",navStep:10}],isLeapYear:function(i){return(((i%4===0)&&(i%100!==0))||(i%400===0))},getDaysInMonth:function(i,j){return[31,(c.isLeapYear(i)?29:28),31,30,31,30,31,31,30,31,30,31][j]},getDefaultFormat:function(i,j){if(i==="standard"){if(j==="input"){return"yyyy-mm-dd hh:ii"}else{return"yyyy-mm-dd hh:ii:ss"}}else{if(i==="php"){if(j==="input"){return"Y-m-d H:i"}else{return"Y-m-d H:i:s"}}else{throw new Error("Invalid format type.")}}},validParts:function(i){if(i==="standard"){return/t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g}else{if(i==="php"){return/[dDjlNwzFmMnStyYaABgGhHis]/g}else{throw new Error("Invalid format type.")}}},nonpunctuation:/[^ -\/:-@\[-`{-~\t\n\rTZ]+/g,parseFormat:function(l,j){var i=l.replace(this.validParts(j),"\0").split("\0"),k=l.match(this.validParts(j));if(!i||!i.length||!k||k.length===0){throw new Error("Invalid date format.")}return{separators:i,parts:k}},parseDate:function(A,y,v,j,r){if(A instanceof Date){var u=new Date(A.valueOf()-A.getTimezoneOffset()*60000);u.setMilliseconds(0);return u}if(/^\d{4}\-\d{1,2}\-\d{1,2}$/.test(A)){y=this.parseFormat("yyyy-mm-dd",j)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}$/.test(A)){y=this.parseFormat("yyyy-mm-dd hh:ii",j)}if(/^\d{4}\-\d{1,2}\-\d{1,2}[T ]\d{1,2}\:\d{1,2}\:\d{1,2}[Z]{0,1}$/.test(A)){y=this.parseFormat("yyyy-mm-dd hh:ii:ss",j)}if(/^[-+]\d+[dmwy]([\s,]+[-+]\d+[dmwy])*$/.test(A)){var l=/([-+]\d+)([dmwy])/,q=A.match(/([-+]\d+)([dmwy])/g),t,p;A=new Date();for(var x=0;x',headTemplateV3:' ',contTemplate:'',footTemplate:''};c.template='
'+c.headTemplate+c.contTemplate+c.footTemplate+'
'+c.headTemplate+c.contTemplate+c.footTemplate+'
'+c.headTemplate+""+c.footTemplate+'
'+c.headTemplate+c.contTemplate+c.footTemplate+'
'+c.headTemplate+c.contTemplate+c.footTemplate+"
";c.templateV3='
'+c.headTemplateV3+c.contTemplate+c.footTemplate+'
'+c.headTemplateV3+c.contTemplate+c.footTemplate+'
'+c.headTemplateV3+""+c.footTemplate+'
'+c.headTemplateV3+c.contTemplate+c.footTemplate+'
'+c.headTemplateV3+c.contTemplate+c.footTemplate+"
";d.fn.datetimepicker.DPGlobal=c;d.fn.datetimepicker.noConflict=function(){d.fn.datetimepicker=b;return this};d(document).on("focus.datetimepicker.data-api click.datetimepicker.data-api",'[data-provide="datetimepicker"]',function(j){var i=d(this);if(i.data("datetimepicker")){return}j.preventDefault();i.datetimepicker("show")});d(function(){d('[data-provide="datetimepicker-inline"]').datetimepicker()})})); \ No newline at end of file From b73c97c409fc4915b8118172fbc1d72e1680a92b Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Tue, 30 Jul 2024 14:56:59 +0200 Subject: [PATCH 32/34] fix: show form feedback for SearchableSelectWidget Fixes #102 --- assets/scss/bootstrap.scss | 4 ++++ src/cdh/core/static/cdh.core/css/bootstrap.css | 6 +++--- src/cdh/core/static/cdh.core/css/bootstrap.css.map | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/assets/scss/bootstrap.scss b/assets/scss/bootstrap.scss index 07aea867..56e42cd9 100644 --- a/assets/scss/bootstrap.scss +++ b/assets/scss/bootstrap.scss @@ -33,4 +33,8 @@ $open-sans-font-dir: '/static/cdh.core/fonts/open-sans/'; & ~ .invalid-feedback, & ~ .valid-feedback { display: block; } +} + +.select2 ~ .invalid-feedback, .select2 ~ .valid-feedback { + display: block; } \ No newline at end of file diff --git a/src/cdh/core/static/cdh.core/css/bootstrap.css b/src/cdh/core/static/cdh.core/css/bootstrap.css index 742d5f2c..57aaf8c0 100644 --- a/src/cdh/core/static/cdh.core/css/bootstrap.css +++ b/src/cdh/core/static/cdh.core/css/bootstrap.css @@ -2,11 +2,11 @@ * Bootstrap v5.3.1 (https://getbootstrap.com/) * Copyright 2011-2023 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@font-face{font-family:"Open Sans";font-style:normal;font-weight:300;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:500;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:600;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:800;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:300;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:500;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:600;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:800;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.svg#OpenSans") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:300;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:300;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:400;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:400;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:700;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:700;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:900;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:900;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.svg#Merriweather") format("svg")}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#000 !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#000 !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#000 !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#000 !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-error{color:#fff !important;background-color:RGBA(var(--bs-error-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-blue{color:#fff !important;background-color:RGBA(var(--bs-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark-blue{color:#fff !important;background-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-indigo{color:#fff !important;background-color:RGBA(var(--bs-indigo-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-purple{color:#fff !important;background-color:RGBA(var(--bs-purple-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-pink{color:#fff !important;background-color:RGBA(var(--bs-pink-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-red{color:#fff !important;background-color:RGBA(var(--bs-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-bordeaux-red{color:#fff !important;background-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-brown{color:#fff !important;background-color:RGBA(var(--bs-brown-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cream{color:#000 !important;background-color:RGBA(var(--bs-cream-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-orange{color:#000 !important;background-color:RGBA(var(--bs-orange-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-yellow{color:#000 !important;background-color:RGBA(var(--bs-yellow-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-green{color:#000 !important;background-color:RGBA(var(--bs-green-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-teal{color:#000 !important;background-color:RGBA(var(--bs-teal-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cyan{color:#000 !important;background-color:RGBA(var(--bs-cyan-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-white{color:#000 !important;background-color:RGBA(var(--bs-white-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray{color:#fff !important;background-color:RGBA(var(--bs-gray-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray-dark{color:#fff !important;background-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(0, 0, 0, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 0, 0, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-error{color:RGBA(var(--bs-error-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-error-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-error:hover,.link-error:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(242, 242, 242, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(242, 242, 242, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(30, 30, 30, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(30, 30, 30, var(--bs-link-underline-opacity, 1)) !important}.link-blue{color:RGBA(var(--bs-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-blue:hover,.link-blue:focus{color:RGBA(66, 108, 158, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(66, 108, 158, var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue{color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue:hover,.link-dark-blue:focus{color:RGBA(0, 14, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 14, 51, var(--bs-link-underline-opacity, 1)) !important}.link-indigo{color:RGBA(var(--bs-indigo-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-indigo-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-indigo:hover,.link-indigo:focus{color:RGBA(82, 13, 194, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(82, 13, 194, var(--bs-link-underline-opacity, 1)) !important}.link-purple{color:RGBA(var(--bs-purple-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-purple-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-purple:hover,.link-purple:focus{color:RGBA(73, 26, 104, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(73, 26, 104, var(--bs-link-underline-opacity, 1)) !important}.link-pink{color:RGBA(var(--bs-pink-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-pink-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-pink:hover,.link-pink:focus{color:RGBA(171, 41, 106, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(171, 41, 106, var(--bs-link-underline-opacity, 1)) !important}.link-red{color:RGBA(var(--bs-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-red:hover,.link-red:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red{color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red:hover,.link-bordeaux-red:focus{color:RGBA(136, 17, 68, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(136, 17, 68, var(--bs-link-underline-opacity, 1)) !important}.link-brown{color:RGBA(var(--bs-brown-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-brown-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-brown:hover,.link-brown:focus{color:RGBA(88, 47, 28, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(88, 47, 28, var(--bs-link-underline-opacity, 1)) !important}.link-cream{color:RGBA(var(--bs-cream-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cream-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cream:hover,.link-cream:focus{color:RGBA(255, 235, 188, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 235, 188, var(--bs-link-underline-opacity, 1)) !important}.link-orange{color:RGBA(var(--bs-orange-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-orange-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-orange:hover,.link-orange:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-yellow{color:RGBA(var(--bs-yellow-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-yellow-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-yellow:hover,.link-yellow:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-green{color:RGBA(var(--bs-green-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-green-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-green:hover,.link-green:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-teal{color:RGBA(var(--bs-teal-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-teal-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-teal:hover,.link-teal:focus{color:RGBA(80, 185, 169, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(80, 185, 169, var(--bs-link-underline-opacity, 1)) !important}.link-cyan{color:RGBA(var(--bs-cyan-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cyan-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cyan:hover,.link-cyan:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-white{color:RGBA(var(--bs-white-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-white-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-white:hover,.link-white:focus{color:RGBA(255, 255, 255, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 255, 255, var(--bs-link-underline-opacity, 1)) !important}.link-gray{color:RGBA(var(--bs-gray-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray:hover,.link-gray:focus{color:RGBA(86, 86, 86, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 86, 86, var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark{color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark:hover,.link-gray-dark:focus{color:RGBA(42, 42, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 42, 42, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-error{--bs-focus-ring-color: rgba(var(--bs-error-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.focus-ring-blue{--bs-focus-ring-color: rgba(var(--bs-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark-blue{--bs-focus-ring-color: rgba(var(--bs-dark-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-indigo{--bs-focus-ring-color: rgba(var(--bs-indigo-rgb), var(--bs-focus-ring-opacity))}.focus-ring-purple{--bs-focus-ring-color: rgba(var(--bs-purple-rgb), var(--bs-focus-ring-opacity))}.focus-ring-pink{--bs-focus-ring-color: rgba(var(--bs-pink-rgb), var(--bs-focus-ring-opacity))}.focus-ring-red{--bs-focus-ring-color: rgba(var(--bs-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-bordeaux-red{--bs-focus-ring-color: rgba(var(--bs-bordeaux-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-brown{--bs-focus-ring-color: rgba(var(--bs-brown-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cream{--bs-focus-ring-color: rgba(var(--bs-cream-rgb), var(--bs-focus-ring-opacity))}.focus-ring-orange{--bs-focus-ring-color: rgba(var(--bs-orange-rgb), var(--bs-focus-ring-opacity))}.focus-ring-yellow{--bs-focus-ring-color: rgba(var(--bs-yellow-rgb), var(--bs-focus-ring-opacity))}.focus-ring-green{--bs-focus-ring-color: rgba(var(--bs-green-rgb), var(--bs-focus-ring-opacity))}.focus-ring-teal{--bs-focus-ring-color: rgba(var(--bs-teal-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cyan{--bs-focus-ring-color: rgba(var(--bs-cyan-rgb), var(--bs-focus-ring-opacity))}.focus-ring-white{--bs-focus-ring-color: rgba(var(--bs-white-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray{--bs-focus-ring-color: rgba(var(--bs-gray-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray-dark{--bs-focus-ring-color: rgba(var(--bs-gray-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-error{--bs-border-opacity: 1;border-color:rgba(var(--bs-error-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-blue-rgb), var(--bs-border-opacity)) !important}.border-dark-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-blue-rgb), var(--bs-border-opacity)) !important}.border-indigo{--bs-border-opacity: 1;border-color:rgba(var(--bs-indigo-rgb), var(--bs-border-opacity)) !important}.border-purple{--bs-border-opacity: 1;border-color:rgba(var(--bs-purple-rgb), var(--bs-border-opacity)) !important}.border-pink{--bs-border-opacity: 1;border-color:rgba(var(--bs-pink-rgb), var(--bs-border-opacity)) !important}.border-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-red-rgb), var(--bs-border-opacity)) !important}.border-bordeaux-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-border-opacity)) !important}.border-brown{--bs-border-opacity: 1;border-color:rgba(var(--bs-brown-rgb), var(--bs-border-opacity)) !important}.border-cream{--bs-border-opacity: 1;border-color:rgba(var(--bs-cream-rgb), var(--bs-border-opacity)) !important}.border-orange{--bs-border-opacity: 1;border-color:rgba(var(--bs-orange-rgb), var(--bs-border-opacity)) !important}.border-yellow{--bs-border-opacity: 1;border-color:rgba(var(--bs-yellow-rgb), var(--bs-border-opacity)) !important}.border-green{--bs-border-opacity: 1;border-color:rgba(var(--bs-green-rgb), var(--bs-border-opacity)) !important}.border-teal{--bs-border-opacity: 1;border-color:rgba(var(--bs-teal-rgb), var(--bs-border-opacity)) !important}.border-cyan{--bs-border-opacity: 1;border-color:rgba(var(--bs-cyan-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-gray{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-rgb), var(--bs-border-opacity)) !important}.border-gray-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.295rem + 0.54vw) !important}.fs-3{font-size:calc(1.265rem + 0.18vw) !important}.fs-4{font-size:1.2rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.4 !important}.lh-base{line-height:1.6 !important}.lh-lg{line-height:2.1 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-error{--bs-text-opacity: 1;color:rgba(var(--bs-error-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-blue{--bs-text-opacity: 1;color:rgba(var(--bs-blue-rgb), var(--bs-text-opacity)) !important}.text-dark-blue{--bs-text-opacity: 1;color:rgba(var(--bs-dark-blue-rgb), var(--bs-text-opacity)) !important}.text-indigo{--bs-text-opacity: 1;color:rgba(var(--bs-indigo-rgb), var(--bs-text-opacity)) !important}.text-purple{--bs-text-opacity: 1;color:rgba(var(--bs-purple-rgb), var(--bs-text-opacity)) !important}.text-pink{--bs-text-opacity: 1;color:rgba(var(--bs-pink-rgb), var(--bs-text-opacity)) !important}.text-red{--bs-text-opacity: 1;color:rgba(var(--bs-red-rgb), var(--bs-text-opacity)) !important}.text-bordeaux-red{--bs-text-opacity: 1;color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-text-opacity)) !important}.text-brown{--bs-text-opacity: 1;color:rgba(var(--bs-brown-rgb), var(--bs-text-opacity)) !important}.text-cream{--bs-text-opacity: 1;color:rgba(var(--bs-cream-rgb), var(--bs-text-opacity)) !important}.text-orange{--bs-text-opacity: 1;color:rgba(var(--bs-orange-rgb), var(--bs-text-opacity)) !important}.text-yellow{--bs-text-opacity: 1;color:rgba(var(--bs-yellow-rgb), var(--bs-text-opacity)) !important}.text-green{--bs-text-opacity: 1;color:rgba(var(--bs-green-rgb), var(--bs-text-opacity)) !important}.text-teal{--bs-text-opacity: 1;color:rgba(var(--bs-teal-rgb), var(--bs-text-opacity)) !important}.text-cyan{--bs-text-opacity: 1;color:rgba(var(--bs-cyan-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-gray{--bs-text-opacity: 1;color:rgba(var(--bs-gray-rgb), var(--bs-text-opacity)) !important}.text-gray-dark{--bs-text-opacity: 1;color:rgba(var(--bs-gray-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-error{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-error-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-indigo{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-indigo-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-purple{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-purple-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-pink{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-pink-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-bordeaux-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-brown{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-brown-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cream{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cream-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-orange{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-orange-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-yellow{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-yellow-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-green{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-green-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-teal{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-teal-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cyan{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cyan-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-white{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-white-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-error{--bs-bg-opacity: 1;background-color:rgba(var(--bs-error-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-blue-rgb), var(--bs-bg-opacity)) !important}.bg-dark-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-blue-rgb), var(--bs-bg-opacity)) !important}.bg-indigo{--bs-bg-opacity: 1;background-color:rgba(var(--bs-indigo-rgb), var(--bs-bg-opacity)) !important}.bg-purple{--bs-bg-opacity: 1;background-color:rgba(var(--bs-purple-rgb), var(--bs-bg-opacity)) !important}.bg-pink{--bs-bg-opacity: 1;background-color:rgba(var(--bs-pink-rgb), var(--bs-bg-opacity)) !important}.bg-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-red-rgb), var(--bs-bg-opacity)) !important}.bg-bordeaux-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity)) !important}.bg-brown{--bs-bg-opacity: 1;background-color:rgba(var(--bs-brown-rgb), var(--bs-bg-opacity)) !important}.bg-cream{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cream-rgb), var(--bs-bg-opacity)) !important}.bg-orange{--bs-bg-opacity: 1;background-color:rgba(var(--bs-orange-rgb), var(--bs-bg-opacity)) !important}.bg-yellow{--bs-bg-opacity: 1;background-color:rgba(var(--bs-yellow-rgb), var(--bs-bg-opacity)) !important}.bg-green{--bs-bg-opacity: 1;background-color:rgba(var(--bs-green-rgb), var(--bs-bg-opacity)) !important}.bg-teal{--bs-bg-opacity: 1;background-color:rgba(var(--bs-teal-rgb), var(--bs-bg-opacity)) !important}.bg-cyan{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cyan-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-gray{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-rgb), var(--bs-bg-opacity)) !important}.bg-gray-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}.cursor-auto{cursor:auto !important}.cursor-pointer{cursor:pointer !important}.cursor-grab{cursor:grab !important}.cursor-copy{cursor:copy !important}.cursor-default{cursor:default !important}.cursor-help{cursor:help !important}.cursor-text{cursor:text !important}.cursor-none{cursor:none !important}.cursor-not-allowed{cursor:not-allowed !important}.cursor-progress{cursor:progress !important}.cursor-wait{cursor:wait !important}.cursor-zoom-in{cursor:zoom-in !important}.cursor-zoom-out{cursor:zoom-out !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}.cursor-sm-auto{cursor:auto !important}.cursor-sm-pointer{cursor:pointer !important}.cursor-sm-grab{cursor:grab !important}.cursor-sm-copy{cursor:copy !important}.cursor-sm-default{cursor:default !important}.cursor-sm-help{cursor:help !important}.cursor-sm-text{cursor:text !important}.cursor-sm-none{cursor:none !important}.cursor-sm-not-allowed{cursor:not-allowed !important}.cursor-sm-progress{cursor:progress !important}.cursor-sm-wait{cursor:wait !important}.cursor-sm-zoom-in{cursor:zoom-in !important}.cursor-sm-zoom-out{cursor:zoom-out !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}.cursor-md-auto{cursor:auto !important}.cursor-md-pointer{cursor:pointer !important}.cursor-md-grab{cursor:grab !important}.cursor-md-copy{cursor:copy !important}.cursor-md-default{cursor:default !important}.cursor-md-help{cursor:help !important}.cursor-md-text{cursor:text !important}.cursor-md-none{cursor:none !important}.cursor-md-not-allowed{cursor:not-allowed !important}.cursor-md-progress{cursor:progress !important}.cursor-md-wait{cursor:wait !important}.cursor-md-zoom-in{cursor:zoom-in !important}.cursor-md-zoom-out{cursor:zoom-out !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}.cursor-lg-auto{cursor:auto !important}.cursor-lg-pointer{cursor:pointer !important}.cursor-lg-grab{cursor:grab !important}.cursor-lg-copy{cursor:copy !important}.cursor-lg-default{cursor:default !important}.cursor-lg-help{cursor:help !important}.cursor-lg-text{cursor:text !important}.cursor-lg-none{cursor:none !important}.cursor-lg-not-allowed{cursor:not-allowed !important}.cursor-lg-progress{cursor:progress !important}.cursor-lg-wait{cursor:wait !important}.cursor-lg-zoom-in{cursor:zoom-in !important}.cursor-lg-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}.cursor-xl-auto{cursor:auto !important}.cursor-xl-pointer{cursor:pointer !important}.cursor-xl-grab{cursor:grab !important}.cursor-xl-copy{cursor:copy !important}.cursor-xl-default{cursor:default !important}.cursor-xl-help{cursor:help !important}.cursor-xl-text{cursor:text !important}.cursor-xl-none{cursor:none !important}.cursor-xl-not-allowed{cursor:not-allowed !important}.cursor-xl-progress{cursor:progress !important}.cursor-xl-wait{cursor:wait !important}.cursor-xl-zoom-in{cursor:zoom-in !important}.cursor-xl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}.cursor-xxl-auto{cursor:auto !important}.cursor-xxl-pointer{cursor:pointer !important}.cursor-xxl-grab{cursor:grab !important}.cursor-xxl-copy{cursor:copy !important}.cursor-xxl-default{cursor:default !important}.cursor-xxl-help{cursor:help !important}.cursor-xxl-text{cursor:text !important}.cursor-xxl-none{cursor:none !important}.cursor-xxl-not-allowed{cursor:not-allowed !important}.cursor-xxl-progress{cursor:progress !important}.cursor-xxl-wait{cursor:wait !important}.cursor-xxl-zoom-in{cursor:zoom-in !important}.cursor-xxl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.7rem !important}.fs-3{font-size:1.4rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root,[data-bs-theme=light]{--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-gray-100: #efefef;--bs-gray-200: #e9e9e9;--bs-gray-300: #dedede;--bs-gray-400: #cecece;--bs-gray-500: #adadad;--bs-gray-600: #6c6c6c;--bs-gray-700: #494949;--bs-gray-800: #343434;--bs-gray-900: #212121;--bs-primary: #ffcd00;--bs-secondary: #000;--bs-success: #2db83d;--bs-info: #0dcaf0;--bs-warning: #f3965e;--bs-danger: #c00a35;--bs-error: #c00a35;--bs-light: #efefef;--bs-dark: #262626;--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-primary-rgb: 255, 205, 0;--bs-secondary-rgb: 0, 0, 0;--bs-success-rgb: 45, 184, 61;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 243, 150, 94;--bs-danger-rgb: 192, 10, 53;--bs-error-rgb: 192, 10, 53;--bs-light-rgb: 239, 239, 239;--bs-dark-rgb: 38, 38, 38;--bs-blue-rgb: 82, 135, 198;--bs-dark-blue-rgb: 0, 18, 64;--bs-indigo-rgb: 102, 16, 242;--bs-purple-rgb: 91, 33, 130;--bs-pink-rgb: 214, 51, 132;--bs-red-rgb: 192, 10, 53;--bs-bordeaux-red-rgb: 170, 21, 85;--bs-brown-rgb: 110, 59, 35;--bs-cream-rgb: 255, 230, 171;--bs-orange-rgb: 243, 150, 94;--bs-yellow-rgb: 255, 205, 0;--bs-green-rgb: 45, 184, 61;--bs-teal-rgb: 36, 167, 147;--bs-cyan-rgb: 13, 202, 240;--bs-white-rgb: 255, 255, 255;--bs-gray-rgb: 108, 108, 108;--bs-gray-dark-rgb: 52, 52, 52;--bs-primary-text-emphasis: #665200;--bs-secondary-text-emphasis: black;--bs-success-text-emphasis: #124a18;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #613c26;--bs-danger-text-emphasis: #4d0415;--bs-light-text-emphasis: #494949;--bs-dark-text-emphasis: #494949;--bs-primary-bg-subtle: #fff5cc;--bs-secondary-bg-subtle: #cccccc;--bs-success-bg-subtle: #d5f1d8;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fdeadf;--bs-danger-bg-subtle: #f2ced7;--bs-light-bg-subtle: #f7f7f7;--bs-dark-bg-subtle: #cecece;--bs-primary-border-subtle: #ffeb99;--bs-secondary-border-subtle: #999999;--bs-success-border-subtle: #abe3b1;--bs-info-border-subtle: #9eeaf9;--bs-warning-border-subtle: #fad5bf;--bs-danger-border-subtle: #e69dae;--bs-light-border-subtle: #e9e9e9;--bs-dark-border-subtle: #adadad;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Open Sans", "Verdana", -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.6;--bs-body-color: #212121;--bs-body-color-rgb: 33, 33, 33;--bs-body-bg: #f6f6f6;--bs-body-bg-rgb: 246, 246, 246;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 33, 33, 0.75);--bs-secondary-color-rgb: 33, 33, 33;--bs-secondary-bg: #e9e9e9;--bs-secondary-bg-rgb: 233, 233, 233;--bs-tertiary-color: rgba(33, 33, 33, 0.5);--bs-tertiary-color-rgb: 33, 33, 33;--bs-tertiary-bg: #efefef;--bs-tertiary-bg-rgb: 239, 239, 239;--bs-heading-color: inherit;--bs-link-color: #000;--bs-link-color-rgb: 0, 0, 0;--bs-link-decoration: underline;--bs-link-hover-color: black;--bs-link-hover-color-rgb: 0, 0, 0;--bs-code-color: #000;--bs-highlight-bg: #fff5cc;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dedede;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0;--bs-border-radius-sm: 0;--bs-border-radius-lg: 0;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(255, 205, 0, 0.25);--bs-form-valid-color: #2db83d;--bs-form-valid-border-color: #2db83d;--bs-form-invalid-color: #c00a35;--bs-form-invalid-border-color: #c00a35}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dedede;--bs-body-color-rgb: 222, 222, 222;--bs-body-bg: #212121;--bs-body-bg-rgb: 33, 33, 33;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 222, 222, 0.75);--bs-secondary-color-rgb: 222, 222, 222;--bs-secondary-bg: #343434;--bs-secondary-bg-rgb: 52, 52, 52;--bs-tertiary-color: rgba(222, 222, 222, 0.5);--bs-tertiary-color-rgb: 222, 222, 222;--bs-tertiary-bg: #2b2b2b;--bs-tertiary-bg-rgb: 43, 43, 43;--bs-primary-text-emphasis: #ffe166;--bs-secondary-text-emphasis: #666666;--bs-success-text-emphasis: #81d48b;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #f8c09e;--bs-danger-text-emphasis: #d96c86;--bs-light-text-emphasis: #efefef;--bs-dark-text-emphasis: #dedede;--bs-primary-bg-subtle: #332900;--bs-secondary-bg-subtle: black;--bs-success-bg-subtle: #09250c;--bs-info-bg-subtle: #032830;--bs-warning-bg-subtle: #311e13;--bs-danger-bg-subtle: #26020b;--bs-light-bg-subtle: #343434;--bs-dark-bg-subtle: #1a1a1a;--bs-primary-border-subtle: #997b00;--bs-secondary-border-subtle: black;--bs-success-border-subtle: #1b6e25;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #925a38;--bs-danger-border-subtle: #730620;--bs-light-border-subtle: #494949;--bs-dark-border-subtle: #343434;--bs-heading-color: inherit;--bs-link-color: #ffe166;--bs-link-hover-color: #ffe785;--bs-link-color-rgb: 255, 225, 102;--bs-link-hover-color-rgb: 255, 231, 133;--bs-code-color: #fff;--bs-border-color: #494949;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #81d48b;--bs-form-valid-border-color: #81d48b;--bs-form-invalid-color: #d96c86;--bs-form-invalid-border-color: #d96c86}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.295rem + 0.54vw)}@media(min-width: 1200px){h2,.h2{font-size:1.7rem}}h3,.h3{font-size:calc(1.265rem + 0.18vw)}@media(min-width: 1200px){h3,.h3{font-size:1.4rem}}h4,.h4{font-size:1.2rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.85em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.85em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:0.85em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:0}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c6c6c}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 0;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 0;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.25rem}.g-1,.gy-1{--bs-gutter-y: 0.25rem}.g-2,.gx-2{--bs-gutter-x: 0.5rem}.g-2,.gy-2{--bs-gutter-y: 0.5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media(min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table,.dt,.datatables{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-body-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, 0.01);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, 0.05);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*,.dt>:not(caption)>*>*,.datatables>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody,.dt>tbody,.datatables>tbody{vertical-align:inherit}.table>thead,.dt>thead,.datatables>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #fff5cc;--bs-table-border-color: #e6ddb8;--bs-table-striped-bg: #fcf3ca;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ddb8;--bs-table-active-color: #000;--bs-table-hover-bg: #f2e9c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #cccccc;--bs-table-border-color: #b8b8b8;--bs-table-striped-bg: #cacaca;--bs-table-striped-color: #000;--bs-table-active-bg: #b8b8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #c2c2c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d5f1d8;--bs-table-border-color: #c0d9c2;--bs-table-striped-bg: #d3efd6;--bs-table-striped-color: #000;--bs-table-active-bg: #c0d9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #cae5cd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #cdf2f9;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #c5e8ef;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fdeadf;--bs-table-border-color: #e4d3c9;--bs-table-striped-bg: #fae8dd;--bs-table-striped-color: #000;--bs-table-active-bg: #e4d3c9;--bs-table-active-color: #000;--bs-table-hover-bg: #f0ded4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f2ced7;--bs-table-border-color: #dab9c2;--bs-table-striped-bg: #f0ccd5;--bs-table-striped-color: #000;--bs-table-active-bg: #dab9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #e6c4cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #efefef;--bs-table-border-color: #d7d7d7;--bs-table-striped-bg: #ededed;--bs-table-striped-color: #000;--bs-table-active-bg: #d7d7d7;--bs-table-active-color: #000;--bs-table-hover-bg: #e3e3e3;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #262626;--bs-table-border-color: #3c3c3c;--bs-table-striped-bg: #282828;--bs-table-striped-color: #fff;--bs-table-active-bg: #3c3c3c;--bs-table-active-color: #fff;--bs-table-hover-bg: #313131;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-weight:500;color:#262626}.col-form-label{padding-top:calc(0.375rem + var(--bs-border-width));padding-bottom:calc(0.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;font-weight:500;line-height:1.6;color:#262626}.col-form-label-lg{padding-top:calc(0.5rem + var(--bs-border-width));padding-bottom:calc(0.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + var(--bs-border-width));padding-bottom:calc(0.25rem + var(--bs-border-width));font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:#fff;border-color:#000;outline:0;box-shadow:none}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.6em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.6;color:var(--bs-body-color);background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343434' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#000;outline:0;box-shadow:none}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:0 !important}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:0 !important}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dedede' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.6rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.3em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#000;outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.form-check-input:checked{background-color:#5287c6;border-color:#5287c6}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#ffcd00;border-color:#ffcd00;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23000'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1rem;padding:0;appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f6f6f6,none}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f6f6,none}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#fff0b3}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#fff0b3}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c6c6c}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 1rem;--bs-btn-padding-y: 0.5rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.6;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0 rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-outline-primary{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-error{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-outline-blue{--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-outline-dark-blue{--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-outline-indigo{--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-outline-purple{--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-outline-pink{--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-outline-red{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-bordeaux-red{--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-outline-brown{--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-outline-cream{--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-outline-orange{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-yellow{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-green{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-teal{--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-outline-cyan{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-white{--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-outline-gray{--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-outline-gray-dark{--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 38, 38, 38;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.25rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.25rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c6c6c;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dedede;--bs-dropdown-bg: #343434;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dedede;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: #adadad;--bs-dropdown-header-color: #adadad}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: #cecece;--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) #cecece;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #cecece #cecece #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #000;--bs-nav-pills-link-active-bg: #ffcd00}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: 0.5rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25rem;--bs-navbar-toggler-padding-x: 0.75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 33, 33, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, 0.55);--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: 0;--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - 0);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #000;--bs-accordion-btn-bg: #ffcd00;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212121'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665200'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #000;--bs-accordion-btn-focus-box-shadow: none;--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #000;--bs-accordion-active-bg: #ffcd00}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffe166'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffe166'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #000;--bs-pagination-bg: #dedede;--bs-pagination-border-width: 0;--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #000;--bs-pagination-hover-bg: #ffcd00;--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: #000;--bs-pagination-focus-bg: #ffcd00;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-pagination-active-color: #000;--bs-pagination-active-bg: #ffcd00;--bs-pagination-active-border-color: #ffcd00;--bs-pagination-disabled-color: #adadad;--bs-pagination-disabled-bg: #efefef;--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0 * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 0.5rem;--bs-alert-margin-bottom: 0.5rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.625rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-error{--bs-alert-color: var(--bs-error-text-emphasis);--bs-alert-bg: var(--bs-error-bg-subtle);--bs-alert-border-color: var(--bs-error-border-subtle);--bs-alert-link-color: var(--bs-error-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}.alert-blue{--bs-alert-color: var(--bs-blue-text-emphasis);--bs-alert-bg: var(--bs-blue-bg-subtle);--bs-alert-border-color: var(--bs-blue-border-subtle);--bs-alert-link-color: var(--bs-blue-text-emphasis)}.alert-dark-blue{--bs-alert-color: var(--bs-dark-blue-text-emphasis);--bs-alert-bg: var(--bs-dark-blue-bg-subtle);--bs-alert-border-color: var(--bs-dark-blue-border-subtle);--bs-alert-link-color: var(--bs-dark-blue-text-emphasis)}.alert-indigo{--bs-alert-color: var(--bs-indigo-text-emphasis);--bs-alert-bg: var(--bs-indigo-bg-subtle);--bs-alert-border-color: var(--bs-indigo-border-subtle);--bs-alert-link-color: var(--bs-indigo-text-emphasis)}.alert-purple{--bs-alert-color: var(--bs-purple-text-emphasis);--bs-alert-bg: var(--bs-purple-bg-subtle);--bs-alert-border-color: var(--bs-purple-border-subtle);--bs-alert-link-color: var(--bs-purple-text-emphasis)}.alert-pink{--bs-alert-color: var(--bs-pink-text-emphasis);--bs-alert-bg: var(--bs-pink-bg-subtle);--bs-alert-border-color: var(--bs-pink-border-subtle);--bs-alert-link-color: var(--bs-pink-text-emphasis)}.alert-red{--bs-alert-color: var(--bs-red-text-emphasis);--bs-alert-bg: var(--bs-red-bg-subtle);--bs-alert-border-color: var(--bs-red-border-subtle);--bs-alert-link-color: var(--bs-red-text-emphasis)}.alert-bordeaux-red{--bs-alert-color: var(--bs-bordeaux-red-text-emphasis);--bs-alert-bg: var(--bs-bordeaux-red-bg-subtle);--bs-alert-border-color: var(--bs-bordeaux-red-border-subtle);--bs-alert-link-color: var(--bs-bordeaux-red-text-emphasis)}.alert-brown{--bs-alert-color: var(--bs-brown-text-emphasis);--bs-alert-bg: var(--bs-brown-bg-subtle);--bs-alert-border-color: var(--bs-brown-border-subtle);--bs-alert-link-color: var(--bs-brown-text-emphasis)}.alert-cream{--bs-alert-color: var(--bs-cream-text-emphasis);--bs-alert-bg: var(--bs-cream-bg-subtle);--bs-alert-border-color: var(--bs-cream-border-subtle);--bs-alert-link-color: var(--bs-cream-text-emphasis)}.alert-orange{--bs-alert-color: var(--bs-orange-text-emphasis);--bs-alert-bg: var(--bs-orange-bg-subtle);--bs-alert-border-color: var(--bs-orange-border-subtle);--bs-alert-link-color: var(--bs-orange-text-emphasis)}.alert-yellow{--bs-alert-color: var(--bs-yellow-text-emphasis);--bs-alert-bg: var(--bs-yellow-bg-subtle);--bs-alert-border-color: var(--bs-yellow-border-subtle);--bs-alert-link-color: var(--bs-yellow-text-emphasis)}.alert-green{--bs-alert-color: var(--bs-green-text-emphasis);--bs-alert-bg: var(--bs-green-bg-subtle);--bs-alert-border-color: var(--bs-green-border-subtle);--bs-alert-link-color: var(--bs-green-text-emphasis)}.alert-teal{--bs-alert-color: var(--bs-teal-text-emphasis);--bs-alert-bg: var(--bs-teal-bg-subtle);--bs-alert-border-color: var(--bs-teal-border-subtle);--bs-alert-link-color: var(--bs-teal-text-emphasis)}.alert-cyan{--bs-alert-color: var(--bs-cyan-text-emphasis);--bs-alert-bg: var(--bs-cyan-bg-subtle);--bs-alert-border-color: var(--bs-cyan-border-subtle);--bs-alert-link-color: var(--bs-cyan-text-emphasis)}.alert-white{--bs-alert-color: var(--bs-white-text-emphasis);--bs-alert-bg: var(--bs-white-bg-subtle);--bs-alert-border-color: var(--bs-white-border-subtle);--bs-alert-link-color: var(--bs-white-text-emphasis)}.alert-gray{--bs-alert-color: var(--bs-gray-text-emphasis);--bs-alert-bg: var(--bs-gray-bg-subtle);--bs-alert-border-color: var(--bs-gray-border-subtle);--bs-alert-link-color: var(--bs-gray-text-emphasis)}.alert-gray-dark{--bs-alert-color: var(--bs-gray-dark-text-emphasis);--bs-alert-bg: var(--bs-gray-dark-bg-subtle);--bs-alert-border-color: var(--bs-gray-dark-border-subtle);--bs-alert-link-color: var(--bs-gray-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #ffcd00;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #ffcd00;--bs-list-group-active-border-color: #ffcd00;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-error{--bs-list-group-color: var(--bs-error-text-emphasis);--bs-list-group-bg: var(--bs-error-bg-subtle);--bs-list-group-border-color: var(--bs-error-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-error-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-error-border-subtle);--bs-list-group-active-color: var(--bs-error-bg-subtle);--bs-list-group-active-bg: var(--bs-error-text-emphasis);--bs-list-group-active-border-color: var(--bs-error-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.list-group-item-blue{--bs-list-group-color: var(--bs-blue-text-emphasis);--bs-list-group-bg: var(--bs-blue-bg-subtle);--bs-list-group-border-color: var(--bs-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-blue-border-subtle);--bs-list-group-active-color: var(--bs-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-blue-text-emphasis)}.list-group-item-dark-blue{--bs-list-group-color: var(--bs-dark-blue-text-emphasis);--bs-list-group-bg: var(--bs-dark-blue-bg-subtle);--bs-list-group-border-color: var(--bs-dark-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-active-color: var(--bs-dark-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-blue-text-emphasis)}.list-group-item-indigo{--bs-list-group-color: var(--bs-indigo-text-emphasis);--bs-list-group-bg: var(--bs-indigo-bg-subtle);--bs-list-group-border-color: var(--bs-indigo-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-indigo-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-indigo-border-subtle);--bs-list-group-active-color: var(--bs-indigo-bg-subtle);--bs-list-group-active-bg: var(--bs-indigo-text-emphasis);--bs-list-group-active-border-color: var(--bs-indigo-text-emphasis)}.list-group-item-purple{--bs-list-group-color: var(--bs-purple-text-emphasis);--bs-list-group-bg: var(--bs-purple-bg-subtle);--bs-list-group-border-color: var(--bs-purple-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-purple-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-purple-border-subtle);--bs-list-group-active-color: var(--bs-purple-bg-subtle);--bs-list-group-active-bg: var(--bs-purple-text-emphasis);--bs-list-group-active-border-color: var(--bs-purple-text-emphasis)}.list-group-item-pink{--bs-list-group-color: var(--bs-pink-text-emphasis);--bs-list-group-bg: var(--bs-pink-bg-subtle);--bs-list-group-border-color: var(--bs-pink-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-pink-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-pink-border-subtle);--bs-list-group-active-color: var(--bs-pink-bg-subtle);--bs-list-group-active-bg: var(--bs-pink-text-emphasis);--bs-list-group-active-border-color: var(--bs-pink-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-bordeaux-red{--bs-list-group-color: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-bg: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-border-color: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-active-color: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-active-bg: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-bordeaux-red-text-emphasis)}.list-group-item-brown{--bs-list-group-color: var(--bs-brown-text-emphasis);--bs-list-group-bg: var(--bs-brown-bg-subtle);--bs-list-group-border-color: var(--bs-brown-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-brown-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-brown-border-subtle);--bs-list-group-active-color: var(--bs-brown-bg-subtle);--bs-list-group-active-bg: var(--bs-brown-text-emphasis);--bs-list-group-active-border-color: var(--bs-brown-text-emphasis)}.list-group-item-cream{--bs-list-group-color: var(--bs-cream-text-emphasis);--bs-list-group-bg: var(--bs-cream-bg-subtle);--bs-list-group-border-color: var(--bs-cream-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cream-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cream-border-subtle);--bs-list-group-active-color: var(--bs-cream-bg-subtle);--bs-list-group-active-bg: var(--bs-cream-text-emphasis);--bs-list-group-active-border-color: var(--bs-cream-text-emphasis)}.list-group-item-orange{--bs-list-group-color: var(--bs-orange-text-emphasis);--bs-list-group-bg: var(--bs-orange-bg-subtle);--bs-list-group-border-color: var(--bs-orange-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-orange-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-orange-border-subtle);--bs-list-group-active-color: var(--bs-orange-bg-subtle);--bs-list-group-active-bg: var(--bs-orange-text-emphasis);--bs-list-group-active-border-color: var(--bs-orange-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-teal{--bs-list-group-color: var(--bs-teal-text-emphasis);--bs-list-group-bg: var(--bs-teal-bg-subtle);--bs-list-group-border-color: var(--bs-teal-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-teal-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-teal-border-subtle);--bs-list-group-active-color: var(--bs-teal-bg-subtle);--bs-list-group-active-bg: var(--bs-teal-text-emphasis);--bs-list-group-active-border-color: var(--bs-teal-text-emphasis)}.list-group-item-cyan{--bs-list-group-color: var(--bs-cyan-text-emphasis);--bs-list-group-bg: var(--bs-cyan-bg-subtle);--bs-list-group-border-color: var(--bs-cyan-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cyan-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cyan-border-subtle);--bs-list-group-active-color: var(--bs-cyan-bg-subtle);--bs-list-group-active-bg: var(--bs-cyan-text-emphasis);--bs-list-group-active-border-color: var(--bs-cyan-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-gray{--bs-list-group-color: var(--bs-gray-text-emphasis);--bs-list-group-bg: var(--bs-gray-bg-subtle);--bs-list-group-border-color: var(--bs-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-border-subtle);--bs-list-group-active-color: var(--bs-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-text-emphasis)}.list-group-item-gray-dark{--bs-list-group-color: var(--bs-gray-dark-text-emphasis);--bs-list-group-bg: var(--bs-gray-dark-bg-subtle);--bs-list-group-border-color: var(--bs-gray-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-active-color: var(--bs-gray-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 0;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 9002;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: #212121;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: 0;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: 0;--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 0;--bs-modal-title-line-height: 1.6;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 0.0625rem;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.6}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%}}.accordion-item{margin-bottom:1rem}.alert-primary{--bs-alert-color: #000;--bs-alert-bg: #fff5cc;--bs-alert-border-color: #fff0b3;--bs-alert-link-color: #000}.alert-secondary{--bs-alert-color: #000;--bs-alert-bg: #cccccc;--bs-alert-border-color: #b3b3b3;--bs-alert-link-color: #000}.alert-success{--bs-alert-color: #000;--bs-alert-bg: #d5f1d8;--bs-alert-border-color: #c0eac5;--bs-alert-link-color: #000}.alert-info{--bs-alert-color: #000;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb;--bs-alert-link-color: #000}.alert-warning{--bs-alert-color: #000;--bs-alert-bg: #fdeadf;--bs-alert-border-color: #fbe0cf;--bs-alert-link-color: #000}.alert-danger{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-error{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-light{--bs-alert-color: #000;--bs-alert-bg: #fcfcfc;--bs-alert-border-color: #fafafa;--bs-alert-link-color: #000}.alert-dark{--bs-alert-color: #000;--bs-alert-bg: #d4d4d4;--bs-alert-border-color: #bebebe;--bs-alert-link-color: #000}.alert-blue{--bs-alert-color: #000;--bs-alert-bg: #dce7f4;--bs-alert-border-color: #cbdbee;--bs-alert-link-color: #000}.alert-dark-blue{--bs-alert-color: #000;--bs-alert-bg: #ccd0d9;--bs-alert-border-color: #b3b8c6;--bs-alert-link-color: #000}.alert-indigo{--bs-alert-color: #000;--bs-alert-bg: #e0cffc;--bs-alert-border-color: #d1b7fb;--bs-alert-link-color: #000}.alert-purple{--bs-alert-color: #000;--bs-alert-bg: #ded3e6;--bs-alert-border-color: #cebcda;--bs-alert-link-color: #000}.alert-pink{--bs-alert-color: #000;--bs-alert-bg: #f7d6e6;--bs-alert-border-color: #f3c2da;--bs-alert-link-color: #000}.alert-red{--bs-alert-color: #000;--bs-alert-bg: #f2ced7;--bs-alert-border-color: #ecb6c2;--bs-alert-link-color: #000}.alert-bordeaux-red{--bs-alert-color: #000;--bs-alert-bg: #eed0dd;--bs-alert-border-color: #e6b9cc;--bs-alert-link-color: #000}.alert-brown{--bs-alert-color: #000;--bs-alert-bg: #e2d8d3;--bs-alert-border-color: #d4c4bd;--bs-alert-link-color: #000}.alert-cream{--bs-alert-color: #000;--bs-alert-bg: #fffaee;--bs-alert-border-color: #fff8e6;--bs-alert-link-color: #000}.alert-orange{--bs-alert-color: #000;--bs-alert-bg: #fdeadf;--bs-alert-border-color: #fbe0cf;--bs-alert-link-color: #000}.alert-yellow{--bs-alert-color: #000;--bs-alert-bg: #fff5cc;--bs-alert-border-color: #fff0b3;--bs-alert-link-color: #000}.alert-green{--bs-alert-color: #000;--bs-alert-bg: #d5f1d8;--bs-alert-border-color: #c0eac5;--bs-alert-link-color: #000}.alert-teal{--bs-alert-color: #000;--bs-alert-bg: #d3ede9;--bs-alert-border-color: #bde5df;--bs-alert-link-color: #000}.alert-cyan{--bs-alert-color: #000;--bs-alert-bg: #cff4fc;--bs-alert-border-color: #b6effb;--bs-alert-link-color: #000}.alert-white{--bs-alert-color: #000;--bs-alert-bg: white;--bs-alert-border-color: white;--bs-alert-link-color: #000}.alert-gray{--bs-alert-color: #000;--bs-alert-bg: #e2e2e2;--bs-alert-border-color: lightgray;--bs-alert-link-color: #000}.alert-gray-dark{--bs-alert-color: #000;--bs-alert-bg: #d6d6d6;--bs-alert-border-color: #c2c2c2;--bs-alert-link-color: #000}.alert p:last-child{margin-bottom:0}.text-bg-hover-primary:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-secondary:hover{color:#fff !important;background-color:RGBA(0, 0, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-success:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-info:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-warning:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-danger:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-error:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-light:hover{color:#000 !important;background-color:RGBA(239, 239, 239, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark:hover{color:#fff !important;background-color:RGBA(38, 38, 38, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-blue:hover{color:#fff !important;background-color:RGBA(82, 135, 198, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark-blue:hover{color:#fff !important;background-color:RGBA(0, 18, 64, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-indigo:hover{color:#fff !important;background-color:RGBA(102, 16, 242, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-purple:hover{color:#fff !important;background-color:RGBA(91, 33, 130, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-pink:hover{color:#fff !important;background-color:RGBA(214, 51, 132, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-red:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-bordeaux-red:hover{color:#fff !important;background-color:RGBA(170, 21, 85, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-brown:hover{color:#fff !important;background-color:RGBA(110, 59, 35, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cream:hover{color:#000 !important;background-color:RGBA(255, 230, 171, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-orange:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-yellow:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-green:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-teal:hover{color:#000 !important;background-color:RGBA(36, 167, 147, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cyan:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-white:hover{color:#000 !important;background-color:RGBA(255, 255, 255, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray:hover{color:#fff !important;background-color:RGBA(108, 108, 108, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray-dark:hover{color:#fff !important;background-color:RGBA(52, 52, 52, var(--bs-bg-opacity, 1)) !important}.btn{font-weight:bold}.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(0.5rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.25rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{display:inline-block;font-weight:900;border:.0625rem solid rgba(0,0,0,0);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{transition:none}}.btn.btn-arrow-right:hover::after,.btn.btn-arrow-right:hover::before,.btn.btn-arrow-left:hover::after,.btn.btn-arrow-left:hover::before{background:var(--bs-btn-hover-color);color:var(--bs-btn-hover-bg);border-color:#000}.btn.btn-arrow-right::after{content:">";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x));border-top-right-radius:var(--bs-btn-border-radius);border-bottom-right-radius:var(--bs-btn-border-radius)}.btn.btn-arrow-left::before{content:"<";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x));border-top-left-radius:var(--bs-btn-border-radius);border-bottom-left-radius:var(--bs-btn-border-radius)}.btn.btn-loading{position:relative;color:rgba(0,0,0,0)}.btn.btn-loading .btn-text{color:rgba(0,0,0,0)}.btn.btn-loading::after{border:.125rem solid #000;border-radius:999999px;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;height:1em;width:1em;position:absolute;left:calc(50% - .5em);top:calc(50% - .5em);animation:spinner-border .5s infinite linear}.btn.btn-loading.btn-primary::after{border-color:#000}.btn.btn-loading.btn-secondary::after{border-color:#fff}.btn.btn-loading.btn-success::after{border-color:#000}.btn.btn-loading.btn-info::after{border-color:#000}.btn.btn-loading.btn-warning::after{border-color:#000}.btn.btn-loading.btn-danger::after{border-color:#fff}.btn.btn-loading.btn-error::after{border-color:#fff}.btn.btn-loading.btn-light::after{border-color:#000}.btn.btn-loading.btn-dark::after{border-color:#fff}.btn.btn-loading.btn-blue::after{border-color:#fff}.btn.btn-loading.btn-dark-blue::after{border-color:#fff}.btn.btn-loading.btn-indigo::after{border-color:#fff}.btn.btn-loading.btn-purple::after{border-color:#fff}.btn.btn-loading.btn-pink::after{border-color:#fff}.btn.btn-loading.btn-red::after{border-color:#fff}.btn.btn-loading.btn-bordeaux-red::after{border-color:#fff}.btn.btn-loading.btn-brown::after{border-color:#fff}.btn.btn-loading.btn-cream::after{border-color:#000}.btn.btn-loading.btn-orange::after{border-color:#000}.btn.btn-loading.btn-yellow::after{border-color:#000}.btn.btn-loading.btn-green::after{border-color:#000}.btn.btn-loading.btn-teal::after{border-color:#000}.btn.btn-loading.btn-cyan::after{border-color:#000}.btn.btn-loading.btn-white::after{border-color:#000}.btn.btn-loading.btn-gray::after{border-color:#fff}.btn.btn-loading.btn-gray-dark::after{border-color:#fff}.btn-group{gap:.5rem}.btn-check:checked+.btn.btn-checked-primary,.btn-check:active+.btn.btn-checked-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-primary,.btn-check:active+.btn.btn-checked-outline-primary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-secondary,.btn-check:active+.btn.btn-checked-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-check:checked+.btn.btn-checked-outline-secondary,.btn-check:active+.btn.btn-checked-outline-secondary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-success,.btn-check:active+.btn.btn-checked-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-success,.btn-check:active+.btn.btn-checked-outline-success{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-info,.btn-check:active+.btn.btn-checked-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-info,.btn-check:active+.btn.btn-checked-outline-info{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-warning,.btn-check:active+.btn.btn-checked-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-warning,.btn-check:active+.btn.btn-checked-outline-warning{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-danger,.btn-check:active+.btn.btn-checked-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-danger,.btn-check:active+.btn.btn-checked-outline-danger{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-error,.btn-check:active+.btn.btn-checked-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-error,.btn-check:active+.btn.btn-checked-outline-error{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-light,.btn-check:active+.btn.btn-checked-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-check:checked+.btn.btn-checked-outline-light,.btn-check:active+.btn.btn-checked-outline-light{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark,.btn-check:active+.btn.btn-checked-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-check:checked+.btn.btn-checked-outline-dark,.btn-check:active+.btn.btn-checked-outline-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-blue,.btn-check:active+.btn.btn-checked-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-check:checked+.btn.btn-checked-outline-blue,.btn-check:active+.btn.btn-checked-outline-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark-blue,.btn-check:active+.btn.btn-checked-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-check:checked+.btn.btn-checked-outline-dark-blue,.btn-check:active+.btn.btn-checked-outline-dark-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-indigo,.btn-check:active+.btn.btn-checked-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-check:checked+.btn.btn-checked-outline-indigo,.btn-check:active+.btn.btn-checked-outline-indigo{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-purple,.btn-check:active+.btn.btn-checked-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-check:checked+.btn.btn-checked-outline-purple,.btn-check:active+.btn.btn-checked-outline-purple{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-pink,.btn-check:active+.btn.btn-checked-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-check:checked+.btn.btn-checked-outline-pink,.btn-check:active+.btn.btn-checked-outline-pink{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-red,.btn-check:active+.btn.btn-checked-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-red,.btn-check:active+.btn.btn-checked-outline-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-bordeaux-red,.btn-check:active+.btn.btn-checked-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-check:checked+.btn.btn-checked-outline-bordeaux-red,.btn-check:active+.btn.btn-checked-outline-bordeaux-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-brown,.btn-check:active+.btn.btn-checked-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-check:checked+.btn.btn-checked-outline-brown,.btn-check:active+.btn.btn-checked-outline-brown{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cream,.btn-check:active+.btn.btn-checked-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-check:checked+.btn.btn-checked-outline-cream,.btn-check:active+.btn.btn-checked-outline-cream{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-orange,.btn-check:active+.btn.btn-checked-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-orange,.btn-check:active+.btn.btn-checked-outline-orange{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-yellow,.btn-check:active+.btn.btn-checked-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-yellow,.btn-check:active+.btn.btn-checked-outline-yellow{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-green,.btn-check:active+.btn.btn-checked-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-green,.btn-check:active+.btn.btn-checked-outline-green{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-teal,.btn-check:active+.btn.btn-checked-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-check:checked+.btn.btn-checked-outline-teal,.btn-check:active+.btn.btn-checked-outline-teal{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cyan,.btn-check:active+.btn.btn-checked-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-cyan,.btn-check:active+.btn.btn-checked-outline-cyan{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-white,.btn-check:active+.btn.btn-checked-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-check:checked+.btn.btn-checked-outline-white,.btn-check:active+.btn.btn-checked-outline-white{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray,.btn-check:active+.btn.btn-checked-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-check:checked+.btn.btn-checked-outline-gray,.btn-check:active+.btn.btn-checked-outline-gray{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray-dark,.btn-check:active+.btn.btn-checked-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-check:checked+.btn.btn-checked-outline-gray-dark,.btn-check:active+.btn.btn-checked-outline-gray-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}.pagination{--bs-pagination-gap: 0.625rem;--bs-pagination-size: 2.5rem;--bs-pagination-button-bg: #000;--bs-pagination-button-color: #fff;--bs-pagination-ellipsis-color: #494949;gap:var(--bs-pagination-gap)}.pagination .page-item{height:100%}.pagination .page-item .page-link{cursor:pointer;height:var(--bs-pagination-size);line-height:var(--bs-pagination-size);padding-top:0;padding-bottom:0;text-align:center}.pagination .page-item:not(.page-button):not(.next):not(.previous):not(.first):not(.last) .page-link{width:var(--bs-pagination-size);padding:0}.pagination .page-item.page-button{font-weight:bold;user-select:none}.pagination .page-item.page-button .page-link{background-color:var(--bs-pagination-button-bg);color:var(--bs-pagination-button-color)}.pagination .page-item.page-button.disabled{cursor:not-allowed}.pagination .page-item.page-button.disabled .page-link{background-color:var(--bs-pagination-disabled-bg);color:var(--bs-pagination-disabled-color)}.pagination .page-item.active{font-weight:bold}.pagination .page-item.page-ellipsis .page-link{background:rgba(0,0,0,0);cursor:default;font-size:0}.pagination .page-item.page-ellipsis .page-link:before{font-size:1rem;color:var(--bs-pagination-ellipsis-color);content:"…"}[data-bs-theme=dark] .pagination{--bs-pagination-button-bg-dark: #000;--bs-pagination-ellipsis-color: #dedede;--bs-pagination-color: #fff;--bs-pagination-bg: #6c6c6c;--bs-pagination-focus-color: #000;--bs-pagination-focus-bg: #ffcd00;--bs-pagination-hover-color: #000;--bs-pagination-hover-bg: #ffcd00;--bs-pagination-active-color: #000;--bs-pagination-active-bg: #ffcd00;--bs-pagination-disabled-color: #adadad;--bs-pagination-disabled-bg: #494949}.modal{--bs-modal-header-bg: #ffcd00;--bs-modal-header-color: #000;--bs-modal-header-font-weight: 500}.modal .modal-header{background-color:var(--bs-modal-header-bg);color:var(--bs-modal-header-color);font-weight:var(--bs-modal-header-font-weight)}[data-bs-theme=dark] .modal{--bs-modal-bg: #343434;--bs-modal-color: #efefef;--bs-modal-header-bg: #ffcd00;--bs-modal-header-color: #000}.table.table-sticky-header thead,.table-sticky-header.dt thead,.table-sticky-header.datatables thead{position:sticky;top:0}.table.table-sticky-header.table-sticky-header-top-0 thead,.table-sticky-header.table-sticky-header-top-0.dt thead,.table-sticky-header.table-sticky-header-top-0.datatables thead{top:0 !important}.table.table-sticky-footer tfoot,.table-sticky-footer.dt tfoot,.table-sticky-footer.datatables tfoot{position:sticky;bottom:0}.table.loading tbody,.loading.dt tbody,.loading.datatables tbody{position:relative}.table.loading tbody td,.loading.dt tbody td,.loading.datatables tbody td{opacity:.4}.table.loading tbody:after,.loading.dt tbody:after,.loading.datatables tbody:after{border:.2rem solid var(--bs-secondary);border-radius:999999px;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;height:3em;width:3em;position:absolute;left:calc(50% - 1.5em);top:calc(50% - 1.5em);animation:spinner-border .5s infinite linear}@media(max-width: 768px){.uu-root-container .table.table-sticky-header thead,.uu-root-container .table-sticky-header.dt thead,.uu-root-container .table-sticky-header.datatables thead{top:var(--bs-uu-navbar-mobile-height)}}.form-control,.form-select{--bs-input-bg: #fff;background-color:var(--bs-input-bg)}[data-bs-theme=dark] .form-control,[data-bs-theme=dark] .form-select{--bs-input-bg: #212121}.flex-fill{min-width:0}.font-serif{font-family:"Merriweather",serif}h1.hdr-underlined,.hdr-underlined.h1{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h2.hdr-underlined,.hdr-underlined.h2{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h3.hdr-underlined,.hdr-underlined.h3{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h4.hdr-underlined,.hdr-underlined.h4{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h5.hdr-underlined,.hdr-underlined.h5{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h6.hdr-underlined,.hdr-underlined.h6{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h7.hdr-underlined{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}code,pre.code{--bs-code-bg: #cecece;--bs-code-color: #000;--bs-code-border-radius: 0.2em;--bs-code-padding-y: 0.2em;--bs-code-padding-x: 0.4em;--bs-code-font-size: 0.85em;background:var(--bs-code-bg);color:var(--bs-code-color);padding:var(--bs-code-padding-y) var(--bs-code-padding-x);margin:0;font-size:var(--bs-code-font-size);border-radius:var(--bs-code-border-radius)}pre.code{overflow:auto}[data-bs-theme=dark] code,[data-bs-theme=dark] pre.code{--bs-code-bg: #494949;--bs-code-color: #fff}.stepper{--bs-stepper-color: #212121;--bs-stepper-disabled-color: var(--bs-secondary-color);--bs-stepper-complete-bg: #75b798;--bs-stepper-complete-color: #000;--bs-stepper-incomplete-bg: #ffcd00;--bs-stepper-incomplete-color: #000;--bs-stepper-inactive-bg: #cecece;--bs-stepper-inactive-color: #000;--bs-stepper-min-width: 15.625rem;--bs-stepper-padding-y: 0.75rem;--bs-stepper-line-width: 0.125rem;position:relative;z-index:1;min-width:var(--bs-stepper-min-width)}.stepper a{text-decoration:none;color:var(--bs-stepper-color)}.stepper>ul::before{content:"";display:block;position:absolute;left:calc(2rem / 2 - 1px);top:1rem;height:calc(100% - 1rem);width:var(--bs-stepper-line-width);background:var(--bs-stepper-inactive-bg);z-index:-1}.stepper ul{list-style:none;padding-left:0;margin:0}.stepper ul li{line-height:2rem}.stepper ul li>.stepper-item{display:flex;flex-direction:row;align-items:center;gap:1rem}.stepper ul li>.stepper-item.active{font-weight:600}.stepper ul li>.stepper-item.disabled{color:var(--bs-stepper-disabled-color);font-style:italic}.stepper ul li>.stepper-item.complete .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.complete,.stepper ul li>.stepper-item.finished .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.finished{background:var(--bs-stepper-complete-bg);color:var(--bs-stepper-complete-color)}.stepper ul li>.stepper-item.incomplete .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.incomplete{background:var(--bs-stepper-incomplete-bg);color:var(--bs-stepper-incomplete-color)}.stepper ul li>.stepper-item.disabled .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.disabled{font-style:normal}.stepper ul li>.stepper-item .stepper-bubble{background:var(--bs-stepper-inactive-bg);flex:0 0 auto;color:var(--bs-stepper-inactive-color);font-weight:bold;line-height:2rem;font-size:.8rem;display:inline-block;border-radius:100%;text-align:center}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-largest{width:2rem;height:2rem;margin-left:0rem;margin-right:0rem;line-height:2rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-large{width:1.66rem;height:1.66rem;margin-left:.17rem;margin-right:.77rem;line-height:1.66rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-medium{width:1.32rem;height:1.32rem;margin-left:.34rem;margin-right:1.54rem;line-height:1.32rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-normal{width:1.32rem;height:1.32rem;margin-left:.34rem;margin-right:1.54rem;line-height:1.32rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-small{width:.98rem;height:.98rem;margin-left:.51rem;margin-right:2.31rem;line-height:.98rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-smallest{width:.64rem;height:.64rem;margin-left:.68rem;margin-right:3.08rem;line-height:.64rem}.stepper ul li:not(:last-of-type){padding-bottom:var(--bs-stepper-padding-y)}.stepper ul li>ul{padding-top:var(--bs-stepper-padding-y)}[data-bs-theme=dark] .stepper{--bs-stepper-color: #dedede;--bs-stepper-disabled-color: var(--bs-secondary-color);--bs-stepper-complete-bg: #198754;--bs-stepper-complete-color: #fff;--bs-stepper-incomplete-bg: #cc9a06;--bs-stepper-incomplete-color: #fff;--bs-stepper-inactive-bg: #6c6c6c;--bs-stepper-inactive-color: #fff}.tiles{--bs-tiles-gap: 0.625rem;--bs-tiles-padding: 1rem;--bs-tiles-bg: #efefef;--bs-tiles-color: #000;--bs-tiles-hover-bg: #ffcd00;--bs-tiles-hover-color: #000;--bs-tiles-n-xs: 2;--bs-tiles-n: var(--bs-tiles-n-xs);--bs-tiles-n-sm: 4;--bs-tiles-n-md: 5;--bs-tiles-n-lg: 6;--bs-tiles-n-xl: 7;width:100%;display:grid;gap:var(--bs-tiles-gap);grid-template-columns:repeat(var(--bs-tiles-n), 1fr)}@media(min-width: 576px){.tiles{--bs-tiles-n: var(--bs-tiles-n-sm)}}@media(min-width: 768px){.tiles{--bs-tiles-n: var(--bs-tiles-n-md)}}@media(min-width: 992px){.tiles{--bs-tiles-n: var(--bs-tiles-n-lg)}}@media(min-width: 1200px){.tiles{--bs-tiles-n: var(--bs-tiles-n-xl)}}.tiles .tile{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--bs-tiles-padding);aspect-ratio:1/1;background:var(--bs-tiles-bg);color:var(--bs-tiles-color)}.tiles .tile:hover{background:var(--bs-tiles-hover-bg);color:var(--bs-tiles-hover-color)}.tiles .tile p:last-child{margin:0}.tiles a.tile,.tiles .tile a{cursor:pointer;text-decoration:none}.tiles.tiles-n-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-12{--bs-tiles-n: 12 !important}@media(min-width: 576px){.tiles.tiles-n-sm-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-sm-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-sm-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-sm-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-sm-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-sm-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-sm-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-sm-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-sm-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-sm-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-sm-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-sm-12{--bs-tiles-n: 12 !important}}@media(min-width: 768px){.tiles.tiles-n-md-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-md-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-md-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-md-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-md-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-md-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-md-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-md-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-md-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-md-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-md-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-md-12{--bs-tiles-n: 12 !important}}@media(min-width: 992px){.tiles.tiles-n-lg-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-lg-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-lg-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-lg-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-lg-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-lg-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-lg-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-lg-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-lg-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-lg-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-lg-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-lg-12{--bs-tiles-n: 12 !important}}@media(min-width: 1200px){.tiles.tiles-n-xl-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-xl-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-xl-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-xl-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-xl-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-xl-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-xl-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-xl-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-xl-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-xl-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-xl-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-xl-12{--bs-tiles-n: 12 !important}}@media(min-width: 1400px){.tiles.tiles-n-xxl-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-xxl-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-xxl-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-xxl-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-xxl-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-xxl-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-xxl-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-xxl-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-xxl-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-xxl-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-xxl-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-xxl-12{--bs-tiles-n: 12 !important}}[data-bs-theme=dark] .tiles{--bs-tiles-bg: #494949;--bs-tiles-color: #fff;--bs-tiles-hover-bg: #ffcd00;--bs-tiles-hover-color: #000}.modal-nav-tabs{--bs-modal-nav-tabs-gap: 0.625rem;--bs-modal-nav-tabs-color: inherit;--bs-modal-nav-tabs-bg: none;--bs-modal-nav-tabs-active-color: var(--bs-modal-color);--bs-modal-nav-tabs-active-bg: var(--bs-modal-bg);--bs-modal-nav-tabs-hover-color: #000;--bs-modal-nav-tabs-hover-bg: #efefef;margin-bottom:calc(0px - var(--bs-modal-header-padding-y));border-bottom:0;gap:var(--bs-modal-nav-tabs-gap);overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;max-width:100%}.modal-nav-tabs .nav-link{background-color:var(--bs-modal-nav-tabs-bg);color:var(--bs-modal-nav-tabs-color);white-space:nowrap}.modal-nav-tabs .nav-link.active{color:var(--bs-modal-nav-tabs-active-color);background-color:var(--bs-modal-nav-tabs-active-bg);border-color:rgba(0,0,0,0)}.modal-nav-tabs .nav-link:not(.active):hover,.modal-nav-tabs .nav-link:not(.active):focus{color:var(--bs-modal-nav-tabs-hover-color);background-color:var(--bs-modal-nav-tabs-hover-bg);border-color:rgba(0,0,0,0)}.uu-root-container{width:100%;max-width:var(--bs-uu-container-width);min-height:100vh;margin:0 auto;display:flex;align-items:center;flex-direction:column;padding:0;background:var(--bs-uu-container-bg);color:var(--bs-uu-container-color)}.uu-root-container{--bs-uu-container-width: 100rem;--bs-uu-container-bg: #fff;--bs-uu-container-color: #212529;--bs-uu-container-padding-y: 1rem;--bs-uu-container-padding-x: 1rem;--bs-uu-content-width: 75rem;--bs-uu-border-color: #cecece;--bs-uu-border-color-light: #e9e9e9;--bs-uu-border-color-dark: #343434;--bs-uu-header-padding-y: 0.7rem;--bs-uu-header-font-size: 0.9rem;--bs-uu-header-title-color: #094d8e;--bs-uu-header-border-gap: 1.2rem;--bs-uu-navbar-mobile-height: 3.125rem;--bs-uu-navbar-navlink-padding-x: 0.75rem;--bs-uu-navbar-navlink-padding-y: 0.75rem;--bs-uu-unified-header-height: 4.5rem;--bs-uu-unified-header-mobile-height: 3rem;--bs-uu-unified-header-border-size: 0.0625rem;--bs-uu-unified-header-padding-x: 2rem;--bs-uu-unified-header-padding-mobile-x: 1rem;--bs-uu-unified-header-navlink-indicator-height: 0.3125rem;--bs-uu-unified-header-navlink-mobile-bg: #000;--bs-uu-unified-header-navlink-mobile-color: #fff;--bs-uu-brand-padding-x: 2.5rem;--bs-uu-brand-padding-y: 1rem;--bs-uu-brand-logo-padding-x: 0;--bs-uu-brand-logo-padding-y: 0.5rem;--bs-uu-brand-sender-bg: #ffcd00;--bs-uu-brand-sender-color: #000;--bs-uu-brand-sender-min-width: 220px;--bs-uu-brand-sender-max-width: 300px;--bs-uu-footer-padding-y: 2.5rem;--bs-uu-footer-color: #cecece;--bs-uu-footer-background-color: #262626;--bs-uu-hero-bg: #ffcd00;--bs-uu-hero-color: #000;--bs-uu-hero-padding-y: 1rem;--bs-uu-hero-font-weight: 400;--bs-uu-cover-default-height: 400px;--bs-uu-cover-copyright-padding-x: 0.625rem;--bs-uu-cover-copyright-padding-y: 0.625rem;--bs-uu-cover-copyright-text-size: 0.8rem;--bs-uu-cover-copyright-text-color: #dedede;--bs-uu-cover-copyright-background-color: rgba(0, 0, 0, 0.5);--bs-uu-sidebar-width: 21.875rem;--bs-uu-sidebar-padding-x: 1.25rem;--bs-uu-sidebar-padding-y: 1.25rem;--bs-uu-sidebar-mobile-padding-y: 0.625rem;--bs-uu-sidebar-gap: 6.25rem;--bs-uu-sidebar-background: #e9e9e9;--bs-uu-sidebar-color: #212529;--bs-uu-sidebar-header-font-weight: 200;--bs-uu-sidebar-header-padding-y: 0.625rem;--bs-uu-sidebar-nav-padding-y: 0.4375rem;--bs-uu-sidebar-nav-padding-x: 0;--bs-uu-sidebar-nav-disabled-color: #6c6c6c;--bs-uu-sidebar-nav-active-font-weight: 600;--bs-uu-form-column-gap: 2rem;--bs-uu-form-row-gap: 1.5rem;--bs-uu-form-field-padding-x: 1.5rem;--bs-uu-form-field-padding-y: 1.3rem;--bs-uu-form-field-padding-y-compensation: 0.3125rem;--bs-uu-form-field-bg: #efefef;--bs-uu-form-field-input-group-bg: #f8f8f8;--bs-uu-form-aside-font-size: 0.9rem;--bs-uu-form-aside-color: var(--bs-secondary-color);--bs-uu-form-help-padding-x: 0;--bs-uu-form-help-padding-y: 0.5rem}.uu-root-container .uu-content{width:100%;display:flex;align-items:center;flex:1 1 auto;flex-direction:column;padding:0;margin:0}.uu-root-container .uu-fullwidth-container,.uu-root-container .-uu-spaced-container,.uu-root-container .uu-footer,.uu-root-container .uu-hero,.uu-root-container .uu-cover .uu-cover-hero,.uu-root-container .uu-container,.uu-root-container .uu-inner-container{width:100%;display:flex;flex-wrap:wrap;padding:var(--bs-uu-container-padding-y) var(--bs-uu-container-padding-x)}@media(min-width: 76rem){.uu-root-container .-uu-spaced-container,.uu-root-container .uu-footer,.uu-root-container .uu-hero,.uu-root-container .uu-cover .uu-cover-hero,.uu-root-container .uu-container,.uu-root-container .uu-inner-container{padding-left:calc(50% - var(--bs-uu-content-width)/2);padding-right:calc(50% - var(--bs-uu-content-width)/2)}}.uu-container+.uu-container,.uu-inner-container+.uu-container,.uu-container+.uu-inner-container,.uu-inner-container+.uu-inner-container{padding-top:0}.uu-root-container .uu-header{width:100%;display:flex;align-items:center;flex-direction:column;font-size:var(--bs-uu-header-font-size)}.uu-root-container .uu-header .uu-header-row{display:flex;flex-direction:row;align-items:stretch;width:100%;padding-left:calc(50% - var(--bs-uu-content-width)/2);padding-right:calc(50% - var(--bs-uu-content-width)/2)}@media(max-width: 768px){.uu-root-container .uu-header .uu-header-row{display:none}}.uu-root-container .uu-header .uu-header-row>*{padding-top:var(--bs-uu-header-padding-y);padding-bottom:var(--bs-uu-header-padding-y);align-items:center;display:flex}@media(max-width: 76rem){.uu-root-container .uu-header .uu-header-row{padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x)}}.uu-root-container .uu-header .uu-header-row:not(:last-child){border-bottom:.0625rem solid var(--bs-uu-border-color-light)}.uu-root-container .uu-header .uu-header-row .border-left{padding-left:var(--bs-uu-header-border-gap);border-left:.0625rem solid var(--bs-uu-border-color-light)}.uu-root-container .uu-header .uu-header-row .border-right{padding-right:var(--bs-uu-header-border-gap);border-right:.0625rem solid var(--bs-uu-border-color-light)}.uu-root-container .uu-header .uu-header-row .uu-header-title,.uu-root-container .uu-header .uu-header-row .uu-header-title a{color:var(--bs-uu-header-title-color);text-decoration:none;font-size:1.7rem}.uu-root-container .uu-header .uu-header-row .uu-logo img{max-height:3rem}.uu-root-container .uu-header .uu-header-row a,.uu-root-container .uu-header .uu-header-row a:hover,.uu-root-container .uu-header .uu-header-row a:focus,.uu-root-container .uu-header .uu-header-row a:active{text-decoration:none}.uu-root-container .uu-navbar{width:100%;background:#000;flex-wrap:nowrap;justify-content:flex-start}@media(max-width: 768px){.uu-root-container .uu-navbar{background:#fff !important;color:#000 !important;border-bottom:.0625rem solid var(--bs-uu-border-color);flex-wrap:wrap;justify-content:space-between;position:sticky;top:0;z-index:9001;height:var(--bs-uu-navbar-mobile-height)}}.uu-root-container .uu-navbar .uu-navbar-container{width:100%;padding-left:calc( + */@font-face{font-family:"Open Sans";font-style:normal;font-weight:300;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:400;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-regular.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:500;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:600;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:700;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:normal;font-weight:800;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:300;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-300italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:400;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:500;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-500italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:600;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-600italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:700;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-700italic.svg#OpenSans") format("svg")}@font-face{font-family:"Open Sans";font-style:italic;font-weight:800;src:url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.eot");src:local(""),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.woff2") format("woff2"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.woff") format("woff"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.ttf") format("truetype"),url("/static/cdh.core/fonts/open-sans/open-sans-v28-latin-ext_latin-800italic.svg#OpenSans") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:300;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:300;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-300italic.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:400;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-regular.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:400;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-italic.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:700;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:700;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-700italic.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:normal;font-weight:900;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900.svg#Merriweather") format("svg")}@font-face{font-family:"Merriweather";font-style:italic;font-weight:900;src:url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.eot");src:local(""),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.eot?#iefix") format("embedded-opentype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.woff2") format("woff2"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.woff") format("woff"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.ttf") format("truetype"),url("/static/cdh.core/fonts/merriweather/merriweather-v30-latin-900italic.svg#Merriweather") format("svg")}a,.alert,.code,code,h1,.h1,h2,.h2,h3,.h3{transition:background .1s linear,color .1s linear,border-color .1s linear}.clearfix::after{display:block;clear:both;content:""}.text-bg-primary{color:#000 !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#000 !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#000 !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#000 !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-error{color:#fff !important;background-color:RGBA(var(--bs-error-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-blue{color:#fff !important;background-color:RGBA(var(--bs-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark-blue{color:#fff !important;background-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-indigo{color:#fff !important;background-color:RGBA(var(--bs-indigo-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-purple{color:#fff !important;background-color:RGBA(var(--bs-purple-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-pink{color:#fff !important;background-color:RGBA(var(--bs-pink-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-red{color:#fff !important;background-color:RGBA(var(--bs-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-bordeaux-red{color:#fff !important;background-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-brown{color:#fff !important;background-color:RGBA(var(--bs-brown-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cream{color:#000 !important;background-color:RGBA(var(--bs-cream-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-orange{color:#000 !important;background-color:RGBA(var(--bs-orange-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-yellow{color:#000 !important;background-color:RGBA(var(--bs-yellow-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-green{color:#000 !important;background-color:RGBA(var(--bs-green-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-teal{color:#000 !important;background-color:RGBA(var(--bs-teal-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-cyan{color:#000 !important;background-color:RGBA(var(--bs-cyan-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-white{color:#000 !important;background-color:RGBA(var(--bs-white-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray{color:#fff !important;background-color:RGBA(var(--bs-gray-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-gray-dark{color:#fff !important;background-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(0, 0, 0, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 0, 0, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-error{color:RGBA(var(--bs-error-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-error-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-error:hover,.link-error:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(242, 242, 242, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(242, 242, 242, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(30, 30, 30, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(30, 30, 30, var(--bs-link-underline-opacity, 1)) !important}.link-blue{color:RGBA(var(--bs-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-blue:hover,.link-blue:focus{color:RGBA(66, 108, 158, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(66, 108, 158, var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue{color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark-blue:hover,.link-dark-blue:focus{color:RGBA(0, 14, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(0, 14, 51, var(--bs-link-underline-opacity, 1)) !important}.link-indigo{color:RGBA(var(--bs-indigo-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-indigo-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-indigo:hover,.link-indigo:focus{color:RGBA(82, 13, 194, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(82, 13, 194, var(--bs-link-underline-opacity, 1)) !important}.link-purple{color:RGBA(var(--bs-purple-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-purple-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-purple:hover,.link-purple:focus{color:RGBA(73, 26, 104, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(73, 26, 104, var(--bs-link-underline-opacity, 1)) !important}.link-pink{color:RGBA(var(--bs-pink-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-pink-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-pink:hover,.link-pink:focus{color:RGBA(171, 41, 106, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(171, 41, 106, var(--bs-link-underline-opacity, 1)) !important}.link-red{color:RGBA(var(--bs-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-red:hover,.link-red:focus{color:RGBA(154, 8, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(154, 8, 42, var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red{color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-bordeaux-red:hover,.link-bordeaux-red:focus{color:RGBA(136, 17, 68, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(136, 17, 68, var(--bs-link-underline-opacity, 1)) !important}.link-brown{color:RGBA(var(--bs-brown-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-brown-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-brown:hover,.link-brown:focus{color:RGBA(88, 47, 28, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(88, 47, 28, var(--bs-link-underline-opacity, 1)) !important}.link-cream{color:RGBA(var(--bs-cream-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cream-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cream:hover,.link-cream:focus{color:RGBA(255, 235, 188, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 235, 188, var(--bs-link-underline-opacity, 1)) !important}.link-orange{color:RGBA(var(--bs-orange-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-orange-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-orange:hover,.link-orange:focus{color:RGBA(245, 171, 126, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(245, 171, 126, var(--bs-link-underline-opacity, 1)) !important}.link-yellow{color:RGBA(var(--bs-yellow-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-yellow-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-yellow:hover,.link-yellow:focus{color:RGBA(255, 215, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 215, 51, var(--bs-link-underline-opacity, 1)) !important}.link-green{color:RGBA(var(--bs-green-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-green-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-green:hover,.link-green:focus{color:RGBA(87, 198, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(87, 198, 100, var(--bs-link-underline-opacity, 1)) !important}.link-teal{color:RGBA(var(--bs-teal-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-teal-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-teal:hover,.link-teal:focus{color:RGBA(80, 185, 169, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(80, 185, 169, var(--bs-link-underline-opacity, 1)) !important}.link-cyan{color:RGBA(var(--bs-cyan-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-cyan-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-cyan:hover,.link-cyan:focus{color:RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important}.link-white{color:RGBA(var(--bs-white-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-white-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-white:hover,.link-white:focus{color:RGBA(255, 255, 255, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 255, 255, var(--bs-link-underline-opacity, 1)) !important}.link-gray{color:RGBA(var(--bs-gray-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray:hover,.link-gray:focus{color:RGBA(86, 86, 86, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 86, 86, var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark{color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-gray-dark:hover,.link-gray-dark:focus{color:RGBA(42, 42, 42, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 42, 42, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch}.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;width:var(--bs-border-width);min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-error{--bs-focus-ring-color: rgba(var(--bs-error-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.focus-ring-blue{--bs-focus-ring-color: rgba(var(--bs-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark-blue{--bs-focus-ring-color: rgba(var(--bs-dark-blue-rgb), var(--bs-focus-ring-opacity))}.focus-ring-indigo{--bs-focus-ring-color: rgba(var(--bs-indigo-rgb), var(--bs-focus-ring-opacity))}.focus-ring-purple{--bs-focus-ring-color: rgba(var(--bs-purple-rgb), var(--bs-focus-ring-opacity))}.focus-ring-pink{--bs-focus-ring-color: rgba(var(--bs-pink-rgb), var(--bs-focus-ring-opacity))}.focus-ring-red{--bs-focus-ring-color: rgba(var(--bs-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-bordeaux-red{--bs-focus-ring-color: rgba(var(--bs-bordeaux-red-rgb), var(--bs-focus-ring-opacity))}.focus-ring-brown{--bs-focus-ring-color: rgba(var(--bs-brown-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cream{--bs-focus-ring-color: rgba(var(--bs-cream-rgb), var(--bs-focus-ring-opacity))}.focus-ring-orange{--bs-focus-ring-color: rgba(var(--bs-orange-rgb), var(--bs-focus-ring-opacity))}.focus-ring-yellow{--bs-focus-ring-color: rgba(var(--bs-yellow-rgb), var(--bs-focus-ring-opacity))}.focus-ring-green{--bs-focus-ring-color: rgba(var(--bs-green-rgb), var(--bs-focus-ring-opacity))}.focus-ring-teal{--bs-focus-ring-color: rgba(var(--bs-teal-rgb), var(--bs-focus-ring-opacity))}.focus-ring-cyan{--bs-focus-ring-color: rgba(var(--bs-cyan-rgb), var(--bs-focus-ring-opacity))}.focus-ring-white{--bs-focus-ring-color: rgba(var(--bs-white-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray{--bs-focus-ring-color: rgba(var(--bs-gray-rgb), var(--bs-focus-ring-opacity))}.focus-ring-gray-dark{--bs-focus-ring-color: rgba(var(--bs-gray-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-error{--bs-border-opacity: 1;border-color:rgba(var(--bs-error-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-blue-rgb), var(--bs-border-opacity)) !important}.border-dark-blue{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-blue-rgb), var(--bs-border-opacity)) !important}.border-indigo{--bs-border-opacity: 1;border-color:rgba(var(--bs-indigo-rgb), var(--bs-border-opacity)) !important}.border-purple{--bs-border-opacity: 1;border-color:rgba(var(--bs-purple-rgb), var(--bs-border-opacity)) !important}.border-pink{--bs-border-opacity: 1;border-color:rgba(var(--bs-pink-rgb), var(--bs-border-opacity)) !important}.border-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-red-rgb), var(--bs-border-opacity)) !important}.border-bordeaux-red{--bs-border-opacity: 1;border-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-border-opacity)) !important}.border-brown{--bs-border-opacity: 1;border-color:rgba(var(--bs-brown-rgb), var(--bs-border-opacity)) !important}.border-cream{--bs-border-opacity: 1;border-color:rgba(var(--bs-cream-rgb), var(--bs-border-opacity)) !important}.border-orange{--bs-border-opacity: 1;border-color:rgba(var(--bs-orange-rgb), var(--bs-border-opacity)) !important}.border-yellow{--bs-border-opacity: 1;border-color:rgba(var(--bs-yellow-rgb), var(--bs-border-opacity)) !important}.border-green{--bs-border-opacity: 1;border-color:rgba(var(--bs-green-rgb), var(--bs-border-opacity)) !important}.border-teal{--bs-border-opacity: 1;border-color:rgba(var(--bs-teal-rgb), var(--bs-border-opacity)) !important}.border-cyan{--bs-border-opacity: 1;border-color:rgba(var(--bs-cyan-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-gray{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-rgb), var(--bs-border-opacity)) !important}.border-gray-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-gray-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.295rem + 0.54vw) !important}.fs-3{font-size:calc(1.265rem + 0.18vw) !important}.fs-4{font-size:1.2rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.4 !important}.lh-base{line-height:1.6 !important}.lh-lg{line-height:2.1 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-error{--bs-text-opacity: 1;color:rgba(var(--bs-error-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-blue{--bs-text-opacity: 1;color:rgba(var(--bs-blue-rgb), var(--bs-text-opacity)) !important}.text-dark-blue{--bs-text-opacity: 1;color:rgba(var(--bs-dark-blue-rgb), var(--bs-text-opacity)) !important}.text-indigo{--bs-text-opacity: 1;color:rgba(var(--bs-indigo-rgb), var(--bs-text-opacity)) !important}.text-purple{--bs-text-opacity: 1;color:rgba(var(--bs-purple-rgb), var(--bs-text-opacity)) !important}.text-pink{--bs-text-opacity: 1;color:rgba(var(--bs-pink-rgb), var(--bs-text-opacity)) !important}.text-red{--bs-text-opacity: 1;color:rgba(var(--bs-red-rgb), var(--bs-text-opacity)) !important}.text-bordeaux-red{--bs-text-opacity: 1;color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-text-opacity)) !important}.text-brown{--bs-text-opacity: 1;color:rgba(var(--bs-brown-rgb), var(--bs-text-opacity)) !important}.text-cream{--bs-text-opacity: 1;color:rgba(var(--bs-cream-rgb), var(--bs-text-opacity)) !important}.text-orange{--bs-text-opacity: 1;color:rgba(var(--bs-orange-rgb), var(--bs-text-opacity)) !important}.text-yellow{--bs-text-opacity: 1;color:rgba(var(--bs-yellow-rgb), var(--bs-text-opacity)) !important}.text-green{--bs-text-opacity: 1;color:rgba(var(--bs-green-rgb), var(--bs-text-opacity)) !important}.text-teal{--bs-text-opacity: 1;color:rgba(var(--bs-teal-rgb), var(--bs-text-opacity)) !important}.text-cyan{--bs-text-opacity: 1;color:rgba(var(--bs-cyan-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-gray{--bs-text-opacity: 1;color:rgba(var(--bs-gray-rgb), var(--bs-text-opacity)) !important}.text-gray-dark{--bs-text-opacity: 1;color:rgba(var(--bs-gray-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-error{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-error-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark-blue{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-blue-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-indigo{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-indigo-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-purple{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-purple-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-pink{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-pink-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-bordeaux-red{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-brown{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-brown-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cream{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cream-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-orange{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-orange-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-yellow{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-yellow-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-green{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-green-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-teal{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-teal-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-cyan{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-cyan-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-white{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-white-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-gray-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-gray-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-error{--bs-bg-opacity: 1;background-color:rgba(var(--bs-error-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-blue-rgb), var(--bs-bg-opacity)) !important}.bg-dark-blue{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-blue-rgb), var(--bs-bg-opacity)) !important}.bg-indigo{--bs-bg-opacity: 1;background-color:rgba(var(--bs-indigo-rgb), var(--bs-bg-opacity)) !important}.bg-purple{--bs-bg-opacity: 1;background-color:rgba(var(--bs-purple-rgb), var(--bs-bg-opacity)) !important}.bg-pink{--bs-bg-opacity: 1;background-color:rgba(var(--bs-pink-rgb), var(--bs-bg-opacity)) !important}.bg-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-red-rgb), var(--bs-bg-opacity)) !important}.bg-bordeaux-red{--bs-bg-opacity: 1;background-color:rgba(var(--bs-bordeaux-red-rgb), var(--bs-bg-opacity)) !important}.bg-brown{--bs-bg-opacity: 1;background-color:rgba(var(--bs-brown-rgb), var(--bs-bg-opacity)) !important}.bg-cream{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cream-rgb), var(--bs-bg-opacity)) !important}.bg-orange{--bs-bg-opacity: 1;background-color:rgba(var(--bs-orange-rgb), var(--bs-bg-opacity)) !important}.bg-yellow{--bs-bg-opacity: 1;background-color:rgba(var(--bs-yellow-rgb), var(--bs-bg-opacity)) !important}.bg-green{--bs-bg-opacity: 1;background-color:rgba(var(--bs-green-rgb), var(--bs-bg-opacity)) !important}.bg-teal{--bs-bg-opacity: 1;background-color:rgba(var(--bs-teal-rgb), var(--bs-bg-opacity)) !important}.bg-cyan{--bs-bg-opacity: 1;background-color:rgba(var(--bs-cyan-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-gray{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-rgb), var(--bs-bg-opacity)) !important}.bg-gray-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-gray-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}.cursor-auto{cursor:auto !important}.cursor-pointer{cursor:pointer !important}.cursor-grab{cursor:grab !important}.cursor-copy{cursor:copy !important}.cursor-default{cursor:default !important}.cursor-help{cursor:help !important}.cursor-text{cursor:text !important}.cursor-none{cursor:none !important}.cursor-not-allowed{cursor:not-allowed !important}.cursor-progress{cursor:progress !important}.cursor-wait{cursor:wait !important}.cursor-zoom-in{cursor:zoom-in !important}.cursor-zoom-out{cursor:zoom-out !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}.cursor-sm-auto{cursor:auto !important}.cursor-sm-pointer{cursor:pointer !important}.cursor-sm-grab{cursor:grab !important}.cursor-sm-copy{cursor:copy !important}.cursor-sm-default{cursor:default !important}.cursor-sm-help{cursor:help !important}.cursor-sm-text{cursor:text !important}.cursor-sm-none{cursor:none !important}.cursor-sm-not-allowed{cursor:not-allowed !important}.cursor-sm-progress{cursor:progress !important}.cursor-sm-wait{cursor:wait !important}.cursor-sm-zoom-in{cursor:zoom-in !important}.cursor-sm-zoom-out{cursor:zoom-out !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}.cursor-md-auto{cursor:auto !important}.cursor-md-pointer{cursor:pointer !important}.cursor-md-grab{cursor:grab !important}.cursor-md-copy{cursor:copy !important}.cursor-md-default{cursor:default !important}.cursor-md-help{cursor:help !important}.cursor-md-text{cursor:text !important}.cursor-md-none{cursor:none !important}.cursor-md-not-allowed{cursor:not-allowed !important}.cursor-md-progress{cursor:progress !important}.cursor-md-wait{cursor:wait !important}.cursor-md-zoom-in{cursor:zoom-in !important}.cursor-md-zoom-out{cursor:zoom-out !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}.cursor-lg-auto{cursor:auto !important}.cursor-lg-pointer{cursor:pointer !important}.cursor-lg-grab{cursor:grab !important}.cursor-lg-copy{cursor:copy !important}.cursor-lg-default{cursor:default !important}.cursor-lg-help{cursor:help !important}.cursor-lg-text{cursor:text !important}.cursor-lg-none{cursor:none !important}.cursor-lg-not-allowed{cursor:not-allowed !important}.cursor-lg-progress{cursor:progress !important}.cursor-lg-wait{cursor:wait !important}.cursor-lg-zoom-in{cursor:zoom-in !important}.cursor-lg-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}.cursor-xl-auto{cursor:auto !important}.cursor-xl-pointer{cursor:pointer !important}.cursor-xl-grab{cursor:grab !important}.cursor-xl-copy{cursor:copy !important}.cursor-xl-default{cursor:default !important}.cursor-xl-help{cursor:help !important}.cursor-xl-text{cursor:text !important}.cursor-xl-none{cursor:none !important}.cursor-xl-not-allowed{cursor:not-allowed !important}.cursor-xl-progress{cursor:progress !important}.cursor-xl-wait{cursor:wait !important}.cursor-xl-zoom-in{cursor:zoom-in !important}.cursor-xl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}.cursor-xxl-auto{cursor:auto !important}.cursor-xxl-pointer{cursor:pointer !important}.cursor-xxl-grab{cursor:grab !important}.cursor-xxl-copy{cursor:copy !important}.cursor-xxl-default{cursor:default !important}.cursor-xxl-help{cursor:help !important}.cursor-xxl-text{cursor:text !important}.cursor-xxl-none{cursor:none !important}.cursor-xxl-not-allowed{cursor:not-allowed !important}.cursor-xxl-progress{cursor:progress !important}.cursor-xxl-wait{cursor:wait !important}.cursor-xxl-zoom-in{cursor:zoom-in !important}.cursor-xxl-zoom-out{cursor:zoom-out !important}}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.7rem !important}.fs-3{font-size:1.4rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root,[data-bs-theme=light]{--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-gray-100: #efefef;--bs-gray-200: #e9e9e9;--bs-gray-300: #dedede;--bs-gray-400: #cecece;--bs-gray-500: #adadad;--bs-gray-600: #6c6c6c;--bs-gray-700: #494949;--bs-gray-800: #343434;--bs-gray-900: #212121;--bs-primary: #ffcd00;--bs-secondary: #000;--bs-success: #2db83d;--bs-info: #0dcaf0;--bs-warning: #f3965e;--bs-danger: #c00a35;--bs-error: #c00a35;--bs-light: #efefef;--bs-dark: #262626;--bs-blue: #5287c6;--bs-dark-blue: #001240;--bs-indigo: #6610f2;--bs-purple: #5b2182;--bs-pink: #d63384;--bs-red: #c00a35;--bs-bordeaux-red: #aa1555;--bs-brown: #6e3b23;--bs-cream: #ffe6ab;--bs-orange: #f3965e;--bs-yellow: #ffcd00;--bs-green: #2db83d;--bs-teal: #24a793;--bs-cyan: #0dcaf0;--bs-white: #fff;--bs-gray: #6c6c6c;--bs-gray-dark: #343434;--bs-primary-rgb: 255, 205, 0;--bs-secondary-rgb: 0, 0, 0;--bs-success-rgb: 45, 184, 61;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 243, 150, 94;--bs-danger-rgb: 192, 10, 53;--bs-error-rgb: 192, 10, 53;--bs-light-rgb: 239, 239, 239;--bs-dark-rgb: 38, 38, 38;--bs-blue-rgb: 82, 135, 198;--bs-dark-blue-rgb: 0, 18, 64;--bs-indigo-rgb: 102, 16, 242;--bs-purple-rgb: 91, 33, 130;--bs-pink-rgb: 214, 51, 132;--bs-red-rgb: 192, 10, 53;--bs-bordeaux-red-rgb: 170, 21, 85;--bs-brown-rgb: 110, 59, 35;--bs-cream-rgb: 255, 230, 171;--bs-orange-rgb: 243, 150, 94;--bs-yellow-rgb: 255, 205, 0;--bs-green-rgb: 45, 184, 61;--bs-teal-rgb: 36, 167, 147;--bs-cyan-rgb: 13, 202, 240;--bs-white-rgb: 255, 255, 255;--bs-gray-rgb: 108, 108, 108;--bs-gray-dark-rgb: 52, 52, 52;--bs-primary-text-emphasis: #665200;--bs-secondary-text-emphasis: black;--bs-success-text-emphasis: #124a18;--bs-info-text-emphasis: #055160;--bs-warning-text-emphasis: #613c26;--bs-danger-text-emphasis: #4d0415;--bs-light-text-emphasis: #494949;--bs-dark-text-emphasis: #494949;--bs-primary-bg-subtle: #fff5cc;--bs-secondary-bg-subtle: #cccccc;--bs-success-bg-subtle: #d5f1d8;--bs-info-bg-subtle: #cff4fc;--bs-warning-bg-subtle: #fdeadf;--bs-danger-bg-subtle: #f2ced7;--bs-light-bg-subtle: #f7f7f7;--bs-dark-bg-subtle: #cecece;--bs-primary-border-subtle: #ffe166;--bs-secondary-border-subtle: #666666;--bs-success-border-subtle: #81d48b;--bs-info-border-subtle: #6edff6;--bs-warning-border-subtle: #f8c09e;--bs-danger-border-subtle: #d96c86;--bs-light-border-subtle: #e9e9e9;--bs-dark-border-subtle: #adadad;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Open Sans", "Verdana", -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family: var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.6;--bs-body-color: #212121;--bs-body-color-rgb: 33, 33, 33;--bs-body-bg: #f6f6f6;--bs-body-bg-rgb: 246, 246, 246;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 33, 33, 0.75);--bs-secondary-color-rgb: 33, 33, 33;--bs-secondary-bg: #e9e9e9;--bs-secondary-bg-rgb: 233, 233, 233;--bs-tertiary-color: rgba(33, 33, 33, 0.5);--bs-tertiary-color-rgb: 33, 33, 33;--bs-tertiary-bg: #efefef;--bs-tertiary-bg-rgb: 239, 239, 239;--bs-heading-color: inherit;--bs-link-color: #000;--bs-link-color-rgb: 0, 0, 0;--bs-link-decoration: underline;--bs-link-hover-color: black;--bs-link-hover-color-rgb: 0, 0, 0;--bs-code-color: #000;--bs-highlight-bg: #fff5cc;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dedede;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0;--bs-border-radius-sm: 0;--bs-border-radius-lg: 0;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(255, 205, 0, 0.25);--bs-form-valid-color: #2db83d;--bs-form-valid-border-color: #2db83d;--bs-form-invalid-color: #c00a35;--bs-form-invalid-border-color: #c00a35}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dedede;--bs-body-color-rgb: 222, 222, 222;--bs-body-bg: #262626;--bs-body-bg-rgb: 38, 38, 38;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 222, 222, 0.75);--bs-secondary-color-rgb: 222, 222, 222;--bs-secondary-bg: #343434;--bs-secondary-bg-rgb: 52, 52, 52;--bs-tertiary-color: rgba(222, 222, 222, 0.5);--bs-tertiary-color-rgb: 222, 222, 222;--bs-tertiary-bg: #2b2b2b;--bs-tertiary-bg-rgb: 43, 43, 43;--bs-primary-text-emphasis: #ffe166;--bs-secondary-text-emphasis: #666666;--bs-success-text-emphasis: #81d48b;--bs-info-text-emphasis: #6edff6;--bs-warning-text-emphasis: #f8c09e;--bs-danger-text-emphasis: #d96c86;--bs-light-text-emphasis: #efefef;--bs-dark-text-emphasis: #dedede;--bs-primary-bg-subtle: #806700;--bs-secondary-bg-subtle: black;--bs-success-bg-subtle: #175c1f;--bs-info-bg-subtle: #076578;--bs-warning-bg-subtle: #7a4b2f;--bs-danger-bg-subtle: #60051b;--bs-light-bg-subtle: #343434;--bs-dark-bg-subtle: #1a1a1a;--bs-primary-border-subtle: #997b00;--bs-secondary-border-subtle: black;--bs-success-border-subtle: #1b6e25;--bs-info-border-subtle: #087990;--bs-warning-border-subtle: #925a38;--bs-danger-border-subtle: #730620;--bs-light-border-subtle: #494949;--bs-dark-border-subtle: #343434;--bs-heading-color: inherit;--bs-link-color: #dedede;--bs-link-hover-color: #e5e5e5;--bs-link-color-rgb: 222, 222, 222;--bs-link-hover-color-rgb: 229, 229, 229;--bs-code-color: #fff;--bs-border-color: #494949;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #81d48b;--bs-form-valid-border-color: #81d48b;--bs-form-invalid-color: #d96c86;--bs-form-invalid-border-color: #d96c86}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion: no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.295rem + 0.54vw)}@media(min-width: 1200px){h2,.h2{font-size:1.7rem}}h3,.h3{font-size:calc(1.265rem + 0.18vw)}@media(min-width: 1200px){h3,.h3{font-size:1.4rem}}h4,.h4{font-size:1.2rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1.5rem}abbr[title]{text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.85em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.85em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:.1875rem .375rem;font-size:0.85em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:0}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c6c6c}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:var(--bs-body-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:var(--bs-secondary-color)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 0;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.row{--bs-gutter-x: 0;--bs-gutter-y: 0;display:flex;flex-wrap:wrap;margin-top:calc(-1*var(--bs-gutter-y));margin-right:calc(-0.5*var(--bs-gutter-x));margin-left:calc(-0.5*var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x: 0}.g-0,.gy-0{--bs-gutter-y: 0}.g-1,.gx-1{--bs-gutter-x: 0.25rem}.g-1,.gy-1{--bs-gutter-y: 0.25rem}.g-2,.gx-2{--bs-gutter-x: 0.5rem}.g-2,.gy-2{--bs-gutter-y: 0.5rem}.g-3,.gx-3{--bs-gutter-x: 1rem}.g-3,.gy-3{--bs-gutter-y: 1rem}.g-4,.gx-4{--bs-gutter-x: 1.5rem}.g-4,.gy-4{--bs-gutter-y: 1.5rem}.g-5,.gx-5{--bs-gutter-x: 3rem}.g-5,.gy-5{--bs-gutter-y: 3rem}@media(min-width: 576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x: 0}.g-sm-0,.gy-sm-0{--bs-gutter-y: 0}.g-sm-1,.gx-sm-1{--bs-gutter-x: 0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y: 0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x: 0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y: 0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x: 1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y: 1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x: 1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y: 1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x: 3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y: 3rem}}@media(min-width: 768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x: 0}.g-md-0,.gy-md-0{--bs-gutter-y: 0}.g-md-1,.gx-md-1{--bs-gutter-x: 0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y: 0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x: 0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y: 0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x: 1rem}.g-md-3,.gy-md-3{--bs-gutter-y: 1rem}.g-md-4,.gx-md-4{--bs-gutter-x: 1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y: 1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x: 3rem}.g-md-5,.gy-md-5{--bs-gutter-y: 3rem}}@media(min-width: 992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x: 0}.g-lg-0,.gy-lg-0{--bs-gutter-y: 0}.g-lg-1,.gx-lg-1{--bs-gutter-x: 0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y: 0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x: 0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y: 0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x: 1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y: 1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x: 1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y: 1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x: 3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y: 3rem}}@media(min-width: 1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x: 0}.g-xl-0,.gy-xl-0{--bs-gutter-y: 0}.g-xl-1,.gx-xl-1{--bs-gutter-x: 0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y: 0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x: 0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y: 0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x: 1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y: 1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x: 1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y: 1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x: 3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y: 3rem}}@media(min-width: 1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x: 0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y: 0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x: 0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y: 0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x: 0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y: 0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x: 1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y: 1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x: 1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y: 1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x: 3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y: 3rem}}.table,.dt,.datatables{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: var(--bs-body-color);--bs-table-bg: var(--bs-body-bg);--bs-table-border-color: var(--bs-border-color);--bs-table-accent-bg: transparent;--bs-table-striped-color: var(--bs-body-color);--bs-table-striped-bg: rgba(0, 0, 0, 0.01);--bs-table-active-color: var(--bs-body-color);--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: var(--bs-body-color);--bs-table-hover-bg: rgba(0, 0, 0, 0.05);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*,.dt>:not(caption)>*>*,.datatables>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:var(--bs-border-width);box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody,.dt>tbody,.datatables>tbody{vertical-align:inherit}.table>thead,.dt>thead,.datatables>thead{vertical-align:bottom}.table-group-divider{border-top:calc(var(--bs-border-width) * 2) solid currentcolor}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:var(--bs-border-width) 0}.table-bordered>:not(caption)>*>*{border-width:0 var(--bs-border-width)}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #fff5cc;--bs-table-border-color: #e6ddb8;--bs-table-striped-bg: #fcf3ca;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ddb8;--bs-table-active-color: #000;--bs-table-hover-bg: #f2e9c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #cccccc;--bs-table-border-color: #b8b8b8;--bs-table-striped-bg: #cacaca;--bs-table-striped-color: #000;--bs-table-active-bg: #b8b8b8;--bs-table-active-color: #000;--bs-table-hover-bg: #c2c2c2;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d5f1d8;--bs-table-border-color: #c0d9c2;--bs-table-striped-bg: #d3efd6;--bs-table-striped-color: #000;--bs-table-active-bg: #c0d9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #cae5cd;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #cff4fc;--bs-table-border-color: #badce3;--bs-table-striped-bg: #cdf2f9;--bs-table-striped-color: #000;--bs-table-active-bg: #badce3;--bs-table-active-color: #000;--bs-table-hover-bg: #c5e8ef;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #fdeadf;--bs-table-border-color: #e4d3c9;--bs-table-striped-bg: #fae8dd;--bs-table-striped-color: #000;--bs-table-active-bg: #e4d3c9;--bs-table-active-color: #000;--bs-table-hover-bg: #f0ded4;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #f2ced7;--bs-table-border-color: #dab9c2;--bs-table-striped-bg: #f0ccd5;--bs-table-striped-color: #000;--bs-table-active-bg: #dab9c2;--bs-table-active-color: #000;--bs-table-hover-bg: #e6c4cc;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #efefef;--bs-table-border-color: #d7d7d7;--bs-table-striped-bg: #ededed;--bs-table-striped-color: #000;--bs-table-active-bg: #d7d7d7;--bs-table-active-color: #000;--bs-table-hover-bg: #e3e3e3;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #262626;--bs-table-border-color: #3c3c3c;--bs-table-striped-bg: #282828;--bs-table-striped-color: #fff;--bs-table-active-bg: #3c3c3c;--bs-table-active-color: #fff;--bs-table-hover-bg: #313131;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label{margin-bottom:.5rem;font-weight:500;color:#262626}.col-form-label{padding-top:calc(0.375rem + var(--bs-border-width));padding-bottom:calc(0.375rem + var(--bs-border-width));margin-bottom:0;font-size:inherit;font-weight:500;line-height:1.6;color:#262626}.col-form-label-lg{padding-top:calc(0.5rem + var(--bs-border-width));padding-bottom:calc(0.5rem + var(--bs-border-width));font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + var(--bs-border-width));padding-bottom:calc(0.25rem + var(--bs-border-width));font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:var(--bs-secondary-color)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-clip:padding-box;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:var(--bs-body-color);background-color:#fff;border-color:#000;outline:0;box-shadow:none}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.6em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:background .1s linear,color .1s linear,border-color .1s linear}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.6;color:var(--bs-body-color);background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:var(--bs-border-width) 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2))}textarea.form-control-sm{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}textarea.form-control-lg{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-control-color{width:3rem;height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:var(--bs-border-radius)}.form-control-color.form-control-sm{height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2))}.form-control-color.form-control-lg{height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343434' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:var(--bs-border-width) solid var(--bs-border-color);border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#000;outline:0;box-shadow:none}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:var(--bs-secondary-bg)}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 var(--bs-body-color)}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:0 !important}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:0 !important}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dedede' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check{display:block;min-height:1.6rem;padding-left:1.5em;margin-bottom:.125rem}.form-check .form-check-input{float:left;margin-left:-1.5em}.form-check-reverse{padding-right:1.5em;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:-1.5em;margin-left:0}.form-check-input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.3em;vertical-align:top;appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:var(--bs-border-width) solid var(--bs-border-color);print-color-adjust:exact}.form-check-input[type=checkbox]{border-radius:.25em}.form-check-input[type=radio]{border-radius:50%}.form-check-input:active{filter:brightness(90%)}.form-check-input:focus{border-color:#000;outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.form-check-input:checked{background-color:#5287c6;border-color:#5287c6}.form-check-input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate{background-color:#ffcd00;border-color:#ffcd00;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input:disabled~.form-check-label{cursor:default;opacity:.5}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;border-radius:2em;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23000'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1rem;padding:0;appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #f6f6f6,none}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #f6f6f6,none}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#fff0b3}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;background-color:#ffcd00;border:0;border-radius:1rem;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#fff0b3}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:var(--bs-tertiary-bg);border-color:rgba(0,0,0,0);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:var(--bs-secondary-color)}.form-range:disabled::-moz-range-thumb{background-color:var(--bs-secondary-color)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(var(--bs-border-width) * 2));min-height:calc(3.5rem + calc(var(--bs-border-width) * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:var(--bs-border-width) solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff;border-radius:var(--bs-border-radius)}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:var(--bs-border-width) 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c6c6c}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:var(--bs-secondary-bg)}.input-group{position:relative;display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);text-align:center;white-space:nowrap;background-color:var(--bs-tertiary-bg);border:var(--bs-border-width) solid var(--bs-border-color);border-radius:var(--bs-border-radius)}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem;border-radius:var(--bs-border-radius-lg)}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem;border-radius:var(--bs-border-radius-sm)}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(var(--bs-border-width) * -1);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-valid-color)}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-success);border-radius:var(--bs-border-radius)}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:var(--bs-form-valid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%232db83d' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:var(--bs-form-valid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:var(--bs-form-valid-border-color)}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:var(--bs-form-valid-color)}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 0 rgba(var(--bs-success-rgb), 0.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:var(--bs-form-valid-color)}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:var(--bs-form-invalid-color)}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:var(--bs-danger);border-radius:var(--bs-border-radius)}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:var(--bs-form-invalid-border-color);padding-right:calc(1.6em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.4em + 0.1875rem) center;background-size:calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.6em + 0.75rem);background-position:top calc(0.4em + 0.1875rem) right calc(0.4em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23c00a35'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23c00a35' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.8em + 0.375rem) calc(0.8em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:var(--bs-form-invalid-border-color);box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.6em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:var(--bs-form-invalid-border-color)}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:var(--bs-form-invalid-color)}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 0 rgba(var(--bs-danger-rgb), 0.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:var(--bs-form-invalid-color)}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 1rem;--bs-btn-padding-y: 0.5rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.6;--bs-btn-color: var(--bs-body-color);--bs-btn-bg: transparent;--bs-btn-border-width: var(--bs-border-width);--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: none;--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0 rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:background .1s linear,color .1s linear,border-color .1s linear}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-outline-primary{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-error{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-outline-blue{--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-outline-dark-blue{--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-outline-indigo{--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-outline-purple{--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-outline-pink{--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-outline-red{--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-outline-bordeaux-red{--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-outline-brown{--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-outline-cream{--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-outline-orange{--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-outline-yellow{--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-outline-green{--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-outline-teal{--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-outline-cyan{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-outline-white{--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-outline-gray{--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-outline-gray-dark{--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: var(--bs-link-color);--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: var(--bs-link-hover-color);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: var(--bs-link-hover-color);--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 38, 38, 38;text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.25rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.25rem}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: var(--bs-body-color);--bs-dropdown-bg: var(--bs-body-bg);--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-border-radius: var(--bs-border-radius);--bs-dropdown-border-width: var(--bs-border-width);--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: var(--bs-body-color);--bs-dropdown-link-hover-color: var(--bs-body-color);--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: var(--bs-tertiary-color);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c6c6c;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0;border-radius:var(--bs-dropdown-item-border-radius, 0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dedede;--bs-dropdown-bg: #343434;--bs-dropdown-border-color: var(--bs-border-color-translucent);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dedede;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #ffcd00;--bs-dropdown-link-disabled-color: #adadad;--bs-dropdown-header-color: #adadad}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;flex-wrap:wrap;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group{border-radius:.25rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(var(--bs-border-width) * -1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;align-items:flex-start;justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(var(--bs-border-width) * -1)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:background .1s linear,color .1s linear,border-color .1s linear}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(255,205,0,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: #cecece;--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) #cecece;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #cecece #cecece #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #000;--bs-nav-pills-link-active-bg: #ffcd00}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0;--bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y: 0.5rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1rem;--bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25rem;--bs-navbar-toggler-padding-x: 0.75rem;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 33, 33, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: rgba(255, 255, 255, 0.55);--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);--bs-navbar-active-color: #fff;--bs-navbar-brand-color: #fff;--bs-navbar-brand-hover-color: #fff;--bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: var(--bs-border-width);--bs-card-border-color: var(--bs-border-color-translucent);--bs-card-border-radius: var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: var(--bs-body-bg);--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;flex-flow:row wrap}.card-group>.card{flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: var(--bs-body-color);--bs-accordion-bg: var(--bs-body-bg);--bs-accordion-transition: background 0.1s linear, color 0.1s linear, border-color 0.1s linear, border-radius 0.15s ease;--bs-accordion-border-color: var(--bs-border-color);--bs-accordion-border-width: 0;--bs-accordion-border-radius: var(--bs-border-radius);--bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - 0);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #000;--bs-accordion-btn-bg: #ffcd00;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212121'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23665200'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #000;--bs-accordion-btn-focus-box-shadow: none;--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #000;--bs-accordion-active-bg: #ffcd00}.accordion-button{position:relative;display:flex;align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;border-radius:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffe166'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23ffe166'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: var(--bs-secondary-color);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg);border-radius:var(--bs-breadcrumb-border-radius)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #000;--bs-pagination-bg: #dedede;--bs-pagination-border-width: 0;--bs-pagination-border-color: var(--bs-border-color);--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #000;--bs-pagination-hover-bg: #ffcd00;--bs-pagination-hover-border-color: var(--bs-border-color);--bs-pagination-focus-color: #000;--bs-pagination-focus-bg: #ffcd00;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-pagination-active-color: #000;--bs-pagination-active-bg: #ffcd00;--bs-pagination-active-border-color: #ffcd00;--bs-pagination-disabled-color: #adadad;--bs-pagination-disabled-bg: #efefef;--bs-pagination-disabled-border-color: var(--bs-border-color);display:flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(0 * -1)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: var(--bs-border-radius-lg)}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: var(--bs-border-radius-sm)}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: var(--bs-border-radius);display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:var(--bs-badge-border-radius)}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 0.5rem;--bs-alert-margin-bottom: 0.5rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: var(--bs-border-radius);--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border);border-radius:var(--bs-alert-border-radius)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.625rem 1rem}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-error{--bs-alert-color: var(--bs-error-text-emphasis);--bs-alert-bg: var(--bs-error-bg-subtle);--bs-alert-border-color: var(--bs-error-border-subtle);--bs-alert-link-color: var(--bs-error-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}.alert-blue{--bs-alert-color: var(--bs-blue-text-emphasis);--bs-alert-bg: var(--bs-blue-bg-subtle);--bs-alert-border-color: var(--bs-blue-border-subtle);--bs-alert-link-color: var(--bs-blue-text-emphasis)}.alert-dark-blue{--bs-alert-color: var(--bs-dark-blue-text-emphasis);--bs-alert-bg: var(--bs-dark-blue-bg-subtle);--bs-alert-border-color: var(--bs-dark-blue-border-subtle);--bs-alert-link-color: var(--bs-dark-blue-text-emphasis)}.alert-indigo{--bs-alert-color: var(--bs-indigo-text-emphasis);--bs-alert-bg: var(--bs-indigo-bg-subtle);--bs-alert-border-color: var(--bs-indigo-border-subtle);--bs-alert-link-color: var(--bs-indigo-text-emphasis)}.alert-purple{--bs-alert-color: var(--bs-purple-text-emphasis);--bs-alert-bg: var(--bs-purple-bg-subtle);--bs-alert-border-color: var(--bs-purple-border-subtle);--bs-alert-link-color: var(--bs-purple-text-emphasis)}.alert-pink{--bs-alert-color: var(--bs-pink-text-emphasis);--bs-alert-bg: var(--bs-pink-bg-subtle);--bs-alert-border-color: var(--bs-pink-border-subtle);--bs-alert-link-color: var(--bs-pink-text-emphasis)}.alert-red{--bs-alert-color: var(--bs-red-text-emphasis);--bs-alert-bg: var(--bs-red-bg-subtle);--bs-alert-border-color: var(--bs-red-border-subtle);--bs-alert-link-color: var(--bs-red-text-emphasis)}.alert-bordeaux-red{--bs-alert-color: var(--bs-bordeaux-red-text-emphasis);--bs-alert-bg: var(--bs-bordeaux-red-bg-subtle);--bs-alert-border-color: var(--bs-bordeaux-red-border-subtle);--bs-alert-link-color: var(--bs-bordeaux-red-text-emphasis)}.alert-brown{--bs-alert-color: var(--bs-brown-text-emphasis);--bs-alert-bg: var(--bs-brown-bg-subtle);--bs-alert-border-color: var(--bs-brown-border-subtle);--bs-alert-link-color: var(--bs-brown-text-emphasis)}.alert-cream{--bs-alert-color: var(--bs-cream-text-emphasis);--bs-alert-bg: var(--bs-cream-bg-subtle);--bs-alert-border-color: var(--bs-cream-border-subtle);--bs-alert-link-color: var(--bs-cream-text-emphasis)}.alert-orange{--bs-alert-color: var(--bs-orange-text-emphasis);--bs-alert-bg: var(--bs-orange-bg-subtle);--bs-alert-border-color: var(--bs-orange-border-subtle);--bs-alert-link-color: var(--bs-orange-text-emphasis)}.alert-yellow{--bs-alert-color: var(--bs-yellow-text-emphasis);--bs-alert-bg: var(--bs-yellow-bg-subtle);--bs-alert-border-color: var(--bs-yellow-border-subtle);--bs-alert-link-color: var(--bs-yellow-text-emphasis)}.alert-green{--bs-alert-color: var(--bs-green-text-emphasis);--bs-alert-bg: var(--bs-green-bg-subtle);--bs-alert-border-color: var(--bs-green-border-subtle);--bs-alert-link-color: var(--bs-green-text-emphasis)}.alert-teal{--bs-alert-color: var(--bs-teal-text-emphasis);--bs-alert-bg: var(--bs-teal-bg-subtle);--bs-alert-border-color: var(--bs-teal-border-subtle);--bs-alert-link-color: var(--bs-teal-text-emphasis)}.alert-cyan{--bs-alert-color: var(--bs-cyan-text-emphasis);--bs-alert-bg: var(--bs-cyan-bg-subtle);--bs-alert-border-color: var(--bs-cyan-border-subtle);--bs-alert-link-color: var(--bs-cyan-text-emphasis)}.alert-white{--bs-alert-color: var(--bs-white-text-emphasis);--bs-alert-bg: var(--bs-white-bg-subtle);--bs-alert-border-color: var(--bs-white-border-subtle);--bs-alert-link-color: var(--bs-white-text-emphasis)}.alert-gray{--bs-alert-color: var(--bs-gray-text-emphasis);--bs-alert-bg: var(--bs-gray-bg-subtle);--bs-alert-border-color: var(--bs-gray-border-subtle);--bs-alert-link-color: var(--bs-gray-text-emphasis)}.alert-gray-dark{--bs-alert-color: var(--bs-gray-dark-text-emphasis);--bs-alert-bg: var(--bs-gray-dark-bg-subtle);--bs-alert-border-color: var(--bs-gray-dark-border-subtle);--bs-alert-link-color: var(--bs-gray-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: var(--bs-secondary-bg);--bs-progress-border-radius: var(--bs-border-radius);--bs-progress-box-shadow: var(--bs-box-shadow-inset);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #ffcd00;--bs-progress-bar-transition: width 0.6s ease;display:flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg);border-radius:var(--bs-progress-border-radius)}.progress-bar{display:flex;flex-direction:column;justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: var(--bs-body-color);--bs-list-group-bg: var(--bs-body-bg);--bs-list-group-border-color: var(--bs-border-color);--bs-list-group-border-width: var(--bs-border-width);--bs-list-group-border-radius: var(--bs-border-radius);--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: var(--bs-secondary-color);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-tertiary-bg);--bs-list-group-action-active-color: var(--bs-body-color);--bs-list-group-action-active-bg: var(--bs-secondary-bg);--bs-list-group-disabled-color: var(--bs-secondary-color);--bs-list-group-disabled-bg: var(--bs-body-bg);--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #ffcd00;--bs-list-group-active-border-color: #ffcd00;display:flex;flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row}.list-group-horizontal>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row}.list-group-horizontal-sm>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row}.list-group-horizontal-md>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row}.list-group-horizontal-lg>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row}.list-group-horizontal-xl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row}.list-group-horizontal-xxl>.list-group-item:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush{border-radius:0}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-error{--bs-list-group-color: var(--bs-error-text-emphasis);--bs-list-group-bg: var(--bs-error-bg-subtle);--bs-list-group-border-color: var(--bs-error-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-error-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-error-border-subtle);--bs-list-group-active-color: var(--bs-error-bg-subtle);--bs-list-group-active-bg: var(--bs-error-text-emphasis);--bs-list-group-active-border-color: var(--bs-error-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.list-group-item-blue{--bs-list-group-color: var(--bs-blue-text-emphasis);--bs-list-group-bg: var(--bs-blue-bg-subtle);--bs-list-group-border-color: var(--bs-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-blue-border-subtle);--bs-list-group-active-color: var(--bs-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-blue-text-emphasis)}.list-group-item-dark-blue{--bs-list-group-color: var(--bs-dark-blue-text-emphasis);--bs-list-group-bg: var(--bs-dark-blue-bg-subtle);--bs-list-group-border-color: var(--bs-dark-blue-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-blue-border-subtle);--bs-list-group-active-color: var(--bs-dark-blue-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-blue-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-blue-text-emphasis)}.list-group-item-indigo{--bs-list-group-color: var(--bs-indigo-text-emphasis);--bs-list-group-bg: var(--bs-indigo-bg-subtle);--bs-list-group-border-color: var(--bs-indigo-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-indigo-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-indigo-border-subtle);--bs-list-group-active-color: var(--bs-indigo-bg-subtle);--bs-list-group-active-bg: var(--bs-indigo-text-emphasis);--bs-list-group-active-border-color: var(--bs-indigo-text-emphasis)}.list-group-item-purple{--bs-list-group-color: var(--bs-purple-text-emphasis);--bs-list-group-bg: var(--bs-purple-bg-subtle);--bs-list-group-border-color: var(--bs-purple-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-purple-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-purple-border-subtle);--bs-list-group-active-color: var(--bs-purple-bg-subtle);--bs-list-group-active-bg: var(--bs-purple-text-emphasis);--bs-list-group-active-border-color: var(--bs-purple-text-emphasis)}.list-group-item-pink{--bs-list-group-color: var(--bs-pink-text-emphasis);--bs-list-group-bg: var(--bs-pink-bg-subtle);--bs-list-group-border-color: var(--bs-pink-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-pink-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-pink-border-subtle);--bs-list-group-active-color: var(--bs-pink-bg-subtle);--bs-list-group-active-bg: var(--bs-pink-text-emphasis);--bs-list-group-active-border-color: var(--bs-pink-text-emphasis)}.list-group-item-red{--bs-list-group-color: var(--bs-red-text-emphasis);--bs-list-group-bg: var(--bs-red-bg-subtle);--bs-list-group-border-color: var(--bs-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-red-border-subtle);--bs-list-group-active-color: var(--bs-red-bg-subtle);--bs-list-group-active-bg: var(--bs-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-red-text-emphasis)}.list-group-item-bordeaux-red{--bs-list-group-color: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-bg: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-border-color: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-bordeaux-red-border-subtle);--bs-list-group-active-color: var(--bs-bordeaux-red-bg-subtle);--bs-list-group-active-bg: var(--bs-bordeaux-red-text-emphasis);--bs-list-group-active-border-color: var(--bs-bordeaux-red-text-emphasis)}.list-group-item-brown{--bs-list-group-color: var(--bs-brown-text-emphasis);--bs-list-group-bg: var(--bs-brown-bg-subtle);--bs-list-group-border-color: var(--bs-brown-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-brown-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-brown-border-subtle);--bs-list-group-active-color: var(--bs-brown-bg-subtle);--bs-list-group-active-bg: var(--bs-brown-text-emphasis);--bs-list-group-active-border-color: var(--bs-brown-text-emphasis)}.list-group-item-cream{--bs-list-group-color: var(--bs-cream-text-emphasis);--bs-list-group-bg: var(--bs-cream-bg-subtle);--bs-list-group-border-color: var(--bs-cream-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cream-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cream-border-subtle);--bs-list-group-active-color: var(--bs-cream-bg-subtle);--bs-list-group-active-bg: var(--bs-cream-text-emphasis);--bs-list-group-active-border-color: var(--bs-cream-text-emphasis)}.list-group-item-orange{--bs-list-group-color: var(--bs-orange-text-emphasis);--bs-list-group-bg: var(--bs-orange-bg-subtle);--bs-list-group-border-color: var(--bs-orange-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-orange-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-orange-border-subtle);--bs-list-group-active-color: var(--bs-orange-bg-subtle);--bs-list-group-active-bg: var(--bs-orange-text-emphasis);--bs-list-group-active-border-color: var(--bs-orange-text-emphasis)}.list-group-item-yellow{--bs-list-group-color: var(--bs-yellow-text-emphasis);--bs-list-group-bg: var(--bs-yellow-bg-subtle);--bs-list-group-border-color: var(--bs-yellow-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-yellow-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-yellow-border-subtle);--bs-list-group-active-color: var(--bs-yellow-bg-subtle);--bs-list-group-active-bg: var(--bs-yellow-text-emphasis);--bs-list-group-active-border-color: var(--bs-yellow-text-emphasis)}.list-group-item-green{--bs-list-group-color: var(--bs-green-text-emphasis);--bs-list-group-bg: var(--bs-green-bg-subtle);--bs-list-group-border-color: var(--bs-green-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-green-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-green-border-subtle);--bs-list-group-active-color: var(--bs-green-bg-subtle);--bs-list-group-active-bg: var(--bs-green-text-emphasis);--bs-list-group-active-border-color: var(--bs-green-text-emphasis)}.list-group-item-teal{--bs-list-group-color: var(--bs-teal-text-emphasis);--bs-list-group-bg: var(--bs-teal-bg-subtle);--bs-list-group-border-color: var(--bs-teal-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-teal-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-teal-border-subtle);--bs-list-group-active-color: var(--bs-teal-bg-subtle);--bs-list-group-active-bg: var(--bs-teal-text-emphasis);--bs-list-group-active-border-color: var(--bs-teal-text-emphasis)}.list-group-item-cyan{--bs-list-group-color: var(--bs-cyan-text-emphasis);--bs-list-group-bg: var(--bs-cyan-bg-subtle);--bs-list-group-border-color: var(--bs-cyan-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-cyan-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-cyan-border-subtle);--bs-list-group-active-color: var(--bs-cyan-bg-subtle);--bs-list-group-active-bg: var(--bs-cyan-text-emphasis);--bs-list-group-active-border-color: var(--bs-cyan-text-emphasis)}.list-group-item-white{--bs-list-group-color: var(--bs-white-text-emphasis);--bs-list-group-bg: var(--bs-white-bg-subtle);--bs-list-group-border-color: var(--bs-white-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-white-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-white-border-subtle);--bs-list-group-active-color: var(--bs-white-bg-subtle);--bs-list-group-active-bg: var(--bs-white-text-emphasis);--bs-list-group-active-border-color: var(--bs-white-text-emphasis)}.list-group-item-gray{--bs-list-group-color: var(--bs-gray-text-emphasis);--bs-list-group-bg: var(--bs-gray-bg-subtle);--bs-list-group-border-color: var(--bs-gray-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-border-subtle);--bs-list-group-active-color: var(--bs-gray-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-text-emphasis)}.list-group-item-gray-dark{--bs-list-group-color: var(--bs-gray-dark-text-emphasis);--bs-list-group-bg: var(--bs-gray-dark-bg-subtle);--bs-list-group-border-color: var(--bs-gray-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-gray-dark-border-subtle);--bs-list-group-active-color: var(--bs-gray-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-gray-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-gray-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(255, 205, 0, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;border-radius:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 0;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-border-width: var(--bs-border-width);--bs-toast-border-color: var(--bs-border-color-translucent);--bs-toast-border-radius: var(--bs-border-radius);--bs-toast-box-shadow: var(--bs-box-shadow);--bs-toast-header-color: var(--bs-secondary-color);--bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85);--bs-toast-header-border-color: var(--bs-border-color-translucent);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow);border-radius:var(--bs-toast-border-radius)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 9002;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: #212121;--bs-modal-bg: #fff;--bs-modal-border-color: var(--bs-border-color-translucent);--bs-modal-border-width: var(--bs-border-width);--bs-modal-border-radius: 0;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: 0;--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: var(--bs-border-color);--bs-modal-header-border-width: 0;--bs-modal-title-line-height: 1.6;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: var(--bs-border-color);--bs-modal-footer-border-width: 0.0625rem;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);border-radius:var(--bs-modal-border-radius);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;flex-shrink:0;align-items:center;justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: var(--bs-body-bg);--bs-tooltip-bg: var(--bs-emphasis-color);--bs-tooltip-border-radius: var(--bs-border-radius);--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: var(--bs-body-bg);--bs-popover-border-width: var(--bs-border-width);--bs-popover-border-color: var(--bs-border-color-translucent);--bs-popover-border-radius: var(--bs-border-radius-lg);--bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width));--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: var(--bs-secondary-bg);--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: var(--bs-body-color);--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.6;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-radius:var(--bs-popover-border-radius)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;align-items:center;justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: var(--bs-body-color);--bs-offcanvas-bg: var(--bs-body-bg);--bs-offcanvas-border-width: var(--bs-border-width);--bs-offcanvas-border-color: var(--bs-border-color-translucent);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.6}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;align-items:center;justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%}}.accordion-item{margin-bottom:1rem}.alert-primary{--bs-alert-color: #000}.alert-secondary{--bs-alert-color: #000}.alert-success{--bs-alert-color: #000}.alert-info{--bs-alert-color: #000}.alert-warning{--bs-alert-color: #000}.alert-danger{--bs-alert-color: #000}.alert-light{--bs-alert-color: #000}.alert-dark{--bs-alert-color: #000}[data-bs-theme=dark] .alert-primary{--bs-alert-color: #fff}[data-bs-theme=dark] .alert-secondary{--bs-alert-color: #fff}[data-bs-theme=dark] .alert-success{--bs-alert-color: #fff}[data-bs-theme=dark] .alert-info{--bs-alert-color: #fff}[data-bs-theme=dark] .alert-warning{--bs-alert-color: #fff}[data-bs-theme=dark] .alert-danger{--bs-alert-color: #fff}[data-bs-theme=dark] .alert-light{--bs-alert-color: #fff}[data-bs-theme=dark] .alert-dark{--bs-alert-color: #fff}.alert a{color:var(--bs-alert-color)}.alert p:last-child{margin-bottom:0}.text-bg-hover-primary:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-secondary:hover{color:#fff !important;background-color:RGBA(0, 0, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-success:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-info:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-warning:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-danger:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-error:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-light:hover{color:#000 !important;background-color:RGBA(239, 239, 239, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark:hover{color:#fff !important;background-color:RGBA(38, 38, 38, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-blue:hover{color:#fff !important;background-color:RGBA(82, 135, 198, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-dark-blue:hover{color:#fff !important;background-color:RGBA(0, 18, 64, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-indigo:hover{color:#fff !important;background-color:RGBA(102, 16, 242, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-purple:hover{color:#fff !important;background-color:RGBA(91, 33, 130, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-pink:hover{color:#fff !important;background-color:RGBA(214, 51, 132, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-red:hover{color:#fff !important;background-color:RGBA(192, 10, 53, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-bordeaux-red:hover{color:#fff !important;background-color:RGBA(170, 21, 85, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-brown:hover{color:#fff !important;background-color:RGBA(110, 59, 35, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cream:hover{color:#000 !important;background-color:RGBA(255, 230, 171, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-orange:hover{color:#000 !important;background-color:RGBA(243, 150, 94, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-yellow:hover{color:#000 !important;background-color:RGBA(255, 205, 0, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-green:hover{color:#000 !important;background-color:RGBA(45, 184, 61, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-teal:hover{color:#000 !important;background-color:RGBA(36, 167, 147, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-cyan:hover{color:#000 !important;background-color:RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-white:hover{color:#000 !important;background-color:RGBA(255, 255, 255, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray:hover{color:#fff !important;background-color:RGBA(108, 108, 108, var(--bs-bg-opacity, 1)) !important}.text-bg-hover-gray-dark:hover{color:#fff !important;background-color:RGBA(52, 52, 52, var(--bs-bg-opacity, 1)) !important}.btn{font-weight:bold}.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-sm:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-sm>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(0.5rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.25rem + var(--bs-border-width))}.btn.btn-arrow-right.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-right:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn.btn-arrow-left.btn-lg:not([class^=btn-outline]):not([class*=" btn-outline"]),.btn-group-lg>.btn.btn-arrow-left:not([class^=btn-outline]):not([class*=" btn-outline"]){--bs-btn-border-width: 0;--bs-btn-padding-x: calc(1rem + var(--bs-border-width));--bs-btn-padding-y: calc(0.5rem + var(--bs-border-width))}.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{display:inline-block;font-weight:900;border:.0625rem solid rgba(0,0,0,0);transition:background .1s linear,color .1s linear,border-color .1s linear}@media(prefers-reduced-motion: reduce){.btn.btn-arrow-right::after,.btn.btn-arrow-right::before,.btn.btn-arrow-left::after,.btn.btn-arrow-left::before{transition:none}}.btn.btn-arrow-right:hover::after,.btn.btn-arrow-right:hover::before,.btn.btn-arrow-left:hover::after,.btn.btn-arrow-left:hover::before{background:var(--bs-btn-hover-color);color:var(--bs-btn-hover-bg);border-color:#000}.btn.btn-arrow-right::after{content:">";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x));border-top-right-radius:var(--bs-btn-border-radius);border-bottom-right-radius:var(--bs-btn-border-radius)}.btn.btn-arrow-left::before{content:"<";padding:var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x)) var(--bs-btn-padding-y) calc(.8*var(--bs-btn-padding-x));margin:calc(0px - var(--bs-btn-padding-y)) calc(.7*var(--bs-btn-padding-x)) calc(0px - var(--bs-btn-padding-y)) calc(0px - var(--bs-btn-padding-x));border-top-left-radius:var(--bs-btn-border-radius);border-bottom-left-radius:var(--bs-btn-border-radius)}.btn.btn-loading{position:relative;color:rgba(0,0,0,0)}.btn.btn-loading .btn-text{color:rgba(0,0,0,0)}.btn.btn-loading::after{border:.125rem solid #000;border-radius:999999px;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;height:1em;width:1em;position:absolute;left:calc(50% - .5em);top:calc(50% - .5em);animation:spinner-border .5s infinite linear}.btn.btn-loading.btn-primary::after{border-color:#000}.btn.btn-loading.btn-secondary::after{border-color:#fff}.btn.btn-loading.btn-success::after{border-color:#000}.btn.btn-loading.btn-info::after{border-color:#000}.btn.btn-loading.btn-warning::after{border-color:#000}.btn.btn-loading.btn-danger::after{border-color:#fff}.btn.btn-loading.btn-error::after{border-color:#fff}.btn.btn-loading.btn-light::after{border-color:#000}.btn.btn-loading.btn-dark::after{border-color:#fff}.btn.btn-loading.btn-blue::after{border-color:#fff}.btn.btn-loading.btn-dark-blue::after{border-color:#fff}.btn.btn-loading.btn-indigo::after{border-color:#fff}.btn.btn-loading.btn-purple::after{border-color:#fff}.btn.btn-loading.btn-pink::after{border-color:#fff}.btn.btn-loading.btn-red::after{border-color:#fff}.btn.btn-loading.btn-bordeaux-red::after{border-color:#fff}.btn.btn-loading.btn-brown::after{border-color:#fff}.btn.btn-loading.btn-cream::after{border-color:#000}.btn.btn-loading.btn-orange::after{border-color:#000}.btn.btn-loading.btn-yellow::after{border-color:#000}.btn.btn-loading.btn-green::after{border-color:#000}.btn.btn-loading.btn-teal::after{border-color:#000}.btn.btn-loading.btn-cyan::after{border-color:#000}.btn.btn-loading.btn-white::after{border-color:#000}.btn.btn-loading.btn-gray::after{border-color:#fff}.btn.btn-loading.btn-gray-dark::after{border-color:#fff}.btn-group{gap:.5rem}.btn-check:checked+.btn.btn-checked-primary,.btn-check:active+.btn.btn-checked-primary{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-primary,.btn-check:active+.btn.btn-checked-outline-primary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-secondary,.btn-check:active+.btn.btn-checked-secondary{--bs-btn-color: #fff;--bs-btn-bg: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: black;--bs-btn-hover-border-color: black;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: black;--bs-btn-active-border-color: black;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #000;--bs-btn-disabled-border-color: #000}.btn-check:checked+.btn.btn-checked-outline-secondary,.btn-check:active+.btn.btn-checked-outline-secondary{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #000;--bs-btn-border-color: #000;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #000;--bs-btn-hover-border-color: #000;--bs-btn-focus-shadow-rgb: 0, 0, 0;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000;--bs-btn-active-border-color: #000;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #000;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-success,.btn-check:active+.btn.btn-checked-success{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-success,.btn-check:active+.btn.btn-checked-outline-success{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-info,.btn-check:active+.btn.btn-checked-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-info,.btn-check:active+.btn.btn-checked-outline-info{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-warning,.btn-check:active+.btn.btn-checked-warning{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-warning,.btn-check:active+.btn.btn-checked-outline-warning{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-danger,.btn-check:active+.btn.btn-checked-danger{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-danger,.btn-check:active+.btn.btn-checked-outline-danger{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-error,.btn-check:active+.btn.btn-checked-error{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-error,.btn-check:active+.btn.btn-checked-outline-error{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-light,.btn-check:active+.btn.btn-checked-light{--bs-btn-color: #000;--bs-btn-bg: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #bfbfbf;--bs-btn-focus-shadow-rgb: 203, 203, 203;--bs-btn-active-color: #000;--bs-btn-active-bg: #bfbfbf;--bs-btn-active-border-color: #b3b3b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #efefef;--bs-btn-disabled-border-color: #efefef}.btn-check:checked+.btn.btn-checked-outline-light,.btn-check:active+.btn.btn-checked-outline-light{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #efefef;--bs-btn-border-color: #efefef;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #efefef;--bs-btn-hover-border-color: #efefef;--bs-btn-focus-shadow-rgb: 239, 239, 239;--bs-btn-active-color: #000;--bs-btn-active-bg: #efefef;--bs-btn-active-border-color: #efefef;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #efefef;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #efefef;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark,.btn-check:active+.btn.btn-checked-dark{--bs-btn-color: #fff;--bs-btn-bg: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #3c3c3c;--bs-btn-focus-shadow-rgb: 71, 71, 71;--bs-btn-active-color: #fff;--bs-btn-active-bg: #515151;--bs-btn-active-border-color: #3c3c3c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #262626;--bs-btn-disabled-border-color: #262626}.btn-check:checked+.btn.btn-checked-outline-dark,.btn-check:active+.btn.btn-checked-outline-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #262626;--bs-btn-border-color: #262626;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #262626;--bs-btn-hover-border-color: #262626;--bs-btn-focus-shadow-rgb: 38, 38, 38;--bs-btn-active-color: #fff;--bs-btn-active-bg: #262626;--bs-btn-active-border-color: #262626;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #262626;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #262626;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-blue,.btn-check:active+.btn.btn-checked-blue{--bs-btn-color: #fff;--bs-btn-bg: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #426c9e;--bs-btn-focus-shadow-rgb: 108, 153, 207;--bs-btn-active-color: #fff;--bs-btn-active-bg: #426c9e;--bs-btn-active-border-color: #3e6595;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5287c6;--bs-btn-disabled-border-color: #5287c6}.btn-check:checked+.btn.btn-checked-outline-blue,.btn-check:active+.btn.btn-checked-outline-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5287c6;--bs-btn-border-color: #5287c6;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5287c6;--bs-btn-hover-border-color: #5287c6;--bs-btn-focus-shadow-rgb: 82, 135, 198;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5287c6;--bs-btn-active-border-color: #5287c6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5287c6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5287c6;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-dark-blue,.btn-check:active+.btn.btn-checked-dark-blue{--bs-btn-color: #fff;--bs-btn-bg: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #000e33;--bs-btn-focus-shadow-rgb: 38, 54, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #000e33;--bs-btn-active-border-color: #000e30;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #001240;--bs-btn-disabled-border-color: #001240}.btn-check:checked+.btn.btn-checked-outline-dark-blue,.btn-check:active+.btn.btn-checked-outline-dark-blue{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #001240;--bs-btn-border-color: #001240;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #001240;--bs-btn-hover-border-color: #001240;--bs-btn-focus-shadow-rgb: 0, 18, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #001240;--bs-btn-active-border-color: #001240;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #001240;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #001240;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-indigo,.btn-check:active+.btn.btn-checked-indigo{--bs-btn-color: #fff;--bs-btn-bg: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #520dc2;--bs-btn-focus-shadow-rgb: 125, 52, 244;--bs-btn-active-color: #fff;--bs-btn-active-bg: #520dc2;--bs-btn-active-border-color: #4d0cb6;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6610f2;--bs-btn-disabled-border-color: #6610f2}.btn-check:checked+.btn.btn-checked-outline-indigo,.btn-check:active+.btn.btn-checked-outline-indigo{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6610f2;--bs-btn-border-color: #6610f2;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6610f2;--bs-btn-hover-border-color: #6610f2;--bs-btn-focus-shadow-rgb: 102, 16, 242;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6610f2;--bs-btn-active-border-color: #6610f2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6610f2;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6610f2;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-purple,.btn-check:active+.btn.btn-checked-purple{--bs-btn-color: #fff;--bs-btn-bg: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #491a68;--bs-btn-focus-shadow-rgb: 116, 66, 149;--bs-btn-active-color: #fff;--bs-btn-active-bg: #491a68;--bs-btn-active-border-color: #441962;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #5b2182;--bs-btn-disabled-border-color: #5b2182}.btn-check:checked+.btn.btn-checked-outline-purple,.btn-check:active+.btn.btn-checked-outline-purple{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #5b2182;--bs-btn-border-color: #5b2182;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #5b2182;--bs-btn-hover-border-color: #5b2182;--bs-btn-focus-shadow-rgb: 91, 33, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5b2182;--bs-btn-active-border-color: #5b2182;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #5b2182;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #5b2182;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-pink,.btn-check:active+.btn.btn-checked-pink{--bs-btn-color: #fff;--bs-btn-bg: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #ab296a;--bs-btn-focus-shadow-rgb: 220, 82, 150;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ab296a;--bs-btn-active-border-color: #a12663;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #d63384;--bs-btn-disabled-border-color: #d63384}.btn-check:checked+.btn.btn-checked-outline-pink,.btn-check:active+.btn.btn-checked-outline-pink{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #d63384;--bs-btn-border-color: #d63384;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d63384;--bs-btn-hover-border-color: #d63384;--bs-btn-focus-shadow-rgb: 214, 51, 132;--bs-btn-active-color: #fff;--bs-btn-active-bg: #d63384;--bs-btn-active-border-color: #d63384;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #d63384;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #d63384;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-red,.btn-check:active+.btn.btn-checked-red{--bs-btn-color: #fff;--bs-btn-bg: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #9a082a;--bs-btn-focus-shadow-rgb: 201, 47, 83;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9a082a;--bs-btn-active-border-color: #900828;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #c00a35;--bs-btn-disabled-border-color: #c00a35}.btn-check:checked+.btn.btn-checked-outline-red,.btn-check:active+.btn.btn-checked-outline-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #c00a35;--bs-btn-border-color: #c00a35;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #c00a35;--bs-btn-hover-border-color: #c00a35;--bs-btn-focus-shadow-rgb: 192, 10, 53;--bs-btn-active-color: #fff;--bs-btn-active-bg: #c00a35;--bs-btn-active-border-color: #c00a35;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #c00a35;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #c00a35;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-bordeaux-red,.btn-check:active+.btn.btn-checked-bordeaux-red{--bs-btn-color: #fff;--bs-btn-bg: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #881144;--bs-btn-focus-shadow-rgb: 183, 56, 111;--bs-btn-active-color: #fff;--bs-btn-active-bg: #881144;--bs-btn-active-border-color: #801040;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #aa1555;--bs-btn-disabled-border-color: #aa1555}.btn-check:checked+.btn.btn-checked-outline-bordeaux-red,.btn-check:active+.btn.btn-checked-outline-bordeaux-red{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #aa1555;--bs-btn-border-color: #aa1555;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #aa1555;--bs-btn-hover-border-color: #aa1555;--bs-btn-focus-shadow-rgb: 170, 21, 85;--bs-btn-active-color: #fff;--bs-btn-active-bg: #aa1555;--bs-btn-active-border-color: #aa1555;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #aa1555;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #aa1555;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-brown,.btn-check:active+.btn.btn-checked-brown{--bs-btn-color: #fff;--bs-btn-bg: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #582f1c;--bs-btn-focus-shadow-rgb: 132, 88, 68;--bs-btn-active-color: #fff;--bs-btn-active-bg: #582f1c;--bs-btn-active-border-color: #532c1a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6e3b23;--bs-btn-disabled-border-color: #6e3b23}.btn-check:checked+.btn.btn-checked-outline-brown,.btn-check:active+.btn.btn-checked-outline-brown{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6e3b23;--bs-btn-border-color: #6e3b23;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6e3b23;--bs-btn-hover-border-color: #6e3b23;--bs-btn-focus-shadow-rgb: 110, 59, 35;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6e3b23;--bs-btn-active-border-color: #6e3b23;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6e3b23;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6e3b23;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cream,.btn-check:active+.btn.btn-checked-cream{--bs-btn-color: #000;--bs-btn-bg: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe9b3;--bs-btn-focus-shadow-rgb: 217, 196, 145;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffebbc;--bs-btn-active-border-color: #ffe9b3;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffe6ab;--bs-btn-disabled-border-color: #ffe6ab}.btn-check:checked+.btn.btn-checked-outline-cream,.btn-check:active+.btn.btn-checked-outline-cream{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffe6ab;--bs-btn-border-color: #ffe6ab;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffe6ab;--bs-btn-hover-border-color: #ffe6ab;--bs-btn-focus-shadow-rgb: 255, 230, 171;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffe6ab;--bs-btn-active-border-color: #ffe6ab;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffe6ab;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffe6ab;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-orange,.btn-check:active+.btn.btn-checked-orange{--bs-btn-color: #000;--bs-btn-bg: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f4a16e;--bs-btn-focus-shadow-rgb: 207, 128, 80;--bs-btn-active-color: #000;--bs-btn-active-bg: #f5ab7e;--bs-btn-active-border-color: #f4a16e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f3965e;--bs-btn-disabled-border-color: #f3965e}.btn-check:checked+.btn.btn-checked-outline-orange,.btn-check:active+.btn.btn-checked-outline-orange{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #f3965e;--bs-btn-border-color: #f3965e;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f3965e;--bs-btn-hover-border-color: #f3965e;--bs-btn-focus-shadow-rgb: 243, 150, 94;--bs-btn-active-color: #000;--bs-btn-active-bg: #f3965e;--bs-btn-active-border-color: #f3965e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #f3965e;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f3965e;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-yellow,.btn-check:active+.btn.btn-checked-yellow{--bs-btn-color: #000;--bs-btn-bg: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffd21a;--bs-btn-focus-shadow-rgb: 217, 174, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffd733;--bs-btn-active-border-color: #ffd21a;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffcd00;--bs-btn-disabled-border-color: #ffcd00}.btn-check:checked+.btn.btn-checked-outline-yellow,.btn-check:active+.btn.btn-checked-outline-yellow{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #ffcd00;--bs-btn-border-color: #ffcd00;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffcd00;--bs-btn-hover-border-color: #ffcd00;--bs-btn-focus-shadow-rgb: 255, 205, 0;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffcd00;--bs-btn-active-border-color: #ffcd00;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #ffcd00;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffcd00;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-green,.btn-check:active+.btn.btn-checked-green{--bs-btn-color: #000;--bs-btn-bg: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #42bf50;--bs-btn-focus-shadow-rgb: 38, 156, 52;--bs-btn-active-color: #000;--bs-btn-active-bg: #57c664;--bs-btn-active-border-color: #42bf50;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #2db83d;--bs-btn-disabled-border-color: #2db83d}.btn-check:checked+.btn.btn-checked-outline-green,.btn-check:active+.btn.btn-checked-outline-green{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #2db83d;--bs-btn-border-color: #2db83d;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #2db83d;--bs-btn-hover-border-color: #2db83d;--bs-btn-focus-shadow-rgb: 45, 184, 61;--bs-btn-active-color: #000;--bs-btn-active-bg: #2db83d;--bs-btn-active-border-color: #2db83d;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #2db83d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2db83d;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-teal,.btn-check:active+.btn.btn-checked-teal{--bs-btn-color: #000;--bs-btn-bg: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #3ab09e;--bs-btn-focus-shadow-rgb: 31, 142, 125;--bs-btn-active-color: #000;--bs-btn-active-bg: #50b9a9;--bs-btn-active-border-color: #3ab09e;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #24a793;--bs-btn-disabled-border-color: #24a793}.btn-check:checked+.btn.btn-checked-outline-teal,.btn-check:active+.btn.btn-checked-outline-teal{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #24a793;--bs-btn-border-color: #24a793;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #24a793;--bs-btn-hover-border-color: #24a793;--bs-btn-focus-shadow-rgb: 36, 167, 147;--bs-btn-active-color: #000;--bs-btn-active-bg: #24a793;--bs-btn-active-border-color: #24a793;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #24a793;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #24a793;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-cyan,.btn-check:active+.btn.btn-checked-cyan{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #25cff2;--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: #3dd5f3;--bs-btn-active-border-color: #25cff2;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-check:checked+.btn.btn-checked-outline-cyan,.btn-check:active+.btn.btn-checked-outline-cyan{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-white,.btn-check:active+.btn.btn-checked-white{--bs-btn-color: #000;--bs-btn-bg: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: white;--bs-btn-hover-border-color: white;--bs-btn-focus-shadow-rgb: 217, 217, 217;--bs-btn-active-color: #000;--bs-btn-active-bg: white;--bs-btn-active-border-color: white;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #fff;--bs-btn-disabled-border-color: #fff}.btn-check:checked+.btn.btn-checked-outline-white,.btn-check:active+.btn.btn-checked-outline-white{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #fff;--bs-btn-border-color: #fff;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #fff;--bs-btn-hover-border-color: #fff;--bs-btn-focus-shadow-rgb: 255, 255, 255;--bs-btn-active-color: #000;--bs-btn-active-bg: #fff;--bs-btn-active-border-color: #fff;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #fff;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray,.btn-check:active+.btn.btn-checked-gray{--bs-btn-color: #fff;--bs-btn-bg: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #565656;--bs-btn-focus-shadow-rgb: 130, 130, 130;--bs-btn-active-color: #fff;--bs-btn-active-bg: #565656;--bs-btn-active-border-color: #515151;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #6c6c6c;--bs-btn-disabled-border-color: #6c6c6c}.btn-check:checked+.btn.btn-checked-outline-gray,.btn-check:active+.btn.btn-checked-outline-gray{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #6c6c6c;--bs-btn-border-color: #6c6c6c;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #6c6c6c;--bs-btn-hover-border-color: #6c6c6c;--bs-btn-focus-shadow-rgb: 108, 108, 108;--bs-btn-active-color: #fff;--bs-btn-active-bg: #6c6c6c;--bs-btn-active-border-color: #6c6c6c;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #6c6c6c;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c6c6c;--bs-gradient: none}.btn-check:checked+.btn.btn-checked-gray-dark,.btn-check:active+.btn.btn-checked-gray-dark{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #2a2a2a;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2a2a;--bs-btn-active-border-color: #272727;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.btn-check:checked+.btn.btn-checked-outline-gray-dark,.btn-check:active+.btn.btn-checked-outline-gray-dark{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color);--bs-btn-color: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #343434;--bs-btn-focus-shadow-rgb: 52, 52, 52;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343434;--bs-btn-active-border-color: #343434;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #343434;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343434;--bs-gradient: none}[data-bs-theme=dark] .btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #343434;--bs-btn-border-color: #343434;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343434;--bs-btn-hover-border-color: #484848;--bs-btn-focus-shadow-rgb: 82, 82, 82;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d5d5d;--bs-btn-active-border-color: #484848;--bs-btn-active-shadow: none;--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343434;--bs-btn-disabled-border-color: #343434}.pagination{--bs-pagination-gap: 0.625rem;--bs-pagination-size: 2.5rem;--bs-pagination-button-bg: #000;--bs-pagination-button-color: #fff;--bs-pagination-ellipsis-color: #494949;gap:var(--bs-pagination-gap)}.pagination .page-item{height:100%}.pagination .page-item .page-link{cursor:pointer;height:var(--bs-pagination-size);line-height:var(--bs-pagination-size);padding-top:0;padding-bottom:0;text-align:center}.pagination .page-item:not(.page-button):not(.next):not(.previous):not(.first):not(.last) .page-link{width:var(--bs-pagination-size);padding:0}.pagination .page-item.page-button{font-weight:bold;user-select:none}.pagination .page-item.page-button .page-link{background-color:var(--bs-pagination-button-bg);color:var(--bs-pagination-button-color)}.pagination .page-item.page-button.disabled{cursor:not-allowed}.pagination .page-item.page-button.disabled .page-link{background-color:var(--bs-pagination-disabled-bg);color:var(--bs-pagination-disabled-color)}.pagination .page-item.active{font-weight:bold}.pagination .page-item.page-ellipsis .page-link{background:rgba(0,0,0,0);cursor:default;font-size:0}.pagination .page-item.page-ellipsis .page-link:before{font-size:1rem;color:var(--bs-pagination-ellipsis-color);content:"…"}[data-bs-theme=dark] .pagination{--bs-pagination-button-bg: #343434;--bs-pagination-button-color: #fff;--bs-pagination-ellipsis-color: #dedede;--bs-pagination-color: #fff;--bs-pagination-bg: #6c6c6c;--bs-pagination-focus-color: #000;--bs-pagination-focus-bg: #ffcd00;--bs-pagination-hover-color: #000;--bs-pagination-hover-bg: #ffcd00;--bs-pagination-active-color: #000;--bs-pagination-active-bg: #ffcd00;--bs-pagination-disabled-color: #adadad;--bs-pagination-disabled-bg: #494949}.modal{--bs-modal-header-bg: #ffcd00;--bs-modal-header-color: #000;--bs-modal-header-font-weight: 500}.modal .modal-header{background-color:var(--bs-modal-header-bg);color:var(--bs-modal-header-color);font-weight:var(--bs-modal-header-font-weight)}[data-bs-theme=dark] .modal{--bs-modal-bg: #343434;--bs-modal-color: #efefef;--bs-modal-header-bg: #ffcd00;--bs-modal-header-color: #000}.table.table-sticky-header thead,.table-sticky-header.dt thead,.table-sticky-header.datatables thead{position:sticky;top:0}.table.table-sticky-header.table-sticky-header-top-0 thead,.table-sticky-header.table-sticky-header-top-0.dt thead,.table-sticky-header.table-sticky-header-top-0.datatables thead{top:0 !important}.table.table-sticky-footer tfoot,.table-sticky-footer.dt tfoot,.table-sticky-footer.datatables tfoot{position:sticky;bottom:0}.table.loading tbody,.loading.dt tbody,.loading.datatables tbody{position:relative}.table.loading tbody td,.loading.dt tbody td,.loading.datatables tbody td{opacity:.4}.table.loading tbody:after,.loading.dt tbody:after,.loading.datatables tbody:after{border:.2rem solid var(--bs-secondary);border-radius:999999px;border-top-color:rgba(0,0,0,0) !important;content:"";display:block;height:3em;width:3em;position:absolute;left:calc(50% - 1.5em);top:calc(50% - 1.5em);animation:spinner-border .5s infinite linear}@media(max-width: 768px){.uu-root-container .table.table-sticky-header thead,.uu-root-container .table-sticky-header.dt thead,.uu-root-container .table-sticky-header.datatables thead{top:var(--bs-uu-navbar-mobile-height)}}.form-control,.form-select{--bs-input-bg: #fff;background-color:var(--bs-input-bg)}.form-control:focus,.form-select:focus{--bs-input-bg: #fff;background-color:var(--bs-input-bg)}.form-label{color:#262626}[data-bs-theme=dark] .form-control,[data-bs-theme=dark] .form-select{--bs-input-bg: #171717}[data-bs-theme=dark] .form-control:focus,[data-bs-theme=dark] .form-select:focus{--bs-input-bg: #171717}[data-bs-theme=dark] .form-label{color:#dedede}.flex-fill{min-width:0}.font-serif{font-family:"Merriweather",serif}h1.hdr-underlined,.hdr-underlined.h1{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h2.hdr-underlined,.hdr-underlined.h2{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h3.hdr-underlined,.hdr-underlined.h3{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h4.hdr-underlined,.hdr-underlined.h4{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h5.hdr-underlined,.hdr-underlined.h5{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h6.hdr-underlined,.hdr-underlined.h6{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}h7.hdr-underlined{border-bottom:.0625rem solid #cecece;padding-bottom:.625rem}code,pre.code{--bs-code-bg: #cecece;--bs-code-color: #000;--bs-code-border-radius: 0.2em;--bs-code-padding-y: 0.2em;--bs-code-padding-x: 0.4em;--bs-code-font-size: 0.85em;background:var(--bs-code-bg);color:var(--bs-code-color);padding:var(--bs-code-padding-y) var(--bs-code-padding-x);margin:0;font-size:var(--bs-code-font-size);border-radius:var(--bs-code-border-radius)}pre.code{overflow:auto}[data-bs-theme=dark] code,[data-bs-theme=dark] pre.code{--bs-code-bg: #494949;--bs-code-color: #fff}.stepper{--bs-stepper-color: #212121;--bs-stepper-disabled-color: var(--bs-secondary-color);--bs-stepper-complete-bg: #75b798;--bs-stepper-complete-color: #000;--bs-stepper-incomplete-bg: #ffcd00;--bs-stepper-incomplete-color: #000;--bs-stepper-inactive-bg: #cecece;--bs-stepper-inactive-color: #000;--bs-stepper-min-width: 15.625rem;--bs-stepper-padding-y: 0.75rem;--bs-stepper-line-width: 0.125rem;position:relative;z-index:1;min-width:var(--bs-stepper-min-width)}.stepper a{text-decoration:none;color:var(--bs-stepper-color)}.stepper>ul::before{content:"";display:block;position:absolute;left:calc(2rem / 2 - 1px);top:1rem;height:calc(100% - 1rem);width:var(--bs-stepper-line-width);background:var(--bs-stepper-inactive-bg);z-index:-1}.stepper ul{list-style:none;padding-left:0;margin:0}.stepper ul li{line-height:2rem}.stepper ul li>.stepper-item{display:flex;flex-direction:row;align-items:center;gap:1rem}.stepper ul li>.stepper-item.active{font-weight:600}.stepper ul li>.stepper-item.disabled{color:var(--bs-stepper-disabled-color);font-style:italic}.stepper ul li>.stepper-item.complete .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.complete,.stepper ul li>.stepper-item.finished .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.finished{background:var(--bs-stepper-complete-bg);color:var(--bs-stepper-complete-color)}.stepper ul li>.stepper-item.incomplete .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.incomplete{background:var(--bs-stepper-incomplete-bg);color:var(--bs-stepper-incomplete-color)}.stepper ul li>.stepper-item.disabled .stepper-bubble,.stepper ul li>.stepper-item .stepper-bubble.disabled{font-style:normal}.stepper ul li>.stepper-item .stepper-bubble{background:var(--bs-stepper-inactive-bg);flex:0 0 auto;color:var(--bs-stepper-inactive-color);font-weight:bold;line-height:2rem;font-size:.8rem;display:inline-block;border-radius:100%;text-align:center}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-largest{width:2rem;height:2rem;margin-left:0rem;margin-right:0rem;line-height:2rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-large{width:1.66rem;height:1.66rem;margin-left:.17rem;margin-right:.77rem;line-height:1.66rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-medium{width:1.32rem;height:1.32rem;margin-left:.34rem;margin-right:1.54rem;line-height:1.32rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-normal{width:1.32rem;height:1.32rem;margin-left:.34rem;margin-right:1.54rem;line-height:1.32rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-small{width:.98rem;height:.98rem;margin-left:.51rem;margin-right:2.31rem;line-height:.98rem}.stepper ul li>.stepper-item .stepper-bubble.stepper-bubble-smallest{width:.64rem;height:.64rem;margin-left:.68rem;margin-right:3.08rem;line-height:.64rem}.stepper ul li:not(:last-of-type){padding-bottom:var(--bs-stepper-padding-y)}.stepper ul li>ul{padding-top:var(--bs-stepper-padding-y)}[data-bs-theme=dark] .stepper{--bs-stepper-color: #dedede;--bs-stepper-disabled-color: var(--bs-secondary-color);--bs-stepper-complete-bg: #198754;--bs-stepper-complete-color: #fff;--bs-stepper-incomplete-bg: #cc9a06;--bs-stepper-incomplete-color: #fff;--bs-stepper-inactive-bg: #6c6c6c;--bs-stepper-inactive-color: #fff}.tiles{--bs-tiles-gap: 0.625rem;--bs-tiles-padding: 1rem;--bs-tiles-bg: #efefef;--bs-tiles-color: #000;--bs-tiles-hover-bg: #ffcd00;--bs-tiles-hover-color: #000;--bs-tiles-n-xs: 2;--bs-tiles-n: var(--bs-tiles-n-xs);--bs-tiles-n-sm: 4;--bs-tiles-n-md: 5;--bs-tiles-n-lg: 6;--bs-tiles-n-xl: 7;width:100%;display:grid;gap:var(--bs-tiles-gap);grid-template-columns:repeat(var(--bs-tiles-n), 1fr)}@media(min-width: 576px){.tiles{--bs-tiles-n: var(--bs-tiles-n-sm)}}@media(min-width: 768px){.tiles{--bs-tiles-n: var(--bs-tiles-n-md)}}@media(min-width: 992px){.tiles{--bs-tiles-n: var(--bs-tiles-n-lg)}}@media(min-width: 1200px){.tiles{--bs-tiles-n: var(--bs-tiles-n-xl)}}.tiles .tile{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:var(--bs-tiles-padding);aspect-ratio:1/1;background:var(--bs-tiles-bg);color:var(--bs-tiles-color)}.tiles .tile:hover{background:var(--bs-tiles-hover-bg);color:var(--bs-tiles-hover-color)}.tiles .tile p:last-child{margin:0}.tiles a.tile,.tiles .tile a{cursor:pointer;text-decoration:none}.tiles.tiles-n-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-12{--bs-tiles-n: 12 !important}@media(min-width: 576px){.tiles.tiles-n-sm-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-sm-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-sm-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-sm-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-sm-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-sm-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-sm-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-sm-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-sm-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-sm-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-sm-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-sm-12{--bs-tiles-n: 12 !important}}@media(min-width: 768px){.tiles.tiles-n-md-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-md-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-md-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-md-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-md-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-md-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-md-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-md-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-md-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-md-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-md-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-md-12{--bs-tiles-n: 12 !important}}@media(min-width: 992px){.tiles.tiles-n-lg-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-lg-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-lg-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-lg-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-lg-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-lg-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-lg-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-lg-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-lg-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-lg-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-lg-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-lg-12{--bs-tiles-n: 12 !important}}@media(min-width: 1200px){.tiles.tiles-n-xl-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-xl-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-xl-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-xl-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-xl-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-xl-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-xl-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-xl-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-xl-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-xl-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-xl-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-xl-12{--bs-tiles-n: 12 !important}}@media(min-width: 1400px){.tiles.tiles-n-xxl-1{--bs-tiles-n: 1 !important}.tiles.tiles-n-xxl-2{--bs-tiles-n: 2 !important}.tiles.tiles-n-xxl-3{--bs-tiles-n: 3 !important}.tiles.tiles-n-xxl-4{--bs-tiles-n: 4 !important}.tiles.tiles-n-xxl-5{--bs-tiles-n: 5 !important}.tiles.tiles-n-xxl-6{--bs-tiles-n: 6 !important}.tiles.tiles-n-xxl-7{--bs-tiles-n: 7 !important}.tiles.tiles-n-xxl-8{--bs-tiles-n: 8 !important}.tiles.tiles-n-xxl-9{--bs-tiles-n: 9 !important}.tiles.tiles-n-xxl-10{--bs-tiles-n: 10 !important}.tiles.tiles-n-xxl-11{--bs-tiles-n: 11 !important}.tiles.tiles-n-xxl-12{--bs-tiles-n: 12 !important}}[data-bs-theme=dark] .tiles{--bs-tiles-bg: #494949;--bs-tiles-color: #fff;--bs-tiles-hover-bg: #ffcd00;--bs-tiles-hover-color: #000}.modal-nav-tabs{--bs-modal-nav-tabs-gap: 0.625rem;--bs-modal-nav-tabs-color: inherit;--bs-modal-nav-tabs-bg: none;--bs-modal-nav-tabs-active-color: var(--bs-modal-color);--bs-modal-nav-tabs-active-bg: var(--bs-modal-bg);--bs-modal-nav-tabs-hover-color: #000;--bs-modal-nav-tabs-hover-bg: #efefef;margin-bottom:calc(0px - var(--bs-modal-header-padding-y));border-bottom:0;gap:var(--bs-modal-nav-tabs-gap);overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;max-width:100%}.modal-nav-tabs .nav-link{background-color:var(--bs-modal-nav-tabs-bg);color:var(--bs-modal-nav-tabs-color);white-space:nowrap}.modal-nav-tabs .nav-link.active{color:var(--bs-modal-nav-tabs-active-color);background-color:var(--bs-modal-nav-tabs-active-bg);border-color:rgba(0,0,0,0)}.modal-nav-tabs .nav-link:not(.active):hover,.modal-nav-tabs .nav-link:not(.active):focus{color:var(--bs-modal-nav-tabs-hover-color);background-color:var(--bs-modal-nav-tabs-hover-bg);border-color:rgba(0,0,0,0)}.uu-root-container{width:100%;max-width:var(--bs-uu-container-width);min-height:100vh;margin:0 auto;display:flex;align-items:center;flex-direction:column;padding:0;background:var(--bs-uu-container-bg);color:var(--bs-uu-container-color);transition:background .1s linear,color .1s linear,border-color .1s linear}.uu-root-container{--bs-uu-container-width: 100rem;--bs-uu-container-bg: #fff;--bs-uu-container-color: #212121;--bs-uu-container-padding-y: 1rem;--bs-uu-container-padding-x: 1rem;--bs-uu-content-width: 75rem;--bs-uu-border-color: #cecece;--bs-uu-border-color-light: #e9e9e9;--bs-uu-border-color-dark: #494949;--bs-uu-header-padding-y: 0.7rem;--bs-uu-header-font-size: 0.9rem;--bs-uu-header-title-color: #094d8e;--bs-uu-header-border-gap: 1.2rem;--bs-uu-header-border-color: var(--bs-uu-border-color-light);--bs-uu-navbar-dropdown-bg: #fff;--bs-uu-navbar-mobile-height: 3.125rem;--bs-uu-navbar-mobile-bg: #fff;--bs-uu-navbar-mobile-color: #000;--bs-uu-navbar-navlink-padding-x: 0.75rem;--bs-uu-navbar-navlink-padding-y: 0.75rem;--bs-uu-unified-header-height: 4.5rem;--bs-uu-unified-header-mobile-height: 3rem;--bs-uu-unified-header-border-size: 0.0625rem;--bs-uu-unified-header-padding-x: 2rem;--bs-uu-unified-header-padding-mobile-x: 1rem;--bs-uu-unified-header-navlink-indicator-height: 0.3125rem;--bs-uu-unified-header-navlink-bg: #fff;--bs-uu-unified-header-navlink-color: #000;--bs-uu-unified-header-navlink-mobile-bg: #000;--bs-uu-unified-header-navlink-mobile-color: #fff;--bs-uu-brand-padding-x: 2.5rem;--bs-uu-brand-padding-y: 1rem;--bs-uu-brand-logo-padding-x: 0;--bs-uu-brand-logo-padding-y: 0.5rem;--bs-uu-brand-sender-bg: #ffcd00;--bs-uu-brand-sender-color: #000;--bs-uu-brand-sender-min-width: 220px;--bs-uu-brand-sender-max-width: 300px;--bs-uu-footer-padding-y: 2.5rem;--bs-uu-footer-color: #cecece;--bs-uu-footer-background-color: #262626;--bs-uu-hero-bg: #ffcd00;--bs-uu-hero-color: #000;--bs-uu-hero-padding-y: 1rem;--bs-uu-hero-font-weight: 400;--bs-uu-cover-default-height: 400px;--bs-uu-cover-copyright-padding-x: 0.625rem;--bs-uu-cover-copyright-padding-y: 0.625rem;--bs-uu-cover-copyright-text-size: 0.8rem;--bs-uu-cover-copyright-text-color: #dedede;--bs-uu-cover-copyright-background-color: rgba(0, 0, 0, 0.5);--bs-uu-sidebar-width: 21.875rem;--bs-uu-sidebar-padding-x: 1.25rem;--bs-uu-sidebar-padding-y: 1.25rem;--bs-uu-sidebar-mobile-padding-y: 0.625rem;--bs-uu-sidebar-gap: 6.25rem;--bs-uu-sidebar-background: #e9e9e9;--bs-uu-sidebar-color: #212121;--bs-uu-sidebar-header-font-weight: 200;--bs-uu-sidebar-header-padding-y: 0.625rem;--bs-uu-sidebar-nav-padding-y: 0.4375rem;--bs-uu-sidebar-nav-padding-x: 0;--bs-uu-sidebar-nav-disabled-color: #6c6c6c;--bs-uu-sidebar-nav-active-font-weight: 600;--bs-uu-form-column-gap: 2rem;--bs-uu-form-row-gap: 1.5rem;--bs-uu-form-field-padding-x: 1.5rem;--bs-uu-form-field-padding-y: 1.3rem;--bs-uu-form-field-padding-y-compensation: 0.3125rem;--bs-uu-form-field-bg: #efefef;--bs-uu-form-field-input-group-bg: #f8f8f8;--bs-uu-form-aside-font-size: 0.9rem;--bs-uu-form-aside-color: var(--bs-secondary-color);--bs-uu-form-help-padding-x: 0;--bs-uu-form-help-padding-y: 0.5rem}.uu-root-container .uu-content{width:100%;display:flex;align-items:center;flex:1 1 auto;flex-direction:column;padding:0;margin:0}.uu-root-container .uu-fullwidth-container,.uu-root-container .-uu-spaced-container,.uu-root-container .uu-footer,.uu-root-container .uu-hero,.uu-root-container .uu-cover .uu-cover-hero,.uu-root-container .uu-container,.uu-root-container .uu-inner-container{width:100%;display:flex;flex-wrap:wrap;padding:var(--bs-uu-container-padding-y) var(--bs-uu-container-padding-x)}@media(min-width: 76rem){.uu-root-container .-uu-spaced-container,.uu-root-container .uu-footer,.uu-root-container .uu-hero,.uu-root-container .uu-cover .uu-cover-hero,.uu-root-container .uu-container,.uu-root-container .uu-inner-container{padding-left:calc(50% - var(--bs-uu-content-width)/2);padding-right:calc(50% - var(--bs-uu-content-width)/2)}}.uu-container+.uu-container,.uu-inner-container+.uu-container,.uu-container+.uu-inner-container,.uu-inner-container+.uu-inner-container{padding-top:0}.uu-root-container .uu-header{width:100%;display:flex;align-items:center;flex-direction:column;font-size:var(--bs-uu-header-font-size)}.uu-root-container .uu-header .uu-header-row{display:flex;flex-direction:row;align-items:stretch;width:100%;padding-left:calc(50% - var(--bs-uu-content-width)/2);padding-right:calc(50% - var(--bs-uu-content-width)/2)}@media(max-width: 768px){.uu-root-container .uu-header .uu-header-row{display:none}}.uu-root-container .uu-header .uu-header-row>*{padding-top:var(--bs-uu-header-padding-y);padding-bottom:var(--bs-uu-header-padding-y);align-items:center;display:flex}@media(max-width: 76rem){.uu-root-container .uu-header .uu-header-row{padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x)}}.uu-root-container .uu-header .uu-header-row:not(:last-child){border-bottom:.0625rem solid var(--bs-uu-border-color-light)}.uu-root-container .uu-header .uu-header-row .border-left{padding-left:var(--bs-uu-header-border-gap);border-left:.0625rem solid var(--bs-uu-header-border-color)}.uu-root-container .uu-header .uu-header-row .border-right{padding-right:var(--bs-uu-header-border-gap);border-right:.0625rem solid var(--bs-uu-header-border-color)}.uu-root-container .uu-header .uu-header-row .uu-header-title,.uu-root-container .uu-header .uu-header-row .uu-header-title a{color:var(--bs-uu-header-title-color);text-decoration:none;font-size:1.7rem}.uu-root-container .uu-header .uu-header-row .uu-logo img{max-height:3rem}.uu-root-container .uu-header .uu-header-row a,.uu-root-container .uu-header .uu-header-row a:hover,.uu-root-container .uu-header .uu-header-row a:focus,.uu-root-container .uu-header .uu-header-row a:active{text-decoration:none}.uu-root-container .uu-navbar{width:100%;background:#000;flex-wrap:nowrap;justify-content:flex-start}@media(max-width: 768px){.uu-root-container .uu-navbar{background:var(--bs-uu-navbar-mobile-bg) !important;color:var(--bs-uu-navbar-mobile-color) !important;border-bottom:.0625rem solid var(--bs-uu-border-color);flex-wrap:wrap;justify-content:space-between;position:sticky;top:0;z-index:9001;height:var(--bs-uu-navbar-mobile-height)}}.uu-root-container .uu-navbar .uu-navbar-container{width:100%;padding-left:calc( calc(50% - var(--bs-uu-content-width) / 2) - var(--bs-uu-navbar-navlink-padding-x) );padding-right:calc( calc(50% - var(--bs-uu-content-width) / 2) - var(--bs-uu-navbar-navlink-padding-x) - );display:flex;justify-content:space-between;align-items:center;flex-wrap:inherit}@media(max-width: 76rem){.uu-root-container .uu-navbar .uu-navbar-container{padding-left:calc(var(--bs-uu-container-padding-x) - var(--bs-uu-navbar-navlink-padding-x));padding-right:calc(var(--bs-uu-container-padding-x) - var(--bs-uu-navbar-navlink-padding-x))}}@media(max-width: 768px){.uu-root-container .uu-navbar .uu-navbar-container{padding-left:0;padding-right:0}}.uu-root-container .uu-navbar .navbar-brand{padding-left:.75rem}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-brand{display:none}}.uu-root-container .uu-navbar .navbar-brand img{height:1.5rem}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-toggler{display:none}.uu-root-container .uu-navbar .navbar-collapse{display:flex !important;flex-basis:auto}}.uu-root-container .uu-navbar .navbar-nav{--bs-nav-link-color: #fff;--bs-nav-link-disabled-color: #adadad;--bs-nav-link-hover-color: #ffcd00}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-nav{flex-direction:row}}.uu-root-container .uu-navbar .navbar-nav .dropdown-menu{--bs-dropdown-bg: #fff;border-top:none}.uu-root-container .uu-navbar .navbar-nav .dropdown-menu[data-bs-popper]{margin-top:0}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-nav .dropdown-menu{position:absolute}}.uu-root-container .uu-navbar .navbar-nav .dropdown-menu .dropdown-item.active,.uu-root-container .uu-navbar .navbar-nav .dropdown-menu .dropdown-item:active{color:inherit;background:inherit;font-weight:bold}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-nav .nav-link{padding:var(--bs-uu-navbar-navlink-padding-y) var(--bs-uu-navbar-navlink-padding-x)}}@media(max-width: 768px){.uu-root-container .uu-navbar .navbar-nav .nav-link{background:#000;padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x);border-top:.0625rem solid var(--bs-uu-border-color-dark)}}.uu-root-container .uu-navbar .navbar-nav .nav-link.dropdown-toggle.show::after{transform:rotate(180deg)}.uu-root-container .uu-navbar .navbar-nav .show>.nav-link,.uu-root-container .uu-navbar .navbar-nav .nav-link.active,.uu-root-container .uu-navbar .navbar-nav .nav-link.show{color:var(--bs-nav-link-hover-color)}.uu-root-container .uu-navbar .navbar-toggler{color:#fff;border-color:rgba(0,0,0,0)}.uu-root-container .uu-navbar .navbar-toggler-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 33, 33, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.uu-root-container .uu-navbar .navbar-text{color:#fff}.uu-root-container .uu-navbar .navbar-text a,.uu-root-container .uu-navbar .navbar-text a:hover,.uu-root-container .uu-navbar .navbar-text a:focus{color:#ffcd00}@media(max-width: 768px){.uu-root-container .uu-navbar .navbar-text{color:#000}}.uu-root-container .uu-fullwidth-unified-header,.uu-root-container .uu-unified-header{width:100%;background:var(--bs-uu-container-bg);display:flex;height:var(--bs-uu-unified-header-height);flex-wrap:nowrap;flex-direction:row;align-items:stretch;justify-content:flex-start;font-size:1rem;padding-left:var(--bs-uu-unified-header-padding-x);padding-right:var(--bs-uu-unified-header-padding-x);border-bottom:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-border-color-light)}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header,.uu-root-container .uu-unified-header{height:var(--bs-uu-unified-header-mobile-height);padding-left:var(--bs-uu-unified-header-padding-mobile-x);padding-right:var(--bs-uu-unified-header-padding-mobile-x);position:sticky;top:0;z-index:9000}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container,.uu-root-container .uu-unified-header .uu-unified-header-container{width:100%;display:flex;justify-content:space-between;align-items:stretch;flex-wrap:inherit}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-text,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-text{padding-top:var(--bs-uu-header-padding-y);padding-bottom:var(--bs-uu-header-padding-y);align-items:center;display:flex;font-size:var(--bs-uu-header-font-size)}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .border-left,.uu-root-container .uu-unified-header .uu-unified-header-container .border-left{padding-left:var(--bs-uu-header-border-gap) !important;border-left:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-border-color-light) !important}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .border-right,.uu-root-container .uu-unified-header .uu-unified-header-container .border-right{padding-right:var(--bs-uu-header-border-gap) !important;border-right:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-border-color-light) !important}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand{flex:1 0 auto;display:grid;grid-template-columns:auto auto;align-items:stretch;padding:0}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-logo,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-logo{height:var(--bs-uu-unified-header-height);padding:var(--bs-uu-brand-padding-y) var(--bs-uu-brand-padding-x) var(--bs-uu-brand-padding-y) 0}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-logo,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-logo{height:var(--bs-uu-unified-header-mobile-height);padding:var(--bs-uu-brand-logo-padding-y) var(--bs-uu-brand-logo-padding-x)}}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand{grid-template-columns:unset;grid-template-rows:1fr 1fr;margin-left:0}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-logo img,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-logo img{height:100%}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-sender,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-sender{display:flex;height:var(--bs-uu-unified-header-height);align-items:center;justify-content:center;background:var(--bs-uu-brand-sender-bg);color:var(--bs-uu-brand-sender-color);font-family:"Merriweather",serif;font-weight:bolder;min-width:var(--bs-uu-brand-sender-min-width);max-width:var(--bs-uu-brand-sender-max-width);text-align:center;padding:1rem 2.5rem}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-sender,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-sender{display:none}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container>.uu-logo img,.uu-root-container .uu-unified-header .uu-unified-header-container>.uu-logo img{max-height:calc(var(--bs-uu-unified-header-height) - 2*var(--bs-uu-header-padding-y))}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-toggler,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-toggler{border:none;padding:0;border-radius:0}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-toggler,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-toggler{display:none}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-collapse,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-collapse{display:flex;padding:0;height:var(--bs-uu-unified-header-height);align-items:stretch}}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-collapse,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-collapse{position:fixed;top:var(--bs-uu-unified-header-mobile-height);left:0;width:100%}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav{height:var(--bs-uu-unified-header-height);--bs-nav-link-color: #000;--bs-nav-link-disabled-color: #adadad;--bs-nav-link-hover-border-color: #ffcd00}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav{flex-direction:row}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu{--bs-dropdown-bg: #fff;border-top:none;margin-top:0 !important;margin-left:0 !important}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu{position:absolute}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item.active,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item:active,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item.active,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item:active{color:inherit;background:inherit;font-weight:bold}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link{padding:0 var(--bs-uu-navbar-navlink-padding-x);display:flex;align-items:center;height:var(--bs-uu-unified-header-height);border-top:var(--bs-uu-unified-header-navlink-indicator-height) solid rgba(0,0,0,0);border-bottom:var(--bs-uu-unified-header-navlink-indicator-height) solid rgba(0,0,0,0)}}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link{background:var(--bs-uu-unified-header-navlink-mobile-bg);color:var(--bs-uu-unified-header-navlink-mobile-color);padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x);border-top:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-border-color-dark)}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link.dropdown-toggle.show::after,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link.dropdown-toggle.show::after{transform:rotate(180deg)}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .show>.nav-link,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link.active,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link:hover,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link.show,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .show>.nav-link,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link.active,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link:hover,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link.show{border-bottom-color:var(--bs-nav-link-hover-border-color)}.uu-root-container .uu-unified-header{padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x)}@media(min-width: 76rem){.uu-root-container .uu-unified-header{padding-left:calc(50% - var(--bs-uu-content-width)/2);padding-right:calc(50% - var(--bs-uu-content-width)/2)}}.uu-root-container .uu-hero,.uu-root-container .uu-cover .uu-cover-hero{background:var(--bs-uu-hero-bg);color:var(--bs-uu-hero-color);padding-top:var(--bs-uu-hero-padding-y);padding-bottom:var(--bs-uu-hero-padding-y);font-weight:var(--bs-uu-hero-font-weight)}.uu-root-container .uu-hero>h1,.uu-root-container .uu-cover .uu-cover-hero>h1,.uu-root-container .uu-hero>.h1,.uu-root-container .uu-cover .uu-cover-hero>.h1{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h2,.uu-root-container .uu-cover .uu-cover-hero>h2,.uu-root-container .uu-hero>.h2,.uu-root-container .uu-cover .uu-cover-hero>.h2{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h3,.uu-root-container .uu-cover .uu-cover-hero>h3,.uu-root-container .uu-hero>.h3,.uu-root-container .uu-cover .uu-cover-hero>.h3{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h4,.uu-root-container .uu-cover .uu-cover-hero>h4,.uu-root-container .uu-hero>.h4,.uu-root-container .uu-cover .uu-cover-hero>.h4{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h5,.uu-root-container .uu-cover .uu-cover-hero>h5,.uu-root-container .uu-hero>.h5,.uu-root-container .uu-cover .uu-cover-hero>.h5{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h6,.uu-root-container .uu-cover .uu-cover-hero>h6,.uu-root-container .uu-hero>.h6,.uu-root-container .uu-cover .uu-cover-hero>.h6{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h7,.uu-root-container .uu-cover .uu-cover-hero>h7,.uu-root-container .uu-hero>.h7,.uu-root-container .uu-cover .uu-cover-hero>.h7{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero p:last-child,.uu-root-container .uu-cover .uu-cover-hero p:last-child{margin:0;padding:0}.uu-root-container .uu-cover{display:flex;position:relative;justify-content:center;overflow:hidden;width:100%;max-height:var(--bs-uu-cover-default-height)}.uu-root-container .uu-cover.h-200{max-height:200px}.uu-root-container .uu-cover.h-300{max-height:300px}.uu-root-container .uu-cover.h-400{max-height:400px}.uu-root-container .uu-cover.h-500{max-height:500px}@media(max-width: 575.98px){.uu-root-container .uu-cover.h-sm-200{max-height:200px}.uu-root-container .uu-cover.h-sm-300{max-height:300px}.uu-root-container .uu-cover.h-sm-400{max-height:400px}.uu-root-container .uu-cover.h-sm-500{max-height:500px}}@media(max-width: 767.98px){.uu-root-container .uu-cover.h-md-200{max-height:200px}.uu-root-container .uu-cover.h-md-300{max-height:300px}.uu-root-container .uu-cover.h-md-400{max-height:400px}.uu-root-container .uu-cover.h-md-500{max-height:500px}}@media(max-width: 991.98px){.uu-root-container .uu-cover.h-lg-200{max-height:200px}.uu-root-container .uu-cover.h-lg-300{max-height:300px}.uu-root-container .uu-cover.h-lg-400{max-height:400px}.uu-root-container .uu-cover.h-lg-500{max-height:500px}}@media(max-width: 1199.98px){.uu-root-container .uu-cover.h-xl-200{max-height:200px}.uu-root-container .uu-cover.h-xl-300{max-height:300px}.uu-root-container .uu-cover.h-xl-400{max-height:400px}.uu-root-container .uu-cover.h-xl-500{max-height:500px}}@media(max-width: 1399.98px){.uu-root-container .uu-cover.h-xxl-200{max-height:200px}.uu-root-container .uu-cover.h-xxl-300{max-height:300px}.uu-root-container .uu-cover.h-xxl-400{max-height:400px}.uu-root-container .uu-cover.h-xxl-500{max-height:500px}}.uu-root-container .uu-cover .uu-cover-image{display:block;height:100%;width:100%}@media(max-width: 768px){.uu-root-container .uu-cover .uu-cover-image{width:unset}}.uu-root-container .uu-cover .uu-cover-copyright{position:absolute;bottom:0;left:0;padding:var(--bs-uu-cover-copyright-padding-y) var(--bs-uu-cover-copyright-padding-x);background-color:var(--bs-uu-cover-copyright-background-color);color:var(--bs-uu-cover-copyright-text-color);font-size:var(--bs-uu-cover-copyright-text-size)}.uu-root-container .uu-cover .uu-cover-copyright a{color:inherit}.uu-root-container .uu-cover .uu-cover-copyright.uu-cover-copyright-right{right:0;left:unset}.uu-root-container .uu-cover .uu-cover-copyright.uu-cover-copyright-top{top:0;bottom:unset}.uu-root-container .uu-cover .uu-cover-hero{position:absolute;bottom:0;width:calc(100% - calc(var(--bs-uu-sidebar-width) + 50% - var(--bs-uu-content-width) / 2 + var(--bs-uu-sidebar-padding-x)))}@media(max-width: 76rem){.uu-root-container .uu-cover .uu-cover-hero{width:calc(100% - calc(var(--bs-uu-sidebar-width) + var(--bs-uu-sidebar-padding-x) * 2))}}.uu-root-container .uu-cover .uu-cover-hero:not(.uu-cover-hero-left){right:0;padding-left:var(--bs-uu-sidebar-gap)}.uu-root-container .uu-cover .uu-cover-hero.uu-cover-hero-left{left:0;padding-right:var(--bs-uu-sidebar-gap)}@media(max-width: 992px){.uu-root-container .uu-cover .uu-cover-hero{width:100%}.uu-root-container .uu-cover .uu-cover-hero:not(.uu-cover-hero-left),.uu-root-container .uu-cover .uu-cover-hero.uu-cover-hero-left{padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x)}}.uu-root-container .uu-sidebar-container{position:relative;width:100%;flex-grow:1;display:flex;flex-direction:row;gap:var(--bs-uu-sidebar-gap)}@media(max-width: 992px){.uu-root-container .uu-sidebar-container{flex-direction:column;gap:0}}.uu-root-container .uu-sidebar-container .uu-sidebar{order:1;background:var(--bs-uu-sidebar-background);color:var(--bs-uu-sidebar-color);flex:0 0 calc(var(--bs-uu-sidebar-width) + 50% - var(--bs-uu-content-width)/2 + var(--bs-uu-sidebar-padding-x));padding:var(--bs-uu-sidebar-padding-y) var(--bs-uu-sidebar-padding-x) var(--bs-uu-sidebar-padding-y) calc(50% - var(--bs-uu-content-width)/2);z-index:100}@media(max-width: 76rem){.uu-root-container .uu-sidebar-container .uu-sidebar{padding-left:var(--bs-uu-sidebar-padding-x);flex-basis:calc(var(--bs-uu-sidebar-width) + var(--bs-uu-sidebar-padding-x)*2)}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar{flex-basis:auto;padding:var(--bs-uu-sidebar-mobile-padding-y) var(--bs-uu-container-padding-x)}}.uu-root-container .uu-sidebar-container .uu-sidebar img,.uu-root-container .uu-sidebar-container .uu-sidebar code,.uu-root-container .uu-sidebar-container .uu-sidebar p,.uu-root-container .uu-sidebar-container .uu-sidebar span,.uu-root-container .uu-sidebar-container .uu-sidebar pre{display:inline-block}.uu-root-container .uu-sidebar-container .uu-sidebar div,.uu-root-container .uu-sidebar-container .uu-sidebar img,.uu-root-container .uu-sidebar-container .uu-sidebar code,.uu-root-container .uu-sidebar-container .uu-sidebar p,.uu-root-container .uu-sidebar-container .uu-sidebar span,.uu-root-container .uu-sidebar-container .uu-sidebar pre{max-width:var(--bs-uu-sidebar-width)}@media(max-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar div,.uu-root-container .uu-sidebar-container .uu-sidebar img,.uu-root-container .uu-sidebar-container .uu-sidebar code,.uu-root-container .uu-sidebar-container .uu-sidebar p,.uu-root-container .uu-sidebar-container .uu-sidebar span,.uu-root-container .uu-sidebar-container .uu-sidebar pre{max-width:100%}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle{font-size:1.1rem;margin:0;border:none;text-align:left;width:100%;display:flex;align-items:center;justify-content:space-between;padding:0;background:rgba(0,0,0,0)}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle:hover{background:none}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle::after{border-bottom:0;border-left:.3em solid rgba(0,0,0,0);border-right:.3em solid rgba(0,0,0,0);border-top:.3em solid;content:"";display:inline-block;transition:transform .3s linear}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle[aria-expanded=true]::after{transform:rotate(180deg)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle{display:none}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse{padding-top:var(--bs-uu-container-padding-y)}}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse{display:block}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h1,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h1{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h1.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h2,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h2{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h2.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h3,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h3{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h3.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h4,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h4{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h4.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h5,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h5{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h5.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h6,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h6{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h6.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h7,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h7{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h7.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav{flex-direction:column}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav{padding-left:1.5rem}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link{color:var(--bs-body-color);border-bottom:.0625rem solid var(--bs-uu-border-color);padding:var(--bs-uu-sidebar-nav-padding-y) var(--bs-uu-sidebar-nav-padding-y)}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link.is-active{font-weight:bold}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link:hover,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link:focus{text-decoration:underline}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link.disabled{color:var(--bs-uu-sidebar-nav-disabled-color);cursor:not-allowed}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link.active{font-weight:var(--bs-uu-sidebar-nav-active-font-weight)}.uu-root-container .uu-sidebar-container .uu-sidebar-content{order:2;flex:1 1 auto;min-width:0;padding:var(--bs-uu-sidebar-padding-y) var(--bs-uu-container-padding-x) var(--bs-uu-sidebar-padding-y)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content{padding-right:max( + );display:flex;justify-content:space-between;align-items:center;flex-wrap:inherit}@media(max-width: 76rem){.uu-root-container .uu-navbar .uu-navbar-container{padding-left:calc(var(--bs-uu-container-padding-x) - var(--bs-uu-navbar-navlink-padding-x));padding-right:calc(var(--bs-uu-container-padding-x) - var(--bs-uu-navbar-navlink-padding-x))}}@media(max-width: 768px){.uu-root-container .uu-navbar .uu-navbar-container{padding-left:0;padding-right:0}}.uu-root-container .uu-navbar .navbar-brand{padding-left:.75rem}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-brand{display:none}}.uu-root-container .uu-navbar .navbar-brand img{height:1.5rem}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-toggler{display:none}.uu-root-container .uu-navbar .navbar-collapse{display:flex !important;flex-basis:auto}}.uu-root-container .uu-navbar .navbar-nav{--bs-nav-link-color: #fff;--bs-nav-link-disabled-color: #adadad;--bs-nav-link-hover-color: #ffcd00}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-nav{flex-direction:row}}.uu-root-container .uu-navbar .navbar-nav .dropdown-menu{--bs-dropdown-bg: var(--bs-uu-navbar-dropdown-bg);border-top:none}.uu-root-container .uu-navbar .navbar-nav .dropdown-menu[data-bs-popper]{margin-top:0}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-nav .dropdown-menu{position:absolute}}.uu-root-container .uu-navbar .navbar-nav .dropdown-menu .dropdown-item.active,.uu-root-container .uu-navbar .navbar-nav .dropdown-menu .dropdown-item:active{color:inherit;background:inherit;font-weight:bold}@media(min-width: 768px){.uu-root-container .uu-navbar .navbar-nav .nav-link{padding:var(--bs-uu-navbar-navlink-padding-y) var(--bs-uu-navbar-navlink-padding-x)}}@media(max-width: 768px){.uu-root-container .uu-navbar .navbar-nav .nav-link{background:#000;padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x);border-top:.0625rem solid var(--bs-uu-border-color-dark)}}.uu-root-container .uu-navbar .navbar-nav .nav-link.dropdown-toggle.show::after{transform:rotate(180deg)}.uu-root-container .uu-navbar .navbar-nav .show>.nav-link,.uu-root-container .uu-navbar .navbar-nav .nav-link.active,.uu-root-container .uu-navbar .navbar-nav .nav-link.show{color:var(--bs-nav-link-hover-color)}.uu-root-container .uu-navbar .navbar-toggler{color:var(--bs-uu-navbar-mobile-color);border-color:rgba(0,0,0,0)}.uu-root-container .uu-navbar .navbar-toggler-icon{background-image:var(--bs-navbar-toggler-icon-bg)}.uu-root-container .uu-navbar .navbar-text{color:#fff}.uu-root-container .uu-navbar .navbar-text a,.uu-root-container .uu-navbar .navbar-text a:hover,.uu-root-container .uu-navbar .navbar-text a:focus{color:#ffcd00}@media(max-width: 768px){.uu-root-container .uu-navbar .navbar-text{color:#000}}.uu-root-container .uu-fullwidth-unified-header,.uu-root-container .uu-unified-header{width:100%;background:var(--bs-uu-container-bg);transition:background .1s linear,color .1s linear,border-color .1s linear;display:flex;height:var(--bs-uu-unified-header-height);flex-wrap:nowrap;flex-direction:row;align-items:stretch;justify-content:flex-start;font-size:1rem;padding-left:var(--bs-uu-unified-header-padding-x);padding-right:var(--bs-uu-unified-header-padding-x);border-bottom:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-header-border-color)}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header,.uu-root-container .uu-unified-header{height:var(--bs-uu-unified-header-mobile-height);padding-left:var(--bs-uu-unified-header-padding-mobile-x);padding-right:var(--bs-uu-unified-header-padding-mobile-x);position:sticky;top:0;z-index:9000}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container,.uu-root-container .uu-unified-header .uu-unified-header-container{width:100%;display:flex;justify-content:space-between;align-items:stretch;flex-wrap:inherit}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-text,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-text{padding-top:var(--bs-uu-header-padding-y);padding-bottom:var(--bs-uu-header-padding-y);align-items:center;display:flex;font-size:var(--bs-uu-header-font-size)}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .border-left,.uu-root-container .uu-unified-header .uu-unified-header-container .border-left{padding-left:var(--bs-uu-header-border-gap) !important;border-left:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-header-border-color) !important}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .border-right,.uu-root-container .uu-unified-header .uu-unified-header-container .border-right{padding-right:var(--bs-uu-header-border-gap) !important;border-right:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-header-border-color) !important}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand{flex:1 0 auto;display:grid;grid-template-columns:auto auto;align-items:stretch;padding:0}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-logo,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-logo{height:var(--bs-uu-unified-header-height);padding:var(--bs-uu-brand-padding-y) var(--bs-uu-brand-padding-x) var(--bs-uu-brand-padding-y) 0}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-logo,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-logo{height:var(--bs-uu-unified-header-mobile-height);padding:var(--bs-uu-brand-logo-padding-y) var(--bs-uu-brand-logo-padding-x)}}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand{grid-template-columns:unset;grid-template-rows:1fr 1fr;margin-left:0}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-logo img,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-logo img{height:100%}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-sender,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-sender{display:flex;height:var(--bs-uu-unified-header-height);align-items:center;justify-content:center;background:var(--bs-uu-brand-sender-bg);color:var(--bs-uu-brand-sender-color);font-family:"Merriweather",serif;font-weight:bolder;min-width:var(--bs-uu-brand-sender-min-width);max-width:var(--bs-uu-brand-sender-max-width);text-align:center;padding:1rem 2.5rem}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .uu-brand .uu-sender,.uu-root-container .uu-unified-header .uu-unified-header-container .uu-brand .uu-sender{display:none}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container>.uu-logo img,.uu-root-container .uu-unified-header .uu-unified-header-container>.uu-logo img{max-height:calc(var(--bs-uu-unified-header-height) - 2*var(--bs-uu-header-padding-y))}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-toggler,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-toggler{border:none;padding:0;border-radius:0}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-toggler,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-toggler{display:none}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-collapse,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-collapse{display:flex;padding:0;height:var(--bs-uu-unified-header-height);align-items:stretch}}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-collapse,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-collapse{position:fixed;top:var(--bs-uu-unified-header-mobile-height);left:0;width:100%}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav{height:var(--bs-uu-unified-header-height);--bs-nav-link-color: var(--bs-uu-unified-header-navlink-color);--bs-nav-link-bg: var(--bs-uu-unified-header-navlink-bg);--bs-nav-link-disabled-color: #adadad;--bs-nav-link-hover-border-color: #ffcd00}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav{flex-direction:row}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu{--bs-dropdown-bg: var(--bs-uu-navbar-dropdown-bg);border-top:none;margin-top:0 !important;margin-left:0 !important}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu{position:absolute}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item.active,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item:active,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item.active,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .dropdown-menu .dropdown-item:active{color:inherit;background:inherit;font-weight:bold}@media(min-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link{padding:0 var(--bs-uu-navbar-navlink-padding-x);display:flex;align-items:center;height:var(--bs-uu-unified-header-height);border-top:var(--bs-uu-unified-header-navlink-indicator-height) solid rgba(0,0,0,0);border-bottom:var(--bs-uu-unified-header-navlink-indicator-height) solid rgba(0,0,0,0)}}@media(max-width: 768px){.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link{background:var(--bs-uu-unified-header-navlink-mobile-bg);color:var(--bs-uu-unified-header-navlink-mobile-color);padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x);border-top:var(--bs-uu-unified-header-border-size) solid var(--bs-uu-border-color-dark)}}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link.dropdown-toggle.show::after,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link.dropdown-toggle.show::after{transform:rotate(180deg)}.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .show>.nav-link,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link.active,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link:hover,.uu-root-container .uu-fullwidth-unified-header .uu-unified-header-container .navbar-nav .nav-link.show,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .show>.nav-link,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link.active,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link:hover,.uu-root-container .uu-unified-header .uu-unified-header-container .navbar-nav .nav-link.show{border-bottom-color:var(--bs-nav-link-hover-border-color)}.uu-root-container .uu-unified-header{padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x)}@media(min-width: 76rem){.uu-root-container .uu-unified-header{padding-left:calc(50% - var(--bs-uu-content-width)/2);padding-right:calc(50% - var(--bs-uu-content-width)/2)}}.uu-root-container a,.uu-root-container .alert,.uu-root-container .code,.uu-root-container code,.uu-root-container h1,.uu-root-container .h1,.uu-root-container h2,.uu-root-container .h2,.uu-root-container h3,.uu-root-container .h3{transition:background .1s linear,color .1s linear,border-color .1s linear}.uu-root-container .uu-hero,.uu-root-container .uu-cover .uu-cover-hero{background:var(--bs-uu-hero-bg);color:var(--bs-uu-hero-color);padding-top:var(--bs-uu-hero-padding-y);padding-bottom:var(--bs-uu-hero-padding-y);font-weight:var(--bs-uu-hero-font-weight);transition:background .1s linear,color .1s linear,border-color .1s linear}.uu-root-container .uu-hero>h1,.uu-root-container .uu-cover .uu-cover-hero>h1,.uu-root-container .uu-hero>.h1,.uu-root-container .uu-cover .uu-cover-hero>.h1{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h2,.uu-root-container .uu-cover .uu-cover-hero>h2,.uu-root-container .uu-hero>.h2,.uu-root-container .uu-cover .uu-cover-hero>.h2{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h3,.uu-root-container .uu-cover .uu-cover-hero>h3,.uu-root-container .uu-hero>.h3,.uu-root-container .uu-cover .uu-cover-hero>.h3{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h4,.uu-root-container .uu-cover .uu-cover-hero>h4,.uu-root-container .uu-hero>.h4,.uu-root-container .uu-cover .uu-cover-hero>.h4{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h5,.uu-root-container .uu-cover .uu-cover-hero>h5,.uu-root-container .uu-hero>.h5,.uu-root-container .uu-cover .uu-cover-hero>.h5{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h6,.uu-root-container .uu-cover .uu-cover-hero>h6,.uu-root-container .uu-hero>.h6,.uu-root-container .uu-cover .uu-cover-hero>.h6{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero>h7,.uu-root-container .uu-cover .uu-cover-hero>h7,.uu-root-container .uu-hero>.h7,.uu-root-container .uu-cover .uu-cover-hero>.h7{font-weight:var(--bs-uu-hero-font-weight);margin:0}.uu-root-container .uu-hero p:last-child,.uu-root-container .uu-cover .uu-cover-hero p:last-child{margin:0;padding:0}.uu-root-container .uu-cover{display:flex;position:relative;justify-content:center;overflow:hidden;width:100%;max-height:var(--bs-uu-cover-default-height)}.uu-root-container .uu-cover.h-200{max-height:200px}.uu-root-container .uu-cover.h-300{max-height:300px}.uu-root-container .uu-cover.h-400{max-height:400px}.uu-root-container .uu-cover.h-500{max-height:500px}@media(max-width: 575.98px){.uu-root-container .uu-cover.h-sm-200{max-height:200px}.uu-root-container .uu-cover.h-sm-300{max-height:300px}.uu-root-container .uu-cover.h-sm-400{max-height:400px}.uu-root-container .uu-cover.h-sm-500{max-height:500px}}@media(max-width: 767.98px){.uu-root-container .uu-cover.h-md-200{max-height:200px}.uu-root-container .uu-cover.h-md-300{max-height:300px}.uu-root-container .uu-cover.h-md-400{max-height:400px}.uu-root-container .uu-cover.h-md-500{max-height:500px}}@media(max-width: 991.98px){.uu-root-container .uu-cover.h-lg-200{max-height:200px}.uu-root-container .uu-cover.h-lg-300{max-height:300px}.uu-root-container .uu-cover.h-lg-400{max-height:400px}.uu-root-container .uu-cover.h-lg-500{max-height:500px}}@media(max-width: 1199.98px){.uu-root-container .uu-cover.h-xl-200{max-height:200px}.uu-root-container .uu-cover.h-xl-300{max-height:300px}.uu-root-container .uu-cover.h-xl-400{max-height:400px}.uu-root-container .uu-cover.h-xl-500{max-height:500px}}@media(max-width: 1399.98px){.uu-root-container .uu-cover.h-xxl-200{max-height:200px}.uu-root-container .uu-cover.h-xxl-300{max-height:300px}.uu-root-container .uu-cover.h-xxl-400{max-height:400px}.uu-root-container .uu-cover.h-xxl-500{max-height:500px}}.uu-root-container .uu-cover .uu-cover-image{display:block;height:100%;width:100%}@media(max-width: 768px){.uu-root-container .uu-cover .uu-cover-image{width:unset}}.uu-root-container .uu-cover .uu-cover-copyright{position:absolute;bottom:0;left:0;padding:var(--bs-uu-cover-copyright-padding-y) var(--bs-uu-cover-copyright-padding-x);background-color:var(--bs-uu-cover-copyright-background-color);color:var(--bs-uu-cover-copyright-text-color);font-size:var(--bs-uu-cover-copyright-text-size)}.uu-root-container .uu-cover .uu-cover-copyright a{color:inherit}.uu-root-container .uu-cover .uu-cover-copyright.uu-cover-copyright-right{right:0;left:unset}.uu-root-container .uu-cover .uu-cover-copyright.uu-cover-copyright-top{top:0;bottom:unset}.uu-root-container .uu-cover .uu-cover-hero{position:absolute;bottom:0;width:calc(100% - calc(var(--bs-uu-sidebar-width) + 50% - var(--bs-uu-content-width) / 2 + var(--bs-uu-sidebar-padding-x)))}@media(max-width: 76rem){.uu-root-container .uu-cover .uu-cover-hero{width:calc(100% - calc(var(--bs-uu-sidebar-width) + var(--bs-uu-sidebar-padding-x) * 2))}}.uu-root-container .uu-cover .uu-cover-hero:not(.uu-cover-hero-left){right:0;padding-left:var(--bs-uu-sidebar-gap)}.uu-root-container .uu-cover .uu-cover-hero.uu-cover-hero-left{left:0;padding-right:var(--bs-uu-sidebar-gap)}@media(max-width: 992px){.uu-root-container .uu-cover .uu-cover-hero{width:100%}.uu-root-container .uu-cover .uu-cover-hero:not(.uu-cover-hero-left),.uu-root-container .uu-cover .uu-cover-hero.uu-cover-hero-left{padding-left:var(--bs-uu-container-padding-x);padding-right:var(--bs-uu-container-padding-x)}}.uu-root-container .uu-sidebar-container{position:relative;width:100%;flex-grow:1;display:flex;flex-direction:row;gap:var(--bs-uu-sidebar-gap)}@media(max-width: 992px){.uu-root-container .uu-sidebar-container{flex-direction:column;gap:0}}.uu-root-container .uu-sidebar-container .uu-sidebar{order:1;background:var(--bs-uu-sidebar-background);color:var(--bs-uu-sidebar-color);flex:0 0 calc(var(--bs-uu-sidebar-width) + 50% - var(--bs-uu-content-width)/2 + var(--bs-uu-sidebar-padding-x));padding:var(--bs-uu-sidebar-padding-y) var(--bs-uu-sidebar-padding-x) var(--bs-uu-sidebar-padding-y) calc(50% - var(--bs-uu-content-width)/2);z-index:100;transition:background .1s linear,color .1s linear,border-color .1s linear}@media(max-width: 76rem){.uu-root-container .uu-sidebar-container .uu-sidebar{padding-left:var(--bs-uu-sidebar-padding-x);flex-basis:calc(var(--bs-uu-sidebar-width) + var(--bs-uu-sidebar-padding-x)*2)}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar{flex-basis:auto;padding:var(--bs-uu-sidebar-mobile-padding-y) var(--bs-uu-container-padding-x)}}.uu-root-container .uu-sidebar-container .uu-sidebar img,.uu-root-container .uu-sidebar-container .uu-sidebar code,.uu-root-container .uu-sidebar-container .uu-sidebar p,.uu-root-container .uu-sidebar-container .uu-sidebar span,.uu-root-container .uu-sidebar-container .uu-sidebar pre{display:inline-block}.uu-root-container .uu-sidebar-container .uu-sidebar div,.uu-root-container .uu-sidebar-container .uu-sidebar img,.uu-root-container .uu-sidebar-container .uu-sidebar code,.uu-root-container .uu-sidebar-container .uu-sidebar p,.uu-root-container .uu-sidebar-container .uu-sidebar span,.uu-root-container .uu-sidebar-container .uu-sidebar pre{max-width:var(--bs-uu-sidebar-width)}@media(max-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar div,.uu-root-container .uu-sidebar-container .uu-sidebar img,.uu-root-container .uu-sidebar-container .uu-sidebar code,.uu-root-container .uu-sidebar-container .uu-sidebar p,.uu-root-container .uu-sidebar-container .uu-sidebar span,.uu-root-container .uu-sidebar-container .uu-sidebar pre{max-width:100%}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle{font-size:1.1rem;margin:0;border:none;text-align:left;width:100%;display:flex;align-items:center;justify-content:space-between;padding:0;background:rgba(0,0,0,0)}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle:hover{background:none}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle::after{border-bottom:0;border-left:.3em solid rgba(0,0,0,0);border-right:.3em solid rgba(0,0,0,0);border-top:.3em solid;content:"";display:inline-block;transition:transform .3s linear}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle[aria-expanded=true]::after{transform:rotate(180deg)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-toggle{display:none}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse{padding-top:var(--bs-uu-container-padding-y)}}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse{display:block}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h1,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h1{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h1.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h2,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h2{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h2.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h3,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h3{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h3.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h4,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h4{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h4.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h5,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h5{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h5.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h6,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h6{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h6.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h7,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h7{border-bottom:.1875rem solid var(--bs-uu-border-color);padding-bottom:var(--bs-uu-sidebar-header-padding-y);margin-bottom:0;font-weight:var(--bs-uu-sidebar-header-font-weight)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .h7.uu-sidebar-header-linked{margin-right:calc(-1*var(--bs-uu-sidebar-padding-x))}}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav{flex-direction:column}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav{padding-left:1.5rem}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link{color:var(--bs-body-color);border-bottom:.0625rem solid var(--bs-uu-border-color);padding:var(--bs-uu-sidebar-nav-padding-y) var(--bs-uu-sidebar-nav-padding-y)}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link.is-active{font-weight:bold}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link:hover,.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link:focus{text-decoration:underline}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link.disabled{color:var(--bs-uu-sidebar-nav-disabled-color);cursor:not-allowed}.uu-root-container .uu-sidebar-container .uu-sidebar .uu-sidebar-collapse .nav .nav-link.active{font-weight:var(--bs-uu-sidebar-nav-active-font-weight)}.uu-root-container .uu-sidebar-container .uu-sidebar-content{order:2;flex:1 1 auto;min-width:0;padding:var(--bs-uu-sidebar-padding-y) var(--bs-uu-container-padding-x) var(--bs-uu-sidebar-padding-y)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content{padding-right:max( calc(50% - var(--bs-uu-content-width) / 2), var(--bs-uu-container-padding-x) - );padding-left:0;padding-top:var(--bs-uu-sidebar-padding-y)}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h1.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h1.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h2.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h2.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h3.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h3.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h4.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h4.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h5.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h5.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h6.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h6.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h7.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h7.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}@media(min-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-sticky .uu-sidebar>*{position:sticky;top:var(--bs-uu-sidebar-padding-y)}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-sticky .uu-sidebar{position:sticky;top:0}.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-sticky.uu-sidebar-mobile-bottom .uu-sidebar{top:unset;bottom:0}}@media(max-width: 768px){.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-sticky .uu-sidebar{position:sticky;top:var(--bs-uu-navbar-mobile-height)}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-bottom .uu-sidebar{order:2}.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-bottom .uu-sidebar-content{order:1}}@media(min-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar{order:2;padding-left:var(--bs-uu-sidebar-padding-x);padding-right:calc(50% - var(--bs-uu-content-width)/2)}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h1.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h2.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h3.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h4.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h5.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h6.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h7.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content{order:1;padding-right:0;padding-left:calc(50% - var(--bs-uu-content-width)/2)}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h1.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h2.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h3.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h4.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h5.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h6.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h7.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}}@media(min-width: 992px)and (max-width: 76rem){.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content{padding-left:var(--bs-uu-sidebar-padding-x)}}.uu-root-container .uu-form .uu-form-text-row .uu-form-text-aside,.uu-root-container .uu-form .uu-form-row .uu-form-help{color:var(--bs-uu-form-aside-color);font-size:var(--bs-uu-form-aside-font-size)}.uu-root-container .uu-form .uu-form-text-row .uu-form-text-aside p:last-child,.uu-root-container .uu-form .uu-form-row .uu-form-help p:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-row,.uu-root-container .uu-form .uu-form-text-row{display:grid;margin-bottom:var(--bs-uu-form-row-gap);grid-template-rows:auto auto}@media(min-width: 992px){.uu-root-container .uu-form .uu-form-row,.uu-root-container .uu-form .uu-form-text-row{grid-template-rows:unset;grid-template-columns:2fr 1fr;gap:var(--bs-uu-form-column-gap)}}.uu-root-container .uu-form .uu-form-row .uu-form-field{background-color:var(--bs-uu-form-field-bg);padding:calc(var(--bs-uu-form-field-padding-y) - var(--bs-uu-form-field-padding-y-compensation)) var(--bs-uu-form-field-padding-y) var(--bs-uu-form-field-padding-y)}.uu-root-container .uu-form .uu-form-row .uu-form-field .input-group-text,.uu-root-container .uu-form .uu-form-row .uu-form-field .form-control::file-selector-button{background:var(--bs-uu-form-field-input-group-bg)}.uu-root-container .uu-form .uu-form-row .uu-form-help{padding:var(--bs-uu-form-help-padding-y) var(--bs-uu-form-help-padding-x)}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h1:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h1:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h2:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h2:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h3:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h3:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h4:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h4:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h5:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h5:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h6:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h6:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h7:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h7:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text p:last-child{margin-bottom:0}.uu-root-container .uu-form.uu-form-no-gap .uu-form-row{margin-bottom:0}.uu-root-container .uu-form.uu-form-no-gap .uu-form-row+.uu-form-row .uu-form-field{padding-top:0}.uu-root-container .uu-form .uu-form-row.uu-form-no-gap{margin-bottom:0;padding-bottom:0}.uu-root-container .uu-form.uu-form-no-aside .uu-form-text-row,.uu-root-container .uu-form .uu-form-text-row.uu-form-no-aside{grid-template-rows:1fr}@media(min-width: 992px){.uu-root-container .uu-form.uu-form-no-aside .uu-form-text-row,.uu-root-container .uu-form .uu-form-text-row.uu-form-no-aside{grid-template-rows:unset;grid-template-columns:1fr}}.uu-root-container .uu-form.uu-form-no-aside .uu-form-text-row .uu-form-text-aside,.uu-root-container .uu-form .uu-form-text-row.uu-form-no-aside .uu-form-text-aside{display:none}.uu-root-container .uu-form.uu-form-no-help .uu-form-row,.uu-root-container .uu-form .uu-form-row.uu-form-no-help{grid-template-rows:1fr}@media(min-width: 992px){.uu-root-container .uu-form.uu-form-no-help .uu-form-row,.uu-root-container .uu-form .uu-form-row.uu-form-no-help{grid-template-rows:unset;grid-template-columns:1fr}}.uu-root-container .uu-form.uu-form-no-help .uu-form-row .uu-form-help,.uu-root-container .uu-form .uu-form-row.uu-form-no-help .uu-form-help{display:none}.uu-root-container .uu-footer{flex-wrap:wrap;background:var(--bs-uu-footer-background-color);color:var(--bs-uu-footer-color);align-items:center;padding-top:var(--bs-uu-footer-padding-y);padding-bottom:var(--bs-uu-footer-padding-y)}@media(max-width: 768px){.uu-root-container .uu-footer{gap:1.25rem}}.uu-root-container .uu-footer p:last-child{margin:0;padding:0}.uu-root-container .uu-footer a,.uu-root-container .uu-footer a:hover,.uu-root-container .uu-footer a:focus,.uu-root-container .uu-footer a:active{color:var(--bs-uu-footer-color)}.uu-root-container .table,.uu-root-container .dt,.uu-root-container .datatables{--bs-table-bg: var(--bs-uu-container-bg)}.uu-list,.uu-list-sidebar{--bs-uu-list-gap-y: 1rem;--bs-uu-list-gap-x: 1.5rem;--bs-uu-list-controls-bg: #efefef;--bs-uu-list-controls-padding-x: 1rem;--bs-uu-list-controls-padding-y: 1rem;--bs-uu-list-controls-gap: 1rem;--bs-uu-list-controls-search-width: 17rem;--bs-uu-list-filters-width: 18rem;--bs-uu-list-filters-gap: 1rem;--bs-uu-list-filters-padding-x: 1rem;--bs-uu-list-filters-padding-y: 0.5rem;--bs-uu-list-filters-label-gap: 1rem 1rem 0.5rem 1rem;--bs-uu-list-filters-border-color: #cecece;--bs-uu-list-filters-border-width: 0.0625rem}[data-bs-theme=dark] .uu-list,[data-bs-theme=dark] .uu-list-sidebar{--bs-uu-list-controls-bg: #343434;--bs-uu-list-filters-border-color: #6c6c6c}.uu-list{display:grid;width:100%;gap:var(--bs-uu-list-gap-y) var(--bs-uu-list-gap-x);grid-template-columns:var(--bs-uu-list-filters-width) auto;grid-template-rows:auto auto;grid-template-areas:"controls controls" "filters content"}.uu-list .uu-list-controls{grid-area:controls;width:100%;background:var(--bs-uu-list-controls-bg);display:grid;grid-template-columns:max-content auto max-content max-content;grid-template-areas:"search searchText order pageSize";align-items:center;padding:var(--bs-uu-list-controls-padding-y) var(--bs-uu-list-controls-padding-x);gap:var(--bs-uu-list-controls-gap)}.uu-list .uu-list-controls .uu-list-search-control{grid-area:search;width:var(--bs-uu-list-controls-search-width)}.uu-list .uu-list-controls .uu-list-search-text-control{grid-area:searchText}.uu-list .uu-list-controls .uu-list-order-control{grid-area:order}.uu-list .uu-list-controls .uu-list-page-size-control{grid-area:pageSize}.uu-list .uu-list-filters{grid-area:filters;background:var(--bs-uu-list-controls-bg)}.uu-list .uu-list-content{grid-column-start:filters;grid-column-end:content}.uu-list .uu-list-filters~.uu-list-content{grid-area:content}.uu-list-sidebar{--bs-uu-sidebar-width: var(--bs-uu-list-filters-width)}.uu-list-filter{--bs-border-color: var(--bs-uu-list-filters-border-color);margin-bottom:var(--bs-uu-list-filters-gap)}.uu-list-filter .uu-list-filter-label{border-bottom:var(--bs-uu-list-filters-border-width) solid var(--bs-uu-list-filters-border-color);padding:var(--bs-uu-list-filters-label-gap);font-weight:500}.uu-list-filter .uu-list-filter-field{padding:var(--bs-uu-list-filters-padding-y) var(--bs-uu-list-filters-padding-x)}.uu-list-filter .form-check{border-bottom:var(--bs-uu-list-filters-border-width) solid var(--bs-uu-list-filters-border-color);display:flex;width:100%;padding:var(--bs-uu-list-filters-padding-y) var(--bs-uu-list-filters-padding-x);gap:.75rem;align-items:center}.uu-list-filter .form-check .form-check-input{flex:0 0 auto;margin:0}.uu-list-filter .form-check .form-check-label{flex:1 1 auto}@font-face{font-family:"icomoon";src:url("../fonts/IcoMoon-Free.ttf") format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"icomoon-additional";src:url("../fonts/icomoon.ttf") format("truetype");font-weight:normal;font-style:normal}[class^=icon-],[class*=" icon-"]{font-family:"icomoon" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}[class^=icon-additional-],[class*=" icon-additional-"]{font-family:"icomoon-additional" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}[class^=icon-]:hover,[class*=" icon-"]:hover{text-decoration:none}.select2-container{display:block}select+.select2-container{z-index:1}.select2-container *:focus{outline:0}.select2-container .select2-selection{width:100%;min-height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2));padding:.375rem .75rem;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);background-color:#fff;border:var(--bs-border-width) solid #dedede;border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.select2-container .select2-selection{transition:none}}.select2-container.select2-container--focus .select2-selection,.select2-container.select2-container--open .select2-selection{border-color:#000;box-shadow:none}.select2-container.select2-container--open.select2-container--below .select2-selection{border-bottom:0 solid rgba(0,0,0,0);border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container.select2-container--open.select2-container--above .select2-selection{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2-search{width:100%}.select2-container .select2-search--inline .select2-search__field{vertical-align:top}.select2-container .select2-selection--single .select2-selection__clear,.select2-container .select2-selection--multiple .select2-selection__clear{position:absolute;top:50%;right:2.25rem;width:.75rem;height:.75rem;padding:.25em .25em;overflow:hidden;text-indent:100%;white-space:nowrap;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat;transform:translateY(-50%)}.select2-container .select2-selection--single .select2-selection__clear:hover,.select2-container .select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat}.select2-container .select2-selection--single .select2-selection__clear>span,.select2-container .select2-selection--multiple .select2-selection__clear>span{display:none}.select2-container+.select2-container{z-index:9003}.select2-container .select2-dropdown{z-index:9003;overflow:hidden;color:var(--bs-body-color);background-color:#fff;border-color:#000;border-radius:0 !important}.select2-container .select2-dropdown.select2-dropdown--below{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2-dropdown.select2-dropdown--above{border-bottom:0 solid rgba(0,0,0,0);border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container .select2-dropdown .select2-search{padding:.375rem .75rem}.select2-container .select2-dropdown .select2-search .select2-search__field{display:block;width:100%;padding:.375rem .75rem;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);background-color:#fff;background-clip:padding-box;border:var(--bs-border-width) solid #dedede;appearance:none;border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.select2-container .select2-dropdown .select2-search .select2-search__field{transition:none}}.select2-container .select2-dropdown .select2-search .select2-search__field:focus{border-color:#000;box-shadow:none}.select2-container .select2-dropdown .select2-results__options:not(.select2-results__options--nested){max-height:15rem;overflow-y:auto}.select2-container .select2-dropdown .select2-results__options .select2-results__option{padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__message{color:var(--bs-secondary-color)}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--highlighted{color:#000;background-color:#e9e9e9}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--selected,.select2-container .select2-dropdown .select2-results__options .select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted){color:#000;background-color:#ffcd00}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--disabled,.select2-container .select2-dropdown .select2-results__options .select2-results__option[aria-disabled=true]{color:var(--bs-secondary-color)}.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group]{padding:0}.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.375rem .375rem;font-weight:500;line-height:1.6;color:#000}.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.375rem .75rem}.select2-container .select2-selection--single{padding:.375rem 2.25rem .375rem .75rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343434' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px}.select2-container .select2-selection--single .select2-selection__rendered{padding:0;font-weight:400;line-height:1.6;color:var(--bs-body-color)}.select2-container .select2-selection--single .select2-selection__rendered .select2-selection__placeholder{font-weight:400;line-height:1.6;color:var(--bs-secondary-color)}.select2-container .select2-selection--single .select2-selection__arrow{display:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:flex;flex-direction:row;flex-wrap:wrap;padding-left:0;margin:0;list-style:none}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{display:flex;flex-direction:row;align-items:center;padding:.35em .65em;margin-right:.375rem;margin-bottom:.375rem;font-size:1rem;color:var(--bs-body-color);cursor:auto;border:var(--bs-border-width) solid #dedede;border-radius:0 !important}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:.75rem;height:.75rem;padding:.25em .25em;margin-right:.25rem;overflow:hidden;text-indent:100%;white-space:nowrap;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat;border:0}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove>span{display:none}.select2-container .select2-selection--multiple .select2-search{display:block;width:100%;height:1.6rem}.select2-container .select2-selection--multiple .select2-search .select2-search__field{width:100%;height:1.6rem;margin-top:0;margin-left:0;font-family:inherit;line-height:1.6;background-color:rgba(0,0,0,0)}.select2-container .select2-selection--multiple .select2-selection__clear{right:.75rem}.select2-container.select2-container--disabled .select2-selection,.select2-container.select2-container--disabled.select2-container--focus .select2-selection{color:var(--bs-secondary-color);cursor:not-allowed;background-color:var(--bs-secondary-bg);border-color:#dedede;box-shadow:none}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__clear{display:none}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__choice,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__choice{cursor:not-allowed}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__choice .select2-selection__choice__remove,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__choice .select2-selection__choice__remove{display:none}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__rendered:not(:empty),.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__rendered:not(:empty){padding-bottom:0}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__rendered:not(:empty)+.select2-search,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__rendered:not(:empty)+.select2-search{display:none}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu).select2-container .select2-selection{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu).select2-container .select2-selection{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-text~.select2-container--bootstrap-5 .select2-selection,.input-group>.btn~.select2-container--bootstrap-5 .select2-selection,.input-group>.dropdown-menu~.select2-container .select2-selection{border-top-left-radius:0;border-bottom-left-radius:0}.input-group .select2-container{flex-grow:1}.input-group .select2-container .select2-selection{height:100%}.is-valid+.select2-container .select2-selection,.was-validated select:valid+.select2-container .select2-selection{border-color:#2db83d}.is-valid+.select2-container.select2-container--focus .select2-selection,.is-valid+.select2-container.select2-container--open .select2-selection,.was-validated select:valid+.select2-container.select2-container--focus .select2-selection,.was-validated select:valid+.select2-container.select2-container--open .select2-selection{border-color:#2db83d;box-shadow:0 0 0 0 rgba(45,184,61,.25)}.is-valid+.select2-container.select2-container--open.select2-container--below .select2-selection,.was-validated select:valid+.select2-container.select2-container--open.select2-container--below .select2-selection{border-bottom:0 solid rgba(0,0,0,0)}.is-valid+.select2-container.select2-container--open.select2-container--above .select2-selection,.was-validated select:valid+.select2-container.select2-container--open.select2-container--above .select2-selection{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.is-invalid+.select2-container .select2-selection,.was-validated select:invalid+.select2-container .select2-selection{border-color:#c00a35}.is-invalid+.select2-container.select2-container--focus .select2-selection,.is-invalid+.select2-container.select2-container--open .select2-selection,.was-validated select:invalid+.select2-container.select2-container--focus .select2-selection,.was-validated select:invalid+.select2-container.select2-container--open .select2-selection{border-color:#c00a35;box-shadow:0 0 0 0 rgba(192,10,53,.25)}.is-invalid+.select2-container.select2-container--open.select2-container--below .select2-selection,.was-validated select:invalid+.select2-container.select2-container--open.select2-container--below .select2-selection{border-bottom:0 solid rgba(0,0,0,0)}.is-invalid+.select2-container.select2-container--open.select2-container--above .select2-selection,.was-validated select:invalid+.select2-container.select2-container--open.select2-container--above .select2-selection{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2--small.select2-selection{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:0 !important}.select2-container .select2--small.select2-selection--single .select2-selection__clear,.select2-container .select2--small.select2-selection--multiple .select2-selection__clear{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--single .select2-selection__clear:hover,.select2-container .select2--small.select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--single .select2-search,.select2-container .select2--small.select2-selection--single .select2-search .select2-search__field,.select2-container .select2--small.select2-selection--multiple .select2-search,.select2-container .select2--small.select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.select2-container .select2--small.select2-dropdown{border-radius:0 !important}.select2-container .select2--small.select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2--small.select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container .select2--small.select2-dropdown .select2-search .select2-search__field{padding:.25rem .5rem;font-size:0.875rem}.select2-container .select2--small.select2-dropdown .select2-results__options .select2-results__option{padding:.25rem .5rem;font-size:0.875rem}.select2-container .select2--small.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.25rem .25rem}.select2-container .select2--small.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.25rem .5rem}.select2-container .select2--small.select2-selection--single{padding:.25rem 2.25rem .25rem .5rem}.select2-container .select2--small.select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:0.875rem}.select2-container .select2--small.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--multiple .select2-selection__clear{right:.5rem}.select2-container .select2--large.select2-selection{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:0 !important}.select2-container .select2--large.select2-selection--single .select2-selection__clear,.select2-container .select2--large.select2-selection--multiple .select2-selection__clear{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--single .select2-selection__clear:hover,.select2-container .select2--large.select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--single .select2-search,.select2-container .select2--large.select2-selection--single .select2-search .select2-search__field,.select2-container .select2--large.select2-selection--multiple .select2-search,.select2-container .select2--large.select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.select2-container .select2--large.select2-dropdown{border-radius:0 !important}.select2-container .select2--large.select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2--large.select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container .select2--large.select2-dropdown .select2-search .select2-search__field{padding:.5rem 1rem;font-size:1.25rem}.select2-container .select2--large.select2-dropdown .select2-results__options .select2-results__option{padding:.5rem 1rem;font-size:1.25rem}.select2-container .select2--large.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.5rem .5rem}.select2-container .select2--large.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.5rem 1rem}.select2-container .select2--large.select2-selection--single{padding:.5rem 2.25rem .5rem 1rem}.select2-container .select2--large.select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:1.25rem}.select2-container .select2--large.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--multiple .select2-selection__clear{right:1rem}.form-select-sm~.select2-container .select2-selection{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:0 !important}.form-select-sm~.select2-container .select2-selection--single .select2-selection__clear,.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__clear{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--single .select2-selection__clear:hover,.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--single .select2-search,.form-select-sm~.select2-container .select2-selection--single .select2-search .select2-search__field,.form-select-sm~.select2-container .select2-selection--multiple .select2-search,.form-select-sm~.select2-container .select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.form-select-sm~.select2-container .select2-dropdown{border-radius:0 !important}.form-select-sm~.select2-container .select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.form-select-sm~.select2-container .select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.form-select-sm~.select2-container .select2-dropdown .select2-search .select2-search__field{padding:.25rem .5rem;font-size:0.875rem}.form-select-sm~.select2-container .select2-dropdown .select2-results__options .select2-results__option{padding:.25rem .5rem;font-size:0.875rem}.form-select-sm~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.25rem .25rem}.form-select-sm~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.25rem .5rem}.form-select-sm~.select2-container .select2-selection--single{padding:.25rem 2.25rem .25rem .5rem}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:0.875rem}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__clear{right:.5rem}.form-select-lg~.select2-container .select2-selection{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:0 !important}.form-select-lg~.select2-container .select2-selection--single .select2-selection__clear,.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__clear{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--single .select2-selection__clear:hover,.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--single .select2-search,.form-select-lg~.select2-container .select2-selection--single .select2-search .select2-search__field,.form-select-lg~.select2-container .select2-selection--multiple .select2-search,.form-select-lg~.select2-container .select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.form-select-lg~.select2-container .select2-dropdown{border-radius:0 !important}.form-select-lg~.select2-container .select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.form-select-lg~.select2-container .select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.form-select-lg~.select2-container .select2-dropdown .select2-search .select2-search__field{padding:.5rem 1rem;font-size:1.25rem}.form-select-lg~.select2-container .select2-dropdown .select2-results__options .select2-results__option{padding:.5rem 1rem;font-size:1.25rem}.form-select-lg~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.5rem .5rem}.form-select-lg~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.5rem 1rem}.form-select-lg~.select2-container .select2-selection--single{padding:.5rem 2.25rem .5rem 1rem}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:1.25rem}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__clear{right:1rem}.uu-header .uu-header-row .language-form button,.uu-unified-header-container button,.language-form button{background:none;text-transform:uppercase;border:none;font-weight:400;color:#6c6c6c}.uu-navbar .icon-additional-home:before,.uu-unified-header-container .icon-additional-home:before{content:"H"}.input-group~.invalid-feedback,.input-group~.valid-feedback{display:block}/*# sourceMappingURL=bootstrap.css.map */ + );padding-left:0;padding-top:var(--bs-uu-sidebar-padding-y)}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h1.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h1.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h2.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h2.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h3.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h3.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h4.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h4.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h5.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h5.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h6.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h6.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}.uu-root-container .uu-sidebar-container .uu-sidebar-content h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h7.uu-sidebar-header-linked{border-bottom:.0625rem solid var(--bs-uu-border-color);padding-bottom:calc(var(--bs-uu-sidebar-header-padding-y) + .0625rem)}@media(min-width: 992px){.uu-root-container .uu-sidebar-container .uu-sidebar-content h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container .uu-sidebar-content .h7.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-gap);margin-left:calc(-1*var(--bs-uu-sidebar-gap))}}@media(min-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-sticky .uu-sidebar>*{position:sticky;top:var(--bs-uu-sidebar-padding-y)}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-sticky .uu-sidebar{position:sticky;top:0}.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-sticky.uu-sidebar-mobile-bottom .uu-sidebar{top:unset;bottom:0}}@media(max-width: 768px){.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-sticky .uu-sidebar{position:sticky;top:var(--bs-uu-navbar-mobile-height)}}@media(max-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-bottom .uu-sidebar{order:2}.uu-root-container .uu-sidebar-container.uu-sidebar-mobile-bottom .uu-sidebar-content{order:1}}@media(min-width: 992px){.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar{order:2;padding-left:var(--bs-uu-sidebar-padding-x);padding-right:calc(50% - var(--bs-uu-content-width)/2)}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h1.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h2.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h3.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h4.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h5.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h6.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar .uu-sidebar-collapse .h7.uu-sidebar-header-linked{padding-left:var(--bs-uu-sidebar-padding-x);margin-right:0;margin-left:calc(-1*var(--bs-uu-sidebar-padding-x))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content{order:1;padding-right:0;padding-left:calc(50% - var(--bs-uu-content-width)/2)}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h1.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h1.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h2.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h2.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h3.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h3.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h4.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h4.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h5.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h5.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h6.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h6.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content h7.uu-sidebar-header-linked,.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content .h7.uu-sidebar-header-linked{padding-left:0;padding-right:var(--bs-uu-sidebar-gap);margin-left:0;margin-right:calc(-1*var(--bs-uu-sidebar-gap))}}@media(min-width: 992px)and (max-width: 76rem){.uu-root-container .uu-sidebar-container.uu-sidebar-right .uu-sidebar-content{padding-left:var(--bs-uu-sidebar-padding-x)}}.uu-root-container .uu-form .uu-form-text-row .uu-form-text-aside,.uu-root-container .uu-form .uu-form-row .uu-form-help{color:var(--bs-uu-form-aside-color);font-size:var(--bs-uu-form-aside-font-size)}.uu-root-container .uu-form .uu-form-text-row .uu-form-text-aside p:last-child,.uu-root-container .uu-form .uu-form-row .uu-form-help p:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-row,.uu-root-container .uu-form .uu-form-text-row{display:grid;margin-bottom:var(--bs-uu-form-row-gap);grid-template-rows:auto auto}@media(min-width: 992px){.uu-root-container .uu-form .uu-form-row,.uu-root-container .uu-form .uu-form-text-row{grid-template-rows:unset;grid-template-columns:2fr 1fr;gap:var(--bs-uu-form-column-gap)}}.uu-root-container .uu-form .uu-form-row .uu-form-field{background-color:var(--bs-uu-form-field-bg);padding:calc(var(--bs-uu-form-field-padding-y) - var(--bs-uu-form-field-padding-y-compensation)) var(--bs-uu-form-field-padding-y) var(--bs-uu-form-field-padding-y)}.uu-root-container .uu-form .uu-form-row .uu-form-field .input-group-text,.uu-root-container .uu-form .uu-form-row .uu-form-field .form-control::file-selector-button{background:var(--bs-uu-form-field-input-group-bg)}.uu-root-container .uu-form .uu-form-row .uu-form-help{padding:var(--bs-uu-form-help-padding-y) var(--bs-uu-form-help-padding-x)}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h1:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h1:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h2:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h2:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h3:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h3:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h4:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h4:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h5:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h5:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h6:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h6:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text .h7:last-child,.uu-root-container .uu-form .uu-form-text-row .uu-form-text h7:last-child{margin-bottom:0}.uu-root-container .uu-form .uu-form-text-row .uu-form-text p:last-child{margin-bottom:0}.uu-root-container .uu-form.uu-form-no-gap .uu-form-row{margin-bottom:0}.uu-root-container .uu-form.uu-form-no-gap .uu-form-row+.uu-form-row .uu-form-field{padding-top:0}.uu-root-container .uu-form .uu-form-row.uu-form-no-gap{margin-bottom:0;padding-bottom:0}.uu-root-container .uu-form.uu-form-no-aside .uu-form-text-row,.uu-root-container .uu-form .uu-form-text-row.uu-form-no-aside{grid-template-rows:1fr}@media(min-width: 992px){.uu-root-container .uu-form.uu-form-no-aside .uu-form-text-row,.uu-root-container .uu-form .uu-form-text-row.uu-form-no-aside{grid-template-rows:unset;grid-template-columns:1fr}}.uu-root-container .uu-form.uu-form-no-aside .uu-form-text-row .uu-form-text-aside,.uu-root-container .uu-form .uu-form-text-row.uu-form-no-aside .uu-form-text-aside{display:none}.uu-root-container .uu-form.uu-form-no-help .uu-form-row,.uu-root-container .uu-form .uu-form-row.uu-form-no-help{grid-template-rows:1fr}@media(min-width: 992px){.uu-root-container .uu-form.uu-form-no-help .uu-form-row,.uu-root-container .uu-form .uu-form-row.uu-form-no-help{grid-template-rows:unset;grid-template-columns:1fr}}.uu-root-container .uu-form.uu-form-no-help .uu-form-row .uu-form-help,.uu-root-container .uu-form .uu-form-row.uu-form-no-help .uu-form-help{display:none}.uu-root-container .uu-footer{flex-wrap:wrap;background:var(--bs-uu-footer-background-color);color:var(--bs-uu-footer-color);align-items:center;padding-top:var(--bs-uu-footer-padding-y);padding-bottom:var(--bs-uu-footer-padding-y)}@media(max-width: 768px){.uu-root-container .uu-footer{gap:1.25rem}}.uu-root-container .uu-footer p:last-child{margin:0;padding:0}.uu-root-container .uu-footer a,.uu-root-container .uu-footer a:hover,.uu-root-container .uu-footer a:focus,.uu-root-container .uu-footer a:active{color:var(--bs-uu-footer-color)}.uu-root-container .table,.uu-root-container .dt,.uu-root-container .datatables{--bs-table-bg: var(--bs-uu-container-bg)}[data-bs-theme=dark] .uu-root-container{--bs-uu-container-bg: #000;--bs-uu-container-color: #dedede;--bs-uu-border-color: #494949;--bs-uu-header-title-color: #094d8e;--bs-uu-header-border-color: var(--bs-uu-border-color-dark);--bs-uu-navbar-dropdown-bg: #212121;--bs-uu-navbar-mobile-bg: #000;--bs-uu-navbar-mobile-color: #fff;--bs-uu-unified-header-navlink-bg: #000;--bs-uu-unified-header-navlink-color: #fff;--bs-uu-unified-header-navlink-mobile-bg: #000;--bs-uu-unified-header-navlink-mobile-color: #fff;--bs-uu-brand-sender-bg: #ffcd00;--bs-uu-brand-sender-color: #000;--bs-uu-footer-color: #cecece;--bs-uu-footer-background-color: #212121;--bs-uu-hero-bg: #cca400;--bs-uu-hero-color: #000;--bs-uu-cover-copyright-text-color: #dedede;--bs-uu-cover-copyright-background-color: rgba(0, 0, 0, 0.5);--bs-uu-sidebar-background: #171717;--bs-uu-sidebar-color: #dedede;--bs-uu-sidebar-nav-disabled-color: #cecece;--bs-uu-form-field-bg: #262626;--bs-uu-form-field-input-group-bg: #343434;--bs-uu-form-aside-color: var(--bs-secondary-color)}body{transition:background .1s linear,color .1s linear,border-color .1s linear}.uu-list,.uu-list-sidebar{--bs-uu-list-gap-y: 1rem;--bs-uu-list-gap-x: 1.5rem;--bs-uu-list-controls-bg: #efefef;--bs-uu-list-controls-padding-x: 1rem;--bs-uu-list-controls-padding-y: 1rem;--bs-uu-list-controls-gap: 1rem;--bs-uu-list-controls-search-width: 17rem;--bs-uu-list-filters-width: 18rem;--bs-uu-list-filters-gap: 1rem;--bs-uu-list-filters-padding-x: 1rem;--bs-uu-list-filters-padding-y: 0.5rem;--bs-uu-list-filters-label-gap: 1rem 1rem 0.5rem 1rem;--bs-uu-list-filters-border-color: #cecece;--bs-uu-list-filters-border-width: 0.0625rem}[data-bs-theme=dark] .uu-list,[data-bs-theme=dark] .uu-list-sidebar{--bs-uu-list-controls-bg: #343434;--bs-uu-list-filters-border-color: #6c6c6c}.uu-list{display:grid;width:100%;gap:var(--bs-uu-list-gap-y) var(--bs-uu-list-gap-x);grid-template-columns:var(--bs-uu-list-filters-width) auto;grid-template-rows:auto auto;grid-template-areas:"controls controls" "filters content"}.uu-list .uu-list-controls{grid-area:controls;width:100%;background:var(--bs-uu-list-controls-bg);display:grid;grid-template-columns:max-content auto max-content max-content;grid-template-areas:"search searchText order pageSize";align-items:center;padding:var(--bs-uu-list-controls-padding-y) var(--bs-uu-list-controls-padding-x);gap:var(--bs-uu-list-controls-gap)}.uu-list .uu-list-controls .uu-list-search-control{grid-area:search;width:var(--bs-uu-list-controls-search-width)}.uu-list .uu-list-controls .uu-list-search-text-control{grid-area:searchText}.uu-list .uu-list-controls .uu-list-order-control{grid-area:order}.uu-list .uu-list-controls .uu-list-page-size-control{grid-area:pageSize}.uu-list .uu-list-filters{grid-area:filters;background:var(--bs-uu-list-controls-bg)}.uu-list .uu-list-content{grid-column-start:filters;grid-column-end:content}.uu-list .uu-list-filters~.uu-list-content{grid-area:content}.uu-list-sidebar{--bs-uu-sidebar-width: var(--bs-uu-list-filters-width)}.uu-list-filter{--bs-border-color: var(--bs-uu-list-filters-border-color);margin-bottom:var(--bs-uu-list-filters-gap)}.uu-list-filter .uu-list-filter-label{border-bottom:var(--bs-uu-list-filters-border-width) solid var(--bs-uu-list-filters-border-color);padding:var(--bs-uu-list-filters-label-gap);font-weight:500}.uu-list-filter .uu-list-filter-field{padding:var(--bs-uu-list-filters-padding-y) var(--bs-uu-list-filters-padding-x)}.uu-list-filter .form-check{border-bottom:var(--bs-uu-list-filters-border-width) solid var(--bs-uu-list-filters-border-color);display:flex;width:100%;padding:var(--bs-uu-list-filters-padding-y) var(--bs-uu-list-filters-padding-x);gap:.75rem;align-items:center}.uu-list-filter .form-check .form-check-input{flex:0 0 auto;margin:0}.uu-list-filter .form-check .form-check-label{flex:1 1 auto}@font-face{font-family:"icomoon";src:url("../fonts/IcoMoon-Free.ttf") format("truetype");font-weight:normal;font-style:normal}@font-face{font-family:"icomoon-additional";src:url("../fonts/icomoon.ttf") format("truetype");font-weight:normal;font-style:normal}[class^=icon-],[class*=" icon-"]{font-family:"icomoon" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}[class^=icon-additional-],[class*=" icon-additional-"]{font-family:"icomoon-additional" !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none}[class^=icon-]:hover,[class*=" icon-"]:hover{text-decoration:none}.select2-container{display:block}select+.select2-container{z-index:1}.select2-container *:focus{outline:0}.select2-container .select2-selection{width:100%;min-height:calc(1.6em + 0.75rem + calc(var(--bs-border-width) * 2));padding:.375rem .75rem;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);background-color:#fff;border:var(--bs-border-width) solid #dedede;border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out;appearance:none}@media(prefers-reduced-motion: reduce){.select2-container .select2-selection{transition:none}}.select2-container.select2-container--focus .select2-selection,.select2-container.select2-container--open .select2-selection{border-color:#000;box-shadow:none}.select2-container.select2-container--open.select2-container--below .select2-selection{border-bottom:0 solid rgba(0,0,0,0);border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container.select2-container--open.select2-container--above .select2-selection{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2-search{width:100%}.select2-container .select2-search--inline .select2-search__field{vertical-align:top}.select2-container .select2-selection--single .select2-selection__clear,.select2-container .select2-selection--multiple .select2-selection__clear{position:absolute;top:50%;right:2.25rem;width:.75rem;height:.75rem;padding:.25em .25em;overflow:hidden;text-indent:100%;white-space:nowrap;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat;transform:translateY(-50%)}.select2-container .select2-selection--single .select2-selection__clear:hover,.select2-container .select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat}.select2-container .select2-selection--single .select2-selection__clear>span,.select2-container .select2-selection--multiple .select2-selection__clear>span{display:none}.select2-container+.select2-container{z-index:9003}.select2-container .select2-dropdown{z-index:9003;overflow:hidden;color:var(--bs-body-color);background-color:#fff;border-color:#000;border-radius:0 !important}.select2-container .select2-dropdown.select2-dropdown--below{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2-dropdown.select2-dropdown--above{border-bottom:0 solid rgba(0,0,0,0);border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container .select2-dropdown .select2-search{padding:.375rem .75rem}.select2-container .select2-dropdown .select2-search .select2-search__field{display:block;width:100%;padding:.375rem .75rem;font-family:inherit;font-size:1rem;font-weight:400;line-height:1.6;color:var(--bs-body-color);background-color:#fff;background-clip:padding-box;border:var(--bs-border-width) solid #dedede;appearance:none;border-radius:0 !important;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.select2-container .select2-dropdown .select2-search .select2-search__field{transition:none}}.select2-container .select2-dropdown .select2-search .select2-search__field:focus{border-color:#000;box-shadow:none}.select2-container .select2-dropdown .select2-results__options:not(.select2-results__options--nested){max-height:15rem;overflow-y:auto}.select2-container .select2-dropdown .select2-results__options .select2-results__option{padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.6}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__message{color:var(--bs-secondary-color)}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--highlighted{color:#000;background-color:#e9e9e9}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--selected,.select2-container .select2-dropdown .select2-results__options .select2-results__option[aria-selected=true]:not(.select2-results__option--highlighted){color:#000;background-color:#ffcd00}.select2-container .select2-dropdown .select2-results__options .select2-results__option.select2-results__option--disabled,.select2-container .select2-dropdown .select2-results__options .select2-results__option[aria-disabled=true]{color:var(--bs-secondary-color)}.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group]{padding:0}.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.375rem .375rem;font-weight:500;line-height:1.6;color:#000}.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.375rem .75rem}.select2-container .select2-selection--single{padding:.375rem 2.25rem .375rem .75rem;background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343434' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px}.select2-container .select2-selection--single .select2-selection__rendered{padding:0;font-weight:400;line-height:1.6;color:var(--bs-body-color)}.select2-container .select2-selection--single .select2-selection__rendered .select2-selection__placeholder{font-weight:400;line-height:1.6;color:var(--bs-secondary-color)}.select2-container .select2-selection--single .select2-selection__arrow{display:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:flex;flex-direction:row;flex-wrap:wrap;padding-left:0;margin:0;list-style:none}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{display:flex;flex-direction:row;align-items:center;padding:.35em .65em;margin-right:.375rem;margin-bottom:.375rem;font-size:1rem;color:var(--bs-body-color);cursor:auto;border:var(--bs-border-width) solid #dedede;border-radius:0 !important}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:.75rem;height:.75rem;padding:.25em .25em;margin-right:.25rem;overflow:hidden;text-indent:100%;white-space:nowrap;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat;border:0}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.75rem auto no-repeat}.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove>span{display:none}.select2-container .select2-selection--multiple .select2-search{display:block;width:100%;height:1.6rem}.select2-container .select2-selection--multiple .select2-search .select2-search__field{width:100%;height:1.6rem;margin-top:0;margin-left:0;font-family:inherit;line-height:1.6;background-color:rgba(0,0,0,0)}.select2-container .select2-selection--multiple .select2-selection__clear{right:.75rem}.select2-container.select2-container--disabled .select2-selection,.select2-container.select2-container--disabled.select2-container--focus .select2-selection{color:var(--bs-secondary-color);cursor:not-allowed;background-color:var(--bs-secondary-bg);border-color:#dedede;box-shadow:none}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__clear,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__clear{display:none}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__choice,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__choice{cursor:not-allowed}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__choice .select2-selection__choice__remove,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__choice .select2-selection__choice__remove{display:none}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__rendered:not(:empty),.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__rendered:not(:empty){padding-bottom:0}.select2-container.select2-container--disabled .select2-selection--multiple .select2-selection__rendered:not(:empty)+.select2-search,.select2-container.select2-container--disabled.select2-container--focus .select2-selection--multiple .select2-selection__rendered:not(:empty)+.select2-search{display:none}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu).select2-container .select2-selection{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu).select2-container .select2-selection{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-text~.select2-container--bootstrap-5 .select2-selection,.input-group>.btn~.select2-container--bootstrap-5 .select2-selection,.input-group>.dropdown-menu~.select2-container .select2-selection{border-top-left-radius:0;border-bottom-left-radius:0}.input-group .select2-container{flex-grow:1}.input-group .select2-container .select2-selection{height:100%}.is-valid+.select2-container .select2-selection,.was-validated select:valid+.select2-container .select2-selection{border-color:#2db83d}.is-valid+.select2-container.select2-container--focus .select2-selection,.is-valid+.select2-container.select2-container--open .select2-selection,.was-validated select:valid+.select2-container.select2-container--focus .select2-selection,.was-validated select:valid+.select2-container.select2-container--open .select2-selection{border-color:#2db83d;box-shadow:0 0 0 0 rgba(45,184,61,.25)}.is-valid+.select2-container.select2-container--open.select2-container--below .select2-selection,.was-validated select:valid+.select2-container.select2-container--open.select2-container--below .select2-selection{border-bottom:0 solid rgba(0,0,0,0)}.is-valid+.select2-container.select2-container--open.select2-container--above .select2-selection,.was-validated select:valid+.select2-container.select2-container--open.select2-container--above .select2-selection{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.is-invalid+.select2-container .select2-selection,.was-validated select:invalid+.select2-container .select2-selection{border-color:#c00a35}.is-invalid+.select2-container.select2-container--focus .select2-selection,.is-invalid+.select2-container.select2-container--open .select2-selection,.was-validated select:invalid+.select2-container.select2-container--focus .select2-selection,.was-validated select:invalid+.select2-container.select2-container--open .select2-selection{border-color:#c00a35;box-shadow:0 0 0 0 rgba(192,10,53,.25)}.is-invalid+.select2-container.select2-container--open.select2-container--below .select2-selection,.was-validated select:invalid+.select2-container.select2-container--open.select2-container--below .select2-selection{border-bottom:0 solid rgba(0,0,0,0)}.is-invalid+.select2-container.select2-container--open.select2-container--above .select2-selection,.was-validated select:invalid+.select2-container.select2-container--open.select2-container--above .select2-selection{border-top:0 solid rgba(0,0,0,0);border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2--small.select2-selection{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:0 !important}.select2-container .select2--small.select2-selection--single .select2-selection__clear,.select2-container .select2--small.select2-selection--multiple .select2-selection__clear{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--single .select2-selection__clear:hover,.select2-container .select2--small.select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--single .select2-search,.select2-container .select2--small.select2-selection--single .select2-search .select2-search__field,.select2-container .select2--small.select2-selection--multiple .select2-search,.select2-container .select2--small.select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.select2-container .select2--small.select2-dropdown{border-radius:0 !important}.select2-container .select2--small.select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2--small.select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container .select2--small.select2-dropdown .select2-search .select2-search__field{padding:.25rem .5rem;font-size:0.875rem}.select2-container .select2--small.select2-dropdown .select2-results__options .select2-results__option{padding:.25rem .5rem;font-size:0.875rem}.select2-container .select2--small.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.25rem .25rem}.select2-container .select2--small.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.25rem .5rem}.select2-container .select2--small.select2-selection--single{padding:.25rem 2.25rem .25rem .5rem}.select2-container .select2--small.select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:0.875rem}.select2-container .select2--small.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.select2-container .select2--small.select2-selection--multiple .select2-selection__clear{right:.5rem}.select2-container .select2--large.select2-selection{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:0 !important}.select2-container .select2--large.select2-selection--single .select2-selection__clear,.select2-container .select2--large.select2-selection--multiple .select2-selection__clear{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--single .select2-selection__clear:hover,.select2-container .select2--large.select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--single .select2-search,.select2-container .select2--large.select2-selection--single .select2-search .select2-search__field,.select2-container .select2--large.select2-selection--multiple .select2-search,.select2-container .select2--large.select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.select2-container .select2--large.select2-dropdown{border-radius:0 !important}.select2-container .select2--large.select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.select2-container .select2--large.select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.select2-container .select2--large.select2-dropdown .select2-search .select2-search__field{padding:.5rem 1rem;font-size:1.25rem}.select2-container .select2--large.select2-dropdown .select2-results__options .select2-results__option{padding:.5rem 1rem;font-size:1.25rem}.select2-container .select2--large.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.5rem .5rem}.select2-container .select2--large.select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.5rem 1rem}.select2-container .select2--large.select2-selection--single{padding:.5rem 2.25rem .5rem 1rem}.select2-container .select2--large.select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:1.25rem}.select2-container .select2--large.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.select2-container .select2--large.select2-selection--multiple .select2-selection__clear{right:1rem}.form-select-sm~.select2-container .select2-selection{min-height:calc(1.6em + 0.5rem + calc(var(--bs-border-width) * 2));padding:.25rem .5rem;font-size:0.875rem;border-radius:0 !important}.form-select-sm~.select2-container .select2-selection--single .select2-selection__clear,.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__clear{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--single .select2-selection__clear:hover,.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--single .select2-search,.form-select-sm~.select2-container .select2-selection--single .select2-search .select2-search__field,.form-select-sm~.select2-container .select2-selection--multiple .select2-search,.form-select-sm~.select2-container .select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.form-select-sm~.select2-container .select2-dropdown{border-radius:0 !important}.form-select-sm~.select2-container .select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.form-select-sm~.select2-container .select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.form-select-sm~.select2-container .select2-dropdown .select2-search .select2-search__field{padding:.25rem .5rem;font-size:0.875rem}.form-select-sm~.select2-container .select2-dropdown .select2-results__options .select2-results__option{padding:.25rem .5rem;font-size:0.875rem}.form-select-sm~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.25rem .25rem}.form-select-sm~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.25rem .5rem}.form-select-sm~.select2-container .select2-selection--single{padding:.25rem 2.25rem .25rem .5rem}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:0.875rem}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:.5rem;height:.5rem;padding:.125rem .125rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/0.5rem auto no-repeat}.form-select-sm~.select2-container .select2-selection--multiple .select2-selection__clear{right:.5rem}.form-select-lg~.select2-container .select2-selection{min-height:calc(1.6em + 1rem + calc(var(--bs-border-width) * 2));padding:.5rem 1rem;font-size:1.25rem;border-radius:0 !important}.form-select-lg~.select2-container .select2-selection--single .select2-selection__clear,.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__clear{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--single .select2-selection__clear:hover,.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__clear:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--single .select2-search,.form-select-lg~.select2-container .select2-selection--single .select2-search .select2-search__field,.form-select-lg~.select2-container .select2-selection--multiple .select2-search,.form-select-lg~.select2-container .select2-selection--multiple .select2-search .select2-search__field{height:1.6em}.form-select-lg~.select2-container .select2-dropdown{border-radius:0 !important}.form-select-lg~.select2-container .select2-dropdown.select2-dropdown--below{border-top-left-radius:0;border-top-right-radius:0}.form-select-lg~.select2-container .select2-dropdown.select2-dropdown--above{border-bottom-right-radius:0;border-bottom-left-radius:0}.form-select-lg~.select2-container .select2-dropdown .select2-search .select2-search__field{padding:.5rem 1rem;font-size:1.25rem}.form-select-lg~.select2-container .select2-dropdown .select2-results__options .select2-results__option{padding:.5rem 1rem;font-size:1.25rem}.form-select-lg~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__group{padding:.5rem .5rem}.form-select-lg~.select2-container .select2-dropdown .select2-results__options .select2-results__option[role=group] .select2-results__options--nested .select2-results__option{padding:.5rem 1rem}.form-select-lg~.select2-container .select2-selection--single{padding:.5rem 2.25rem .5rem 1rem}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice{padding:.35em .65em;font-size:1.25rem}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove{width:1rem;height:1rem;padding:.5rem .5rem;background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236f6f6f'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__rendered .select2-selection__choice .select2-selection__choice__remove:hover{background:rgba(0,0,0,0) url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1rem auto no-repeat}.form-select-lg~.select2-container .select2-selection--multiple .select2-selection__clear{right:1rem}.uu-header .uu-header-row .language-form button,.uu-unified-header-container button,.language-form button{background:none;text-transform:uppercase;border:none;font-weight:400;color:#6c6c6c}.uu-navbar .icon-additional-home:before,.uu-unified-header-container .icon-additional-home:before{content:"H"}.input-group~.invalid-feedback,.input-group~.valid-feedback{display:block}.select2~.invalid-feedback,.select2~.valid-feedback{display:block}/*# sourceMappingURL=bootstrap.css.map */ diff --git a/src/cdh/core/static/cdh.core/css/bootstrap.css.map b/src/cdh/core/static/cdh.core/css/bootstrap.css.map index 849d3357..2850de40 100644 --- a/src/cdh/core/static/cdh.core/css/bootstrap.css.map +++ b/src/cdh/core/static/cdh.core/css/bootstrap.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["../../../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../../../node_modules/uu-bootstrap/scss/fonts/_open-sans.scss","../../../../../../node_modules/uu-bootstrap/scss/fonts/_merriweather.scss","../../../../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../../../../node_modules/bootstrap/scss/helpers/_color-bg.scss","../../../../../../node_modules/bootstrap/scss/helpers/_colored-links.scss","../../../../../../node_modules/bootstrap/scss/helpers/_focus-ring.scss","../../../../../../node_modules/bootstrap/scss/helpers/_icon-link.scss","../../../../../../node_modules/bootstrap/scss/_variables.scss","../../../../../../node_modules/bootstrap/scss/mixins/_transition.scss","../../../../../../node_modules/bootstrap/scss/helpers/_ratio.scss","../../../../../../node_modules/bootstrap/scss/helpers/_position.scss","../../../../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../../../../node_modules/bootstrap/scss/helpers/_stacks.scss","../../../../../../node_modules/bootstrap/scss/helpers/_visually-hidden.scss","../../../../../../node_modules/bootstrap/scss/mixins/_visually-hidden.scss","../../../../../../node_modules/bootstrap/scss/helpers/_stretched-link.scss","../../../../../../node_modules/bootstrap/scss/helpers/_text-truncation.scss","../../../../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../../../../../node_modules/bootstrap/scss/helpers/_vr.scss","../../../../../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../../../../../node_modules/bootstrap/scss/utilities/_api.scss","../../../../../../node_modules/bootstrap/scss/_root.scss","../../../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../../../node_modules/bootstrap/scss/_type.scss","../../../../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_colors.scss","../../../../../../node_modules/bootstrap/scss/_images.scss","../../../../../../node_modules/bootstrap/scss/mixins/_image.scss","../../../../../../node_modules/bootstrap/scss/_containers.scss","../../../../../../node_modules/bootstrap/scss/mixins/_container.scss","../../../../../../node_modules/bootstrap/scss/_grid.scss","../../../../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../../../../node_modules/bootstrap/scss/_tables.scss","../../../../../../node_modules/bootstrap/scss/mixins/_table-variants.scss","../../../../../../node_modules/bootstrap/scss/forms/_labels.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/bootstrap/_form.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/bootstrap/_misc.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-text.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-control.scss","../../../../../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-select.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-check.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-range.scss","../../../../../../node_modules/bootstrap/scss/forms/_floating-labels.scss","../../../../../../node_modules/bootstrap/scss/forms/_input-group.scss","../../../../../../node_modules/bootstrap/scss/mixins/_forms.scss","../../../../../../node_modules/bootstrap/scss/_buttons.scss","../../../../../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../../../../../node_modules/bootstrap/scss/_transitions.scss","../../../../../../node_modules/bootstrap/scss/_dropdown.scss","../../../../../../node_modules/bootstrap/scss/mixins/_caret.scss","../../../../../../node_modules/bootstrap/scss/_button-group.scss","../../../../../../node_modules/bootstrap/scss/_nav.scss","../../../../../../node_modules/bootstrap/scss/_navbar.scss","../../../../../../node_modules/bootstrap/scss/_card.scss","../../../../../../node_modules/bootstrap/scss/_accordion.scss","../../../../../../node_modules/bootstrap/scss/_breadcrumb.scss","../../../../../../node_modules/bootstrap/scss/_pagination.scss","../../../../../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../../../../../node_modules/bootstrap/scss/_badge.scss","../../../../../../node_modules/bootstrap/scss/_alert.scss","../../../../../../node_modules/bootstrap/scss/_progress.scss","../../../../../../node_modules/bootstrap/scss/_list-group.scss","../../../../../../node_modules/bootstrap/scss/_close.scss","../../../../../../node_modules/bootstrap/scss/_toasts.scss","../../../../../../node_modules/bootstrap/scss/_modal.scss","../../../../../../node_modules/bootstrap/scss/mixins/_backdrop.scss","../../../../../../node_modules/bootstrap/scss/_tooltip.scss","../../../../../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../../../../../node_modules/bootstrap/scss/_popover.scss","../../../../../../node_modules/bootstrap/scss/_carousel.scss","../../../../../../node_modules/bootstrap/scss/_spinners.scss","../../../../../../node_modules/bootstrap/scss/_offcanvas.scss","../../../../../../node_modules/bootstrap/scss/_placeholders.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_accordion.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_alert.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_background.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_button.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_pagination.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_modal.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_table.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_form.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_index.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_text.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_uu-layout.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_code.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_stepper.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_stepper.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_tiles.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_modal-nav-tabs.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_index.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_css_variables.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_containers.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_header.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_fonts.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_navbar.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_unified_header.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_hero.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_cover.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_sidebar.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_form.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_footer.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_table.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_uu-list.scss","../../../../../../assets/scss/icomoon.scss","../../../../../../assets/scss/select2-bootstrap/_layout.scss","../../../../../../assets/scss/select2-bootstrap/_variables.scss","../../../../../../assets/scss/select2-bootstrap/_dropdown.scss","../../../../../../assets/scss/select2-bootstrap/_single.scss","../../../../../../assets/scss/select2-bootstrap/_multiple.scss","../../../../../../assets/scss/select2-bootstrap/_disabled.scss","../../../../../../assets/scss/select2-bootstrap/_input-group.scss","../../../../../../assets/scss/select2-bootstrap/_validation.scss","../../../../../../assets/scss/select2-bootstrap/_sizing.scss","../../../../../../assets/scss/bootstrap.scss"],"names":[],"mappings":"CACE;AAAA;AAAA;AAAA;AAAA,GCEF,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,sFACA,IACI,mhBAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,qFACA,IACI,8gBAeR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBCjPR,WACI,2BACA,kBACA,gBACA,8EACA,IACI,+eAeR,WACI,2BACA,kBACA,gBACA,oFACA,IACI,6gBAeR,WACI,2BACA,kBACA,gBACA,kFACA,IACI,mgBAeR,WACI,2BACA,kBACA,gBACA,iFACA,IACI,8fAeR,WACI,2BACA,kBACA,gBACA,8EACA,IACI,+eAeR,WACI,2BACA,kBACA,gBACA,oFACA,IACI,6gBAeR,WACI,2BACA,kBACA,gBACA,8EACA,IACI,+eAeR,WACI,2BACA,kBACA,gBACA,oFACA,IACI,6gBC1JN,iBACE,cACA,WACA,WCHF,iBACE,sBACA,iFAFF,mBACE,sBACA,mFAFF,iBACE,sBACA,iFAFF,cACE,sBACA,8EAFF,iBACE,sBACA,iFAFF,gBACE,sBACA,gFAFF,eACE,sBACA,+EAFF,eACE,sBACA,+EAFF,cACE,sBACA,8EAFF,cACE,sBACA,8EAFF,mBACE,sBACA,mFAFF,gBACE,sBACA,gFAFF,gBACE,sBACA,gFAFF,cACE,sBACA,8EAFF,aACE,sBACA,6EAFF,sBACE,sBACA,sFAFF,eACE,sBACA,+EAFF,eACE,sBACA,+EAFF,gBACE,sBACA,gFAFF,gBACE,sBACA,gFAFF,eACE,sBACA,+EAFF,cACE,sBACA,8EAFF,cACE,sBACA,8EAFF,eACE,sBACA,+EAFF,cACE,sBACA,8EAFF,mBACE,sBACA,mFCFF,cACE,wEACA,kGAGE,wCAGE,+DACA,yFATN,gBACE,0EACA,oGAGE,4CAGE,0DACA,oFATN,cACE,wEACA,kGAGE,wCAGE,+DACA,yFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,cACE,wEACA,kGAGE,wCAGE,gEACA,0FATN,aACE,uEACA,iGAGE,sCAGE,6DACA,uFATN,YACE,sEACA,gGAGE,oCAGE,6DACA,uFATN,YACE,sEACA,gGAGE,oCAGE,gEACA,0FATN,WACE,qEACA,+FAGE,kCAGE,6DACA,uFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,gBACE,0EACA,oGAGE,4CAGE,4DACA,sFATN,aACE,uEACA,iGAGE,sCAGE,8DACA,wFATN,aACE,uEACA,iGAGE,sCAGE,8DACA,wFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,UACE,oEACA,8FAGE,gCAGE,6DACA,uFATN,mBACE,6EACA,uGAGE,kDAGE,8DACA,wFATN,YACE,sEACA,gGAGE,oCAGE,6DACA,uFATN,YACE,sEACA,gGAGE,oCAGE,gEACA,0FATN,aACE,uEACA,iGAGE,sCAGE,gEACA,0FATN,aACE,uEACA,iGAGE,sCAGE,+DACA,yFATN,YACE,sEACA,gGAGE,oCAGE,+DACA,yFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,YACE,sEACA,gGAGE,oCAGE,gEACA,0FATN,WACE,qEACA,+FAGE,kCAGE,6DACA,uFATN,gBACE,0EACA,oGAGE,4CAGE,6DACA,uFAOR,oBACE,+EACA,yGAGE,oDAEE,kFACA,4GC1BN,kBACE,UAEA,kJCHF,WACE,oBACA,IC6c4B,QD5c5B,mBACA,kFACA,sBC2c4B,MD1c5B,2BAEA,eACE,cACA,MCuc0B,IDtc1B,OCsc0B,IDrc1B,kBEIE,WFHF,0BEOE,uCFZJ,eEaM,iBFDJ,8DACE,mEGnBN,OACE,kBACA,WAEA,eACE,cACA,mCACA,WAGF,SACE,kBACA,MACA,OACA,WACA,YAKF,WACE,wBADF,WACE,uBADF,YACE,0BADF,YACE,kCCrBJ,WACE,eACA,MACA,QACA,OACA,QHqmCkC,KGlmCpC,cACE,eACA,QACA,SACA,OACA,QH6lCkC,KGrlChC,YACE,gBACA,MACA,QHilC8B,KG9kChC,eACE,gBACA,SACA,QH2kC8B,KI5iChC,yBDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,yBDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,yBDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,0BDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,0BDxCA,gBACE,gBACA,MACA,QHilC8B,KG9kChC,mBACE,gBACA,SACA,QH2kC8B,MK1mCpC,QACE,aACA,mBACA,mBACA,mBAGF,QACE,aACA,cACA,sBACA,mBCRF,2ECIE,qBACA,sBACA,qBACA,uBACA,2BACA,iCACA,8BACA,oBAGA,qGACE,6BCdF,uBACE,kBACA,MACA,QACA,SACA,OACA,QRgcsC,EQ/btC,WCRJ,+BCCE,uBACA,mBCNF,IACE,qBACA,mBACA,MXisB4B,uBWhsB5B,eACA,8BACA,QX2rB4B,IY/nBtB,gBAOI,mCAPJ,WAOI,8BAPJ,cAOI,iCAPJ,cAOI,iCAPJ,mBAOI,sCAPJ,gBAOI,mCAPJ,aAOI,sBAPJ,WAOI,uBAPJ,YAOI,sBAPJ,oBAOI,8BAPJ,kBAOI,4BAPJ,iBAOI,2BAPJ,kBAOI,iCAPJ,iBAOI,2BAPJ,WAOI,qBAPJ,YAOI,uBAPJ,YAOI,sBAPJ,YAOI,uBAPJ,aAOI,qBAPJ,eAOI,yBAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,2BAPJ,mBAOI,6BAPJ,oBAOI,8BAPJ,mBAOI,6BAPJ,iBAOI,2BAPJ,mBAOI,6BAPJ,oBAOI,8BAPJ,mBAOI,6BAPJ,UAOI,0BAPJ,gBAOI,gCAPJ,SAOI,yBAPJ,QAOI,wBAPJ,eAOI,+BAPJ,SAOI,yBAPJ,aAOI,6BAPJ,cAOI,8BAPJ,QAOI,wBAPJ,eAOI,+BAPJ,QAOI,wBAPJ,QAOI,mDAPJ,WAOI,wDAPJ,WAOI,mDAPJ,aAOI,2BAjBJ,oBACE,iFADF,sBACE,mFADF,oBACE,iFADF,iBACE,8EADF,oBACE,iFADF,mBACE,gFADF,kBACE,+EADF,kBACE,+EADF,iBACE,8EADF,iBACE,8EADF,sBACE,mFADF,mBACE,gFADF,mBACE,gFADF,iBACE,8EADF,gBACE,6EADF,yBACE,sFADF,kBACE,+EADF,kBACE,+EADF,mBACE,gFADF,mBACE,gFADF,kBACE,+EADF,iBACE,8EADF,iBACE,8EADF,kBACE,+EADF,iBACE,8EADF,sBACE,mFASF,iBAOI,2BAPJ,mBAOI,6BAPJ,mBAOI,6BAPJ,gBAOI,0BAPJ,iBAOI,2BAPJ,OAOI,iBAPJ,QAOI,mBAPJ,SAOI,oBAPJ,UAOI,oBAPJ,WAOI,sBAPJ,YAOI,uBAPJ,SAOI,kBAPJ,UAOI,oBAPJ,WAOI,qBAPJ,OAOI,mBAPJ,QAOI,qBAPJ,SAOI,sBAPJ,kBAOI,2CAPJ,oBAOI,sCAPJ,oBAOI,sCAPJ,QAOI,uFAPJ,UAOI,oBAPJ,YAOI,2FAPJ,cAOI,wBAPJ,YAOI,6FAPJ,cAOI,0BAPJ,eAOI,8FAPJ,iBAOI,2BAPJ,cAOI,4FAPJ,gBAOI,yBAPJ,gBAIQ,uBAGJ,8EAPJ,kBAIQ,uBAGJ,gFAPJ,gBAIQ,uBAGJ,8EAPJ,aAIQ,uBAGJ,2EAPJ,gBAIQ,uBAGJ,8EAPJ,eAIQ,uBAGJ,6EAPJ,cAIQ,uBAGJ,4EAPJ,cAIQ,uBAGJ,4EAPJ,aAIQ,uBAGJ,2EAPJ,aAIQ,uBAGJ,2EAPJ,kBAIQ,uBAGJ,gFAPJ,eAIQ,uBAGJ,6EAPJ,eAIQ,uBAGJ,6EAPJ,aAIQ,uBAGJ,2EAPJ,YAIQ,uBAGJ,0EAPJ,qBAIQ,uBAGJ,mFAPJ,cAIQ,uBAGJ,4EAPJ,cAIQ,uBAGJ,4EAPJ,eAIQ,uBAGJ,6EAPJ,eAIQ,uBAGJ,6EAPJ,cAIQ,uBAGJ,4EAPJ,aAIQ,uBAGJ,2EAPJ,aAIQ,uBAGJ,2EAPJ,cAIQ,uBAGJ,4EAPJ,aAIQ,uBAGJ,2EAPJ,kBAIQ,uBAGJ,gFAPJ,cAIQ,uBAGJ,4EAPJ,uBAOI,wDAPJ,yBAOI,0DAPJ,uBAOI,wDAPJ,oBAOI,qDAPJ,uBAOI,wDAPJ,sBAOI,uDAPJ,qBAOI,sDAPJ,oBAOI,qDAPJ,UAOI,4BAPJ,UAOI,4BAPJ,UAOI,4BAPJ,UAOI,4BAPJ,UAOI,4BAjBJ,mBACE,yBADF,mBACE,0BADF,mBACE,yBADF,mBACE,0BADF,oBACE,uBASF,MAOI,qBAPJ,MAOI,qBAPJ,MAOI,qBAPJ,OAOI,sBAPJ,QAOI,sBAPJ,QAOI,0BAPJ,QAOI,uBAPJ,YAOI,2BAPJ,MAOI,sBAPJ,MAOI,sBAPJ,MAOI,sBAPJ,OAOI,uBAPJ,QAOI,uBAPJ,QAOI,2BAPJ,QAOI,wBAPJ,YAOI,4BAPJ,WAOI,yBAPJ,UAOI,8BAPJ,aAOI,iCAPJ,kBAOI,sCAPJ,qBAOI,yCAPJ,aAOI,uBAPJ,aAOI,uBAPJ,eAOI,yBAPJ,eAOI,yBAPJ,WAOI,0BAPJ,aAOI,4BAPJ,mBAOI,kCAPJ,uBAOI,sCAPJ,qBAOI,oCAPJ,wBAOI,kCAPJ,yBAOI,yCAPJ,wBAOI,wCAPJ,wBAOI,wCAPJ,mBAOI,kCAPJ,iBAOI,gCAPJ,oBAOI,8BAPJ,sBAOI,gCAPJ,qBAOI,+BAPJ,qBAOI,oCAPJ,mBAOI,kCAPJ,sBAOI,gCAPJ,uBAOI,uCAPJ,sBAOI,sCAPJ,uBAOI,iCAPJ,iBAOI,2BAPJ,kBAOI,iCAPJ,gBAOI,+BAPJ,mBAOI,6BAPJ,qBAOI,+BAPJ,oBAOI,8BAPJ,aAOI,oBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,YAOI,mBAPJ,KAOI,oBAPJ,KAOI,yBAPJ,KAOI,wBAPJ,KAOI,uBAPJ,KAOI,yBAPJ,KAOI,uBAPJ,QAOI,uBAPJ,MAOI,mDAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,yDAPJ,MAOI,6DAPJ,MAOI,yDAPJ,SAOI,yDAPJ,MAOI,mDAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,yDAPJ,MAOI,6DAPJ,MAOI,yDAPJ,SAOI,yDAPJ,MAOI,wBAPJ,MAOI,6BAPJ,MAOI,4BAPJ,MAOI,2BAPJ,MAOI,6BAPJ,MAOI,2BAPJ,SAOI,2BAPJ,MAOI,0BAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,+BAPJ,MAOI,6BAPJ,SAOI,6BAPJ,MAOI,2BAPJ,MAOI,gCAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,gCAPJ,MAOI,8BAPJ,SAOI,8BAPJ,MAOI,yBAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,4BAPJ,MAOI,8BAPJ,MAOI,4BAPJ,SAOI,4BAPJ,KAOI,qBAPJ,KAOI,0BAPJ,KAOI,yBAPJ,KAOI,wBAPJ,KAOI,0BAPJ,KAOI,wBAPJ,MAOI,qDAPJ,MAOI,+DAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,+DAPJ,MAOI,2DAPJ,MAOI,qDAPJ,MAOI,+DAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,+DAPJ,MAOI,2DAPJ,MAOI,yBAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,4BAPJ,MAOI,8BAPJ,MAOI,4BAPJ,MAOI,2BAPJ,MAOI,gCAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,gCAPJ,MAOI,8BAPJ,MAOI,4BAPJ,MAOI,iCAPJ,MAOI,gCAPJ,MAOI,+BAPJ,MAOI,iCAPJ,MAOI,+BAPJ,MAOI,0BAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,+BAPJ,MAOI,6BAPJ,OAOI,iBAPJ,OAOI,sBAPJ,OAOI,qBAPJ,OAOI,oBAPJ,OAOI,sBAPJ,OAOI,oBAPJ,WAOI,qBAPJ,WAOI,0BAPJ,WAOI,yBAPJ,WAOI,wBAPJ,WAOI,0BAPJ,WAOI,wBAPJ,cAOI,wBAPJ,cAOI,6BAPJ,cAOI,4BAPJ,cAOI,2BAPJ,cAOI,6BAPJ,cAOI,2BAPJ,gBAOI,gDAPJ,MAOI,4CAPJ,MAOI,6CAPJ,MAOI,6CAPJ,MAOI,4BAPJ,MAOI,4BAPJ,MAOI,0BAPJ,YAOI,6BAPJ,YAOI,6BAPJ,YAOI,+BAPJ,UAOI,2BAPJ,WAOI,2BAPJ,WAOI,2BAPJ,aAOI,2BAPJ,SAOI,2BAPJ,WAOI,8BAPJ,MAOI,yBAPJ,OAOI,2BAPJ,SAOI,2BAPJ,OAOI,2BAPJ,YAOI,2BAPJ,UAOI,4BAPJ,aAOI,6BAPJ,sBAOI,gCAPJ,2BAOI,qCAPJ,8BAOI,wCAPJ,gBAOI,oCAPJ,gBAOI,oCAPJ,iBAOI,qCAPJ,WAOI,8BAPJ,aAOI,8BAPJ,YAOI,iEAPJ,cAIQ,qBAGJ,qEAPJ,gBAIQ,qBAGJ,uEAPJ,cAIQ,qBAGJ,qEAPJ,WAIQ,qBAGJ,kEAPJ,cAIQ,qBAGJ,qEAPJ,aAIQ,qBAGJ,oEAPJ,YAIQ,qBAGJ,mEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,kEAPJ,WAIQ,qBAGJ,kEAPJ,gBAIQ,qBAGJ,uEAPJ,aAIQ,qBAGJ,oEAPJ,aAIQ,qBAGJ,oEAPJ,WAIQ,qBAGJ,kEAPJ,UAIQ,qBAGJ,iEAPJ,mBAIQ,qBAGJ,0EAPJ,YAIQ,qBAGJ,mEAPJ,YAIQ,qBAGJ,mEAPJ,aAIQ,qBAGJ,oEAPJ,aAIQ,qBAGJ,oEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,kEAPJ,WAIQ,qBAGJ,kEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,kEAPJ,gBAIQ,qBAGJ,uEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,wEAPJ,YAIQ,qBAGJ,2CAPJ,eAIQ,qBAGJ,gCAPJ,eAIQ,qBAGJ,sCAPJ,qBAIQ,qBAGJ,2CAPJ,oBAIQ,qBAGJ,0CAPJ,oBAIQ,qBAGJ,0CAPJ,YAIQ,qBAGJ,yBAjBJ,iBACE,wBADF,iBACE,uBADF,iBACE,wBADF,kBACE,qBASF,uBAOI,iDAPJ,yBAOI,mDAPJ,uBAOI,iDAPJ,oBAOI,8CAPJ,uBAOI,iDAPJ,sBAOI,gDAPJ,qBAOI,+CAPJ,oBAOI,8CAjBJ,iBACE,uBAIA,6BACE,uBANJ,iBACE,wBAIA,6BACE,wBANJ,iBACE,uBAIA,6BACE,uBANJ,iBACE,wBAIA,6BACE,wBANJ,kBACE,qBAIA,8BACE,qBAIJ,eAOI,wCAKF,2BAOI,wCAnBN,eAOI,uCAKF,2BAOI,uCAnBN,eAOI,wCAKF,2BAOI,wCAnBN,wBAIQ,+BAGJ,+FAPJ,0BAIQ,+BAGJ,iGAPJ,wBAIQ,+BAGJ,+FAPJ,qBAIQ,+BAGJ,4FAPJ,wBAIQ,+BAGJ,+FAPJ,uBAIQ,+BAGJ,8FAPJ,sBAIQ,+BAGJ,6FAPJ,sBAIQ,+BAGJ,6FAPJ,qBAIQ,+BAGJ,4FAPJ,qBAIQ,+BAGJ,4FAPJ,0BAIQ,+BAGJ,iGAPJ,uBAIQ,+BAGJ,8FAPJ,uBAIQ,+BAGJ,8FAPJ,qBAIQ,+BAGJ,4FAPJ,oBAIQ,+BAGJ,2FAPJ,6BAIQ,+BAGJ,oGAPJ,sBAIQ,+BAGJ,6FAPJ,sBAIQ,+BAGJ,6FAPJ,uBAIQ,+BAGJ,8FAPJ,uBAIQ,+BAGJ,8FAPJ,sBAIQ,+BAGJ,6FAPJ,qBAIQ,+BAGJ,4FAPJ,qBAIQ,+BAGJ,4FAPJ,sBAIQ,+BAGJ,6FAPJ,qBAIQ,+BAGJ,4FAPJ,0BAIQ,+BAGJ,iGAPJ,gBAIQ,+BAGJ,qGAjBJ,0BACE,+BAIA,sCACE,+BANJ,2BACE,iCAIA,uCACE,iCANJ,2BACE,kCAIA,uCACE,kCANJ,2BACE,iCAIA,uCACE,iCANJ,2BACE,kCAIA,uCACE,kCANJ,4BACE,+BAIA,wCACE,+BAIJ,YAIQ,mBAGJ,8EAPJ,cAIQ,mBAGJ,gFAPJ,YAIQ,mBAGJ,8EAPJ,SAIQ,mBAGJ,2EAPJ,YAIQ,mBAGJ,8EAPJ,WAIQ,mBAGJ,6EAPJ,UAIQ,mBAGJ,4EAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,2EAPJ,SAIQ,mBAGJ,2EAPJ,cAIQ,mBAGJ,gFAPJ,WAIQ,mBAGJ,6EAPJ,WAIQ,mBAGJ,6EAPJ,SAIQ,mBAGJ,2EAPJ,QAIQ,mBAGJ,0EAPJ,iBAIQ,mBAGJ,mFAPJ,UAIQ,mBAGJ,4EAPJ,UAIQ,mBAGJ,4EAPJ,WAIQ,mBAGJ,6EAPJ,WAIQ,mBAGJ,6EAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,2EAPJ,SAIQ,mBAGJ,2EAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,2EAPJ,cAIQ,mBAGJ,gFAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,8EAPJ,gBAIQ,mBAGJ,0CAPJ,mBAIQ,mBAGJ,mFAPJ,kBAIQ,mBAGJ,kFAjBJ,eACE,qBADF,eACE,sBADF,eACE,qBADF,eACE,sBADF,gBACE,mBASF,mBAOI,wDAPJ,qBAOI,0DAPJ,mBAOI,wDAPJ,gBAOI,qDAPJ,mBAOI,wDAPJ,kBAOI,uDAPJ,iBAOI,sDAPJ,gBAOI,qDAPJ,aAOI,+CAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,kBAOI,4BAPJ,SAOI,+BAPJ,SAOI,+BAPJ,SAOI,iDAPJ,WAOI,2BAPJ,WAOI,oDAPJ,WAOI,iDAPJ,WAOI,oDAPJ,WAOI,oDAPJ,WAOI,qDAPJ,gBAOI,6BAPJ,cAOI,sDAPJ,aAOI,qHAPJ,eAOI,yEAPJ,eAOI,2HAPJ,eAOI,qHAPJ,eAOI,2HAPJ,eAOI,2HAPJ,eAOI,6HAPJ,oBAOI,6EAPJ,kBAOI,+HAPJ,aAOI,yHAPJ,eAOI,6EAPJ,eAOI,+HAPJ,eAOI,yHAPJ,eAOI,+HAPJ,eAOI,+HAPJ,eAOI,iIAPJ,oBAOI,iFAPJ,kBAOI,mIAPJ,gBAOI,2HAPJ,kBAOI,+EAPJ,kBAOI,iIAPJ,kBAOI,2HAPJ,kBAOI,iIAPJ,kBAOI,iIAPJ,kBAOI,mIAPJ,uBAOI,mFAPJ,qBAOI,qIAPJ,eAOI,uHAPJ,iBAOI,2EAPJ,iBAOI,6HAPJ,iBAOI,uHAPJ,iBAOI,6HAPJ,iBAOI,6HAPJ,iBAOI,+HAPJ,sBAOI,+EAPJ,oBAOI,iIAPJ,SAOI,8BAPJ,WAOI,6BAPJ,MAOI,sBAPJ,KAOI,qBAPJ,KAOI,qBAPJ,KAOI,qBAPJ,KAOI,qBAPJ,aAOI,uBAPJ,gBAOI,0BAPJ,aAOI,uBAPJ,aAOI,uBAPJ,gBAOI,0BAPJ,aAOI,uBAPJ,aAOI,uBAPJ,aAOI,uBAPJ,oBAOI,8BAPJ,iBAOI,2BAPJ,aAOI,uBAPJ,gBAOI,0BAPJ,iBAOI,2BRVR,yBQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,yBQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,yBQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,0BQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,0BQGI,iBAOI,sBAPJ,eAOI,uBAPJ,gBAOI,sBAPJ,wBAOI,8BAPJ,sBAOI,4BAPJ,qBAOI,2BAPJ,sBAOI,iCAPJ,qBAOI,2BAPJ,cAOI,0BAPJ,oBAOI,gCAPJ,aAOI,yBAPJ,YAOI,wBAPJ,mBAOI,+BAPJ,aAOI,yBAPJ,iBAOI,6BAPJ,kBAOI,8BAPJ,YAOI,wBAPJ,mBAOI,+BAPJ,YAOI,wBAPJ,eAOI,yBAPJ,cAOI,8BAPJ,iBAOI,iCAPJ,sBAOI,sCAPJ,yBAOI,yCAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,mBAOI,yBAPJ,mBAOI,yBAPJ,eAOI,0BAPJ,iBAOI,4BAPJ,uBAOI,kCAPJ,2BAOI,sCAPJ,yBAOI,oCAPJ,4BAOI,kCAPJ,6BAOI,yCAPJ,4BAOI,wCAPJ,4BAOI,wCAPJ,uBAOI,kCAPJ,qBAOI,gCAPJ,wBAOI,8BAPJ,0BAOI,gCAPJ,yBAOI,+BAPJ,yBAOI,oCAPJ,uBAOI,kCAPJ,0BAOI,gCAPJ,2BAOI,uCAPJ,0BAOI,sCAPJ,2BAOI,iCAPJ,qBAOI,2BAPJ,sBAOI,iCAPJ,oBAOI,+BAPJ,uBAOI,6BAPJ,yBAOI,+BAPJ,wBAOI,8BAPJ,iBAOI,oBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,gBAOI,mBAPJ,SAOI,oBAPJ,SAOI,yBAPJ,SAOI,wBAPJ,SAOI,uBAPJ,SAOI,yBAPJ,SAOI,uBAPJ,YAOI,uBAPJ,UAOI,mDAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,yDAPJ,UAOI,6DAPJ,UAOI,yDAPJ,aAOI,yDAPJ,UAOI,mDAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,yDAPJ,UAOI,6DAPJ,UAOI,yDAPJ,aAOI,yDAPJ,UAOI,wBAPJ,UAOI,6BAPJ,UAOI,4BAPJ,UAOI,2BAPJ,UAOI,6BAPJ,UAOI,2BAPJ,aAOI,2BAPJ,UAOI,0BAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,+BAPJ,UAOI,6BAPJ,aAOI,6BAPJ,UAOI,2BAPJ,UAOI,gCAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,gCAPJ,UAOI,8BAPJ,aAOI,8BAPJ,UAOI,yBAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,4BAPJ,UAOI,8BAPJ,UAOI,4BAPJ,aAOI,4BAPJ,SAOI,qBAPJ,SAOI,0BAPJ,SAOI,yBAPJ,SAOI,wBAPJ,SAOI,0BAPJ,SAOI,wBAPJ,UAOI,qDAPJ,UAOI,+DAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,+DAPJ,UAOI,2DAPJ,UAOI,qDAPJ,UAOI,+DAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,+DAPJ,UAOI,2DAPJ,UAOI,yBAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,4BAPJ,UAOI,8BAPJ,UAOI,4BAPJ,UAOI,2BAPJ,UAOI,gCAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,gCAPJ,UAOI,8BAPJ,UAOI,4BAPJ,UAOI,iCAPJ,UAOI,gCAPJ,UAOI,+BAPJ,UAOI,iCAPJ,UAOI,+BAPJ,UAOI,0BAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,+BAPJ,UAOI,6BAPJ,WAOI,iBAPJ,WAOI,sBAPJ,WAOI,qBAPJ,WAOI,oBAPJ,WAOI,sBAPJ,WAOI,oBAPJ,eAOI,qBAPJ,eAOI,0BAPJ,eAOI,yBAPJ,eAOI,wBAPJ,eAOI,0BAPJ,eAOI,wBAPJ,kBAOI,wBAPJ,kBAOI,6BAPJ,kBAOI,4BAPJ,kBAOI,2BAPJ,kBAOI,6BAPJ,kBAOI,2BAPJ,gBAOI,2BAPJ,cAOI,4BAPJ,iBAOI,6BAPJ,iBAOI,uBAPJ,oBAOI,0BAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,oBAOI,0BAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,wBAOI,8BAPJ,qBAOI,2BAPJ,iBAOI,uBAPJ,oBAOI,0BAPJ,qBAOI,4BCtDZ,0BD+CQ,MAOI,0BAPJ,MAOI,4BAPJ,MAOI,6BCnCZ,aD4BQ,gBAOI,0BAPJ,sBAOI,gCAPJ,eAOI,yBAPJ,cAOI,wBAPJ,qBAOI,+BAPJ,eAOI,yBAPJ,mBAOI,6BAPJ,oBAOI,8BAPJ,cAOI,wBAPJ,qBAOI,+BAPJ,cAOI,yBEzEZ,4BASI,6VAIA,+MAIA,uhBAIA,qvBAIA,uRAIA,yPAIA,yRAGF,8BACA,wBAMA,mOACA,0GACA,0FAOA,iDC2OI,oBALI,KDpOR,2BACA,2BAKA,yBACA,gCACA,sBACA,gCAEA,0BACA,iCAEA,6CACA,qCACA,2BACA,qCAEA,2CACA,oCACA,0BACA,oCAGA,4BAEA,sBACA,6BACA,gCAEA,6BACA,mCAMA,sBACA,2BAGA,uBACA,yBACA,2BACA,oDAEA,sBACA,yBACA,yBACA,4BACA,6BACA,oDACA,+BAGA,mDACA,4DACA,qDACA,4DAIA,+BACA,8BACA,+CAIA,+BACA,sCACA,iCACA,wCE/GE,qBFqHA,kBAGA,yBACA,mCACA,sBACA,6BAEA,0BACA,uCAEA,gDACA,wCACA,2BACA,kCAEA,8CACA,uCACA,0BACA,iCAGE,yRAIA,uPAIA,uRAGF,4BAEA,yBACA,+BACA,mCACA,yCAEA,sBAEA,2BACA,yDAEA,+BACA,sCACA,iCACA,wCGrKJ,qBAGE,sBAeE,8CANJ,MAOM,wBAcN,KACE,SACA,uCF6OI,UALI,yBEtOR,uCACA,uCACA,2BACA,qCACA,mCACA,8BACA,0CASF,GACE,cACA,MjBmnB4B,QiBlnB5B,SACA,wCACA,QjBynB4B,IiB/mB9B,0CACE,aACA,cjBwjB4B,MiBrjB5B,YjBwjB4B,IiBvjB5B,YjBwjB4B,IiBvjB5B,8BAGF,OFuMQ,iCA5JJ,0BE3CJ,OF8MQ,gBEzMR,OFkMQ,kCA5JJ,0BEtCJ,OFyMQ,kBEpMR,OF6LQ,kCA5JJ,0BEjCJ,OFoMQ,kBE/LR,OFoLM,UALI,OE1KV,OF+KM,UALI,OErKV,OF0KM,UALI,KE1JV,EACE,aACA,cjBwV0B,KiB9U5B,YACE,iCACA,YACA,8BAMF,QACE,mBACA,kBACA,oBAMF,MAEE,kBAGF,SAGE,aACA,mBAGF,wBAIE,gBAGF,GACE,YjB6b4B,IiBxb9B,GACE,oBACA,cAMF,WACE,gBAQF,SAEE,YjBsa4B,OiB9Z9B,aF6EM,UALI,QEjEV,WACE,QjBqf4B,QiBpf5B,wCASF,QAEE,kBFyDI,UALI,OElDR,cACA,wBAGF,mBACA,eAKA,EACE,gEACA,gBjBiNwC,UiB/MxC,QACE,oDAWF,4DAEE,cACA,qBAOJ,kBAIE,YjBiV4B,yBelUxB,UALI,IEFV,IACE,cACA,aACA,mBACA,cFGI,UALI,OEOR,SFFI,UALI,QESN,cACA,kBAIJ,KFTM,UALI,OEgBR,2BACA,qBAGA,OACE,cAIJ,IACE,yBFrBI,UALI,OE4BR,MjBs5CkC,kBiBr5ClC,iBjBs5CkC,qBkB1rDhC,gBDuSF,QACE,UF5BE,UALI,IE4CV,OACE,gBAMF,QAEE,sBAQF,MACE,oBACA,yBAGF,QACE,YjB4X4B,MiB3X5B,ejB2X4B,MiB1X5B,MjB4Z4B,0BiB3Z5B,gBAOF,GAEE,mBACA,gCAGF,2BAME,qBACA,mBACA,eAQF,MACE,qBAMF,OAEE,gBAQF,iCACE,UAKF,sCAKE,SACA,oBF3HI,UALI,QEkIR,oBAIF,cAEE,oBAKF,cACE,eAGF,OAGE,iBAGA,gBACE,UAOJ,0IACE,wBAQF,gDAIE,0BAGE,4GACE,eAON,mBACE,UACA,kBAKF,SACE,gBAUF,SACE,YACA,UACA,SACA,SAQF,OACE,WACA,WACA,UACA,cjBoN4B,MepatB,iCEmNN,oBF/WE,0BEwWJ,OFrMQ,kBE8MN,SACE,WAOJ,+OAOE,UAGF,4BACE,YASF,cACE,6BACA,oBAmBF,4BACE,wBAKF,+BACE,UAOF,uBACE,aACA,0BAKF,OACE,qBAKF,OACE,SAOF,QACE,kBACA,eAQF,SACE,wBAQF,SACE,wBEpkBF,MJmQM,UALI,QI5PR,YnBwoB4B,ImBnoB5B,WJgQM,iCI5PJ,YnBynBkB,ImBxnBlB,YnBwmB0B,IezgB1B,0BIpGF,WJuQM,gBIvQN,WJgQM,iCI5PJ,YnBynBkB,ImBxnBlB,YnBwmB0B,IezgB1B,0BIpGF,WJuQM,kBIvQN,WJgQM,iCI5PJ,YnBynBkB,ImBxnBlB,YnBwmB0B,IezgB1B,0BIpGF,WJuQM,gBIvQN,WJgQM,iCI5PJ,YnBynBkB,ImBxnBlB,YnBwmB0B,IezgB1B,0BIpGF,WJuQM,kBIvQN,WJgQM,iCI5PJ,YnBynBkB,ImBxnBlB,YnBwmB0B,IezgB1B,0BIpGF,WJuQM,gBIvQN,WJgQM,iCI5PJ,YnBynBkB,ImBxnBlB,YnBwmB0B,IezgB1B,0BIpGF,WJuQM,kBI/OR,eCvDE,eACA,gBD2DF,aC5DE,eACA,gBD8DF,kBACE,qBAEA,mCACE,anBsoB0B,MmB5nB9B,YJ8MM,UALI,QIvMR,yBAIF,YACE,cnBiUO,Ke1HH,UALI,QI/LR,wBACE,gBAIJ,mBACE,iBACA,cnBuTO,Ke1HH,UALI,QItLR,ME5ES,QF8ET,2BACE,aGhGJ,WCIE,eAGA,YDDF,eACE,QtB2jDkC,OsB1jDlC,iBtB2jDkC,kBsB1jDlC,2DJGE,sCKRF,eAGA,YDcF,QAEE,qBAGF,YACE,oBACA,cAGF,gBPyPM,UALI,QOlPR,MtB8iDkC,0BwBhlDlC,mGCHA,iBACA,iBACA,WACA,0CACA,yCACA,kBACA,iBrBsDE,yBoB5CE,yBACE,UxBkee,OIvbnB,yBoB5CE,uCACE,UxBkee,OIvbnB,yBoB5CE,qDACE,UxBkee,OIvbnB,0BoB5CE,mEACE,UxBkee,QIvbnB,0BoB5CE,kFACE,UxBkee,Q0BlfvB,MAEI,2JAKF,KCNA,iBACA,iBACA,aACA,eAEA,uCACA,2CACA,0CDEE,OCOF,cACA,WACA,eACA,0CACA,yCACA,8BA+CI,KACE,YAGF,iBApCJ,cACA,WAcA,cACE,cACA,WAFF,cACE,cACA,UAFF,cACE,cACA,qBAFF,cACE,cACA,UAFF,cACE,cACA,UAFF,cACE,cACA,qBA+BE,UAhDJ,cACA,WAqDQ,OAhEN,cACA,kBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,QAhEN,cACA,mBA+DM,QAhEN,cACA,mBA+DM,QAhEN,cACA,WAuEQ,UAxDV,wBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,UAxDV,yBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,UAxDV,yBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,WAxDV,yBAwDU,WAxDV,yBAmEM,WAEE,iBAGF,WAEE,iBAPF,WAEE,uBAGF,WAEE,uBAPF,WAEE,sBAGF,WAEE,sBAPF,WAEE,oBAGF,WAEE,oBAPF,WAEE,sBAGF,WAEE,sBAPF,WAEE,oBAGF,WAEE,oBvB1DN,yBuBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBvB1DN,yBuBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBvB1DN,yBuBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBvB1DN,0BuBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBvB1DN,0BuBUE,SACE,YAGF,qBApCJ,cACA,WAcA,kBACE,cACA,WAFF,kBACE,cACA,UAFF,kBACE,cACA,qBAFF,kBACE,cACA,UAFF,kBACE,cACA,UAFF,kBACE,cACA,qBA+BE,cAhDJ,cACA,WAqDQ,WAhEN,cACA,kBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,YAhEN,cACA,mBA+DM,YAhEN,cACA,mBA+DM,YAhEN,cACA,WAuEQ,cAxDV,cAwDU,cAxDV,wBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,eAxDV,yBAwDU,eAxDV,yBAmEM,mBAEE,iBAGF,mBAEE,iBAPF,mBAEE,uBAGF,mBAEE,uBAPF,mBAEE,sBAGF,mBAEE,sBAPF,mBAEE,oBAGF,mBAEE,oBAPF,mBAEE,sBAGF,mBAEE,sBAPF,mBAEE,oBAGF,mBAEE,qBCrHV,uBAEE,+BACA,4BACA,gCACA,6BAEA,uCACA,iCACA,gDACA,kCACA,+CACA,2CACA,8CACA,yCACA,6CACA,yCAEA,WACA,c5BkYO,K4BjYP,e5BssB4B,I4BrsB5B,0CAOA,6EACE,oBAEA,qFACA,oCACA,oB5B8sB0B,uB4B7sB1B,2GAGF,yCACE,uBAGF,yCACE,sBAIJ,qBACE,+DAOF,aACE,iBAUA,4BACE,sBAeF,gCACE,sCAGA,kCACE,sCAOJ,oCACE,sBAGF,qCACE,mBAUF,2CACE,qDACA,+CAMF,yDACE,qDACA,+CAQJ,cACE,qDACA,+CAQA,8BACE,oDACA,8CC5IF,eAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,iBAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,eAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,YAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,eAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,cAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,aAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,YAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CDiJA,kBACE,gBACA,iCxB3FF,4BwByFA,qBACE,gBACA,kCxB3FF,4BwByFA,qBACE,gBACA,kCxB3FF,4BwByFA,qBACE,gBACA,kCxB3FF,6BwByFA,qBACE,gBACA,kCxB3FF,6BwByFA,sBACE,gBACA,kCEnKN,YACE,c9Bq2BsC,M8Bl2BtC,YCJuB,IDKvB,MTmBS,QSdX,gBACE,oDACA,uDACA,gBf8QI,UALI,QetQR,YChBuB,IDiBvB,YEfiB,IFgBjB,MTMS,QSHX,mBACE,kDACA,qDfoQI,UALI,Qe3PV,mBACE,mDACA,sDf8PI,UALI,SkBtRV,WACE,WjC61BsC,OenkBlC,UALI,QkBjRR,MjC61BsC,0BkCl2BxC,cACE,cACA,WACA,uBnBwRI,UALI,KmBhRR,YlCkmB4B,IkCjmB5B,YFLiB,IEMjB,MlC03BsC,qBkCz3BtC,gBACA,iBbGM,KaFN,4BACA,2DhBGE,sCjBHE,WiCMJ,0DjCFI,uCiChBN,cjCiBQ,iBiCGN,yBACE,gBAEA,wDACE,eAKJ,oBACE,MlCo2BoC,qBkCn2BpC,iBblBI,KamBJ,abJI,KaKJ,UAKE,WHlCmB,KGsCvB,2CAME,eAMA,aAKA,SAKF,qCACE,cACA,UAIF,2BACE,MlC00BoC,0BkCx0BpC,UAQF,uBAEE,iBlC4yBoC,uBkCzyBpC,UAIF,oCACE,uBACA,0BACA,kBlCmrB0B,OkClrB1B,MlCoyBoC,qBmCl4BtC,iBnCmiCgC,sBkCn8B9B,oBACA,qBACA,mBACA,eACA,wBlC+rB0B,uBkC9rB1B,gBjCzFE,WiC0FF,mHjCtFE,uCiC0EJ,oCjCzEM,iBiCwFN,yEACE,iBlC07B8B,uBkCj7BlC,wBACE,cACA,WACA,kBACA,gBACA,YFtHiB,IEuHjB,MlCyxBsC,qBkCxxBtC,+BACA,2BACA,sCAEA,8BACE,UAGF,gFAEE,gBACA,eAWJ,iBACE,WlC0wBsC,wDkCzwBtC,qBnByII,UALI,SGvQN,yCgBuIF,uCACE,qBACA,wBACA,kBlCmoB0B,MkC/nB9B,iBACE,WlC8vBsC,sDkC7vBtC,mBnB4HI,UALI,QGvQN,yCgBoJF,uCACE,mBACA,qBACA,kBlC0nB0B,KkClnB5B,sBACE,WlC2uBoC,yDkCxuBtC,yBACE,WlCwuBoC,wDkCruBtC,yBACE,WlCquBoC,sDkChuBxC,oBACE,MlCmuBsC,KkCluBtC,OlC4tBsC,yDkC3tBtC,QlCglB4B,QkC9kB5B,mDACE,eAGF,uCACE,oBhBvLA,sCgB2LF,0CACE,oBhB5LA,sCgBgMF,2ClC4sBsC,wDkC3sBtC,2ClC4sBsC,sDoC35BxC,aACE,yPAEA,cACA,WACA,uCrBqRI,UALI,KqB7QR,YpC+lB4B,IoC9lB5B,YJRiB,IISjB,MpCu3BsC,qBoCt3BtC,gBACA,sBACA,kFACA,4BACA,oBpC69BkC,oBoC59BlC,gBpC69BkC,UoC59BlC,2DlBHE,2BjBHE,WmCSJ,0DnCLI,uCmCfN,anCgBQ,iBmCMN,mBACE,afII,KeHJ,UAKE,WLxByB,KK4B7B,0DAEE,cpC4uB0B,OoC3uB1B,sBAGF,sBAEE,iBpCq1BoC,uBoCh1BtC,4BACE,oBACA,uCAIJ,gBACE,YpCquB4B,OoCpuB5B,epCouB4B,OoCnuB5B,apCouB4B,MejgBxB,UALI,SGvQN,2BkB8CJ,gBACE,YpCiuB4B,MoChuB5B,epCguB4B,MoC/tB5B,apCguB4B,KergBxB,UALI,QGvQN,2BkBwDA,kCACE,yPCxEN,YACE,cACA,WrCm6BwC,OqCl6BxC,arCm6BwC,MqCl6BxC,crCm6BwC,QqCj6BxC,8BACE,WACA,mBAIJ,oBACE,crCy5BwC,MqCx5BxC,eACA,iBAEA,sCACE,YACA,oBACA,cAIJ,kBACE,yBAEA,MrCy4BwC,IqCx4BxC,OrCw4BwC,IqCv4BxC,gBACA,mBACA,gBACA,yCACA,+CACA,4BACA,2BACA,wBACA,OrC04BwC,oDqCz4BxC,yBAGA,iCnB1BE,oBmB8BF,8BAEE,crCk4BsC,IqC/3BxC,yBACE,OrCy3BsC,gBqCt3BxC,wBACE,ahB3BI,KgB4BJ,UACA,WrC+foB,iCqC5ftB,0BACE,iBhBrDG,QgBsDH,ahBtDG,QgBwDH,yCAII,wPAIJ,sCAII,gKAKN,+CACE,iBhBlFK,QgBmFL,ahBnFK,QgBwFH,kPAIJ,2BACE,oBACA,YACA,QrCi2BuC,GqC11BvC,2FACE,eACA,QrCw1BqC,GqC10B3C,aACE,arCm1BgC,MqCj1BhC,+BACE,4KAEA,MrC60B8B,IqC50B9B,mBACA,0CACA,gCnBhHA,kBjBHE,WoCqHF,qCpCjHE,uCoCyGJ,+BpCxGM,iBoCkHJ,qCACE,2JAGF,uCACE,oBrC40B4B,aqCv0B1B,2JAKN,gCACE,crCuzB8B,MqCtzB9B,eAEA,kDACE,oBACA,cAKN,mBACE,qBACA,arCqyBgC,KqClyBlC,WACE,kBACA,sBACA,oBAIE,mDACE,oBACA,YACA,QrCspBwB,IqC/oB1B,8EACE,kLClLN,YACE,WACA,YACA,UACA,gBACA,+BAEA,kBACE,UAIA,mDtC4gCuC,uBsC3gCvC,+CtC2gCuC,uBsCxgCzC,8BACE,SAGF,kCACE,MtC6/BuC,KsC5/BvC,OtC4/BuC,KsC3/BvC,oBACA,gBH1BF,yBG4BE,OtC2/BuC,EkBxgCvC,mBjBHE,WqCmBF,4FrCfE,uCqCMJ,kCrCLM,iBqCgBJ,yCHjCF,iBnC4hCyC,QsCt/BzC,2CACE,MtCs+B8B,KsCr+B9B,OtCs+B8B,MsCr+B9B,oBACA,OtCq+B8B,QsCp+B9B,iBtCq+B8B,sBsCp+B9B,2BpB7BA,mBoBkCF,8BACE,MtCk+BuC,KsCj+BvC,OtCi+BuC,KsCh+BvC,gBHpDF,yBGsDE,OtCi+BuC,EkBxgCvC,mBjBHE,WqC6CF,4FrCzCE,uCqCiCJ,8BrChCM,iBqC0CJ,qCH3DF,iBnC4hCyC,QsC59BzC,8BACE,MtC48B8B,KsC38B9B,OtC48B8B,MsC38B9B,oBACA,OtC28B8B,QsC18B9B,iBtC28B8B,sBsC18B9B,2BpBvDA,mBoB4DF,qBACE,oBAEA,2CACE,iBtC88BqC,0BsC38BvC,uCACE,iBtC08BqC,0BuCjiC3C,eACE,kBAEA,gGAGE,OvCsiCoC,gDuCriCpC,WvCqiCoC,gDuCpiCpC,YvCqiCoC,KuCliCtC,qBACE,kBACA,MACA,OACA,UACA,YACA,oBACA,gBACA,iBACA,uBACA,mBACA,oBACA,kDACA,qBtCRE,WsCSF,kDtCLE,uCsCTJ,qBtCUM,iBsCON,oEAEE,oBAEA,8FACE,oBAGF,oMAEE,YvC0gCkC,SuCzgClC,evC0gCkC,QuCvgCpC,sGACE,YvCqgCkC,SuCpgClC,evCqgCkC,QuCjgCtC,4BACE,YvC+/BoC,SuC9/BpC,evC+/BoC,QuCx/BpC,mLACE,2CACA,UvCy/BkC,oDuCv/BlC,+MACE,kBACA,mBACA,WACA,OvCi/BgC,MuCh/BhC,WACA,iBlBlDA,KHEJ,sCqBuDA,oDACE,2CACA,UvCw+BkC,oDuCn+BpC,6CACE,sCAIJ,2EAEE,MlBhEO,QkBkEP,yFACE,iBvCwyBkC,uBwC/3BxC,aACE,kBACA,aACA,eACA,oBACA,WAEA,iFAGE,kBACA,cACA,SACA,YAIF,0GAGE,UAMF,kBACE,kBACA,UAEA,wBACE,UAWN,kBACE,aACA,mBACA,uBzB8OI,UALI,KyBvOR,YxCyjB4B,IwCxjB5B,YR9CiB,IQ+CjB,MxCi1BsC,qBwCh1BtC,kBACA,mBACA,iBxCw6BsC,sBwCv6BtC,2DtBtCE,sCsBgDJ,kHAIE,mBzBwNI,UALI,QGvQN,yCsByDJ,kHAIE,qBzB+MI,UALI,SGvQN,yCsBkEJ,0DAEE,mBAaE,wVtBjEA,0BACA,6BsByEA,yUtB1EA,0BACA,6BsBsFF,0IACE,8CtB1EA,yBACA,4BsB6EF,uHtB9EE,yBACA,4BuBxBF,gBACE,aACA,WACA,WzCq0BoC,OenkBlC,UALI,Q0B1PN,MzCgjCqB,2ByC7iCvB,eACE,kBACA,SACA,UACA,aACA,eACA,qBACA,iB1BqPE,UALI,S0B7ON,MzCmiCqB,KyCliCrB,iBzCkiCqB,kBkB7jCrB,sCuBgCA,8HAEE,cA/CF,0DAqDE,azCqhCmB,kCyClhCjB,czC41BgC,sByC31BhC,2PACA,4BACA,yDACA,8DAGF,sEACE,azC0gCiB,kCyCzgCjB,WzCygCiB,0CyC1kCrB,0EA0EI,czC00BgC,sByCz0BhC,8EA3EJ,wDAkFE,azCw/BmB,kCyCr/BjB,4NAEE,oQACA,czCw5B8B,SyCv5B9B,6DACA,wEAIJ,oEACE,azC2+BiB,kCyC1+BjB,WzC0+BiB,0CyC1kCrB,sEAwGI,yCAxGJ,kEA+GE,azC29BmB,kCyCz9BnB,kFACE,iBzCw9BiB,2ByCr9BnB,8EACE,WzCo9BiB,0CyCj9BnB,sGACE,MzCg9BiB,2ByC38BrB,qDACE,iBAhIF,kVA0IM,UAtHR,kBACE,aACA,WACA,WzCq0BoC,OenkBlC,UALI,Q0B1PN,MzCgjCqB,6ByC7iCvB,iBACE,kBACA,SACA,UACA,aACA,eACA,qBACA,iB1BqPE,UALI,S0B7ON,MzCmiCqB,KyCliCrB,iBzCkiCqB,iBkB7jCrB,sCuBgCA,8IAEE,cA/CF,8DAqDE,azCqhCmB,oCyClhCjB,czC41BgC,sByC31BhC,4UACA,4BACA,yDACA,8DAGF,0EACE,azC0gCiB,oCyCzgCjB,WzCygCiB,yCyC1kCrB,8EA0EI,czC00BgC,sByCz0BhC,8EA3EJ,4DAkFE,azCw/BmB,oCyCr/BjB,oOAEE,qVACA,czCw5B8B,SyCv5B9B,6DACA,wEAIJ,wEACE,azC2+BiB,oCyC1+BjB,WzC0+BiB,yCyC1kCrB,0EAwGI,yCAxGJ,sEA+GE,azC29BmB,oCyCz9BnB,sFACE,iBzCw9BiB,6ByCr9BnB,kFACE,WzCo9BiB,yCyCj9BnB,0GACE,MzCg9BiB,6ByC38BrB,uDACE,iBAhIF,8VA4IM,UC9IV,KAEE,yBACA,2BACA,uB3BuRI,mBALI,K2BhRR,0BACA,0BACA,qCACA,yBACA,8CACA,mCACA,gCACA,yCACA,0BACA,gCACA,4EAGA,qBACA,wDACA,sC3BsQI,UALI,wB2B/PR,sCACA,sCACA,0BACA,kBACA,qBAEA,sBACA,eACA,iBACA,mExBjBE,0CiBfF,iBOkCqB,iBzCtBjB,WyCwBJ,mHzCpBI,uCyChBN,KzCiBQ,iByCqBN,WACE,gCAEA,wCACA,8CAGF,sBAEE,0BACA,kCACA,wCAGF,mBACE,gCPrDF,iBOsDuB,uBACrB,8CACA,UAKE,0CAIJ,8BACE,8CACA,UAKE,0CAIJ,mGAKE,iCACA,yCAGA,+CAGA,yKAKI,0CAKN,mDAGE,mCACA,oBACA,2CAEA,iDACA,uCAYF,aCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,eCtGA,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,sCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qCDyFA,aCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,aCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,eCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,SCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,kBCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,yCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,eCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDmHA,qBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,uBCvGA,qBACA,4BACA,2BACA,wBACA,kCACA,mCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oBD0FA,qBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,qBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,uBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,qCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,iBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,0BCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,qBACA,4BACA,2BACA,wBACA,kCACA,yCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,uBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBDsGF,UACE,0BACA,qCACA,yBACA,mCACA,iDACA,yCACA,kDACA,0CACA,iCACA,4CACA,gCACA,sCAEA,gB1CuRwC,U0C7QxC,wBACE,0BAGF,gBACE,gCAWJ,2BCxIE,2BACA,yB5B8NI,mBALI,Q4BvNR,gCDyIF,2BC5IE,4BACA,2B5B8NI,mBALI,S4BvNR,gCCnEF,M3CgBM,W2CfJ,oB3CmBI,uC2CpBN,M3CqBQ,iB2ClBN,iBACE,UAMF,qBACE,aAIJ,YACE,SACA,gB3CDI,W2CEJ,iB3CEI,uC2CLN,Y3CMQ,iB2CDN,gCACE,QACA,Y3CNE,W2COF,gB3CHE,uEACE,iB4CpBR,sEAME,kBAGF,iBACE,mBCwBE,wBACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WArCJ,sBACA,sCACA,gBACA,qCA0DE,8BACE,cD9CN,eAEE,2BACA,+BACA,2BACA,gCACA,+B9BuQI,wBALI,K8BhQR,0CACA,oCACA,+DACA,qDACA,mDACA,0FACA,6DACA,uCACA,4DACA,+CACA,qDACA,mDACA,sCACA,sCACA,4DACA,mCACA,sCACA,oCACA,qCACA,uCAGA,kBACA,kCACA,aACA,uCACA,kEACA,S9B0OI,UALI,6B8BnOR,+BACA,gBACA,gBACA,uCACA,4BACA,6E3BzCE,+C2B6CF,+BACE,SACA,OACA,qCAwBA,qBACE,qBAEA,qCACE,WACA,OAIJ,mBACE,mBAEA,mCACE,QACA,UzC1CJ,yByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,yByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,yByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,0ByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,0ByC4BA,yBACE,qBAEA,yCACE,WACA,OAIJ,uBACE,mBAEA,uCACE,QACA,WAUN,uCACE,SACA,YACA,aACA,wCCpFA,gCACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WA9BJ,aACA,sCACA,yBACA,qCAmDE,sCACE,cDgEJ,wCACE,MACA,WACA,UACA,aACA,sCClGA,iCACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WAvBJ,oCACA,eACA,uCACA,uBA4CE,uCACE,cD0EF,iCACE,iBAMJ,0CACE,MACA,WACA,UACA,aACA,uCCnHA,mCACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WAWA,mCACE,aAGF,oCACE,qBACA,a9C0gBsB,O8CzgBtB,e9CwgBsB,O8CvgBtB,WAnCN,oCACA,wBACA,uCAsCE,yCACE,cD2FF,oCACE,iBAON,kBACE,SACA,6CACA,gBACA,mDACA,UAMF,eACE,cACA,WACA,4EACA,WACA,Y7Cyb4B,I6Cxb5B,oCACA,mBACA,qBACA,mBACA,+BACA,S3BtKE,uD2ByKF,0CAEE,0CV1LF,iBU4LuB,iCAGvB,4CAEE,2CACA,qBVlMF,iBUmMuB,kCAGvB,gDAEE,6CACA,oBACA,+BAMJ,oBACE,cAIF,iBACE,cACA,gFACA,gB9BmEI,UALI,S8B5DR,sCACA,mBAIF,oBACE,cACA,4EACA,oCAIF,oBAEE,6BACA,0BACA,+DACA,2BACA,kCACA,qCACA,6DACA,uDACA,sCACA,sCACA,2CACA,oCEtPF,+BAEE,kBACA,oBACA,sBAEA,yCACE,kBACA,cAKF,kXAME,UAKJ,aACE,aACA,eACA,2BAEA,0BACE,WAIJ,W7BhBI,qB6BoBF,qFAEE,8CAIF,qJ7BVE,0BACA,6B6BmBF,6G7BNE,yBACA,4B6BwBJ,uBACE,qBACA,oBAEA,2GAGE,cAGF,0CACE,eAIJ,yEACE,sBACA,qBAGF,yEACE,qBACA,oBAoBF,oBACE,sBACA,uBACA,uBAEA,wDAEE,WAGF,4FAEE,6CAIF,qH7B1FE,6BACA,4B6B8FF,oF7B7GE,yBACA,0B8BxBJ,KAEE,8BACA,gCAEA,4BACA,0CACA,sDACA,wDAGA,aACA,eACA,eACA,gBACA,gBAGF,UACE,cACA,kEjCsQI,UALI,6BiC/PR,2CACA,+BACA,qBACA,gBACA,S/CfI,W+CgBJ,uF/CZI,uC+CGN,U/CFQ,iB+CaN,gCAEE,qCAIF,wBACE,UACA,WhDkhBoB,iCgD9gBtB,sCAEE,wCACA,oBACA,eAQJ,UAEE,mDACA,oCACA,qDACA,6FACA,sCACA,mCACA,6DAGA,oFAEA,oBACE,uDACA,2D9B7CA,wDACA,yD8B+CA,oDAGE,kBACA,wDAIJ,8DAEE,2CACA,mDACA,yDAGF,yBAEE,oD9BjEA,yBACA,0B8B2EJ,WAEE,sDACA,uCACA,uCAGA,qB9B5FE,gD8BgGF,uDAEE,4CbjHF,iBakHuB,mCASzB,eAEE,6BACA,0CACA,+DAGA,gCAEA,yBACE,gBACA,eACA,uEAEA,8DAEE,iCAIJ,+DAEE,YhD0d0B,IgDzd1B,gDACA,iCAUF,wCAEE,cACA,kBAKF,kDAEE,aACA,YACA,kBAMF,iEACE,WAUF,uBACE,aAEF,qBACE,cC7LJ,QAEE,yBACA,yBACA,4DACA,iEACA,oEACA,gEACA,oCACA,mCACA,kCACA,+DACA,qEACA,uCACA,uCACA,uCACA,uCACA,4QACA,2EACA,2CACA,mCACA,6DAGA,kBACA,aACA,eACA,mBACA,8BACA,8DAMA,2JACE,aACA,kBACA,mBACA,8BAoBJ,cACE,6CACA,gDACA,+ClC4NI,UALI,iCkCrNR,mCACA,qBACA,mBAEA,wCAEE,yCAUJ,YAEE,2BACA,gCAEA,4BACA,4CACA,wDACA,8DAGA,aACA,sBACA,eACA,gBACA,gBAGE,wDAEE,oCAIJ,2BACE,gBASJ,aACE,YjD4gCkC,MiD3gClC,ejD2gCkC,MiD1gClC,6BAEA,yDAGE,oCAaJ,iBACE,gBACA,YAGA,mBAIF,gBACE,8ElCyII,UALI,mCkClIR,cACA,6BACA,+BACA,0E/BxIE,qDjBHE,WgD6IJ,oChDzII,uCgDiIN,gBhDhIQ,iBgD0IN,sBACE,qBAGF,sBACE,qBACA,UACA,sDAMJ,qBACE,qBACA,YACA,aACA,sBACA,kDACA,4BACA,2BACA,qBAGF,mBACE,yCACA,gB7C1HE,yB6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,yB6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,yB6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,0B6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,0B6CsIA,mBAEI,iBACA,2BAEA,+BACE,mBAEA,8CACE,kBAGF,yCACE,kDACA,iDAIJ,sCACE,iBAGF,oCACE,wBACA,gBAGF,mCACE,aAGF,8BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,gDACE,aAGF,8CACE,aACA,YACA,UACA,oBAtDR,eAEI,iBACA,2BAEA,2BACE,mBAEA,0CACE,kBAGF,qCACE,kDACA,iDAIJ,kCACE,iBAGF,gCACE,wBACA,gBAGF,+BACE,aAGF,0BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,4CACE,aAGF,0CACE,aACA,YACA,UACA,mBAiBZ,yCAGE,6CACA,mDACA,sDACA,+BACA,8BACA,oCACA,2DACA,+QAME,0CACE,+QCzRN,MAEE,yBACA,yBACA,iCACA,wBACA,2BACA,+CACA,2DACA,iDACA,uBACA,wFACA,gCACA,8BACA,uDACA,sBACA,mBACA,kBACA,gCACA,oCACA,0BAGA,kBACA,aACA,sBACA,YACA,6BACA,2BACA,qBACA,mCACA,2BACA,qEhCjBE,2CgCqBF,SACE,eACA,cAGF,kBACE,mBACA,sBAEA,8BACE,mBhCtBF,0DACA,2DgCyBA,6BACE,sBhCbF,8DACA,6DgCmBF,8DAEE,aAIJ,WAGE,cACA,wDACA,2BAGF,YACE,4CACA,iCAGF,eACE,oDACA,gBACA,oCAGF,sBACE,gBAQA,sBACE,oCAQJ,aACE,kEACA,gBACA,+BACA,uCACA,4EAEA,yBhC7FE,wFgCkGJ,aACE,kEACA,+BACA,uCACA,yEAEA,wBhCxGE,wFgCkHJ,kBACE,qDACA,oDACA,oDACA,gBAEA,mCACE,mCACA,sCAIJ,mBACE,qDACA,oDAIF,kBACE,kBACA,MACA,QACA,SACA,OACA,2ChC1IE,iDgC8IJ,yCAGE,WAGF,wBhC3II,0DACA,2DgC+IJ,2BhClII,8DACA,6DgC8IF,kBACE,0C9C3HA,yB8CuHJ,YAQI,aACA,mBAGA,kBAEE,YACA,gBAEA,wBACE,cACA,cAKA,mChC3KJ,0BACA,6BgC6KM,iGAGE,0BAEF,oGAGE,6BAIJ,oChC5KJ,yBACA,4BgC8KM,mGAGE,yBAEF,sGAGE,6BCpOZ,WAEE,2CACA,qCACA,+KACA,oDACA,+BACA,sDACA,sEACA,sCACA,mCACA,+BACA,+BACA,ySACA,uCACA,mDACA,+DACA,gTACA,4CACA,0CACA,uCACA,oCACA,kCACA,kCAIF,kBACE,kBACA,aACA,mBACA,WACA,4EpC2PI,UALI,KoCpPR,oCACA,gBACA,4CACA,SjCtBE,gBiCwBF,qBlD3BI,WkD4BJ,+BlDxBI,uCkDWN,kBlDVQ,iBkDyBN,kCACE,uCACA,+CACA,gGAEA,yCACE,qDACA,iDAKJ,yBACE,cACA,yCACA,0CACA,iBACA,WACA,8CACA,4BACA,mDlDlDE,WkDmDF,wClD/CE,uCkDsCJ,yBlDrCM,iBkDiDN,wBACE,UAGF,wBACE,UACA,wDACA,UACA,oDAIJ,kBACE,gBAGF,gBACE,gCACA,wCACA,+EAEA,8BjC/DE,yDACA,0DiCiEA,gDjClEA,+DACA,gEiCsEF,oCACE,aAIF,6BjC9DE,6DACA,4DiCiEE,yDjClEF,mEACA,kEiCsEA,iDjCvEA,6DACA,4DiC4EJ,gBACE,8EASA,qCACE,eAGF,iCACE,eACA,cjCpHA,gBiCuHA,0DACA,4DAGE,gHjC3HF,gBiCqIA,8CACE,ySACA,gTC1JN,YAEE,6BACA,6BACA,oCAEA,qBACA,gCACA,yDACA,uCACA,6DAGA,aACA,eACA,sEACA,iDrC+QI,UALI,+BqCxQR,gBACA,0FAMA,kCACE,iDAEA,0CACE,WACA,kDACA,yCACA,uFAIJ,wBACE,6CCrCJ,YAEE,mCACA,oCtC4RI,0BALI,KsCrRR,4BACA,4BACA,gCACA,qDACA,uCACA,kCACA,kCACA,2DACA,kCACA,kCACA,wEACA,mCACA,mCACA,6CACA,wCACA,qCACA,8DAGA,ajCpBA,eACA,gBiCuBF,WACE,kBACA,cACA,sEtCgQI,UALI,+BsCzPR,iCACA,qBACA,yCACA,iFpDpBI,WoDqBJ,mHpDjBI,uCoDQN,WpDPQ,iBoDkBN,iBACE,UACA,uCAEA,+CACA,qDAGF,iBACE,UACA,uCACA,+CACA,QrDyuCgC,EqDxuChC,iDAGF,qCAEE,UACA,wClBtDF,iBkBuDuB,+BACrB,sDAGF,yCAEE,0CACA,oBACA,kDACA,wDAKF,wCACE,YrD4sCgC,aqDvsC9B,kCnC9BF,0DACA,6DmCmCE,iCnClDF,2DACA,8DmCkEJ,eClGE,kCACA,mCvC0RI,0BALI,QuCnRR,0DDmGF,eCtGE,kCACA,mCvC0RI,0BALI,SuCnRR,0DCFF,OAEE,6BACA,6BxCuRI,qBALI,OwChRR,4BACA,uBACA,kDAGA,qBACA,4DxC+QI,UALI,0BwCxQR,wCACA,cACA,4BACA,kBACA,mBACA,wBrCJE,4CqCSF,aACE,aAKJ,YACE,kBACA,SChCF,OAEE,2BACA,2BACA,6BACA,iCACA,0BACA,qCACA,wDACA,kDACA,+BAGA,kBACA,4DACA,4CACA,4BACA,oCACA,8BtCHE,4CsCQJ,eAEE,cAIF,YACE,YxD6kB4B,IwD5kB5B,iCAQF,mBACE,cxDk+C8B,KwD/9C9B,8BACE,kBACA,MACA,QACA,UACA,qBAQF,eACE,kDACA,2CACA,yDACA,uDAJF,iBACE,oDACA,6CACA,2DACA,yDAJF,eACE,kDACA,2CACA,yDACA,uDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,eACE,kDACA,2CACA,yDACA,uDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,iBACE,oDACA,6CACA,2DACA,yDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,WACE,8CACA,uCACA,qDACA,mDAJF,oBACE,uDACA,gDACA,8DACA,4DAJF,aACE,gDACA,yCACA,uDACA,qDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,iBACE,oDACA,6CACA,2DACA,yDC5DF,gCACE,yBzDqhDgC,MyDhhDpC,4BAGE,2B1CkRI,wBALI,Q0C3QR,yCACA,qDACA,qDACA,8BACA,8BACA,8CAGA,aACA,iCACA,gB1CsQI,UALI,6B0C/PR,uCvCRE,+CuCaJ,cACE,aACA,sBACA,uBACA,gBACA,mCACA,kBACA,mBACA,2CxDxBI,WwDyBJ,kCxDrBI,uCwDYN,cxDXQ,iBwDuBR,2NAEE,oEAGF,4BACE,iBAGF,0CACE,WAIA,uBACE,kDAGE,uCAJJ,uBAKM,gBC3DR,YAEE,4CACA,sCACA,qDACA,qDACA,uDACA,qCACA,uCACA,wDACA,6DACA,uDACA,0DACA,yDACA,0DACA,+CACA,mCACA,mCACA,6CAGA,aACA,sBAGA,eACA,gBxCXE,iDwCeJ,qBACE,qBACA,sBAEA,8CAEE,oCACA,0BASJ,wBACE,WACA,wCACA,mBAGA,4DAEE,UACA,8CACA,qBACA,sDAGF,+BACE,+CACA,uDAQJ,iBACE,kBACA,cACA,gFACA,iCACA,qBACA,yCACA,iFAEA,6BxCvDE,+BACA,gCwC0DF,4BxC7CE,mCACA,kCwCgDF,oDAEE,0CACA,oBACA,kDAIF,wBACE,UACA,wCACA,gDACA,sDAIF,kCACE,mBAEA,yCACE,sDACA,mDAaF,uBACE,mBAGE,qExCvDJ,6DAZA,0BwCwEI,qExCxEJ,2DAYA,4BwCiEI,+CACE,aAGF,yDACE,mDACA,oBAEA,gEACE,uDACA,oDtDtFR,yBsD8DA,0BACE,mBAGE,wExCvDJ,6DAZA,0BwCwEI,wExCxEJ,2DAYA,4BwCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,yBsD8DA,0BACE,mBAGE,wExCvDJ,6DAZA,0BwCwEI,wExCxEJ,2DAYA,4BwCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,yBsD8DA,0BACE,mBAGE,wExCvDJ,6DAZA,0BwCwEI,wExCxEJ,2DAYA,4BwCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,0BsD8DA,0BACE,mBAGE,wExCvDJ,6DAZA,0BwCwEI,wExCxEJ,2DAYA,4BwCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,0BsD8DA,2BACE,mBAGE,yExCvDJ,6DAZA,0BwCwEI,yExCxEJ,2DAYA,4BwCiEI,mDACE,aAGF,6DACE,mDACA,oBAEA,oEACE,uDACA,qDAcZ,kBxChJI,gBwCmJF,mCACE,mDAEA,8CACE,sBAaJ,yBACE,uDACA,gDACA,8DACA,6DACA,iEACA,8DACA,kEACA,0DACA,2DACA,qEAVF,2BACE,yDACA,kDACA,gEACA,6DACA,mEACA,8DACA,oEACA,4DACA,6DACA,uEAVF,yBACE,uDACA,gDACA,8DACA,6DACA,iEACA,8DACA,kEACA,0DACA,2DACA,qEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,yBACE,uDACA,gDACA,8DACA,6DACA,iEACA,8DACA,kEACA,0DACA,2DACA,qEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,2BACE,yDACA,kDACA,gEACA,6DACA,mEACA,8DACA,oEACA,4DACA,6DACA,uEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,qBACE,mDACA,4CACA,0DACA,6DACA,6DACA,8DACA,8DACA,sDACA,uDACA,iEAVF,8BACE,4DACA,qDACA,mEACA,6DACA,sEACA,8DACA,uEACA,+DACA,gEACA,0EAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,2BACE,yDACA,kDACA,gEACA,6DACA,mEACA,8DACA,oEACA,4DACA,6DACA,uEC5LJ,WAEE,2BACA,qVACA,4BACA,mCACA,mEACA,gCACA,sCACA,wEAGA,uBACA,M3DipD2B,I2DhpD3B,O3DgpD2B,I2D/oD3B,oBACA,gCACA,0EACA,SzCJE,gByCMF,oCAGA,iBACE,gCACA,qBACA,0CAGF,iBACE,UACA,4CACA,0CAGF,wCAEE,oBACA,iBACA,6CAQJ,iBAHE,wCASE,gCATF,wCCjDF,OAEE,wBACA,8BACA,6BACA,sBACA,4B7CyRI,qBALI,S6ClRR,mBACA,iDACA,gDACA,4DACA,kDACA,4CACA,mDACA,wDACA,mEAGA,gCACA,e7C2QI,UALI,0B6CpQR,4BACA,oBACA,oCACA,4BACA,uEACA,sC1CRE,4C0CWF,eACE,UAGF,kBACE,aAIJ,iBACE,wBAEA,kBACA,+BACA,kBACA,eACA,oBAEA,mCACE,sCAIJ,cACE,aACA,mBACA,4DACA,mCACA,2CACA,4BACA,qF1ChCE,0FACA,2F0CkCF,yBACE,kDACA,sCAIJ,YACE,kCACA,qBC9DF,OAEE,wBACA,wBACA,yBACA,0BACA,0BACA,oBACA,4DACA,gDACA,4BACA,+DACA,kCACA,kCACA,kCACA,qCACA,uDACA,kCACA,kCACA,8BACA,uBACA,uDACA,0CAGA,eACA,MACA,OACA,+BACA,aACA,WACA,YACA,kBACA,gBAGA,UAOF,cACE,kBACA,WACA,8BAEA,oBAGA,0B5D5CI,W4D6CF,uBACA,U7D87CgC,oBCx+C9B,uC4DwCJ,0B5DvCM,iB4D2CN,0BACE,U7D47CgC,K6Dx7ClC,kCACE,U7Dy7CgC,Y6Dr7CpC,yBACE,6CAEA,wCACE,gBACA,gBAGF,qCACE,gBAIJ,uBACE,aACA,mBACA,iDAIF,eACE,kBACA,aACA,sBACA,WAEA,4BACA,oBACA,oCACA,4BACA,uE3CrFE,4C2CyFF,UAIF,gBAEE,2BACA,uBACA,2BClHA,eACA,MACA,OACA,QDkH0B,0BCjH1B,YACA,aACA,iBD+G4D,sBC5G5D,+BACA,6BD2G0F,2BAK5F,cACE,aACA,cACA,mBACA,8BACA,uCACA,4F3CtGE,2DACA,4D2CwGF,yBACE,4FACA,gJAKJ,aACE,gBACA,8CAKF,YACE,kBAGA,cACA,gCAIF,cACE,aACA,cACA,eACA,mBACA,yBACA,sEACA,2CACA,yF3C1HE,+DACA,8D2C+HF,gBACE,2CzD5GA,yByDkHF,OACE,2BACA,yDAIF,cACE,gCACA,kBACA,iBAGF,UACE,yBzD/HA,yByDoIF,oBAEE,yBzDtIA,0ByD2IF,UACE,0BAUA,kBACE,YACA,eACA,YACA,SAEA,iCACE,YACA,S3C1MJ,gB2C8ME,gE3C9MF,gB2CmNE,8BACE,gBzD3JJ,4ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S3C1MJ,gB2C8ME,gF3C9MF,gB2CmNE,sCACE,iBzD3JJ,4ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S3C1MJ,gB2C8ME,gF3C9MF,gB2CmNE,sCACE,iBzD3JJ,4ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S3C1MJ,gB2C8ME,gF3C9MF,gB2CmNE,sCACE,iBzD3JJ,6ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S3C1MJ,gB2C8ME,gF3C9MF,gB2CmNE,sCACE,iBzD3JJ,6ByDyIA,2BACE,YACA,eACA,YACA,SAEA,0CACE,YACA,S3C1MJ,gB2C8ME,kF3C9MF,gB2CmNE,uCACE,iBEtOR,SAEE,0BACA,8BACA,+BACA,gCACA,sBhDwRI,uBALI,SgDjRR,sCACA,0CACA,oDACA,0BACA,iCACA,kCAGA,iCACA,cACA,gCClBA,YhE+lB4B,0BgE7lB5B,kBACA,YhEwmB4B,IgEvmB5B,YhCCiB,oBgCCjB,iBACA,qBACA,iBACA,oBACA,sBACA,kBACA,mBACA,oBACA,gBjDgRI,UALI,4BgDhQR,qBACA,UAEA,gDAEA,wBACE,cACA,oCACA,sCAEA,gCACE,kBACA,WACA,2BACA,mBAKN,2FACE,+CAEA,2GACE,SACA,qFACA,sCAKJ,6FACE,6CACA,qCACA,qCAEA,6GACE,WACA,4HACA,wCAMJ,iGACE,4CAEA,iHACE,YACA,qFACA,yCAKJ,8FACE,8CACA,qCACA,qCAEA,8GACE,UACA,4HACA,uCAsBJ,eACE,sCACA,gEACA,8BACA,kBACA,sC7CjGE,8C+CnBJ,SAEE,0BACA,8BlD4RI,uBALI,SkDrRR,mCACA,kDACA,8DACA,uDACA,4FACA,2DACA,oCACA,sClDmRI,8BALI,KkD5QR,mCACA,+CACA,kCACA,kCACA,8CACA,+BACA,kCACA,0DAGA,iCACA,cACA,sCDzBA,YhE+lB4B,0BgE7lB5B,kBACA,YhEwmB4B,IgEvmB5B,YhCCiB,oBgCCjB,iBACA,qBACA,iBACA,oBACA,sBACA,kBACA,mBACA,oBACA,gBjDgRI,UALI,4BkD1PR,qBACA,sCACA,4BACA,2E/ChBE,8C+CoBF,wBACE,cACA,oCACA,sCAEA,+DAEE,kBACA,cACA,WACA,2BACA,mBACA,eAMJ,2FACE,kFAEA,oNAEE,qFAGF,2GACE,SACA,gDAGF,yGACE,sCACA,sCAOJ,6FACE,gFACA,qCACA,qCAEA,wNAEE,4HAGF,6GACE,OACA,kDAGF,2GACE,oCACA,wCAQJ,iGACE,+EAEA,gOAEE,qFAGF,iHACE,MACA,mDAGF,+GACE,mCACA,yCAKJ,mHACE,kBACA,MACA,SACA,cACA,oCACA,qDACA,WACA,+EAMF,8FACE,iFACA,qCACA,qCAEA,0NAEE,4HAGF,8GACE,QACA,iDAGF,4GACE,qCACA,uCAuBN,gBACE,8EACA,gBlD2GI,UALI,mCkDpGR,qCACA,6CACA,kF/C5JE,6DACA,8D+C8JF,sBACE,aAIJ,cACE,0EACA,mCCrLF,UACE,kBAGF,wBACE,mBAGF,gBACE,kBACA,WACA,gBvEtBA,uBACE,cACA,WACA,WuEuBJ,eACE,kBACA,aACA,WACA,WACA,mBACA,2BjElBI,WiEmBJ,0BjEfI,uCiEQN,ejEPQ,iBiEiBR,8DAGE,cAGF,wEAEE,2BAGF,wEAEE,4BASA,8BACE,UACA,4BACA,eAGF,iJAGE,UACA,UAGF,oFAEE,UACA,UjE5DE,WiE6DF,ejEzDE,uCiEqDJ,oFjEpDM,iBiEiER,8CAEE,kBACA,MACA,SACA,UAEA,aACA,mBACA,uBACA,MlE8gDmC,IkE7gDnC,UACA,M7CjFM,K6CkFN,kBACA,gBACA,SACA,QlEygDmC,GC/lD/B,WiEuFJ,kBjEnFI,uCiEkEN,8CjEjEQ,iBiEqFN,oHAEE,M7C3FI,K6C4FJ,qBACA,UACA,QlEigDiC,GkE9/CrC,uBACE,OAGF,uBACE,QAKF,wDAEE,qBACA,MlEkgDmC,KkEjgDnC,OlEigDmC,KkEhgDnC,4BACA,wBACA,0BAWF,4BACE,yQAEF,4BACE,0QAQF,qBACE,kBACA,QACA,SACA,OACA,UACA,aACA,uBACA,UAEA,alE08CmC,IkEz8CnC,mBACA,YlEw8CmC,IkEt8CnC,sCACE,uBACA,cACA,MlEw8CiC,KkEv8CjC,OlEw8CiC,IkEv8CjC,UACA,alEw8CiC,IkEv8CjC,YlEu8CiC,IkEt8CjC,mBACA,eACA,iB7CjKI,K6CkKJ,4BACA,SAEA,oCACA,uCACA,QlE+7CiC,GCvmD/B,WiEyKF,iBjErKE,uCiEoJJ,sCjEnJM,iBiEuKN,6BACE,QlE47CiC,EkEn7CrC,kBACE,kBACA,UACA,OlEs7CmC,QkEr7CnC,SACA,YlEm7CmC,QkEl7CnC,elEk7CmC,QkEj7CnC,M7C5LM,K6C6LN,kBAMA,sFAEE,OlEu7CiC,yBkEp7CnC,qDACE,iB7C1LI,K6C6LN,iCACE,M7C9LI,K6CoLN,0OAEE,OlEu7CiC,yBkEp7CnC,yIACE,iB7C1LI,K6C6LN,iGACE,M7C9LI,K8C5BR,8BAEE,qBACA,8BACA,gCACA,gDAEA,kBACA,6FAIF,0BACE,8CAIF,gBAEE,yBACA,0BACA,sCACA,kCACA,oCACA,4CAGA,yDACA,iCAGF,mBAEE,yBACA,0BACA,iCASF,wBACE,GACE,mBAEF,IACE,UACA,gBAKJ,cAEE,yBACA,0BACA,sCACA,oCACA,0CAGA,8BACA,UAGF,iBACE,yBACA,0BAIA,uCACE,8BAEE,oCC/EN,kFAEE,4BACA,4BACA,4BACA,+BACA,+BACA,2CACA,qCACA,oDACA,gEACA,mEACA,sDACA,sChE6DE,4BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,gEmEYJ,cnEXM,iBGuDJ,4BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,yBgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,4BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,gEmEYJ,cnEXM,iBGuDJ,4BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,yBgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,4BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,gEmEYJ,cnEXM,iBGuDJ,4BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,yBgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,6BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,iEmEYJ,cnEXM,iBGuDJ,6BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,0BgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,6BgE5CF,eAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,iEmEYJ,enEXM,iBGuDJ,6BgE5BE,+BACE,MACA,OACA,gCACA,qFACA,4BAGF,6BACE,MACA,QACA,gCACA,oFACA,2BAGF,6BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,gCACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,wDAEE,eAGF,iEAGE,oBhE5BJ,0BgE/BF,eAiEM,4BACA,+BACA,0CAEA,iCACE,aAGF,+BACE,aACA,YACA,UACA,mBAEA,2CA/ER,WAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,+BnE1BA,uCmEYJ,WnEXM,iBmE2BF,2BACE,MACA,OACA,gCACA,qFACA,4BAGF,yBACE,MACA,QACA,gCACA,oFACA,2BAGF,yBACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,4BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,gDAEE,eAGF,qDAGE,mBA2BR,oBNpHE,eACA,MACA,OACA,Q9DwmCkC,K8DvmClC,YACA,aACA,iBzCwBM,KyCrBN,mCACA,iC9D+9CkC,GoEj3CpC,kBACE,aACA,mBACA,8BACA,oEAEA,6BACE,sFACA,oDACA,sDACA,uDAIJ,iBACE,gBACA,kDAGF,gBACE,YACA,oEACA,gBChJF,aACE,qBACA,eACA,sBACA,YACA,8BACA,QrE8yCkC,GqE5yClC,yBACE,qBACA,WAKJ,gBACE,gBAGF,gBACE,gBAGF,gBACE,iBAKA,+BACE,mDAIJ,4BACE,IACE,QrEixCgC,IqE7wCpC,kBACE,+EACA,oBACA,8CAGF,4BACE,KACE,wBChDJ,gBACI,mBCGA,eACI,uBACA,uBACA,iCACA,4BAJJ,iBACI,uBACA,uBACA,iCACA,4BAJJ,eACI,uBACA,uBACA,iCACA,4BAJJ,YACI,uBACA,uBACA,iCACA,4BAJJ,eACI,uBACA,uBACA,iCACA,4BAJJ,cACI,uBACA,uBACA,iCACA,4BAJJ,aACI,uBACA,uBACA,iCACA,4BAJJ,aACI,uBACA,uBACA,iCACA,4BAJJ,YACI,uBACA,uBACA,iCACA,4BAJJ,YACI,uBACA,uBACA,iCACA,4BAJJ,iBACI,uBACA,uBACA,iCACA,4BAJJ,cACI,uBACA,uBACA,iCACA,4BAJJ,cACI,uBACA,uBACA,iCACA,4BAJJ,YACI,uBACA,uBACA,iCACA,4BAJJ,WACI,uBACA,uBACA,iCACA,4BAJJ,oBACI,uBACA,uBACA,iCACA,4BAJJ,aACI,uBACA,uBACA,iCACA,4BAJJ,aACI,uBACA,uBACA,iCACA,4BAJJ,cACI,uBACA,uBACA,iCACA,4BAJJ,cACI,uBACA,uBACA,iCACA,4BAJJ,aACI,uBACA,uBACA,iCACA,4BAJJ,YACI,uBACA,uBACA,iCACA,4BAJJ,YACI,uBACA,uBACA,iCACA,4BAJJ,aACI,uBACA,qBACA,+BACA,4BAJJ,YACI,uBACA,uBACA,mCACA,4BAJJ,iBACI,uBACA,uBACA,iCACA,4BAKJ,oBACI,gBCZJ,6BACI,sBACA,uEAFJ,+BACI,sBACA,mEAFJ,6BACI,sBACA,uEAFJ,0BACI,sBACA,wEAFJ,6BACI,sBACA,wEAFJ,4BACI,sBACA,uEAFJ,2BACI,sBACA,uEAFJ,2BACI,sBACA,yEAFJ,0BACI,sBACA,sEAFJ,0BACI,sBACA,wEAFJ,+BACI,sBACA,qEAFJ,4BACI,sBACA,wEAFJ,4BACI,sBACA,uEAFJ,0BACI,sBACA,wEAFJ,yBACI,sBACA,uEAFJ,kCACI,sBACA,uEAFJ,2BACI,sBACA,uEAFJ,2BACI,sBACA,yEAFJ,4BACI,sBACA,wEAFJ,4BACI,sBACA,uEAFJ,2BACI,sBACA,uEAFJ,0BACI,sBACA,wEAFJ,0BACI,sBACA,wEAFJ,2BACI,sBACA,yEAFJ,0BACI,sBACA,yEAFJ,+BACI,sBACA,sECJR,KACI,iBAII,uJAGI,yBACA,wDACA,0DAIA,wVAGI,yBACA,0DACA,2DAKJ,wVAGI,yBACA,wDACA,0DAIR,gHAEI,qBACA,gBACA,oCxErBN,WwEsBM,mHxElBN,uCwEaE,gHxEZA,iBwEoBA,wIAEI,qCACA,6BACA,kBAIR,4BACI,YACA,0HAEA,oJAIA,oDACA,uDAGJ,4BACI,YACA,0HAEA,oJAIA,mDACA,sDAGJ,iBACI,kBACA,oBAEA,2BACI,oBAGJ,wBACI,0BACA,uBACA,0CACA,WACA,cACA,WACA,UACA,kBACA,sBACA,qBACA,6CAIS,oCACL,kBADK,sCACL,kBADK,oCACL,kBADK,iCACL,kBADK,oCACL,kBADK,mCACL,kBADK,kCACL,kBADK,kCACL,kBADK,iCACL,kBADK,iCACL,kBADK,sCACL,kBADK,mCACL,kBADK,mCACL,kBADK,iCACL,kBADK,gCACL,kBADK,yCACL,kBADK,kCACL,kBADK,kCACL,kBADK,mCACL,kBADK,mCACL,kBADK,kCACL,kBADK,iCACL,kBADK,iCACL,kBADK,kCACL,kBADK,iCACL,kBADK,sCACL,kBAMhB,WACI,IzCpGY,MyCwGZ,uF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,uGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,2F9BxFF,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,sCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qC8BoGE,2GAGI,0BACA,kCACA,wC9B7FN,qBACA,4BACA,2BACA,wBACA,kCACA,mCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oB8BkDE,uF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,uGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,uF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,uGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,2F9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,2GAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,qCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,+E9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,+FAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iG9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iHAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,yCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,qBACA,4BACA,2BACA,wBACA,kCACA,yCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,2F9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,2GAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB+B1DF,YAEI,8BACA,6BACA,gCACA,mCACA,wCAEA,6BAEA,uBACI,YACA,kCACI,eACA,iCACA,sCACA,cACA,iBACA,kBAGJ,qGACI,gCACA,UAGJ,mCACI,iBACA,iBAEA,8CACI,gDACA,wCAGJ,4CACI,mBAEA,uDACI,kDACA,0CAKZ,8BACI,iBAGJ,gDACI,yBACA,eACA,YACA,uDACI,eACA,0CACA,YAQR,iCACI,qCACA,wCACA,4BACA,4BACA,kCACA,kCACA,kCACA,kCACA,mCACA,mCACA,wCACA,qCC5EZ,OACI,8BACA,8BACA,mCAEA,qBACI,2CACA,mCACA,+CAMA,4BACI,uBACA,0BACA,8BACA,8BCdJ,qGACI,gBACA,MAIA,mLACI,iBAMR,qGACI,gBACA,SAIR,iEACI,kBAEA,0EACI,WAIR,mFACI,uCACA,uBACA,0CACA,WACA,cACA,WACA,UACA,kBACA,uBACA,sBACA,6CAIR,yBAEQ,8JACI,uCCjDZ,2BAEI,oBACA,oCAKI,qEAEI,uBCiCZ,WAEI,YC7CJ,YACI,iCAIA,qCACI,qCACA,eCuEsB,QDzE1B,qCACI,qCACA,eCuEsB,QDzE1B,qCACI,qCACA,eCuEsB,QDzE1B,qCACI,qCACA,eCuEsB,QDzE1B,qCACI,qCACA,eCuEsB,QDzE1B,qCACI,qCACA,eCuEsB,QDzE1B,kBACI,qCACA,eCuEsB,QC9E9B,cAEI,sBACA,sBACA,+BACA,2BACA,2BACA,4BACA,6BACA,2BACA,0DACA,SACA,mCACA,2CAGJ,SACI,cAKI,wDAEI,sBACA,sBCvBZ,SAEI,4BACA,uDACA,kCACA,kCACA,oCACA,oCACA,kCACA,kCACA,kCACA,gCACA,kCAEA,kBACA,UACA,sCAEA,WACI,qBACA,8BAGJ,oBACI,WACA,cACA,kBACA,0BACA,SACA,yBACA,mCACA,yCACA,WAGJ,YACI,gBACA,eACA,SAEA,eACI,iBAEA,6BACI,aACA,mBACA,mBACA,SAEA,oCACI,gBAGJ,sCACI,uCACA,kBAGJ,wNAII,yCACA,uCAGJ,gHAEI,2CACA,yCAGJ,4GAEI,kBAGJ,6CACI,yCACA,cACA,uCACA,iBACA,YC1DM,KD2DN,gBACA,qBACA,mBACA,kBAGI,oEAUI,MATc,KAUd,OAVc,KAWd,YARU,KASV,kBACA,YAbc,KADlB,kEAUI,MATc,QAUd,OAVc,QAWd,YARU,OASV,oBACA,YAbc,QADlB,mEAUI,MATc,QAUd,OAVc,QAWd,YARU,OASV,qBACA,YAbc,QADlB,mEAUI,MATc,QAUd,OAVc,QAWd,YARU,OASV,qBACA,YAbc,QADlB,kEAUI,MATc,OAUd,OAVc,OAWd,YARU,OASV,qBACA,YAbc,OADlB,qEAUI,MATc,OAUd,OAVc,OAWd,YARU,OASV,qBACA,YAbc,OAmB9B,kCACI,2CAGJ,kBACI,wCAQR,8BACI,4BACA,uDACA,kCACA,kCACA,oCACA,oCACA,kCACA,kCEpIZ,OAEI,yBACA,yBACA,uBACA,uBACA,6BACA,6BAGI,mBAEI,mCAFJ,4EAMJ,WACA,aACA,wBACA,qDhF4CA,yBgF/DJ,OAYY,oChFmDR,yBgF/DJ,OAYY,oChFmDR,yBgF/DJ,OAYY,oChFmDR,0BgF/DJ,OAYY,oCASR,aACI,aACA,sBACA,uBACA,mBAEA,gCACA,iBAEA,8BACA,4BAEA,mBACI,oCACA,kCAGJ,0BACI,SAIR,6BAEI,eACA,qBAOQ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,kBACI,4BADJ,kBACI,4BADJ,kBACI,4BhFShB,yBgFVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6BhFShB,yBgFVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6BhFShB,yBgFVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6BhFShB,0BgFVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6BhFShB,0BgFVY,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,sBACI,4BADJ,sBACI,4BADJ,sBACI,6BAQZ,4BACI,uBACA,uBACA,6BACA,6BClEZ,gBACI,kCACA,mCACA,6BACA,wDACA,kDACA,sCACA,sCAEA,2DACA,gBACA,iCACA,gBACA,kBACA,iBACA,eAEA,0BACI,6CACA,qCACA,mBAGJ,iCACI,4CACA,oDACA,2BAGJ,0FAEI,2CACA,mDACA,2BC/BR,mBAEI,WACA,uCACA,iBACA,cACA,aACA,mBACA,sBACA,UACA,qCACA,mCCZJ,mBACI,gCACA,2BACA,iCACA,kCACA,kCACA,6BACA,8BACA,oCACA,mCAEA,iCACA,iCACA,oCACA,kCAEA,uCACA,0CACA,0CAEA,sCACA,2CACA,8CACA,uCACA,8CACA,2DACA,+CACA,kDACA,gCACA,8BACA,gCACA,qCACA,iCACA,iCACA,sCACA,sCAEA,iCACA,8BACA,yCAEA,yBACA,yBACA,6BACA,8BAEA,oCACA,4CACA,4CACA,0CACA,4CACA,6DAEA,iCACA,mCACA,mCACA,2CACA,6BACA,oCACA,+BACA,wCACA,2CACA,yCACA,iCACA,4CACA,4CAEA,8BACA,6BACA,qCACA,qCACA,qDACA,+BACA,2CACA,qCACA,oDACA,+BACA,oCC9EJ,+BACI,WACA,aACA,mBACA,cACA,sBACA,UACA,SAGJ,kQACI,WACA,aACA,eACA,0EAOA,yBAFJ,uNAGQ,aRoFuB,yCQnFvB,cRmFuB,0CQzEtB,wIACL,cChCJ,8BACI,WAEA,aACA,mBACA,sBACA,wCAEA,6CACI,aACA,mBACA,oBACA,WACA,aT2FuB,yCS1FvB,cT0FuB,yCSxFvB,yBARJ,6CASQ,cAIJ,+CACI,0CACA,6CACA,mBACA,aAGJ,yBApBJ,6CAqBQ,8CACA,gDAGJ,8DACI,6DAIA,0DACI,4CACA,2DAFJ,2DACI,6CACA,4DAIR,8HAEI,sCACA,qBACA,UChCG,ODmCP,0DACI,gBAGJ,+MAII,qBE3DZ,8BACI,WACA,WtE4BI,KsE3BJ,iBACA,2BAEA,yBANJ,8BAOQ,2BACA,sBACA,uDACA,eACA,8BACA,gBACA,MACA,aACA,0CAGJ,mDACI,WAKA,aAHoB;AAAA;AAAA,UAIpB,cAJoB;AAAA;AAAA,UAKpB,aACA,8BACA,mBACA,kBAEA,yBAbJ,mDAoBQ,aALa,+EAMb,cANa,gFASjB,yBAxBJ,mDAyBQ,eACA,iBAIR,4CACI,oBAEA,yBAHJ,4CAIQ,cAGJ,gDACI,cAIR,yBACI,8CACI,aAEJ,+CACI,wBACA,iBAIR,0CACI,0BACA,sCACA,mCAEA,yBALJ,0CAMQ,oBAGJ,yDACI,uBACA,gBAEA,yEAEI,aAGJ,yBATJ,yDAUQ,mBAGJ,8JAEI,cACA,mBACA,iBAKJ,yBADJ,oDAEQ,qFAIJ,yBANJ,oDAOQ,WtE7ER,KsE8EQ,8CACA,+CACA,0DAGJ,gFACI,yBAIR,8KAGI,qCAIR,8CACI,MtE/GA,KsEgHA,2BAGJ,mDACI,gQAGJ,2CACI,MtExHA,KsE0HA,mJAGI,MtE1IH,QsE6ID,yBATJ,2CAUQ,MtElHJ,MuE9BR,sFAEI,WAEA,qCAEA,aACA,0CACA,iBACA,mBACA,oBACA,2BACA,eACA,mDACA,oDACA,4FAGA,yBAlBJ,sFAmBQ,iDACA,0DACA,2DAEA,gBACA,MACA,cAGJ,gJACI,WACA,aACA,8BACA,oBACA,kBAEA,0KACI,0CACA,6CACA,mBACA,aACA,wCAIA,0KACI,uDACA,qGAFJ,4KACI,wDACA,sGAMR,oKACI,cACA,aACA,gCACA,oBACA,UAEA,sLACI,0CACA,iGAIA,yBANJ,sLAOQ,iDACA,6EAKR,yBApBJ,oKAqBQ,4BACA,2BACA,eAIA,8LACI,YAIR,0LACI,aACA,0CACA,mBACA,uBACA,wCACA,sCACA,iCACA,mBACA,8CACA,8CACA,kBACA,oBAEA,yBAdJ,0LAeQ,cAKZ,0KACI,sFAOJ,gLACI,YACA,UACA,gBAGJ,yBACI,gLACI,aAEJ,kLACI,aACA,UACA,0CACA,qBAIR,yBACI,kLACI,eACA,8CACA,OACA,YAIR,wKACI,0CAEA,0BACA,sCACA,0CAEA,yBAPJ,wKAQQ,oBAGJ,sMACI,uBACA,gBAGA,wBACA,yBAEA,yBARJ,sMASQ,mBAGJ,oeAEI,cACA,mBACA,iBAKJ,yBADJ,4LAEQ,gDAEA,aACA,mBACA,0CACA,oFAEA,wFAIJ,yBAbJ,4LAcQ,yDACA,uDACA,8CACA,+CACA,yFAIJ,oPACI,yBAIR,gyBAII,0DAMhB,sCACI,8CACA,+CAEA,yBAJJ,sCAKQ,aZ5GuB,yCY6GvB,cZ7GuB,0CaxG/B,wEAGI,gCACA,8BACA,wCACA,2CACA,0CAGI,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAIR,kGACI,SACA,UCnBR,6BACI,aACA,kBACA,uBACA,gBACA,WACA,6CAMY,mCACI,iBADJ,mCACI,iBADJ,mCACI,iBADJ,mCACI,iB1F6DhB,4B0F9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kB1F6DhB,4B0F9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kB1F6DhB,4B0F9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kB1F6DhB,6B0F9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kB1F6DhB,6B0F9DY,uCACI,iBADJ,uCACI,iBADJ,uCACI,iBADJ,uCACI,kBAMhB,6CACI,cACA,YACA,WACA,yBAJJ,6CAKQ,aAIR,iDACI,kBACA,SACA,OAEA,sFAEA,+DACA,8CACA,iDAEA,mDACI,cAGJ,0EACI,QACA,WAGJ,wEACI,MACA,aAKR,4CAEI,kBACA,SACA,4HAEA,yBANJ,4CAOQ,0FAIJ,qEACI,QACA,sCAIJ,+DACI,OACA,uCAGJ,yBAtBJ,4CAuBQ,WAGA,oIAEI,8CACA,gDCpFhB,yCACI,kBACA,WACA,YACA,aACA,mBACA,6BAEA,yBARJ,yCASQ,sBACA,OAGJ,qDACI,QACA,2CACA,iCACA,gHACA,8IAEA,YAEA,yBATJ,qDAUQ,4CAEA,WfuFyB,qEepF7B,yBAfJ,qDAgBQ,gBACA,gFAIJ,6RAKI,qBAGJ,sVAMI,qCACA,yBAPJ,sVAQQ,gBAIR,wEACI,ULpCG,OKqCH,SACA,YACA,gBACA,WACA,aACA,mBACA,8BACA,UACA,yBAEA,8EACI,gBAGJ,+EACI,gBACA,qCACA,sCACA,sBACA,WACA,qBACA,gCAGJ,mGACI,yBAGJ,yBA9BJ,wEA+BQ,cAKJ,yBADJ,0EAEQ,8CAGJ,yBALJ,0EAMQ,eAIA,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDAMhB,+EACI,sBAEA,oFACI,oBAGJ,yFACI,2BACA,uDACA,8EAGA,mGACI,iBAGJ,8LAEI,0BAGJ,kGACI,8CACA,mBAGJ,gGACI,wDAOpB,6DACI,QACA,cAEA,YACA,uGAGA,yBARJ,6DAUQ;AAAA;AAAA;AAAA,cAIA,eACA,4CAIA,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAShB,yBAEQ,yEACI,gBACA,oCAMZ,yBAEQ,8EACI,gBACA,MAIJ,uGACI,UACA,UAKZ,yBAEQ,8EACI,gBACA,uCAMZ,yBAEQ,8EACI,QAGJ,sFACI,SAMZ,yBAEQ,sEACI,QACA,4CACA,cfrIe,yCe2IH,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAOpB,8EACI,QACA,gBACA,afxJe,yCe2JX,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,gDAIR,+CAfJ,8EAgBQ,6CC9QhB,yHACI,oCACA,4CAEA,mJACI,gBAIR,uFAEI,aACA,wCAEA,6B5FgDJ,yB4FrDA,uFAQQ,yBACA,8BACA,kCAKJ,wDACI,4CAGA,qKAQA,sKAEI,kDAIR,uDAEI,0EAQI,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAIR,yEACI,gBAeR,wDACI,gBAIA,oFACI,cAIZ,wDACI,gBACA,iBAIJ,8HAEI,uB5F9BJ,yB4F4BA,8HAKQ,yBACA,2BAGJ,sKACI,aAKR,kHAEI,uB5F7CJ,yB4F2CA,kHAKQ,yBACA,2BAGJ,8IACI,aClHZ,8BAGI,eACA,gDACA,gCACA,mBACA,0CACA,6CAEA,yBAVJ,8BAWQ,aAGJ,2CACI,SACA,UAGJ,mJAII,gCCzBR,gFAGI,yCCHJ,0BAEI,yBACA,2BACA,kCACA,sCACA,sCACA,gCACA,0CACA,kCACA,+BACA,qCACA,uCACA,sDACA,2CACA,6CAKI,oEAEI,kCACA,2CAKZ,SACI,aACA,WACA,oDAEA,2DACA,6BACA,oBACI,sCAGJ,2BACI,mBACA,WACA,yCAEA,aACA,+DACA,uDACA,mBAEA,kFAEA,mCAEA,mDACI,iBAEA,8CAEJ,wDACI,qBAEJ,kDACI,gBAEJ,sDACI,mBAIR,0BACI,kBACA,yCAIJ,0BACI,0BACA,wBAEJ,2CACI,kBAIR,iBACI,uDAGJ,gBACI,0DACA,4CAEA,sCACI,kGAEA,4CACA,gBAEJ,sCACI,gFAGJ,4BACI,kGACA,aACA,WACA,gFAEA,WACA,mBAEA,8CACI,cACA,SAGJ,8CACI,cCnHZ,WACI,sBACA,wDACA,mBACA,kBAGJ,WACI,iCACA,mDACA,mBACA,kBAGJ,iCAEI,iCACA,WACA,kBACA,mBACA,oBACA,oBACA,cAGA,mCACA,kCACA,qBAGJ,uDAEI,4CACA,WACA,kBACA,mBACA,oBACA,oBACA,cAGA,mCACA,kCACA,qBAGJ,6CACI,qBChDJ,mBACI,cAES,0BACL,UAGJ,2BACI,UAIJ,sCACI,WACA,WrG+4BgC,yDqG94BhC,uBACA,YCLyB,QvFmR3B,UALI,KsFvQF,YrGylBsB,IqGxlBtB,YrEdW,IqEeX,MrGi3BgC,qBqGh3BhC,iBhFLA,KgFMA,4CnFJJ,2BjBHE,WoGUE,0DACA,gBpGPF,uCoGPF,sCpGQI,iBoGYA,6HACI,ahFFJ,KgFGI,WtEzBmB,KsE8B3B,uFACI,oCnFCJ,6BACA,4BmFGA,uFACI,iCnFnBJ,yBACA,0BmFuBA,mCACI,WAIA,kEACI,mBAOJ,kJACI,kBACA,QACA,MrGq6BwB,QqGp6BxB,MCIqB,ODHrB,OCIqB,ODHrB,oBACA,gBACA,iBACA,mBACA,WCGqB,iXDFrB,2BAGA,8JACI,WCDiB,8WDKrB,4JACI,aEpFZ,sCACI,QDGyB,KCC7B,qCACI,QDFyB,KCGzB,gBACA,MvG63BgC,qBuG53BhC,iBlFOA,KkFNA,alFqBA,KHbJ,2BqFJI,6DACI,iCrFYR,yBACA,0BqFRI,6DACI,oCrFoBR,6BACA,4BqFhBI,qDACI,uBAGA,4EACI,cACA,WACA,uBACA,YDvBiB,QvFmR3B,UALI,KwFrPM,YvGukBc,IuGtkBd,YvEhCG,IuEiCH,MvG+1BwB,qBuG91BxB,iBlFvBR,KkFwBQ,4BACA,4CACA,gBrFxBZ,2BjBHE,WsG+BU,0DtG3BV,uCsGWM,4EtGVJ,iBsG4BQ,kFACI,alFlBZ,KkFmBY,WxEzCW,KwEgDnB,sGACI,WDWiB,MCVjB,gBAIJ,wFACI,uBxF8NV,UALI,KwFvNM,YvGyiBc,IuGxiBd,YvE9DG,IuEiEH,iHACI,MvG60BoB,0BuGz0BxB,6HACI,WACA,iBlF1DT,QkF8DK,iRAEI,WACA,iBlFjFX,QkFqFO,sOAEI,MvGklBU,0BuG9kBd,oGACI,UAGA,4HACI,wBACA,YvG0iBM,IuGziBN,YvEhGL,IuEiGK,MlFvEhB,KkF4EgB,+JACI,uBC5GxB,8CACI,uCACA,iPACA,4BACA,oBxG4+B4B,oBwG3+B5B,gBxG4+B4B,UwGz+B5B,2EACI,UACA,YxGimBkB,IwGhmBlB,YxENO,IwEOP,MxGy3B4B,qBwGt3B5B,2GACI,YxG2lBc,IwG1lBd,YxEZG,IwEaH,MxGk4BwB,0BwG73BhC,wEACI,aCtBJ,6EACI,aACA,mBACA,eACA,eACA,SACA,gBAGA,wGACI,aACA,mBACA,mBACA,oBACA,qBACA,sB1F6QV,UALI,K0FtQM,MzGk3BwB,qByGj3BxB,YACA,4CvFHZ,2BuFOY,2IACI,MH8Ca,OG7Cb,OH8Ca,OG7Cb,oBACA,oBACA,gBACA,iBACA,mBACA,WH4Ca,iXG3Cb,SAEA,iJACI,WHyCS,8WGrCb,gJACI,aAOhB,gEACI,cACA,WACA,OHnDqB,OGsDrB,uFACI,WACA,OHxDiB,OGyDjB,aACA,cACA,YHjDiB,QGkDjB,YzExDG,IyEyDH,+BAKR,0EACI,MzG+sBkB,O0GhxBtB,6JACI,M1GwqBkB,0B0GvqBlB,mBACA,iB1G43B4B,uB0G33B5B,arFaD,QqFZC,gBAKA,qOACI,aAIJ,uOACI,mBACA,6SACI,aAKR,mQACI,iBAEA,mSACI,aC1BJ,mIzF8BZ,0BACA,6ByFrBY,gIzFoBZ,0BACA,6ByFXI,yNzFwBJ,yBACA,4ByFnBA,gCACI,YACA,mDACI,YC7BJ,kHACI,avF8BJ,QuFxBI,sUACI,avFuBR,QuFtBQ,WN4BiB,4BMtBrB,oNACI,oCAIJ,oNACI,iC1FEZ,yBACA,0B0FOI,sHACI,avFhCN,QuFsCM,8UACI,avFvCV,QuFwCU,WNCiB,4BMKrB,wNACI,oCAIJ,wNACI,iC1F7BZ,yBACA,0B2F3BA,qDACI,mEACA,qB9F2RF,UALI,SGvQN,2B2FRI,gLACI,YACA,aACA,wBACA,2XAEA,4LACI,wXAKJ,sWAEI,aAMZ,oD3FZA,2B2FgBI,4E3FPJ,yBACA,0B2FWI,4E3FEJ,6BACA,4B2FEQ,2FACI,qB9FiPV,UALI,S8FtOE,uGACI,qB9F0OV,UALI,S8FjOU,2IACI,sBAIA,8KACI,qBASxB,6DACI,oCAMI,uHACI,oB9F+MV,UALI,S8FvMM,0JACI,YACA,aACA,wBACA,2XAEA,gKACI,wXAMhB,yFACI,YA/FR,qDACI,iEACA,mB9F2RF,UALI,QGvQN,2B2FRI,gLACI,WACA,YACA,oBACA,yXAEA,4LACI,sXAKJ,sWAEI,aAMZ,oD3FZA,2B2FgBI,4E3FPJ,yBACA,0B2FWI,4E3FEJ,6BACA,4B2FEQ,2FACI,mB9FiPV,UALI,Q8FtOE,uGACI,mB9F0OV,UALI,Q8FjOU,2IACI,oBAIA,8KACI,mBASxB,6DACI,iCAMI,uHACI,oB9F+MV,UALI,Q8FvMM,0JACI,WACA,YACA,oBACA,yXAEA,gKACI,sXAMhB,yFACI,WA/FI,sDACR,mEACA,qB9F2RF,UALI,SGvQN,2B2FRI,kLACI,YACA,aACA,wBACA,2XAEA,8LACI,wXAKJ,0WAEI,aAMA,qD3FZZ,2B2FgBI,6E3FPJ,yBACA,0B2FWI,6E3FEJ,6BACA,4B2FEQ,4FACI,qB9FiPV,UALI,S8FtOE,wGACI,qB9F0OV,UALI,S8FjOU,4IACI,sBAIA,+KACI,qBASZ,8DACR,oCAMI,wHACI,oB9F+MV,UALI,S8FvMM,2JACI,YACA,aACA,wBACA,2XAEA,iKACI,wXAMhB,0FACI,YA/FI,sDACR,iEACA,mB9F2RF,UALI,QGvQN,2B2FRI,kLACI,WACA,YACA,oBACA,yXAEA,8LACI,sXAKJ,0WAEI,aAMA,qD3FZZ,2B2FgBI,6E3FPJ,yBACA,0B2FWI,6E3FEJ,6BACA,4B2FEQ,4FACI,mB9FiPV,UALI,Q8FtOE,wGACI,mB9F0OV,UALI,Q8FjOU,4IACI,oBAIA,+KACI,mBASZ,8DACR,iCAMI,wHACI,oB9F+MV,UALI,Q8FvMM,2JACI,WACA,YACA,oBACA,yXAEA,iKACI,sXAMhB,0FACI,WCzFR,0GACI,gBACA,yBACA,YACA,gBACA,MzFWG,QyFNP,kGACI,YAaJ,4DACI","file":"bootstrap.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["../../../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../../../node_modules/uu-bootstrap/scss/fonts/_open-sans.scss","../../../../../../node_modules/uu-bootstrap/scss/fonts/_merriweather.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_uu-layout.scss","../../../../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../../../../node_modules/bootstrap/scss/helpers/_color-bg.scss","../../../../../../node_modules/bootstrap/scss/helpers/_colored-links.scss","../../../../../../node_modules/bootstrap/scss/helpers/_focus-ring.scss","../../../../../../node_modules/bootstrap/scss/helpers/_icon-link.scss","../../../../../../node_modules/bootstrap/scss/_variables.scss","../../../../../../node_modules/bootstrap/scss/mixins/_transition.scss","../../../../../../node_modules/bootstrap/scss/helpers/_ratio.scss","../../../../../../node_modules/bootstrap/scss/helpers/_position.scss","../../../../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../../../../node_modules/bootstrap/scss/helpers/_stacks.scss","../../../../../../node_modules/bootstrap/scss/helpers/_visually-hidden.scss","../../../../../../node_modules/bootstrap/scss/mixins/_visually-hidden.scss","../../../../../../node_modules/bootstrap/scss/helpers/_stretched-link.scss","../../../../../../node_modules/bootstrap/scss/helpers/_text-truncation.scss","../../../../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../../../../../node_modules/bootstrap/scss/helpers/_vr.scss","../../../../../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../../../../../node_modules/bootstrap/scss/utilities/_api.scss","../../../../../../node_modules/bootstrap/scss/_root.scss","../../../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/bootstrap/_misc.scss","../../../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../../../node_modules/bootstrap/scss/_type.scss","../../../../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_colors.scss","../../../../../../node_modules/bootstrap/scss/_images.scss","../../../../../../node_modules/bootstrap/scss/mixins/_image.scss","../../../../../../node_modules/bootstrap/scss/_containers.scss","../../../../../../node_modules/bootstrap/scss/mixins/_container.scss","../../../../../../node_modules/bootstrap/scss/_grid.scss","../../../../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../../../../node_modules/bootstrap/scss/_tables.scss","../../../../../../node_modules/bootstrap/scss/mixins/_table-variants.scss","../../../../../../node_modules/bootstrap/scss/forms/_labels.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/bootstrap/_form.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-text.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-control.scss","../../../../../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-select.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-check.scss","../../../../../../node_modules/bootstrap/scss/forms/_form-range.scss","../../../../../../node_modules/bootstrap/scss/forms/_floating-labels.scss","../../../../../../node_modules/bootstrap/scss/forms/_input-group.scss","../../../../../../node_modules/bootstrap/scss/mixins/_forms.scss","../../../../../../node_modules/bootstrap/scss/_buttons.scss","../../../../../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../../../../../node_modules/bootstrap/scss/_transitions.scss","../../../../../../node_modules/bootstrap/scss/_dropdown.scss","../../../../../../node_modules/bootstrap/scss/mixins/_caret.scss","../../../../../../node_modules/bootstrap/scss/_button-group.scss","../../../../../../node_modules/bootstrap/scss/_nav.scss","../../../../../../node_modules/bootstrap/scss/_navbar.scss","../../../../../../node_modules/bootstrap/scss/_card.scss","../../../../../../node_modules/bootstrap/scss/_accordion.scss","../../../../../../node_modules/bootstrap/scss/_breadcrumb.scss","../../../../../../node_modules/bootstrap/scss/_pagination.scss","../../../../../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../../../../../node_modules/bootstrap/scss/_badge.scss","../../../../../../node_modules/bootstrap/scss/_alert.scss","../../../../../../node_modules/bootstrap/scss/_progress.scss","../../../../../../node_modules/bootstrap/scss/_list-group.scss","../../../../../../node_modules/bootstrap/scss/_close.scss","../../../../../../node_modules/bootstrap/scss/_toasts.scss","../../../../../../node_modules/bootstrap/scss/_modal.scss","../../../../../../node_modules/bootstrap/scss/mixins/_backdrop.scss","../../../../../../node_modules/bootstrap/scss/_tooltip.scss","../../../../../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../../../../../node_modules/bootstrap/scss/_popover.scss","../../../../../../node_modules/bootstrap/scss/_carousel.scss","../../../../../../node_modules/bootstrap/scss/_spinners.scss","../../../../../../node_modules/bootstrap/scss/_offcanvas.scss","../../../../../../node_modules/bootstrap/scss/_placeholders.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_accordion.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_alert.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_background.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_button.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_pagination.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_modal.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_table.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_form.scss","../../../../../../node_modules/uu-bootstrap/scss/components/bootstrap/_index.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_text.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_code.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_stepper.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_stepper.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_tiles.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_modal-nav-tabs.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_index.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_css_variables.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_containers.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_header.scss","../../../../../../node_modules/uu-bootstrap/scss/configuration/_fonts.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_navbar.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_unified_header.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_hero.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_cover.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_sidebar.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_form.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_footer.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_table.scss","../../../../../../node_modules/uu-bootstrap/scss/components/uu-layout/_css_variables_dark.scss","../../../../../../node_modules/uu-bootstrap/scss/components/_uu-list.scss","../../../../../../assets/scss/icomoon.scss","../../../../../../assets/scss/select2-bootstrap/_layout.scss","../../../../../../assets/scss/select2-bootstrap/_variables.scss","../../../../../../assets/scss/select2-bootstrap/_dropdown.scss","../../../../../../assets/scss/select2-bootstrap/_single.scss","../../../../../../assets/scss/select2-bootstrap/_multiple.scss","../../../../../../assets/scss/select2-bootstrap/_disabled.scss","../../../../../../assets/scss/select2-bootstrap/_input-group.scss","../../../../../../assets/scss/select2-bootstrap/_validation.scss","../../../../../../assets/scss/select2-bootstrap/_sizing.scss","../../../../../../assets/scss/bootstrap.scss"],"names":[],"mappings":"CACE;AAAA;AAAA;AAAA;AAAA,GCEF,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,sFACA,IACI,mhBAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,kFACA,IACI,+fAeR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,qFACA,IACI,8gBAeR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBAgBR,WACI,wBACA,kBACA,gBACA,wFACA,IACI,6hBCjPR,WACI,2BACA,kBACA,gBACA,8EACA,IACI,+eAeR,WACI,2BACA,kBACA,gBACA,oFACA,IACI,6gBAeR,WACI,2BACA,kBACA,gBACA,kFACA,IACI,mgBAeR,WACI,2BACA,kBACA,gBACA,iFACA,IACI,8fAeR,WACI,2BACA,kBACA,gBACA,8EACA,IACI,+eAeR,WACI,2BACA,kBACA,gBACA,oFACA,IACI,6gBAeR,WACI,2BACA,kBACA,gBACA,8EACA,IACI,+eAeR,WACI,2BACA,kBACA,gBACA,oFACA,IACI,sjBCCJ,WAPuB,+DCpJzB,iBACE,cACA,WACA,WCHF,iBACE,sBACA,iFAFF,mBACE,sBACA,mFAFF,iBACE,sBACA,iFAFF,cACE,sBACA,8EAFF,iBACE,sBACA,iFAFF,gBACE,sBACA,gFAFF,eACE,sBACA,+EAFF,eACE,sBACA,+EAFF,cACE,sBACA,8EAFF,cACE,sBACA,8EAFF,mBACE,sBACA,mFAFF,gBACE,sBACA,gFAFF,gBACE,sBACA,gFAFF,cACE,sBACA,8EAFF,aACE,sBACA,6EAFF,sBACE,sBACA,sFAFF,eACE,sBACA,+EAFF,eACE,sBACA,+EAFF,gBACE,sBACA,gFAFF,gBACE,sBACA,gFAFF,eACE,sBACA,+EAFF,cACE,sBACA,8EAFF,cACE,sBACA,8EAFF,eACE,sBACA,+EAFF,cACE,sBACA,8EAFF,mBACE,sBACA,mFCFF,cACE,wEACA,kGAGE,wCAGE,+DACA,yFATN,gBACE,0EACA,oGAGE,4CAGE,0DACA,oFATN,cACE,wEACA,kGAGE,wCAGE,+DACA,yFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,cACE,wEACA,kGAGE,wCAGE,gEACA,0FATN,aACE,uEACA,iGAGE,sCAGE,6DACA,uFATN,YACE,sEACA,gGAGE,oCAGE,6DACA,uFATN,YACE,sEACA,gGAGE,oCAGE,gEACA,0FATN,WACE,qEACA,+FAGE,kCAGE,6DACA,uFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,gBACE,0EACA,oGAGE,4CAGE,4DACA,sFATN,aACE,uEACA,iGAGE,sCAGE,8DACA,wFATN,aACE,uEACA,iGAGE,sCAGE,8DACA,wFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,UACE,oEACA,8FAGE,gCAGE,6DACA,uFATN,mBACE,6EACA,uGAGE,kDAGE,8DACA,wFATN,YACE,sEACA,gGAGE,oCAGE,6DACA,uFATN,YACE,sEACA,gGAGE,oCAGE,gEACA,0FATN,aACE,uEACA,iGAGE,sCAGE,gEACA,0FATN,aACE,uEACA,iGAGE,sCAGE,+DACA,yFATN,YACE,sEACA,gGAGE,oCAGE,+DACA,yFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,WACE,qEACA,+FAGE,kCAGE,+DACA,yFATN,YACE,sEACA,gGAGE,oCAGE,gEACA,0FATN,WACE,qEACA,+FAGE,kCAGE,6DACA,uFATN,gBACE,0EACA,oGAGE,4CAGE,6DACA,uFAOR,oBACE,+EACA,yGAGE,oDAEE,kFACA,4GC1BN,kBACE,UAEA,kJCHF,WACE,oBACA,IC6c4B,QD5c5B,mBACA,kFACA,sBC2c4B,MD1c5B,2BAEA,eACE,cACA,MCuc0B,IDtc1B,OCsc0B,IDrc1B,kBEIE,WFHF,0BEOE,uCFZJ,eEaM,iBFDJ,8DACE,mEGnBN,OACE,kBACA,WAEA,eACE,cACA,mCACA,WAGF,SACE,kBACA,MACA,OACA,WACA,YAKF,WACE,wBADF,WACE,uBADF,YACE,0BADF,YACE,kCCrBJ,WACE,eACA,MACA,QACA,OACA,QHqmCkC,KGlmCpC,cACE,eACA,QACA,SACA,OACA,QH6lCkC,KGrlChC,YACE,gBACA,MACA,QHilC8B,KG9kChC,eACE,gBACA,SACA,QH2kC8B,KI5iChC,yBDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,yBDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,yBDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,0BDxCA,eACE,gBACA,MACA,QHilC8B,KG9kChC,kBACE,gBACA,SACA,QH2kC8B,MI5iChC,0BDxCA,gBACE,gBACA,MACA,QHilC8B,KG9kChC,mBACE,gBACA,SACA,QH2kC8B,MK1mCpC,QACE,aACA,mBACA,mBACA,mBAGF,QACE,aACA,cACA,sBACA,mBCRF,2ECIE,qBACA,sBACA,qBACA,uBACA,2BACA,iCACA,8BACA,oBAGA,qGACE,6BCdF,uBACE,kBACA,MACA,QACA,SACA,OACA,QRgcsC,EQ/btC,WCRJ,+BCCE,uBACA,mBCNF,IACE,qBACA,mBACA,MXisB4B,uBWhsB5B,eACA,8BACA,QX2rB4B,IY/nBtB,gBAOI,mCAPJ,WAOI,8BAPJ,cAOI,iCAPJ,cAOI,iCAPJ,mBAOI,sCAPJ,gBAOI,mCAPJ,aAOI,sBAPJ,WAOI,uBAPJ,YAOI,sBAPJ,oBAOI,8BAPJ,kBAOI,4BAPJ,iBAOI,2BAPJ,kBAOI,iCAPJ,iBAOI,2BAPJ,WAOI,qBAPJ,YAOI,uBAPJ,YAOI,sBAPJ,YAOI,uBAPJ,aAOI,qBAPJ,eAOI,yBAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,2BAPJ,mBAOI,6BAPJ,oBAOI,8BAPJ,mBAOI,6BAPJ,iBAOI,2BAPJ,mBAOI,6BAPJ,oBAOI,8BAPJ,mBAOI,6BAPJ,UAOI,0BAPJ,gBAOI,gCAPJ,SAOI,yBAPJ,QAOI,wBAPJ,eAOI,+BAPJ,SAOI,yBAPJ,aAOI,6BAPJ,cAOI,8BAPJ,QAOI,wBAPJ,eAOI,+BAPJ,QAOI,wBAPJ,QAOI,mDAPJ,WAOI,wDAPJ,WAOI,mDAPJ,aAOI,2BAjBJ,oBACE,iFADF,sBACE,mFADF,oBACE,iFADF,iBACE,8EADF,oBACE,iFADF,mBACE,gFADF,kBACE,+EADF,kBACE,+EADF,iBACE,8EADF,iBACE,8EADF,sBACE,mFADF,mBACE,gFADF,mBACE,gFADF,iBACE,8EADF,gBACE,6EADF,yBACE,sFADF,kBACE,+EADF,kBACE,+EADF,mBACE,gFADF,mBACE,gFADF,kBACE,+EADF,iBACE,8EADF,iBACE,8EADF,kBACE,+EADF,iBACE,8EADF,sBACE,mFASF,iBAOI,2BAPJ,mBAOI,6BAPJ,mBAOI,6BAPJ,gBAOI,0BAPJ,iBAOI,2BAPJ,OAOI,iBAPJ,QAOI,mBAPJ,SAOI,oBAPJ,UAOI,oBAPJ,WAOI,sBAPJ,YAOI,uBAPJ,SAOI,kBAPJ,UAOI,oBAPJ,WAOI,qBAPJ,OAOI,mBAPJ,QAOI,qBAPJ,SAOI,sBAPJ,kBAOI,2CAPJ,oBAOI,sCAPJ,oBAOI,sCAPJ,QAOI,uFAPJ,UAOI,oBAPJ,YAOI,2FAPJ,cAOI,wBAPJ,YAOI,6FAPJ,cAOI,0BAPJ,eAOI,8FAPJ,iBAOI,2BAPJ,cAOI,4FAPJ,gBAOI,yBAPJ,gBAIQ,uBAGJ,8EAPJ,kBAIQ,uBAGJ,gFAPJ,gBAIQ,uBAGJ,8EAPJ,aAIQ,uBAGJ,2EAPJ,gBAIQ,uBAGJ,8EAPJ,eAIQ,uBAGJ,6EAPJ,cAIQ,uBAGJ,4EAPJ,cAIQ,uBAGJ,4EAPJ,aAIQ,uBAGJ,2EAPJ,aAIQ,uBAGJ,2EAPJ,kBAIQ,uBAGJ,gFAPJ,eAIQ,uBAGJ,6EAPJ,eAIQ,uBAGJ,6EAPJ,aAIQ,uBAGJ,2EAPJ,YAIQ,uBAGJ,0EAPJ,qBAIQ,uBAGJ,mFAPJ,cAIQ,uBAGJ,4EAPJ,cAIQ,uBAGJ,4EAPJ,eAIQ,uBAGJ,6EAPJ,eAIQ,uBAGJ,6EAPJ,cAIQ,uBAGJ,4EAPJ,aAIQ,uBAGJ,2EAPJ,aAIQ,uBAGJ,2EAPJ,cAIQ,uBAGJ,4EAPJ,aAIQ,uBAGJ,2EAPJ,kBAIQ,uBAGJ,gFAPJ,cAIQ,uBAGJ,4EAPJ,uBAOI,wDAPJ,yBAOI,0DAPJ,uBAOI,wDAPJ,oBAOI,qDAPJ,uBAOI,wDAPJ,sBAOI,uDAPJ,qBAOI,sDAPJ,oBAOI,qDAPJ,UAOI,4BAPJ,UAOI,4BAPJ,UAOI,4BAPJ,UAOI,4BAPJ,UAOI,4BAjBJ,mBACE,yBADF,mBACE,0BADF,mBACE,yBADF,mBACE,0BADF,oBACE,uBASF,MAOI,qBAPJ,MAOI,qBAPJ,MAOI,qBAPJ,OAOI,sBAPJ,QAOI,sBAPJ,QAOI,0BAPJ,QAOI,uBAPJ,YAOI,2BAPJ,MAOI,sBAPJ,MAOI,sBAPJ,MAOI,sBAPJ,OAOI,uBAPJ,QAOI,uBAPJ,QAOI,2BAPJ,QAOI,wBAPJ,YAOI,4BAPJ,WAOI,yBAPJ,UAOI,8BAPJ,aAOI,iCAPJ,kBAOI,sCAPJ,qBAOI,yCAPJ,aAOI,uBAPJ,aAOI,uBAPJ,eAOI,yBAPJ,eAOI,yBAPJ,WAOI,0BAPJ,aAOI,4BAPJ,mBAOI,kCAPJ,uBAOI,sCAPJ,qBAOI,oCAPJ,wBAOI,kCAPJ,yBAOI,yCAPJ,wBAOI,wCAPJ,wBAOI,wCAPJ,mBAOI,kCAPJ,iBAOI,gCAPJ,oBAOI,8BAPJ,sBAOI,gCAPJ,qBAOI,+BAPJ,qBAOI,oCAPJ,mBAOI,kCAPJ,sBAOI,gCAPJ,uBAOI,uCAPJ,sBAOI,sCAPJ,uBAOI,iCAPJ,iBAOI,2BAPJ,kBAOI,iCAPJ,gBAOI,+BAPJ,mBAOI,6BAPJ,qBAOI,+BAPJ,oBAOI,8BAPJ,aAOI,oBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,SAOI,mBAPJ,YAOI,mBAPJ,KAOI,oBAPJ,KAOI,yBAPJ,KAOI,wBAPJ,KAOI,uBAPJ,KAOI,yBAPJ,KAOI,uBAPJ,QAOI,uBAPJ,MAOI,mDAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,yDAPJ,MAOI,6DAPJ,MAOI,yDAPJ,SAOI,yDAPJ,MAOI,mDAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,yDAPJ,MAOI,6DAPJ,MAOI,yDAPJ,SAOI,yDAPJ,MAOI,wBAPJ,MAOI,6BAPJ,MAOI,4BAPJ,MAOI,2BAPJ,MAOI,6BAPJ,MAOI,2BAPJ,SAOI,2BAPJ,MAOI,0BAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,+BAPJ,MAOI,6BAPJ,SAOI,6BAPJ,MAOI,2BAPJ,MAOI,gCAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,gCAPJ,MAOI,8BAPJ,SAOI,8BAPJ,MAOI,yBAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,4BAPJ,MAOI,8BAPJ,MAOI,4BAPJ,SAOI,4BAPJ,KAOI,qBAPJ,KAOI,0BAPJ,KAOI,yBAPJ,KAOI,wBAPJ,KAOI,0BAPJ,KAOI,wBAPJ,MAOI,qDAPJ,MAOI,+DAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,+DAPJ,MAOI,2DAPJ,MAOI,qDAPJ,MAOI,+DAPJ,MAOI,6DAPJ,MAOI,2DAPJ,MAOI,+DAPJ,MAOI,2DAPJ,MAOI,yBAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,4BAPJ,MAOI,8BAPJ,MAOI,4BAPJ,MAOI,2BAPJ,MAOI,gCAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,gCAPJ,MAOI,8BAPJ,MAOI,4BAPJ,MAOI,iCAPJ,MAOI,gCAPJ,MAOI,+BAPJ,MAOI,iCAPJ,MAOI,+BAPJ,MAOI,0BAPJ,MAOI,+BAPJ,MAOI,8BAPJ,MAOI,6BAPJ,MAOI,+BAPJ,MAOI,6BAPJ,OAOI,iBAPJ,OAOI,sBAPJ,OAOI,qBAPJ,OAOI,oBAPJ,OAOI,sBAPJ,OAOI,oBAPJ,WAOI,qBAPJ,WAOI,0BAPJ,WAOI,yBAPJ,WAOI,wBAPJ,WAOI,0BAPJ,WAOI,wBAPJ,cAOI,wBAPJ,cAOI,6BAPJ,cAOI,4BAPJ,cAOI,2BAPJ,cAOI,6BAPJ,cAOI,2BAPJ,gBAOI,gDAPJ,MAOI,4CAPJ,MAOI,6CAPJ,MAOI,6CAPJ,MAOI,4BAPJ,MAOI,4BAPJ,MAOI,0BAPJ,YAOI,6BAPJ,YAOI,6BAPJ,YAOI,+BAPJ,UAOI,2BAPJ,WAOI,2BAPJ,WAOI,2BAPJ,aAOI,2BAPJ,SAOI,2BAPJ,WAOI,8BAPJ,MAOI,yBAPJ,OAOI,2BAPJ,SAOI,2BAPJ,OAOI,2BAPJ,YAOI,2BAPJ,UAOI,4BAPJ,aAOI,6BAPJ,sBAOI,gCAPJ,2BAOI,qCAPJ,8BAOI,wCAPJ,gBAOI,oCAPJ,gBAOI,oCAPJ,iBAOI,qCAPJ,WAOI,8BAPJ,aAOI,8BAPJ,YAOI,iEAPJ,cAIQ,qBAGJ,qEAPJ,gBAIQ,qBAGJ,uEAPJ,cAIQ,qBAGJ,qEAPJ,WAIQ,qBAGJ,kEAPJ,cAIQ,qBAGJ,qEAPJ,aAIQ,qBAGJ,oEAPJ,YAIQ,qBAGJ,mEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,kEAPJ,WAIQ,qBAGJ,kEAPJ,gBAIQ,qBAGJ,uEAPJ,aAIQ,qBAGJ,oEAPJ,aAIQ,qBAGJ,oEAPJ,WAIQ,qBAGJ,kEAPJ,UAIQ,qBAGJ,iEAPJ,mBAIQ,qBAGJ,0EAPJ,YAIQ,qBAGJ,mEAPJ,YAIQ,qBAGJ,mEAPJ,aAIQ,qBAGJ,oEAPJ,aAIQ,qBAGJ,oEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,kEAPJ,WAIQ,qBAGJ,kEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,kEAPJ,gBAIQ,qBAGJ,uEAPJ,YAIQ,qBAGJ,mEAPJ,WAIQ,qBAGJ,wEAPJ,YAIQ,qBAGJ,2CAPJ,eAIQ,qBAGJ,gCAPJ,eAIQ,qBAGJ,sCAPJ,qBAIQ,qBAGJ,2CAPJ,oBAIQ,qBAGJ,0CAPJ,oBAIQ,qBAGJ,0CAPJ,YAIQ,qBAGJ,yBAjBJ,iBACE,wBADF,iBACE,uBADF,iBACE,wBADF,kBACE,qBASF,uBAOI,iDAPJ,yBAOI,mDAPJ,uBAOI,iDAPJ,oBAOI,8CAPJ,uBAOI,iDAPJ,sBAOI,gDAPJ,qBAOI,+CAPJ,oBAOI,8CAjBJ,iBACE,uBAIA,6BACE,uBANJ,iBACE,wBAIA,6BACE,wBANJ,iBACE,uBAIA,6BACE,uBANJ,iBACE,wBAIA,6BACE,wBANJ,kBACE,qBAIA,8BACE,qBAIJ,eAOI,wCAKF,2BAOI,wCAnBN,eAOI,uCAKF,2BAOI,uCAnBN,eAOI,wCAKF,2BAOI,wCAnBN,wBAIQ,+BAGJ,+FAPJ,0BAIQ,+BAGJ,iGAPJ,wBAIQ,+BAGJ,+FAPJ,qBAIQ,+BAGJ,4FAPJ,wBAIQ,+BAGJ,+FAPJ,uBAIQ,+BAGJ,8FAPJ,sBAIQ,+BAGJ,6FAPJ,sBAIQ,+BAGJ,6FAPJ,qBAIQ,+BAGJ,4FAPJ,qBAIQ,+BAGJ,4FAPJ,0BAIQ,+BAGJ,iGAPJ,uBAIQ,+BAGJ,8FAPJ,uBAIQ,+BAGJ,8FAPJ,qBAIQ,+BAGJ,4FAPJ,oBAIQ,+BAGJ,2FAPJ,6BAIQ,+BAGJ,oGAPJ,sBAIQ,+BAGJ,6FAPJ,sBAIQ,+BAGJ,6FAPJ,uBAIQ,+BAGJ,8FAPJ,uBAIQ,+BAGJ,8FAPJ,sBAIQ,+BAGJ,6FAPJ,qBAIQ,+BAGJ,4FAPJ,qBAIQ,+BAGJ,4FAPJ,sBAIQ,+BAGJ,6FAPJ,qBAIQ,+BAGJ,4FAPJ,0BAIQ,+BAGJ,iGAPJ,gBAIQ,+BAGJ,qGAjBJ,0BACE,+BAIA,sCACE,+BANJ,2BACE,iCAIA,uCACE,iCANJ,2BACE,kCAIA,uCACE,kCANJ,2BACE,iCAIA,uCACE,iCANJ,2BACE,kCAIA,uCACE,kCANJ,4BACE,+BAIA,wCACE,+BAIJ,YAIQ,mBAGJ,8EAPJ,cAIQ,mBAGJ,gFAPJ,YAIQ,mBAGJ,8EAPJ,SAIQ,mBAGJ,2EAPJ,YAIQ,mBAGJ,8EAPJ,WAIQ,mBAGJ,6EAPJ,UAIQ,mBAGJ,4EAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,2EAPJ,SAIQ,mBAGJ,2EAPJ,cAIQ,mBAGJ,gFAPJ,WAIQ,mBAGJ,6EAPJ,WAIQ,mBAGJ,6EAPJ,SAIQ,mBAGJ,2EAPJ,QAIQ,mBAGJ,0EAPJ,iBAIQ,mBAGJ,mFAPJ,UAIQ,mBAGJ,4EAPJ,UAIQ,mBAGJ,4EAPJ,WAIQ,mBAGJ,6EAPJ,WAIQ,mBAGJ,6EAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,2EAPJ,SAIQ,mBAGJ,2EAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,2EAPJ,cAIQ,mBAGJ,gFAPJ,UAIQ,mBAGJ,4EAPJ,SAIQ,mBAGJ,8EAPJ,gBAIQ,mBAGJ,0CAPJ,mBAIQ,mBAGJ,mFAPJ,kBAIQ,mBAGJ,kFAjBJ,eACE,qBADF,eACE,sBADF,eACE,qBADF,eACE,sBADF,gBACE,mBASF,mBAOI,wDAPJ,qBAOI,0DAPJ,mBAOI,wDAPJ,gBAOI,qDAPJ,mBAOI,wDAPJ,kBAOI,uDAPJ,iBAOI,sDAPJ,gBAOI,qDAPJ,aAOI,+CAPJ,iBAOI,2BAPJ,kBAOI,4BAPJ,kBAOI,4BAPJ,SAOI,+BAPJ,SAOI,+BAPJ,SAOI,iDAPJ,WAOI,2BAPJ,WAOI,oDAPJ,WAOI,iDAPJ,WAOI,oDAPJ,WAOI,oDAPJ,WAOI,qDAPJ,gBAOI,6BAPJ,cAOI,sDAPJ,aAOI,qHAPJ,eAOI,yEAPJ,eAOI,2HAPJ,eAOI,qHAPJ,eAOI,2HAPJ,eAOI,2HAPJ,eAOI,6HAPJ,oBAOI,6EAPJ,kBAOI,+HAPJ,aAOI,yHAPJ,eAOI,6EAPJ,eAOI,+HAPJ,eAOI,yHAPJ,eAOI,+HAPJ,eAOI,+HAPJ,eAOI,iIAPJ,oBAOI,iFAPJ,kBAOI,mIAPJ,gBAOI,2HAPJ,kBAOI,+EAPJ,kBAOI,iIAPJ,kBAOI,2HAPJ,kBAOI,iIAPJ,kBAOI,iIAPJ,kBAOI,mIAPJ,uBAOI,mFAPJ,qBAOI,qIAPJ,eAOI,uHAPJ,iBAOI,2EAPJ,iBAOI,6HAPJ,iBAOI,uHAPJ,iBAOI,6HAPJ,iBAOI,6HAPJ,iBAOI,+HAPJ,sBAOI,+EAPJ,oBAOI,iIAPJ,SAOI,8BAPJ,WAOI,6BAPJ,MAOI,sBAPJ,KAOI,qBAPJ,KAOI,qBAPJ,KAOI,qBAPJ,KAOI,qBAPJ,aAOI,uBAPJ,gBAOI,0BAPJ,aAOI,uBAPJ,aAOI,uBAPJ,gBAOI,0BAPJ,aAOI,uBAPJ,aAOI,uBAPJ,aAOI,uBAPJ,oBAOI,8BAPJ,iBAOI,2BAPJ,aAOI,uBAPJ,gBAOI,0BAPJ,iBAOI,2BRVR,yBQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,yBQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,yBQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,0BQGI,gBAOI,sBAPJ,cAOI,uBAPJ,eAOI,sBAPJ,uBAOI,8BAPJ,qBAOI,4BAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,oBAOI,2BAPJ,aAOI,0BAPJ,mBAOI,gCAPJ,YAOI,yBAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,YAOI,yBAPJ,gBAOI,6BAPJ,iBAOI,8BAPJ,WAOI,wBAPJ,kBAOI,+BAPJ,WAOI,wBAPJ,cAOI,yBAPJ,aAOI,8BAPJ,gBAOI,iCAPJ,qBAOI,sCAPJ,wBAOI,yCAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,kBAOI,yBAPJ,kBAOI,yBAPJ,cAOI,0BAPJ,gBAOI,4BAPJ,sBAOI,kCAPJ,0BAOI,sCAPJ,wBAOI,oCAPJ,2BAOI,kCAPJ,4BAOI,yCAPJ,2BAOI,wCAPJ,2BAOI,wCAPJ,sBAOI,kCAPJ,oBAOI,gCAPJ,uBAOI,8BAPJ,yBAOI,gCAPJ,wBAOI,+BAPJ,wBAOI,oCAPJ,sBAOI,kCAPJ,yBAOI,gCAPJ,0BAOI,uCAPJ,yBAOI,sCAPJ,0BAOI,iCAPJ,oBAOI,2BAPJ,qBAOI,iCAPJ,mBAOI,+BAPJ,sBAOI,6BAPJ,wBAOI,+BAPJ,uBAOI,8BAPJ,gBAOI,oBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,YAOI,mBAPJ,eAOI,mBAPJ,QAOI,oBAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,uBAPJ,QAOI,yBAPJ,QAOI,uBAPJ,WAOI,uBAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,mDAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,yDAPJ,SAOI,6DAPJ,SAOI,yDAPJ,YAOI,yDAPJ,SAOI,wBAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,6BAPJ,SAOI,2BAPJ,YAOI,2BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,YAOI,6BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,YAOI,8BAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,YAOI,4BAPJ,QAOI,qBAPJ,QAOI,0BAPJ,QAOI,yBAPJ,QAOI,wBAPJ,QAOI,0BAPJ,QAOI,wBAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,qDAPJ,SAOI,+DAPJ,SAOI,6DAPJ,SAOI,2DAPJ,SAOI,+DAPJ,SAOI,2DAPJ,SAOI,yBAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,4BAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,2BAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,gCAPJ,SAOI,8BAPJ,SAOI,4BAPJ,SAOI,iCAPJ,SAOI,gCAPJ,SAOI,+BAPJ,SAOI,iCAPJ,SAOI,+BAPJ,SAOI,0BAPJ,SAOI,+BAPJ,SAOI,8BAPJ,SAOI,6BAPJ,SAOI,+BAPJ,SAOI,6BAPJ,UAOI,iBAPJ,UAOI,sBAPJ,UAOI,qBAPJ,UAOI,oBAPJ,UAOI,sBAPJ,UAOI,oBAPJ,cAOI,qBAPJ,cAOI,0BAPJ,cAOI,yBAPJ,cAOI,wBAPJ,cAOI,0BAPJ,cAOI,wBAPJ,iBAOI,wBAPJ,iBAOI,6BAPJ,iBAOI,4BAPJ,iBAOI,2BAPJ,iBAOI,6BAPJ,iBAOI,2BAPJ,eAOI,2BAPJ,aAOI,4BAPJ,gBAOI,6BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,gBAOI,uBAPJ,uBAOI,8BAPJ,oBAOI,2BAPJ,gBAOI,uBAPJ,mBAOI,0BAPJ,oBAOI,4BRVR,0BQGI,iBAOI,sBAPJ,eAOI,uBAPJ,gBAOI,sBAPJ,wBAOI,8BAPJ,sBAOI,4BAPJ,qBAOI,2BAPJ,sBAOI,iCAPJ,qBAOI,2BAPJ,cAOI,0BAPJ,oBAOI,gCAPJ,aAOI,yBAPJ,YAOI,wBAPJ,mBAOI,+BAPJ,aAOI,yBAPJ,iBAOI,6BAPJ,kBAOI,8BAPJ,YAOI,wBAPJ,mBAOI,+BAPJ,YAOI,wBAPJ,eAOI,yBAPJ,cAOI,8BAPJ,iBAOI,iCAPJ,sBAOI,sCAPJ,yBAOI,yCAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,mBAOI,yBAPJ,mBAOI,yBAPJ,eAOI,0BAPJ,iBAOI,4BAPJ,uBAOI,kCAPJ,2BAOI,sCAPJ,yBAOI,oCAPJ,4BAOI,kCAPJ,6BAOI,yCAPJ,4BAOI,wCAPJ,4BAOI,wCAPJ,uBAOI,kCAPJ,qBAOI,gCAPJ,wBAOI,8BAPJ,0BAOI,gCAPJ,yBAOI,+BAPJ,yBAOI,oCAPJ,uBAOI,kCAPJ,0BAOI,gCAPJ,2BAOI,uCAPJ,0BAOI,sCAPJ,2BAOI,iCAPJ,qBAOI,2BAPJ,sBAOI,iCAPJ,oBAOI,+BAPJ,uBAOI,6BAPJ,yBAOI,+BAPJ,wBAOI,8BAPJ,iBAOI,oBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,aAOI,mBAPJ,gBAOI,mBAPJ,SAOI,oBAPJ,SAOI,yBAPJ,SAOI,wBAPJ,SAOI,uBAPJ,SAOI,yBAPJ,SAOI,uBAPJ,YAOI,uBAPJ,UAOI,mDAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,yDAPJ,UAOI,6DAPJ,UAOI,yDAPJ,aAOI,yDAPJ,UAOI,mDAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,yDAPJ,UAOI,6DAPJ,UAOI,yDAPJ,aAOI,yDAPJ,UAOI,wBAPJ,UAOI,6BAPJ,UAOI,4BAPJ,UAOI,2BAPJ,UAOI,6BAPJ,UAOI,2BAPJ,aAOI,2BAPJ,UAOI,0BAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,+BAPJ,UAOI,6BAPJ,aAOI,6BAPJ,UAOI,2BAPJ,UAOI,gCAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,gCAPJ,UAOI,8BAPJ,aAOI,8BAPJ,UAOI,yBAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,4BAPJ,UAOI,8BAPJ,UAOI,4BAPJ,aAOI,4BAPJ,SAOI,qBAPJ,SAOI,0BAPJ,SAOI,yBAPJ,SAOI,wBAPJ,SAOI,0BAPJ,SAOI,wBAPJ,UAOI,qDAPJ,UAOI,+DAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,+DAPJ,UAOI,2DAPJ,UAOI,qDAPJ,UAOI,+DAPJ,UAOI,6DAPJ,UAOI,2DAPJ,UAOI,+DAPJ,UAOI,2DAPJ,UAOI,yBAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,4BAPJ,UAOI,8BAPJ,UAOI,4BAPJ,UAOI,2BAPJ,UAOI,gCAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,gCAPJ,UAOI,8BAPJ,UAOI,4BAPJ,UAOI,iCAPJ,UAOI,gCAPJ,UAOI,+BAPJ,UAOI,iCAPJ,UAOI,+BAPJ,UAOI,0BAPJ,UAOI,+BAPJ,UAOI,8BAPJ,UAOI,6BAPJ,UAOI,+BAPJ,UAOI,6BAPJ,WAOI,iBAPJ,WAOI,sBAPJ,WAOI,qBAPJ,WAOI,oBAPJ,WAOI,sBAPJ,WAOI,oBAPJ,eAOI,qBAPJ,eAOI,0BAPJ,eAOI,yBAPJ,eAOI,wBAPJ,eAOI,0BAPJ,eAOI,wBAPJ,kBAOI,wBAPJ,kBAOI,6BAPJ,kBAOI,4BAPJ,kBAOI,2BAPJ,kBAOI,6BAPJ,kBAOI,2BAPJ,gBAOI,2BAPJ,cAOI,4BAPJ,iBAOI,6BAPJ,iBAOI,uBAPJ,oBAOI,0BAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,oBAOI,0BAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,iBAOI,uBAPJ,wBAOI,8BAPJ,qBAOI,2BAPJ,iBAOI,uBAPJ,oBAOI,0BAPJ,qBAOI,4BCtDZ,0BD+CQ,MAOI,0BAPJ,MAOI,4BAPJ,MAOI,6BCnCZ,aD4BQ,gBAOI,0BAPJ,sBAOI,gCAPJ,eAOI,yBAPJ,cAOI,wBAPJ,qBAOI,+BAPJ,eAOI,yBAPJ,mBAOI,6BAPJ,oBAOI,8BAPJ,cAOI,wBAPJ,qBAOI,+BAPJ,cAOI,yBEzEZ,4BASI,6VAIA,+MAIA,uhBAIA,qvBAIA,uRAIA,yPAIA,yRAGF,8BACA,wBAMA,mOACA,0GACA,0FAOA,iDC2OI,oBALI,KDpOR,2BACA,2BAKA,yBACA,gCACA,sBACA,gCAEA,0BACA,iCAEA,6CACA,qCACA,2BACA,qCAEA,2CACA,oCACA,0BACA,oCAGA,4BAEA,sBACA,6BACA,gCAEA,6BACA,mCAMA,sBACA,2BAGA,uBACA,yBACA,2BACA,oDAEA,sBACA,yBACA,yBACA,4BACA,6BACA,oDACA,+BAGA,mDACA,4DACA,qDACA,4DAIA,+BACA,8BACA,+CAIA,+BACA,sCACA,iCACA,wCE/GE,qBFqHA,kBAGA,yBACA,mCACA,sBACA,6BAEA,0BACA,uCAEA,gDACA,wCACA,2BACA,kCAEA,8CACA,uCACA,0BACA,iCAGE,yRAIA,uPAIA,uRAGF,4BAEA,yBACA,+BACA,mCACA,yCAEA,sBAEA,2BACA,yDAEA,+BACA,sCACA,iCACA,wCGrKJ,qBAGE,sBAeE,8CANJ,MAOM,wBAcN,KACE,SACA,uCF6OI,UALI,yBEtOR,uCACA,uCACA,2BACA,qCACA,mCACA,8BACA,0CASF,GACE,cACA,MjBmnB4B,QiBlnB5B,SACA,wCACA,QjBynB4B,IiB/mB9B,0CACE,aACA,cjBwjB4B,MiBrjB5B,YjBwjB4B,IiBvjB5B,YjBwjB4B,IiBvjB5B,8BAGF,OFuMQ,iCA5JJ,0BE3CJ,OF8MQ,gBEzMR,OFkMQ,kCA5JJ,0BEtCJ,OFyMQ,kBEpMR,OF6LQ,kCA5JJ,0BEjCJ,OFoMQ,kBE/LR,OFoLM,UALI,OE1KV,OF+KM,UALI,OErKV,OF0KM,UALI,KE1JV,EACE,aACA,cCvHwB,ODiI1B,YACE,iCACA,YACA,8BAMF,QACE,mBACA,kBACA,oBAMF,MAEE,kBAGF,SAGE,aACA,mBAGF,wBAIE,gBAGF,GACE,YjB6b4B,IiBxb9B,GACE,oBACA,cAMF,WACE,gBAQF,SAEE,YjBsa4B,OiB9Z9B,aF6EM,UALI,QEjEV,WACE,QjBqf4B,QiBpf5B,wCASF,QAEE,kBFyDI,UALI,OElDR,cACA,wBAGF,mBACA,eAKA,EACE,gEACA,gBjBiNwC,UiB/MxC,QACE,oDAWF,4DAEE,cACA,qBAOJ,kBAIE,YjBiV4B,yBelUxB,UALI,IEFV,IACE,cACA,aACA,mBACA,cFGI,UALI,OEOR,SFFI,UALI,QESN,cACA,kBAIJ,KFTM,UALI,OEgBR,2BACA,qBAGA,OACE,cAIJ,IACE,yBFrBI,UALI,OE4BR,MjBs5CkC,kBiBr5ClC,iBjBs5CkC,qBmB1rDhC,gBFuSF,QACE,UF5BE,UALI,IE4CV,OACE,gBAMF,QAEE,sBAQF,MACE,oBACA,yBAGF,QACE,YjB4X4B,MiB3X5B,ejB2X4B,MiB1X5B,MjB4Z4B,0BiB3Z5B,gBAOF,GAEE,mBACA,gCAGF,2BAME,qBACA,mBACA,eAQF,MACE,qBAMF,OAEE,gBAQF,iCACE,UAKF,sCAKE,SACA,oBF3HI,UALI,QEkIR,oBAIF,cAEE,oBAKF,cACE,eAGF,OAGE,iBAGA,gBACE,UAOJ,0IACE,wBAQF,gDAIE,0BAGE,4GACE,eAON,mBACE,UACA,kBAKF,SACE,gBAUF,SACE,YACA,UACA,SACA,SAQF,OACE,WACA,WACA,UACA,cjBoN4B,MepatB,iCEmNN,oBF/WE,0BEwWJ,OFrMQ,kBE8MN,SACE,WAOJ,+OAOE,UAGF,4BACE,YASF,cACE,6BACA,oBAmBF,4BACE,wBAKF,+BACE,UAOF,uBACE,aACA,0BAKF,OACE,qBAKF,OACE,SAOF,QACE,kBACA,eAQF,SACE,wBAQF,SACE,wBGpkBF,MLmQM,UALI,QK5PR,YpBwoB4B,IoBnoB5B,WLgQM,iCK5PJ,YpBynBkB,IoBxnBlB,YpBwmB0B,IezgB1B,0BKpGF,WLuQM,gBKvQN,WLgQM,iCK5PJ,YpBynBkB,IoBxnBlB,YpBwmB0B,IezgB1B,0BKpGF,WLuQM,kBKvQN,WLgQM,iCK5PJ,YpBynBkB,IoBxnBlB,YpBwmB0B,IezgB1B,0BKpGF,WLuQM,gBKvQN,WLgQM,iCK5PJ,YpBynBkB,IoBxnBlB,YpBwmB0B,IezgB1B,0BKpGF,WLuQM,kBKvQN,WLgQM,iCK5PJ,YpBynBkB,IoBxnBlB,YpBwmB0B,IezgB1B,0BKpGF,WLuQM,gBKvQN,WLgQM,iCK5PJ,YpBynBkB,IoBxnBlB,YpBwmB0B,IezgB1B,0BKpGF,WLuQM,kBK/OR,eCvDE,eACA,gBD2DF,aC5DE,eACA,gBD8DF,kBACE,qBAEA,mCACE,apBsoB0B,MoB5nB9B,YL8MM,UALI,QKvMR,yBAIF,YACE,cpBiUO,Ke1HH,UALI,QK/LR,wBACE,gBAIJ,mBACE,iBACA,cpBuTO,Ke1HH,UALI,QKtLR,ME5ES,QF8ET,2BACE,aGhGJ,WCIE,eAGA,YDDF,eACE,QvB2jDkC,OuB1jDlC,iBvB2jDkC,kBuB1jDlC,2DJGE,sCKRF,eAGA,YDcF,QAEE,qBAGF,YACE,oBACA,cAGF,gBRyPM,UALI,QQlPR,MvB8iDkC,0ByBhlDlC,mGCHA,iBACA,iBACA,WACA,0CACA,yCACA,kBACA,iBtBsDE,yBqB5CE,yBACE,UzBkee,OIvbnB,yBqB5CE,uCACE,UzBkee,OIvbnB,yBqB5CE,qDACE,UzBkee,OIvbnB,0BqB5CE,mEACE,UzBkee,QIvbnB,0BqB5CE,kFACE,UzBkee,Q2BlfvB,MAEI,2JAKF,KCNA,iBACA,iBACA,aACA,eAEA,uCACA,2CACA,0CDEE,OCOF,cACA,WACA,eACA,0CACA,yCACA,8BA+CI,KACE,YAGF,iBApCJ,cACA,WAcA,cACE,cACA,WAFF,cACE,cACA,UAFF,cACE,cACA,qBAFF,cACE,cACA,UAFF,cACE,cACA,UAFF,cACE,cACA,qBA+BE,UAhDJ,cACA,WAqDQ,OAhEN,cACA,kBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,mBA+DM,OAhEN,cACA,UA+DM,QAhEN,cACA,mBA+DM,QAhEN,cACA,mBA+DM,QAhEN,cACA,WAuEQ,UAxDV,wBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,UAxDV,yBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,UAxDV,yBAwDU,UAxDV,yBAwDU,UAxDV,gBAwDU,WAxDV,yBAwDU,WAxDV,yBAmEM,WAEE,iBAGF,WAEE,iBAPF,WAEE,uBAGF,WAEE,uBAPF,WAEE,sBAGF,WAEE,sBAPF,WAEE,oBAGF,WAEE,oBAPF,WAEE,sBAGF,WAEE,sBAPF,WAEE,oBAGF,WAEE,oBxB1DN,yBwBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBxB1DN,yBwBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBxB1DN,yBwBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBxB1DN,0BwBUE,QACE,YAGF,oBApCJ,cACA,WAcA,iBACE,cACA,WAFF,iBACE,cACA,UAFF,iBACE,cACA,qBAFF,iBACE,cACA,UAFF,iBACE,cACA,UAFF,iBACE,cACA,qBA+BE,aAhDJ,cACA,WAqDQ,UAhEN,cACA,kBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,mBA+DM,UAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,WAuEQ,aAxDV,cAwDU,aAxDV,wBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,aAxDV,yBAwDU,aAxDV,yBAwDU,aAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAmEM,iBAEE,iBAGF,iBAEE,iBAPF,iBAEE,uBAGF,iBAEE,uBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,oBAPF,iBAEE,sBAGF,iBAEE,sBAPF,iBAEE,oBAGF,iBAEE,qBxB1DN,0BwBUE,SACE,YAGF,qBApCJ,cACA,WAcA,kBACE,cACA,WAFF,kBACE,cACA,UAFF,kBACE,cACA,qBAFF,kBACE,cACA,UAFF,kBACE,cACA,UAFF,kBACE,cACA,qBA+BE,cAhDJ,cACA,WAqDQ,WAhEN,cACA,kBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,mBA+DM,WAhEN,cACA,UA+DM,YAhEN,cACA,mBA+DM,YAhEN,cACA,mBA+DM,YAhEN,cACA,WAuEQ,cAxDV,cAwDU,cAxDV,wBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,cAxDV,yBAwDU,cAxDV,yBAwDU,cAxDV,gBAwDU,eAxDV,yBAwDU,eAxDV,yBAmEM,mBAEE,iBAGF,mBAEE,iBAPF,mBAEE,uBAGF,mBAEE,uBAPF,mBAEE,sBAGF,mBAEE,sBAPF,mBAEE,oBAGF,mBAEE,oBAPF,mBAEE,sBAGF,mBAEE,sBAPF,mBAEE,oBAGF,mBAEE,qBCrHV,uBAEE,+BACA,4BACA,gCACA,6BAEA,uCACA,iCACA,gDACA,kCACA,+CACA,2CACA,8CACA,yCACA,6CACA,yCAEA,WACA,c7BkYO,K6BjYP,e7BssB4B,I6BrsB5B,0CAOA,6EACE,oBAEA,qFACA,oCACA,oB7B8sB0B,uB6B7sB1B,2GAGF,yCACE,uBAGF,yCACE,sBAIJ,qBACE,+DAOF,aACE,iBAUA,4BACE,sBAeF,gCACE,sCAGA,kCACE,sCAOJ,oCACE,sBAGF,qCACE,mBAUF,2CACE,qDACA,+CAMF,yDACE,qDACA,+CAQJ,cACE,qDACA,+CAQA,8BACE,oDACA,8CC5IF,eAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,iBAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,eAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,YAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,eAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,cAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,aAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CAlBF,YAOE,uBACA,uBACA,iCACA,+BACA,+BACA,8BACA,8BACA,6BACA,6BAEA,4BACA,0CDiJA,kBACE,gBACA,iCzB3FF,4ByByFA,qBACE,gBACA,kCzB3FF,4ByByFA,qBACE,gBACA,kCzB3FF,4ByByFA,qBACE,gBACA,kCzB3FF,6ByByFA,qBACE,gBACA,kCzB3FF,6ByByFA,sBACE,gBACA,kCEnKN,YACE,c/Bq2BsC,M+Bl2BtC,YCJuB,IDKvB,MTmBS,QSdX,gBACE,oDACA,uDACA,gBhB8QI,UALI,QgBtQR,YChBuB,IDiBvB,YbfiB,IagBjB,MTMS,QSHX,mBACE,kDACA,qDhBoQI,UALI,QgB3PV,mBACE,mDACA,sDhB8PI,UALI,SkBtRV,WACE,WjC61BsC,OenkBlC,UALI,QkBjRR,MjC61BsC,0BkCl2BxC,cACE,cACA,WACA,uBnBwRI,UALI,KmBhRR,YlCkmB4B,IkCjmB5B,YhBLiB,IgBMjB,MlC03BsC,qBkCz3BtC,gBACA,iBZGM,KYFN,4BACA,2DfGE,sClBHE,WiCMJ,0DjCFI,uCiChBN,cjCiBQ,iBiCGN,yBACE,gBAEA,wDACE,eAKJ,oBACE,MlCo2BoC,qBkCn2BpC,iBZlBI,KYmBJ,aZJI,KYKJ,UAKE,WFlCmB,KEsCvB,2CAME,eAMA,aAKA,SAKF,qCACE,cACA,UAIF,2BACE,MlC00BoC,0BkCx0BpC,UAQF,uBAEE,iBlC4yBoC,uBkCzyBpC,UAIF,oCACE,uBACA,0BACA,kBlCmrB0B,OkClrB1B,MlCoyBoC,qBmCl4BtC,iBnCmiCgC,sBkCn8B9B,oBACA,qBACA,mBACA,eACA,wBlC+rB0B,uBkC9rB1B,gBjCzFE,WiC0FF,+DjCtFE,uCiC0EJ,oCjCzEM,iBiCwFN,yEACE,iBlC07B8B,uBkCj7BlC,wBACE,cACA,WACA,kBACA,gBACA,YhBtHiB,IgBuHjB,MlCyxBsC,qBkCxxBtC,+BACA,2BACA,sCAEA,8BACE,UAGF,gFAEE,gBACA,eAWJ,iBACE,WlC0wBsC,wDkCzwBtC,qBnByII,UALI,SIvQN,yCeuIF,uCACE,qBACA,wBACA,kBlCmoB0B,MkC/nB9B,iBACE,WlC8vBsC,sDkC7vBtC,mBnB4HI,UALI,QIvQN,yCeoJF,uCACE,mBACA,qBACA,kBlC0nB0B,KkClnB5B,sBACE,WlC2uBoC,yDkCxuBtC,yBACE,WlCwuBoC,wDkCruBtC,yBACE,WlCquBoC,sDkChuBxC,oBACE,MlCmuBsC,KkCluBtC,OlC4tBsC,yDkC3tBtC,QlCglB4B,QkC9kB5B,mDACE,eAGF,uCACE,oBfvLA,sCe2LF,0CACE,oBf5LA,sCegMF,2ClC4sBsC,wDkC3sBtC,2ClC4sBsC,sDoC35BxC,aACE,yPAEA,cACA,WACA,uCrBqRI,UALI,KqB7QR,YpC+lB4B,IoC9lB5B,YlBRiB,IkBSjB,MpCu3BsC,qBoCt3BtC,gBACA,sBACA,kFACA,4BACA,oBpC69BkC,oBoC59BlC,gBpC69BkC,UoC59BlC,2DjBHE,2BlBHE,WmCSJ,0DnCLI,uCmCfN,anCgBQ,iBmCMN,mBACE,adII,KcHJ,UAKE,WJxByB,KI4B7B,0DAEE,cpC4uB0B,OoC3uB1B,sBAGF,sBAEE,iBpCq1BoC,uBoCh1BtC,4BACE,oBACA,uCAIJ,gBACE,YpCquB4B,OoCpuB5B,epCouB4B,OoCnuB5B,apCouB4B,MejgBxB,UALI,SIvQN,2BiB8CJ,gBACE,YpCiuB4B,MoChuB5B,epCguB4B,MoC/tB5B,apCguB4B,KergBxB,UALI,QIvQN,2BiBwDA,kCACE,yPCxEN,YACE,cACA,WrCm6BwC,OqCl6BxC,arCm6BwC,MqCl6BxC,crCm6BwC,QqCj6BxC,8BACE,WACA,mBAIJ,oBACE,crCy5BwC,MqCx5BxC,eACA,iBAEA,sCACE,YACA,oBACA,cAIJ,kBACE,yBAEA,MrCy4BwC,IqCx4BxC,OrCw4BwC,IqCv4BxC,gBACA,mBACA,gBACA,yCACA,+CACA,4BACA,2BACA,wBACA,OrC04BwC,oDqCz4BxC,yBAGA,iClB1BE,oBkB8BF,8BAEE,crCk4BsC,IqC/3BxC,yBACE,OrCy3BsC,gBqCt3BxC,wBACE,af3BI,Ke4BJ,UACA,WrC+foB,iCqC5ftB,0BACE,iBfrDG,QesDH,aftDG,QewDH,yCAII,wPAIJ,sCAII,gKAKN,+CACE,iBflFK,QemFL,afnFK,QewFH,kPAIJ,2BACE,oBACA,YACA,QrCi2BuC,GqC11BvC,2FACE,eACA,QrCw1BqC,GqC10B3C,aACE,arCm1BgC,MqCj1BhC,+BACE,4KAEA,MrC60B8B,IqC50B9B,mBACA,0CACA,gClBhHA,kBlBHE,WoCqHF,qCpCjHE,uCoCyGJ,+BpCxGM,iBoCkHJ,qCACE,2JAGF,uCACE,oBrC40B4B,aqCv0B1B,2JAKN,gCACE,crCuzB8B,MqCtzB9B,eAEA,kDACE,oBACA,cAKN,mBACE,qBACA,arCqyBgC,KqClyBlC,WACE,kBACA,sBACA,oBAIE,mDACE,oBACA,YACA,QrCspBwB,IqC/oB1B,8EACE,kLClLN,YACE,WACA,YACA,UACA,gBACA,+BAEA,kBACE,UAIA,mDtC4gCuC,uBsC3gCvC,+CtC2gCuC,uBsCxgCzC,8BACE,SAGF,kCACE,MtC6/BuC,KsC5/BvC,OtC4/BuC,KsC3/BvC,oBACA,gBH1BF,yBG4BE,OtC2/BuC,EmBxgCvC,mBlBHE,WqCmBF,4FrCfE,uCqCMJ,kCrCLM,iBqCgBJ,yCHjCF,iBnC4hCyC,QsCt/BzC,2CACE,MtCs+B8B,KsCr+B9B,OtCs+B8B,MsCr+B9B,oBACA,OtCq+B8B,QsCp+B9B,iBtCq+B8B,sBsCp+B9B,2BnB7BA,mBmBkCF,8BACE,MtCk+BuC,KsCj+BvC,OtCi+BuC,KsCh+BvC,gBHpDF,yBGsDE,OtCi+BuC,EmBxgCvC,mBlBHE,WqC6CF,4FrCzCE,uCqCiCJ,8BrChCM,iBqC0CJ,qCH3DF,iBnC4hCyC,QsC59BzC,8BACE,MtC48B8B,KsC38B9B,OtC48B8B,MsC38B9B,oBACA,OtC28B8B,QsC18B9B,iBtC28B8B,sBsC18B9B,2BnBvDA,mBmB4DF,qBACE,oBAEA,2CACE,iBtC88BqC,0BsC38BvC,uCACE,iBtC08BqC,0BuCjiC3C,eACE,kBAEA,gGAGE,OvCsiCoC,gDuCriCpC,WvCqiCoC,gDuCpiCpC,YvCqiCoC,KuCliCtC,qBACE,kBACA,MACA,OACA,UACA,YACA,oBACA,gBACA,iBACA,uBACA,mBACA,oBACA,kDACA,qBtCRE,WsCSF,kDtCLE,uCsCTJ,qBtCUM,iBsCON,oEAEE,oBAEA,8FACE,oBAGF,oMAEE,YvC0gCkC,SuCzgClC,evC0gCkC,QuCvgCpC,sGACE,YvCqgCkC,SuCpgClC,evCqgCkC,QuCjgCtC,4BACE,YvC+/BoC,SuC9/BpC,evC+/BoC,QuCx/BpC,mLACE,2CACA,UvCy/BkC,oDuCv/BlC,+MACE,kBACA,mBACA,WACA,OvCi/BgC,MuCh/BhC,WACA,iBjBlDA,KHEJ,sCoBuDA,oDACE,2CACA,UvCw+BkC,oDuCn+BpC,6CACE,sCAIJ,2EAEE,MjBhEO,QiBkEP,yFACE,iBvCwyBkC,uBwC/3BxC,aACE,kBACA,aACA,eACA,oBACA,WAEA,iFAGE,kBACA,cACA,SACA,YAIF,0GAGE,UAMF,kBACE,kBACA,UAEA,wBACE,UAWN,kBACE,aACA,mBACA,uBzB8OI,UALI,KyBvOR,YxCyjB4B,IwCxjB5B,YtB9CiB,IsB+CjB,MxCi1BsC,qBwCh1BtC,kBACA,mBACA,iBxCw6BsC,sBwCv6BtC,2DrBtCE,sCqBgDJ,kHAIE,mBzBwNI,UALI,QIvQN,yCqByDJ,kHAIE,qBzB+MI,UALI,SIvQN,yCqBkEJ,0DAEE,mBAaE,wVrBjEA,0BACA,6BqByEA,yUrB1EA,0BACA,6BqBsFF,0IACE,8CrB1EA,yBACA,4BqB6EF,uHrB9EE,yBACA,4BsBxBF,gBACE,aACA,WACA,WzCq0BoC,OenkBlC,UALI,Q0B1PN,MzCgjCqB,2ByC7iCvB,eACE,kBACA,SACA,UACA,aACA,eACA,qBACA,iB1BqPE,UALI,S0B7ON,MzCmiCqB,KyCliCrB,iBzCkiCqB,kBmB7jCrB,sCsBgCA,8HAEE,cA/CF,0DAqDE,azCqhCmB,kCyClhCjB,czC41BgC,sByC31BhC,2PACA,4BACA,yDACA,8DAGF,sEACE,azC0gCiB,kCyCzgCjB,WzCygCiB,0CyC1kCrB,0EA0EI,czC00BgC,sByCz0BhC,8EA3EJ,wDAkFE,azCw/BmB,kCyCr/BjB,4NAEE,oQACA,czCw5B8B,SyCv5B9B,6DACA,wEAIJ,oEACE,azC2+BiB,kCyC1+BjB,WzC0+BiB,0CyC1kCrB,sEAwGI,yCAxGJ,kEA+GE,azC29BmB,kCyCz9BnB,kFACE,iBzCw9BiB,2ByCr9BnB,8EACE,WzCo9BiB,0CyCj9BnB,sGACE,MzCg9BiB,2ByC38BrB,qDACE,iBAhIF,kVA0IM,UAtHR,kBACE,aACA,WACA,WzCq0BoC,OenkBlC,UALI,Q0B1PN,MzCgjCqB,6ByC7iCvB,iBACE,kBACA,SACA,UACA,aACA,eACA,qBACA,iB1BqPE,UALI,S0B7ON,MzCmiCqB,KyCliCrB,iBzCkiCqB,iBmB7jCrB,sCsBgCA,8IAEE,cA/CF,8DAqDE,azCqhCmB,oCyClhCjB,czC41BgC,sByC31BhC,4UACA,4BACA,yDACA,8DAGF,0EACE,azC0gCiB,oCyCzgCjB,WzCygCiB,yCyC1kCrB,8EA0EI,czC00BgC,sByCz0BhC,8EA3EJ,4DAkFE,azCw/BmB,oCyCr/BjB,oOAEE,qVACA,czCw5B8B,SyCv5B9B,6DACA,wEAIJ,wEACE,azC2+BiB,oCyC1+BjB,WzC0+BiB,yCyC1kCrB,0EAwGI,yCAxGJ,sEA+GE,azC29BmB,oCyCz9BnB,sFACE,iBzCw9BiB,6ByCr9BnB,kFACE,WzCo9BiB,yCyCj9BnB,0GACE,MzCg9BiB,6ByC38BrB,uDACE,iBAhIF,8VA4IM,UC9IV,KAEE,yBACA,2BACA,uB3BuRI,mBALI,K2BhRR,0BACA,0BACA,qCACA,yBACA,8CACA,mCACA,gCACA,yCACA,0BACA,gCACA,4EAGA,qBACA,wDACA,sC3BsQI,UALI,wB2B/PR,sCACA,sCACA,0BACA,kBACA,qBAEA,sBACA,eACA,iBACA,mEvBjBE,0CgBfF,iBOkCqB,iBzCtBjB,WyCwBJ,+DzCpBI,uCyChBN,KzCiBQ,iByCqBN,WACE,gCAEA,wCACA,8CAGF,sBAEE,0BACA,kCACA,wCAGF,mBACE,gCPrDF,iBOsDuB,uBACrB,8CACA,UAKE,0CAIJ,8BACE,8CACA,UAKE,0CAIJ,mGAKE,iCACA,yCAGA,+CAGA,yKAKI,0CAKN,mDAGE,mCACA,oBACA,2CAEA,iDACA,uCAYF,aCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,eCtGA,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,sCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qCDyFA,aCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,aCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,eCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,SCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,kBCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,YCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,WCtGA,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,yCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qCDyFA,UCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDyFA,eCtGA,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wCDmHA,qBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,uBCvGA,qBACA,4BACA,2BACA,wBACA,kCACA,mCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oBD0FA,qBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,qBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,uBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,qCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,iBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,0BCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,oBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,mBCvGA,qBACA,4BACA,2BACA,wBACA,kCACA,yCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oBD0FA,kBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBD0FA,uBCvGA,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oBDsGF,UACE,0BACA,qCACA,yBACA,mCACA,iDACA,yCACA,kDACA,0CACA,iCACA,4CACA,gCACA,sCAEA,gB1CuRwC,U0C7QxC,wBACE,0BAGF,gBACE,gCAWJ,2BCxIE,2BACA,yB5B8NI,mBALI,Q4BvNR,gCDyIF,2BC5IE,4BACA,2B5B8NI,mBALI,S4BvNR,gCCnEF,M3CgBM,W2CfJ,oB3CmBI,uC2CpBN,M3CqBQ,iB2ClBN,iBACE,UAMF,qBACE,aAIJ,YACE,SACA,gB3CDI,W2CEJ,iB3CEI,uC2CLN,Y3CMQ,iB2CDN,gCACE,QACA,Y3CNE,W2COF,gB3CHE,uEACE,iB4CpBR,sEAME,kBAGF,iBACE,mBCwBE,wBACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WArCJ,sBACA,sCACA,gBACA,qCA0DE,8BACE,cD9CN,eAEE,2BACA,+BACA,2BACA,gCACA,+B9BuQI,wBALI,K8BhQR,0CACA,oCACA,+DACA,qDACA,mDACA,0FACA,6DACA,uCACA,4DACA,+CACA,qDACA,mDACA,sCACA,sCACA,4DACA,mCACA,sCACA,oCACA,qCACA,uCAGA,kBACA,kCACA,aACA,uCACA,kEACA,S9B0OI,UALI,6B8BnOR,+BACA,gBACA,gBACA,uCACA,4BACA,6E1BzCE,+C0B6CF,+BACE,SACA,OACA,qCAwBA,qBACE,qBAEA,qCACE,WACA,OAIJ,mBACE,mBAEA,mCACE,QACA,UzC1CJ,yByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,yByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,yByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,0ByC4BA,wBACE,qBAEA,wCACE,WACA,OAIJ,sBACE,mBAEA,sCACE,QACA,WzC1CJ,0ByC4BA,yBACE,qBAEA,yCACE,WACA,OAIJ,uBACE,mBAEA,uCACE,QACA,WAUN,uCACE,SACA,YACA,aACA,wCCpFA,gCACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WA9BJ,aACA,sCACA,yBACA,qCAmDE,sCACE,cDgEJ,wCACE,MACA,WACA,UACA,aACA,sCClGA,iCACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WAvBJ,oCACA,eACA,uCACA,uBA4CE,uCACE,cD0EF,iCACE,iBAMJ,0CACE,MACA,WACA,UACA,aACA,uCCnHA,mCACE,qBACA,Y9C6hBwB,O8C5hBxB,e9C2hBwB,O8C1hBxB,WAWA,mCACE,aAGF,oCACE,qBACA,a9C0gBsB,O8CzgBtB,e9CwgBsB,O8CvgBtB,WAnCN,oCACA,wBACA,uCAsCE,yCACE,cD2FF,oCACE,iBAON,kBACE,SACA,6CACA,gBACA,mDACA,UAMF,eACE,cACA,WACA,4EACA,WACA,Y7Cyb4B,I6Cxb5B,oCACA,mBACA,qBACA,mBACA,+BACA,S1BtKE,uD0ByKF,0CAEE,0CV1LF,iBU4LuB,iCAGvB,4CAEE,2CACA,qBVlMF,iBUmMuB,kCAGvB,gDAEE,6CACA,oBACA,+BAMJ,oBACE,cAIF,iBACE,cACA,gFACA,gB9BmEI,UALI,S8B5DR,sCACA,mBAIF,oBACE,cACA,4EACA,oCAIF,oBAEE,6BACA,0BACA,+DACA,2BACA,kCACA,qCACA,6DACA,uDACA,sCACA,sCACA,2CACA,oCEtPF,+BAEE,kBACA,oBACA,sBAEA,yCACE,kBACA,cAKF,kXAME,UAKJ,aACE,aACA,eACA,2BAEA,0BACE,WAIJ,W5BhBI,qB4BoBF,qFAEE,8CAIF,qJ5BVE,0BACA,6B4BmBF,6G5BNE,yBACA,4B4BwBJ,uBACE,qBACA,oBAEA,2GAGE,cAGF,0CACE,eAIJ,yEACE,sBACA,qBAGF,yEACE,qBACA,oBAoBF,oBACE,sBACA,uBACA,uBAEA,wDAEE,WAGF,4FAEE,6CAIF,qH5B1FE,6BACA,4B4B8FF,oF5B7GE,yBACA,0B6BxBJ,KAEE,8BACA,gCAEA,4BACA,0CACA,sDACA,wDAGA,aACA,eACA,eACA,gBACA,gBAGF,UACE,cACA,kEjCsQI,UALI,6BiC/PR,2CACA,+BACA,qBACA,gBACA,S/CfI,W+CgBJ,+D/CZI,uC+CGN,U/CFQ,iB+CaN,gCAEE,qCAIF,wBACE,UACA,WhDkhBoB,iCgD9gBtB,sCAEE,wCACA,oBACA,eAQJ,UAEE,mDACA,oCACA,qDACA,6FACA,sCACA,mCACA,6DAGA,oFAEA,oBACE,uDACA,2D7B7CA,wDACA,yD6B+CA,oDAGE,kBACA,wDAIJ,8DAEE,2CACA,mDACA,yDAGF,yBAEE,oD7BjEA,yBACA,0B6B2EJ,WAEE,sDACA,uCACA,uCAGA,qB7B5FE,gD6BgGF,uDAEE,4CbjHF,iBakHuB,mCASzB,eAEE,6BACA,0CACA,+DAGA,gCAEA,yBACE,gBACA,eACA,uEAEA,8DAEE,iCAIJ,+DAEE,YhD0d0B,IgDzd1B,gDACA,iCAUF,wCAEE,cACA,kBAKF,kDAEE,aACA,YACA,kBAMF,iEACE,WAUF,uBACE,aAEF,qBACE,cC7LJ,QAEE,yBACA,yBACA,4DACA,iEACA,oEACA,gEACA,oCACA,mCACA,kCACA,+DACA,qEACA,uCACA,uCACA,uCACA,uCACA,4QACA,2EACA,2CACA,mCACA,6DAGA,kBACA,aACA,eACA,mBACA,8BACA,8DAMA,2JACE,aACA,kBACA,mBACA,8BAoBJ,cACE,6CACA,gDACA,+ClC4NI,UALI,iCkCrNR,mCACA,qBACA,mBAEA,wCAEE,yCAUJ,YAEE,2BACA,gCAEA,4BACA,4CACA,wDACA,8DAGA,aACA,sBACA,eACA,gBACA,gBAGE,wDAEE,oCAIJ,2BACE,gBASJ,aACE,YjD4gCkC,MiD3gClC,ejD2gCkC,MiD1gClC,6BAEA,yDAGE,oCAaJ,iBACE,gBACA,YAGA,mBAIF,gBACE,8ElCyII,UALI,mCkClIR,cACA,6BACA,+BACA,0E9BxIE,qDlBHE,WgD6IJ,oChDzII,uCgDiIN,gBhDhIQ,iBgD0IN,sBACE,qBAGF,sBACE,qBACA,UACA,sDAMJ,qBACE,qBACA,YACA,aACA,sBACA,kDACA,4BACA,2BACA,qBAGF,mBACE,yCACA,gB7C1HE,yB6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,yB6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,yB6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,0B6CsIA,kBAEI,iBACA,2BAEA,8BACE,mBAEA,6CACE,kBAGF,wCACE,kDACA,iDAIJ,qCACE,iBAGF,mCACE,wBACA,gBAGF,kCACE,aAGF,6BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,+CACE,aAGF,6CACE,aACA,YACA,UACA,oB7C5LR,0B6CsIA,mBAEI,iBACA,2BAEA,+BACE,mBAEA,8CACE,kBAGF,yCACE,kDACA,iDAIJ,sCACE,iBAGF,oCACE,wBACA,gBAGF,mCACE,aAGF,8BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,gDACE,aAGF,8CACE,aACA,YACA,UACA,oBAtDR,eAEI,iBACA,2BAEA,2BACE,mBAEA,0CACE,kBAGF,qCACE,kDACA,iDAIJ,kCACE,iBAGF,gCACE,wBACA,gBAGF,+BACE,aAGF,0BAEE,gBACA,aACA,YACA,sBACA,uBACA,8BACA,0CACA,oBACA,0BhD9NJ,WgDgOI,KAGA,4CACE,aAGF,0CACE,aACA,YACA,UACA,mBAiBZ,yCAGE,6CACA,mDACA,sDACA,+BACA,8BACA,oCACA,2DACA,+QAME,0CACE,+QCzRN,MAEE,yBACA,yBACA,iCACA,wBACA,2BACA,+CACA,2DACA,iDACA,uBACA,wFACA,gCACA,8BACA,uDACA,sBACA,mBACA,kBACA,gCACA,oCACA,0BAGA,kBACA,aACA,sBACA,YACA,6BACA,2BACA,qBACA,mCACA,2BACA,qE/BjBE,2C+BqBF,SACE,eACA,cAGF,kBACE,mBACA,sBAEA,8BACE,mB/BtBF,0DACA,2D+ByBA,6BACE,sB/BbF,8DACA,6D+BmBF,8DAEE,aAIJ,WAGE,cACA,wDACA,2BAGF,YACE,4CACA,iCAGF,eACE,oDACA,gBACA,oCAGF,sBACE,gBAQA,sBACE,oCAQJ,aACE,kEACA,gBACA,+BACA,uCACA,4EAEA,yB/B7FE,wF+BkGJ,aACE,kEACA,+BACA,uCACA,yEAEA,wB/BxGE,wF+BkHJ,kBACE,qDACA,oDACA,oDACA,gBAEA,mCACE,mCACA,sCAIJ,mBACE,qDACA,oDAIF,kBACE,kBACA,MACA,QACA,SACA,OACA,2C/B1IE,iD+B8IJ,yCAGE,WAGF,wB/B3II,0DACA,2D+B+IJ,2B/BlII,8DACA,6D+B8IF,kBACE,0C9C3HA,yB8CuHJ,YAQI,aACA,mBAGA,kBAEE,YACA,gBAEA,wBACE,cACA,cAKA,mC/B3KJ,0BACA,6B+B6KM,iGAGE,0BAEF,oGAGE,6BAIJ,oC/B5KJ,yBACA,4B+B8KM,mGAGE,yBAEF,sGAGE,6BCpOZ,WAEE,2CACA,qCACA,yHACA,oDACA,+BACA,sDACA,sEACA,sCACA,mCACA,+BACA,+BACA,ySACA,uCACA,mDACA,+DACA,gTACA,4CACA,0CACA,uCACA,oCACA,kCACA,kCAIF,kBACE,kBACA,aACA,mBACA,WACA,4EpC2PI,UALI,KoCpPR,oCACA,gBACA,4CACA,ShCtBE,gBgCwBF,qBlD3BI,WkD4BJ,+BlDxBI,uCkDWN,kBlDVQ,iBkDyBN,kCACE,uCACA,+CACA,gGAEA,yCACE,qDACA,iDAKJ,yBACE,cACA,yCACA,0CACA,iBACA,WACA,8CACA,4BACA,mDlDlDE,WkDmDF,wClD/CE,uCkDsCJ,yBlDrCM,iBkDiDN,wBACE,UAGF,wBACE,UACA,wDACA,UACA,oDAIJ,kBACE,gBAGF,gBACE,gCACA,wCACA,+EAEA,8BhC/DE,yDACA,0DgCiEA,gDhClEA,+DACA,gEgCsEF,oCACE,aAIF,6BhC9DE,6DACA,4DgCiEE,yDhClEF,mEACA,kEgCsEA,iDhCvEA,6DACA,4DgC4EJ,gBACE,8EASA,qCACE,eAGF,iCACE,eACA,chCpHA,gBgCuHA,0DACA,4DAGE,gHhC3HF,gBgCqIA,8CACE,ySACA,gTC1JN,YAEE,6BACA,6BACA,oCAEA,qBACA,gCACA,yDACA,uCACA,6DAGA,aACA,eACA,sEACA,iDrC+QI,UALI,+BqCxQR,gBACA,0FAMA,kCACE,iDAEA,0CACE,WACA,kDACA,yCACA,uFAIJ,wBACE,6CCrCJ,YAEE,mCACA,oCtC4RI,0BALI,KsCrRR,4BACA,4BACA,gCACA,qDACA,uCACA,kCACA,kCACA,2DACA,kCACA,kCACA,wEACA,mCACA,mCACA,6CACA,wCACA,qCACA,8DAGA,ahCpBA,eACA,gBgCuBF,WACE,kBACA,cACA,sEtCgQI,UALI,+BsCzPR,iCACA,qBACA,yCACA,iFpDpBI,WoDqBJ,mHpDjBI,uCoDQN,WpDPQ,iBoDkBN,iBACE,UACA,uCAEA,+CACA,qDAGF,iBACE,UACA,uCACA,+CACA,QrDyuCgC,EqDxuChC,iDAGF,qCAEE,UACA,wClBtDF,iBkBuDuB,+BACrB,sDAGF,yCAEE,0CACA,oBACA,kDACA,wDAKF,wCACE,YrD4sCgC,aqDvsC9B,kClC9BF,0DACA,6DkCmCE,iClClDF,2DACA,8DkCkEJ,eClGE,kCACA,mCvC0RI,0BALI,QuCnRR,0DDmGF,eCtGE,kCACA,mCvC0RI,0BALI,SuCnRR,0DCFF,OAEE,6BACA,6BxCuRI,qBALI,OwChRR,4BACA,uBACA,kDAGA,qBACA,4DxC+QI,UALI,0BwCxQR,wCACA,cACA,4BACA,kBACA,mBACA,wBpCJE,4CoCSF,aACE,aAKJ,YACE,kBACA,SChCF,OAEE,2BACA,2BACA,6BACA,iCACA,0BACA,qCACA,wDACA,kDACA,+BAGA,kBACA,4DACA,4CACA,4BACA,oCACA,8BrCHE,4CqCQJ,eAEE,cAIF,YACE,YxD6kB4B,IwD5kB5B,iCAQF,mBACE,cxDk+C8B,KwD/9C9B,8BACE,kBACA,MACA,QACA,UACA,qBAQF,eACE,kDACA,2CACA,yDACA,uDAJF,iBACE,oDACA,6CACA,2DACA,yDAJF,eACE,kDACA,2CACA,yDACA,uDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,eACE,kDACA,2CACA,yDACA,uDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,iBACE,oDACA,6CACA,2DACA,yDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,WACE,8CACA,uCACA,qDACA,mDAJF,oBACE,uDACA,gDACA,8DACA,4DAJF,aACE,gDACA,yCACA,uDACA,qDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,cACE,iDACA,0CACA,wDACA,sDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,aACE,gDACA,yCACA,uDACA,qDAJF,YACE,+CACA,wCACA,sDACA,oDAJF,iBACE,oDACA,6CACA,2DACA,yDC5DF,gCACE,yBzDqhDgC,MyDhhDpC,4BAGE,2B1CkRI,wBALI,Q0C3QR,yCACA,qDACA,qDACA,8BACA,8BACA,8CAGA,aACA,iCACA,gB1CsQI,UALI,6B0C/PR,uCtCRE,+CsCaJ,cACE,aACA,sBACA,uBACA,gBACA,mCACA,kBACA,mBACA,2CxDxBI,WwDyBJ,kCxDrBI,uCwDYN,cxDXQ,iBwDuBR,2NAEE,oEAGF,4BACE,iBAGF,0CACE,WAIA,uBACE,kDAGE,uCAJJ,uBAKM,gBC3DR,YAEE,4CACA,sCACA,qDACA,qDACA,uDACA,qCACA,uCACA,wDACA,6DACA,uDACA,0DACA,yDACA,0DACA,+CACA,mCACA,mCACA,6CAGA,aACA,sBAGA,eACA,gBvCXE,iDuCeJ,qBACE,qBACA,sBAEA,8CAEE,oCACA,0BASJ,wBACE,WACA,wCACA,mBAGA,4DAEE,UACA,8CACA,qBACA,sDAGF,+BACE,+CACA,uDAQJ,iBACE,kBACA,cACA,gFACA,iCACA,qBACA,yCACA,iFAEA,6BvCvDE,+BACA,gCuC0DF,4BvC7CE,mCACA,kCuCgDF,oDAEE,0CACA,oBACA,kDAIF,wBACE,UACA,wCACA,gDACA,sDAIF,kCACE,mBAEA,yCACE,sDACA,mDAaF,uBACE,mBAGE,qEvCvDJ,6DAZA,0BuCwEI,qEvCxEJ,2DAYA,4BuCiEI,+CACE,aAGF,yDACE,mDACA,oBAEA,gEACE,uDACA,oDtDtFR,yBsD8DA,0BACE,mBAGE,wEvCvDJ,6DAZA,0BuCwEI,wEvCxEJ,2DAYA,4BuCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,yBsD8DA,0BACE,mBAGE,wEvCvDJ,6DAZA,0BuCwEI,wEvCxEJ,2DAYA,4BuCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,yBsD8DA,0BACE,mBAGE,wEvCvDJ,6DAZA,0BuCwEI,wEvCxEJ,2DAYA,4BuCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,0BsD8DA,0BACE,mBAGE,wEvCvDJ,6DAZA,0BuCwEI,wEvCxEJ,2DAYA,4BuCiEI,kDACE,aAGF,4DACE,mDACA,oBAEA,mEACE,uDACA,qDtDtFR,0BsD8DA,2BACE,mBAGE,yEvCvDJ,6DAZA,0BuCwEI,yEvCxEJ,2DAYA,4BuCiEI,mDACE,aAGF,6DACE,mDACA,oBAEA,oEACE,uDACA,qDAcZ,kBvChJI,gBuCmJF,mCACE,mDAEA,8CACE,sBAaJ,yBACE,uDACA,gDACA,8DACA,6DACA,iEACA,8DACA,kEACA,0DACA,2DACA,qEAVF,2BACE,yDACA,kDACA,gEACA,6DACA,mEACA,8DACA,oEACA,4DACA,6DACA,uEAVF,yBACE,uDACA,gDACA,8DACA,6DACA,iEACA,8DACA,kEACA,0DACA,2DACA,qEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,yBACE,uDACA,gDACA,8DACA,6DACA,iEACA,8DACA,kEACA,0DACA,2DACA,qEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,2BACE,yDACA,kDACA,gEACA,6DACA,mEACA,8DACA,oEACA,4DACA,6DACA,uEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,qBACE,mDACA,4CACA,0DACA,6DACA,6DACA,8DACA,8DACA,sDACA,uDACA,iEAVF,8BACE,4DACA,qDACA,mEACA,6DACA,sEACA,8DACA,uEACA,+DACA,gEACA,0EAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,wBACE,sDACA,+CACA,6DACA,6DACA,gEACA,8DACA,iEACA,yDACA,0DACA,oEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,uBACE,qDACA,8CACA,4DACA,6DACA,+DACA,8DACA,gEACA,wDACA,yDACA,mEAVF,sBACE,oDACA,6CACA,2DACA,6DACA,8DACA,8DACA,+DACA,uDACA,wDACA,kEAVF,2BACE,yDACA,kDACA,gEACA,6DACA,mEACA,8DACA,oEACA,4DACA,6DACA,uEC5LJ,WAEE,2BACA,qVACA,4BACA,mCACA,mEACA,gCACA,sCACA,wEAGA,uBACA,M3DipD2B,I2DhpD3B,O3DgpD2B,I2D/oD3B,oBACA,gCACA,0EACA,SxCJE,gBwCMF,oCAGA,iBACE,gCACA,qBACA,0CAGF,iBACE,UACA,4CACA,0CAGF,wCAEE,oBACA,iBACA,6CAQJ,iBAHE,wCASE,gCATF,wCCjDF,OAEE,wBACA,8BACA,6BACA,sBACA,4B7CyRI,qBALI,S6ClRR,mBACA,iDACA,gDACA,4DACA,kDACA,4CACA,mDACA,wDACA,mEAGA,gCACA,e7C2QI,UALI,0B6CpQR,4BACA,oBACA,oCACA,4BACA,uEACA,sCzCRE,4CyCWF,eACE,UAGF,kBACE,aAIJ,iBACE,wBAEA,kBACA,+BACA,kBACA,eACA,oBAEA,mCACE,sCAIJ,cACE,aACA,mBACA,4DACA,mCACA,2CACA,4BACA,qFzChCE,0FACA,2FyCkCF,yBACE,kDACA,sCAIJ,YACE,kCACA,qBC9DF,OAEE,wBACA,wBACA,yBACA,0BACA,0BACA,oBACA,4DACA,gDACA,4BACA,+DACA,kCACA,kCACA,kCACA,qCACA,uDACA,kCACA,kCACA,8BACA,uBACA,uDACA,0CAGA,eACA,MACA,OACA,+BACA,aACA,WACA,YACA,kBACA,gBAGA,UAOF,cACE,kBACA,WACA,8BAEA,oBAGA,0B5D5CI,W4D6CF,uBACA,U7D87CgC,oBCx+C9B,uC4DwCJ,0B5DvCM,iB4D2CN,0BACE,U7D47CgC,K6Dx7ClC,kCACE,U7Dy7CgC,Y6Dr7CpC,yBACE,6CAEA,wCACE,gBACA,gBAGF,qCACE,gBAIJ,uBACE,aACA,mBACA,iDAIF,eACE,kBACA,aACA,sBACA,WAEA,4BACA,oBACA,oCACA,4BACA,uE1CrFE,4C0CyFF,UAIF,gBAEE,2BACA,uBACA,2BClHA,eACA,MACA,OACA,QDkH0B,0BCjH1B,YACA,aACA,iBD+G4D,sBC5G5D,+BACA,6BD2G0F,2BAK5F,cACE,aACA,cACA,mBACA,8BACA,uCACA,4F1CtGE,2DACA,4D0CwGF,yBACE,4FACA,gJAKJ,aACE,gBACA,8CAKF,YACE,kBAGA,cACA,gCAIF,cACE,aACA,cACA,eACA,mBACA,yBACA,sEACA,2CACA,yF1C1HE,+DACA,8D0C+HF,gBACE,2CzD5GA,yByDkHF,OACE,2BACA,yDAIF,cACE,gCACA,kBACA,iBAGF,UACE,yBzD/HA,yByDoIF,oBAEE,yBzDtIA,0ByD2IF,UACE,0BAUA,kBACE,YACA,eACA,YACA,SAEA,iCACE,YACA,S1C1MJ,gB0C8ME,gE1C9MF,gB0CmNE,8BACE,gBzD3JJ,4ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S1C1MJ,gB0C8ME,gF1C9MF,gB0CmNE,sCACE,iBzD3JJ,4ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S1C1MJ,gB0C8ME,gF1C9MF,gB0CmNE,sCACE,iBzD3JJ,4ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S1C1MJ,gB0C8ME,gF1C9MF,gB0CmNE,sCACE,iBzD3JJ,6ByDyIA,0BACE,YACA,eACA,YACA,SAEA,yCACE,YACA,S1C1MJ,gB0C8ME,gF1C9MF,gB0CmNE,sCACE,iBzD3JJ,6ByDyIA,2BACE,YACA,eACA,YACA,SAEA,0CACE,YACA,S1C1MJ,gB0C8ME,kF1C9MF,gB0CmNE,uCACE,iBEtOR,SAEE,0BACA,8BACA,+BACA,gCACA,sBhDwRI,uBALI,SgDjRR,sCACA,0CACA,oDACA,0BACA,iCACA,kCAGA,iCACA,cACA,gCClBA,YhE+lB4B,0BgE7lB5B,kBACA,YhEwmB4B,IgEvmB5B,Y9CCiB,oB8CCjB,iBACA,qBACA,iBACA,oBACA,sBACA,kBACA,mBACA,oBACA,gBjDgRI,UALI,4BgDhQR,qBACA,UAEA,gDAEA,wBACE,cACA,oCACA,sCAEA,gCACE,kBACA,WACA,2BACA,mBAKN,2FACE,+CAEA,2GACE,SACA,qFACA,sCAKJ,6FACE,6CACA,qCACA,qCAEA,6GACE,WACA,4HACA,wCAMJ,iGACE,4CAEA,iHACE,YACA,qFACA,yCAKJ,8FACE,8CACA,qCACA,qCAEA,8GACE,UACA,4HACA,uCAsBJ,eACE,sCACA,gEACA,8BACA,kBACA,sC5CjGE,8C8CnBJ,SAEE,0BACA,8BlD4RI,uBALI,SkDrRR,mCACA,kDACA,8DACA,uDACA,4FACA,2DACA,oCACA,sClDmRI,8BALI,KkD5QR,mCACA,+CACA,kCACA,kCACA,8CACA,+BACA,kCACA,0DAGA,iCACA,cACA,sCDzBA,YhE+lB4B,0BgE7lB5B,kBACA,YhEwmB4B,IgEvmB5B,Y9CCiB,oB8CCjB,iBACA,qBACA,iBACA,oBACA,sBACA,kBACA,mBACA,oBACA,gBjDgRI,UALI,4BkD1PR,qBACA,sCACA,4BACA,2E9ChBE,8C8CoBF,wBACE,cACA,oCACA,sCAEA,+DAEE,kBACA,cACA,WACA,2BACA,mBACA,eAMJ,2FACE,kFAEA,oNAEE,qFAGF,2GACE,SACA,gDAGF,yGACE,sCACA,sCAOJ,6FACE,gFACA,qCACA,qCAEA,wNAEE,4HAGF,6GACE,OACA,kDAGF,2GACE,oCACA,wCAQJ,iGACE,+EAEA,gOAEE,qFAGF,iHACE,MACA,mDAGF,+GACE,mCACA,yCAKJ,mHACE,kBACA,MACA,SACA,cACA,oCACA,qDACA,WACA,+EAMF,8FACE,iFACA,qCACA,qCAEA,0NAEE,4HAGF,8GACE,QACA,iDAGF,4GACE,qCACA,uCAuBN,gBACE,8EACA,gBlD2GI,UALI,mCkDpGR,qCACA,6CACA,kF9C5JE,6DACA,8D8C8JF,sBACE,aAIJ,cACE,0EACA,mCCrLF,UACE,kBAGF,wBACE,mBAGF,gBACE,kBACA,WACA,gBvEtBA,uBACE,cACA,WACA,WuEuBJ,eACE,kBACA,aACA,WACA,WACA,mBACA,2BjElBI,WiEmBJ,0BjEfI,uCiEQN,ejEPQ,iBiEiBR,8DAGE,cAGF,wEAEE,2BAGF,wEAEE,4BASA,8BACE,UACA,4BACA,eAGF,iJAGE,UACA,UAGF,oFAEE,UACA,UjE5DE,WiE6DF,ejEzDE,uCiEqDJ,oFjEpDM,iBiEiER,8CAEE,kBACA,MACA,SACA,UAEA,aACA,mBACA,uBACA,MlE8gDmC,IkE7gDnC,UACA,M5CjFM,K4CkFN,kBACA,gBACA,SACA,QlEygDmC,GC/lD/B,WiEuFJ,kBjEnFI,uCiEkEN,8CjEjEQ,iBiEqFN,oHAEE,M5C3FI,K4C4FJ,qBACA,UACA,QlEigDiC,GkE9/CrC,uBACE,OAGF,uBACE,QAKF,wDAEE,qBACA,MlEkgDmC,KkEjgDnC,OlEigDmC,KkEhgDnC,4BACA,wBACA,0BAWF,4BACE,yQAEF,4BACE,0QAQF,qBACE,kBACA,QACA,SACA,OACA,UACA,aACA,uBACA,UAEA,alE08CmC,IkEz8CnC,mBACA,YlEw8CmC,IkEt8CnC,sCACE,uBACA,cACA,MlEw8CiC,KkEv8CjC,OlEw8CiC,IkEv8CjC,UACA,alEw8CiC,IkEv8CjC,YlEu8CiC,IkEt8CjC,mBACA,eACA,iB5CjKI,K4CkKJ,4BACA,SAEA,oCACA,uCACA,QlE+7CiC,GCvmD/B,WiEyKF,iBjErKE,uCiEoJJ,sCjEnJM,iBiEuKN,6BACE,QlE47CiC,EkEn7CrC,kBACE,kBACA,UACA,OlEs7CmC,QkEr7CnC,SACA,YlEm7CmC,QkEl7CnC,elEk7CmC,QkEj7CnC,M5C5LM,K4C6LN,kBAMA,sFAEE,OlEu7CiC,yBkEp7CnC,qDACE,iB5C1LI,K4C6LN,iCACE,M5C9LI,K4CoLN,0OAEE,OlEu7CiC,yBkEp7CnC,yIACE,iB5C1LI,K4C6LN,iGACE,M5C9LI,K6C5BR,8BAEE,qBACA,8BACA,gCACA,gDAEA,kBACA,6FAIF,0BACE,8CAIF,gBAEE,yBACA,0BACA,sCACA,kCACA,oCACA,4CAGA,yDACA,iCAGF,mBAEE,yBACA,0BACA,iCASF,wBACE,GACE,mBAEF,IACE,UACA,gBAKJ,cAEE,yBACA,0BACA,sCACA,oCACA,0CAGA,8BACA,UAGF,iBACE,yBACA,0BAIA,uCACE,8BAEE,oCC/EN,kFAEE,4BACA,4BACA,4BACA,+BACA,+BACA,2CACA,qCACA,oDACA,gEACA,mEACA,sDACA,sChE6DE,4BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,gEmEYJ,cnEXM,iBGuDJ,4BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,yBgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,4BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,gEmEYJ,cnEXM,iBGuDJ,4BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,yBgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,4BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,gEmEYJ,cnEXM,iBGuDJ,4BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,yBgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,6BgE5CF,cAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,iEmEYJ,cnEXM,iBGuDJ,6BgE5BE,8BACE,MACA,OACA,gCACA,qFACA,4BAGF,4BACE,MACA,QACA,gCACA,oFACA,2BAGF,4BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,+BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,sDAEE,eAGF,8DAGE,oBhE5BJ,0BgE/BF,cAiEM,4BACA,+BACA,0CAEA,gCACE,aAGF,8BACE,aACA,YACA,UACA,mBAEA,2ChEnCN,6BgE5CF,eAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,gCnE1BA,iEmEYJ,enEXM,iBGuDJ,6BgE5BE,+BACE,MACA,OACA,gCACA,qFACA,4BAGF,6BACE,MACA,QACA,gCACA,oFACA,2BAGF,6BACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,gCACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,wDAEE,eAGF,iEAGE,oBhE5BJ,0BgE/BF,eAiEM,4BACA,+BACA,0CAEA,iCACE,aAGF,+BACE,aACA,YACA,UACA,mBAEA,2CA/ER,WAEI,eACA,SACA,mCACA,aACA,sBACA,eACA,gCACA,kBACA,wCACA,4BACA,UnE5BA,WmE8BA,+BnE1BA,uCmEYJ,WnEXM,iBmE2BF,2BACE,MACA,OACA,gCACA,qFACA,4BAGF,yBACE,MACA,QACA,gCACA,oFACA,2BAGF,yBACE,MACA,QACA,OACA,kCACA,gBACA,sFACA,4BAGF,4BACE,QACA,OACA,kCACA,gBACA,mFACA,2BAGF,gDAEE,eAGF,qDAGE,mBA2BR,oBNpHE,eACA,MACA,OACA,Q9DwmCkC,K8DvmClC,YACA,aACA,iBxCwBM,KwCrBN,mCACA,iC9D+9CkC,GoEj3CpC,kBACE,aACA,mBACA,8BACA,oEAEA,6BACE,sFACA,oDACA,sDACA,uDAIJ,iBACE,gBACA,kDAGF,gBACE,YACA,oEACA,gBChJF,aACE,qBACA,eACA,sBACA,YACA,8BACA,QrE8yCkC,GqE5yClC,yBACE,qBACA,WAKJ,gBACE,gBAGF,gBACE,gBAGF,gBACE,iBAKA,+BACE,mDAIJ,4BACE,IACE,QrEixCgC,IqE7wCpC,kBACE,+EACA,oBACA,8CAGF,4BACE,KACE,wBChDJ,gBACI,mBCCA,eACI,uBADJ,iBACI,uBADJ,eACI,uBADJ,YACI,uBADJ,eACI,uBADJ,cACI,uBADJ,aACI,uBADJ,YACI,uBAQI,oCACI,uBADJ,sCACI,uBADJ,oCACI,uBADJ,iCACI,uBADJ,oCACI,uBADJ,mCACI,uBADJ,kCACI,uBADJ,iCACI,uBAOZ,SACI,4BAEJ,oBACI,gBCrBJ,6BACI,sBACA,uEAFJ,+BACI,sBACA,mEAFJ,6BACI,sBACA,uEAFJ,0BACI,sBACA,wEAFJ,6BACI,sBACA,wEAFJ,4BACI,sBACA,uEAFJ,2BACI,sBACA,uEAFJ,2BACI,sBACA,yEAFJ,0BACI,sBACA,sEAFJ,0BACI,sBACA,wEAFJ,+BACI,sBACA,qEAFJ,4BACI,sBACA,wEAFJ,4BACI,sBACA,uEAFJ,0BACI,sBACA,wEAFJ,yBACI,sBACA,uEAFJ,kCACI,sBACA,uEAFJ,2BACI,sBACA,uEAFJ,2BACI,sBACA,yEAFJ,4BACI,sBACA,wEAFJ,4BACI,sBACA,uEAFJ,2BACI,sBACA,uEAFJ,0BACI,sBACA,wEAFJ,0BACI,sBACA,wEAFJ,2BACI,sBACA,yEAFJ,0BACI,sBACA,yEAFJ,+BACI,sBACA,sECJR,KACI,iBAII,uJAGI,yBACA,wDACA,0DAIA,wVAGI,yBACA,0DACA,2DAKJ,wVAGI,yBACA,wDACA,0DAIR,gHAEI,qBACA,gBACA,oCxErBN,WwEsBM,+DxElBN,uCwEaE,gHxEZA,iBwEoBA,wIAEI,qCACA,6BACA,kBAIR,4BACI,YACA,0HAEA,oJAIA,oDACA,uDAGJ,4BACI,YACA,0HAEA,oJAIA,mDACA,sDAGJ,iBACI,kBACA,oBAEA,2BACI,oBAGJ,wBACI,0BACA,uBACA,0CACA,WACA,cACA,WACA,UACA,kBACA,sBACA,qBACA,6CAIS,oCACL,kBADK,sCACL,kBADK,oCACL,kBADK,iCACL,kBADK,oCACL,kBADK,mCACL,kBADK,kCACL,kBADK,kCACL,kBADK,iCACL,kBADK,iCACL,kBADK,sCACL,kBADK,mCACL,kBADK,mCACL,kBADK,iCACL,kBADK,gCACL,kBADK,yCACL,kBADK,kCACL,kBADK,kCACL,kBADK,mCACL,kBADK,mCACL,kBADK,kCACL,kBADK,iCACL,kBADK,iCACL,kBADK,kCACL,kBADK,iCACL,kBADK,sCACL,kBAMhB,WACI,IvDpGY,MuDwGZ,uF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,uGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,2F9BxFF,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,sCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qC8BoGE,2GAGI,0BACA,kCACA,wC9B7FN,qBACA,4BACA,2BACA,wBACA,kCACA,mCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oB8BkDE,uF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,uGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,uF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,uGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,2F9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,2GAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,qCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,+E9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,+FAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iG9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iHAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,qF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,qGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,uCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,wCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,mF9BxFF,qBACA,kBACA,4BACA,2BACA,yBACA,mCACA,yCACA,4BACA,0BACA,oCACA,6BACA,8BACA,2BACA,qC8BoGE,mGAGI,0BACA,kCACA,wC9B7FN,qBACA,4BACA,2BACA,wBACA,kCACA,yCACA,4BACA,yBACA,mCACA,6BACA,8BACA,kCACA,qCACA,oB8BkDE,iF9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,iGAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,yCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BkDE,2F9BxFF,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC8BoGE,2GAGI,0BACA,kCACA,wC9B7FN,wBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,iCACA,kCACA,wCACA,oB8BwFM,oC9B9HN,qBACA,qBACA,+BACA,2BACA,2BACA,qCACA,sCACA,4BACA,4BACA,sCACA,6BACA,8BACA,8BACA,wC+BjCF,YAEI,8BACA,6BACA,gCACA,mCACA,wCAEA,6BAEA,uBACI,YACA,kCACI,eACA,iCACA,sCACA,cACA,iBACA,kBAGJ,qGACI,gCACA,UAGJ,mCACI,iBACA,iBAEA,8CACI,gDACA,wCAGJ,4CACI,mBAEA,uDACI,kDACA,0CAKZ,8BACI,iBAGJ,gDACI,yBACA,eACA,YACA,uDACI,eACA,0CACA,YAQR,iCACI,mCACA,mCACA,wCACA,4BACA,4BACA,kCACA,kCACA,kCACA,kCACA,mCACA,mCACA,wCACA,qCC7EZ,OACI,8BACA,8BACA,mCAEA,qBACI,2CACA,mCACA,+CAMA,4BACI,uBACA,0BACA,8BACA,8BCdJ,qGACI,gBACA,MAIA,mLACI,iBAMR,qGACI,gBACA,SAIR,iEACI,kBAEA,0EACI,WAIR,mFACI,uCACA,uBACA,0CACA,WACA,cACA,WACA,UACA,kBACA,uBACA,sBACA,6CAIR,yBAEQ,8JACI,uCCjDZ,2BAEI,oBACA,oCAEJ,uCAEI,oBACA,oCAGJ,YACI,cAKI,qEAEI,uBAEJ,iFAEI,uBAGJ,iCACI,cCgBZ,WAEI,YC7CJ,YACI,iCAIA,qCACI,qCACA,erFkGsB,QqFpG1B,qCACI,qCACA,erFkGsB,QqFpG1B,qCACI,qCACA,erFkGsB,QqFpG1B,qCACI,qCACA,erFkGsB,QqFpG1B,qCACI,qCACA,erFkGsB,QqFpG1B,qCACI,qCACA,erFkGsB,QqFpG1B,kBACI,qCACA,erFkGsB,QsFzG9B,cAEI,sBACA,sBACA,+BACA,2BACA,2BACA,4BACA,6BACA,2BACA,0DACA,SACA,mCACA,2CAGJ,SACI,cAKI,wDAEI,sBACA,sBCvBZ,SAEI,4BACA,uDACA,kCACA,kCACA,oCACA,oCACA,kCACA,kCACA,kCACA,gCACA,kCAEA,kBACA,UACA,sCAEA,WACI,qBACA,8BAGJ,oBACI,WACA,cACA,kBACA,0BACA,SACA,yBACA,mCACA,yCACA,WAGJ,YACI,gBACA,eACA,SAEA,eACI,iBAEA,6BACI,aACA,mBACA,mBACA,SAEA,oCACI,gBAGJ,sCACI,uCACA,kBAGJ,wNAII,yCACA,uCAGJ,gHAEI,2CACA,yCAGJ,4GAEI,kBAGJ,6CACI,yCACA,cACA,uCACA,iBACA,YC1DM,KD2DN,gBACA,qBACA,mBACA,kBAGI,oEAUI,MATc,KAUd,OAVc,KAWd,YARU,KASV,kBACA,YAbc,KADlB,kEAUI,MATc,QAUd,OAVc,QAWd,YARU,OASV,oBACA,YAbc,QADlB,mEAUI,MATc,QAUd,OAVc,QAWd,YARU,OASV,qBACA,YAbc,QADlB,mEAUI,MATc,QAUd,OAVc,QAWd,YARU,OASV,qBACA,YAbc,QADlB,kEAUI,MATc,OAUd,OAVc,OAWd,YARU,OASV,qBACA,YAbc,OADlB,qEAUI,MATc,OAUd,OAVc,OAWd,YARU,OASV,qBACA,YAbc,OAmB9B,kCACI,2CAGJ,kBACI,wCAQR,8BACI,4BACA,uDACA,kCACA,kCACA,oCACA,oCACA,kCACA,kCEpIZ,OAEI,yBACA,yBACA,uBACA,uBACA,6BACA,6BAGI,mBAEI,mCAFJ,4EAMJ,WACA,aACA,wBACA,qD/E4CA,yB+E/DJ,OAYY,oC/EmDR,yB+E/DJ,OAYY,oC/EmDR,yB+E/DJ,OAYY,oC/EmDR,0B+E/DJ,OAYY,oCASR,aACI,aACA,sBACA,uBACA,mBAEA,gCACA,iBAEA,8BACA,4BAEA,mBACI,oCACA,kCAGJ,0BACI,SAIR,6BAEI,eACA,qBAOQ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,iBACI,2BADJ,kBACI,4BADJ,kBACI,4BADJ,kBACI,4B/EShB,yB+EVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6B/EShB,yB+EVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6B/EShB,yB+EVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6B/EShB,0B+EVY,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,oBACI,2BADJ,qBACI,4BADJ,qBACI,4BADJ,qBACI,6B/EShB,0B+EVY,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,qBACI,2BADJ,sBACI,4BADJ,sBACI,4BADJ,sBACI,6BAQZ,4BACI,uBACA,uBACA,6BACA,6BClEZ,gBACI,kCACA,mCACA,6BACA,wDACA,kDACA,sCACA,sCAEA,2DACA,gBACA,iCACA,gBACA,kBACA,iBACA,eAEA,0BACI,6CACA,qCACA,mBAGJ,iCACI,4CACA,oDACA,2BAGJ,0FAEI,2CACA,mDACA,2BC/BR,mBAEI,WACA,uCACA,iBACA,cACA,aACA,mBACA,sBACA,UACA,qCACA,mCAEA,W3FuIuB,+D4FrJ3B,mBACI,gCACA,2BACA,iCACA,kCACA,kCACA,6BACA,8BACA,oCACA,mCAEA,iCACA,iCACA,oCACA,kCACA,6DAEA,iCACA,uCACA,+BACA,kCACA,0CACA,0CAEA,sCACA,2CACA,8CACA,uCACA,8CACA,2DACA,wCACA,2CACA,+CACA,kDAEA,gCACA,8BACA,gCACA,qCACA,iCACA,iCACA,sCACA,sCAEA,iCACA,8BACA,yCAEA,yBACA,yBACA,6BACA,8BAEA,oCACA,4CACA,4CACA,0CACA,4CACA,6DAEA,iCACA,mCACA,mCACA,2CACA,6BACA,oCACA,+BACA,wCACA,2CACA,yCACA,iCACA,4CACA,4CAEA,8BACA,6BACA,qCACA,qCACA,qDACA,+BACA,2CACA,qCACA,oDACA,+BACA,oCCrFJ,+BACI,WACA,aACA,mBACA,cACA,sBACA,UACA,SAGJ,kQACI,WACA,aACA,eACA,0EAOA,yBAFJ,uNAGQ,a7FmHuB,yC6FlHvB,c7FkHuB,0C6FxGtB,wIACL,cChCJ,8BACI,WAEA,aACA,mBACA,sBACA,wCAEA,6CACI,aACA,mBACA,oBACA,WACA,a9F0HuB,yC8FzHvB,c9FyHuB,yC8FvHvB,yBARJ,6CASQ,cAIJ,+CACI,0CACA,6CACA,mBACA,aAGJ,yBApBJ,6CAqBQ,8CACA,gDAGJ,8DACI,6DAIA,0DACI,4CACA,4DAFJ,2DACI,6CACA,6DAIR,8HAEI,sCACA,qBACA,UChCG,ODmCP,0DACI,gBAGJ,+MAII,qBE3DZ,8BACI,WACA,WpE4BI,KoE3BJ,iBACA,2BAEA,yBANJ,8BAOQ,oDACA,kDACA,uDACA,eACA,8BACA,gBACA,MACA,aACA,0CAGJ,mDACI,WAKA,aAHoB;AAAA;AAAA,UAIpB,cAJoB;AAAA;AAAA,UAKpB,aACA,8BACA,mBACA,kBAEA,yBAbJ,mDAoBQ,aALa,+EAMb,cANa,gFASjB,yBAxBJ,mDAyBQ,eACA,iBAIR,4CACI,oBAEA,yBAHJ,4CAIQ,cAGJ,gDACI,cAIR,yBACI,8CACI,aAEJ,+CACI,wBACA,iBAIR,0CACI,0BACA,sCACA,mCAEA,yBALJ,0CAMQ,oBAGJ,yDACI,kDACA,gBAEA,yEAEI,aAGJ,yBATJ,yDAUQ,mBAGJ,8JAEI,cACA,mBACA,iBAKJ,yBADJ,oDAEQ,qFAIJ,yBANJ,oDAOQ,WpE7ER,KoE8EQ,8CACA,+CACA,0DAGJ,gFACI,yBAIR,8KAGI,qCAIR,8CACI,uCACA,2BAGJ,mDACI,kDAGJ,2CACI,MpExHA,KoE0HA,mJAGI,MpE1IH,QoE6ID,yBATJ,2CAUQ,MpElHJ,MqE9BR,sFAEI,WAEA,qCACA,WjG+IuB,+DiG7IvB,aACA,0CACA,iBACA,mBACA,oBACA,2BACA,eACA,mDACA,oDACA,6FAGA,yBAnBJ,sFAoBQ,iDACA,0DACA,2DAEA,gBACA,MACA,cAGJ,gJACI,WACA,aACA,8BACA,oBACA,kBAEA,0KACI,0CACA,6CACA,mBACA,aACA,wCAIA,0KACI,uDACA,sGAFJ,4KACI,wDACA,uGAMR,oKACI,cACA,aACA,gCACA,oBACA,UAEA,sLACI,0CACA,iGAIA,yBANJ,sLAOQ,iDACA,6EAKR,yBApBJ,oKAqBQ,4BACA,2BACA,eAIA,8LACI,YAIR,0LACI,aACA,0CACA,mBACA,uBACA,wCACA,sCACA,iCACA,mBACA,8CACA,8CACA,kBACA,oBAEA,yBAdJ,0LAeQ,cAKZ,0KACI,sFAOJ,gLACI,YACA,UACA,gBAGJ,yBACI,gLACI,aAEJ,kLACI,aACA,UACA,0CACA,qBAIR,yBACI,kLACI,eACA,8CACA,OACA,YAIR,wKACI,0CAEA,+DACA,yDACA,sCACA,0CAEA,yBARJ,wKASQ,oBAGJ,sMACI,kDACA,gBAGA,wBACA,yBAEA,yBARJ,sMASQ,mBAGJ,oeAEI,cACA,mBACA,iBAKJ,yBADJ,4LAEQ,gDAEA,aACA,mBACA,0CACA,oFAEA,wFAIJ,yBAbJ,4LAcQ,yDACA,uDACA,8CACA,+CACA,yFAIJ,oPACI,yBAIR,gyBAII,0DAMhB,sCACI,8CACA,+CAEA,yBAJJ,sCAKQ,ajG/EuB,yCiGgFvB,cjGhFuB,0CAmB/B,uOACI,WAPuB,+DkGpJ3B,wEAGI,gCACA,8BACA,wCACA,2CACA,0CAEA,WlG2IuB,+DkGxInB,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAHJ,8JAEI,0CACA,SAIR,kGACI,SACA,UCrBR,6BACI,aACA,kBACA,uBACA,gBACA,WACA,6CAMY,mCACI,iBADJ,mCACI,iBADJ,mCACI,iBADJ,mCACI,iBzF6DhB,4ByF9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kBzF6DhB,4ByF9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kBzF6DhB,4ByF9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kBzF6DhB,6ByF9DY,sCACI,iBADJ,sCACI,iBADJ,sCACI,iBADJ,sCACI,kBzF6DhB,6ByF9DY,uCACI,iBADJ,uCACI,iBADJ,uCACI,iBADJ,uCACI,kBAMhB,6CACI,cACA,YACA,WACA,yBAJJ,6CAKQ,aAIR,iDACI,kBACA,SACA,OAEA,sFAEA,+DACA,8CACA,iDAEA,mDACI,cAGJ,0EACI,QACA,WAGJ,wEACI,MACA,aAKR,4CAEI,kBACA,SACA,4HAEA,yBANJ,4CAOQ,0FAIJ,qEACI,QACA,sCAIJ,+DACI,OACA,uCAGJ,yBAtBJ,4CAuBQ,WAGA,oIAEI,8CACA,gDCpFhB,yCACI,kBACA,WACA,YACA,aACA,mBACA,6BAEA,yBARJ,yCASQ,sBACA,OAGJ,qDACI,QACA,2CACA,iCACA,gHACA,8IAEA,YAEA,WpG8HmB,+DoG5HnB,yBAXJ,qDAYQ,4CAEA,WpGoHyB,qEoGjH7B,yBAjBJ,qDAkBQ,gBACA,gFAIJ,6RAKI,qBAGJ,sVAMI,qCACA,yBAPJ,sVAQQ,gBAIR,wEACI,ULtCG,OKuCH,SACA,YACA,gBACA,WACA,aACA,mBACA,8BACA,UACA,yBAEA,8EACI,gBAGJ,+EACI,gBACA,qCACA,sCACA,sBACA,WACA,qBACA,gCAGJ,mGACI,yBAGJ,yBA9BJ,wEA+BQ,cAKJ,yBADJ,0EAEQ,8CAGJ,yBALJ,0EAMQ,eAIA,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDATZ,2JAEI,uDACA,qDACA,gBACA,oDAEA,yBACI,6MACI,sDAMhB,+EACI,sBAEA,oFACI,oBAGJ,yFACI,2BACA,uDACA,8EAGA,mGACI,iBAGJ,8LAEI,0BAGJ,kGACI,8CACA,mBAGJ,gGACI,wDAOpB,6DACI,QACA,cAEA,YACA,uGAGA,yBARJ,6DAUQ;AAAA;AAAA;AAAA,cAIA,eACA,4CAIA,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAPR,mLAEI,uDACA,sEAEA,yBALJ,mLAMQ,sCACA,+CAShB,yBAEQ,yEACI,gBACA,oCAMZ,yBAEQ,8EACI,gBACA,MAIJ,uGACI,UACA,UAKZ,yBAEQ,8EACI,gBACA,uCAMZ,yBAEQ,8EACI,QAGJ,sFACI,SAMZ,yBAEQ,sEACI,QACA,4CACA,cpGxGe,yCoG8GH,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAHJ,+OACI,4CACA,eACA,oDAOpB,8EACI,QACA,gBACA,apG3He,yCoG8HX,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,+CALJ,qNAEI,eACA,uCACA,cACA,gDAIR,+CAfJ,8EAgBQ,6CChRhB,yHACI,oCACA,4CAEA,mJACI,gBAIR,uFAEI,aACA,wCAEA,6B3FgDJ,yB2FrDA,uFAQQ,yBACA,8BACA,kCAKJ,wDACI,4CAGA,qKAQA,sKAEI,kDAIR,uDAEI,0EAQI,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAFJ,qJAEI,gBAIR,yEACI,gBAeR,wDACI,gBAIA,oFACI,cAIZ,wDACI,gBACA,iBAIJ,8HAEI,uB3F9BJ,yB2F4BA,8HAKQ,yBACA,2BAGJ,sKACI,aAKR,kHAEI,uB3F7CJ,yB2F2CA,kHAKQ,yBACA,2BAGJ,8IACI,aClHZ,8BAGI,eACA,gDACA,gCACA,mBACA,0CACA,6CAEA,yBAVJ,8BAWQ,aAGJ,2CACI,SACA,UAGJ,mJAII,gCCzBR,gFAGI,yCCDI,wCACI,2BACA,iCACA,8BACA,oCACA,4DACA,oCACA,+BACA,kCACA,wCACA,2CACA,+CACA,kDACA,iCACA,iCACA,8BACA,yCACA,yBACA,yBACA,4CACA,6DACA,oCACA,+BACA,4CACA,+BACA,2CACA,oDbUZ,KACI,W3F+GuB,+DyGtJ3B,0BAEI,yBACA,2BACA,kCACA,sCACA,sCACA,gCACA,0CACA,kCACA,+BACA,qCACA,uCACA,sDACA,2CACA,6CAKI,oEAEI,kCACA,2CAKZ,SACI,aACA,WACA,oDAEA,2DACA,6BACA,oBACI,sCAGJ,2BACI,mBACA,WACA,yCAEA,aACA,+DACA,uDACA,mBAEA,kFAEA,mCAEA,mDACI,iBAEA,8CAEJ,wDACI,qBAEJ,kDACI,gBAEJ,sDACI,mBAIR,0BACI,kBACA,yCAIJ,0BACI,0BACA,wBAEJ,2CACI,kBAIR,iBACI,uDAGJ,gBACI,0DACA,4CAEA,sCACI,kGAEA,4CACA,gBAEJ,sCACI,gFAGJ,4BACI,kGAEA,aACA,WACA,gFAEA,WACA,mBAEA,8CACI,cACA,SAGJ,8CACI,cCpHZ,WACI,sBACA,wDACA,mBACA,kBAGJ,WACI,iCACA,mDACA,mBACA,kBAGJ,iCAEI,iCACA,WACA,kBACA,mBACA,oBACA,oBACA,cAGA,mCACA,kCACA,qBAGJ,uDAEI,4CACA,WACA,kBACA,mBACA,oBACA,oBACA,cAGA,mCACA,kCACA,qBAGJ,6CACI,qBChDJ,mBACI,cAES,0BACL,UAGJ,2BACI,UAIJ,sCACI,WACA,WrG+4BgC,yDqG94BhC,uBACA,YCLyB,QvFmR3B,UALI,KsFvQF,YrGylBsB,IqGxlBtB,YnFdW,ImFeX,MrGi3BgC,qBqGh3BhC,iB/ELA,K+EMA,4ClFJJ,2BlBHE,WoGUE,0DACA,gBpGPF,uCoGPF,sCpGQI,iBoGYA,6HACI,a/EFJ,K+EGI,WrEzBmB,KqE8B3B,uFACI,oClFCJ,6BACA,4BkFGA,uFACI,iClFnBJ,yBACA,0BkFuBA,mCACI,WAIA,kEACI,mBAOJ,kJACI,kBACA,QACA,MrGq6BwB,QqGp6BxB,MCIqB,ODHrB,OCIqB,ODHrB,oBACA,gBACA,iBACA,mBACA,WCGqB,iXDFrB,2BAGA,8JACI,WCDiB,8WDKrB,4JACI,aEpFZ,sCACI,QDGyB,KCC7B,qCACI,QDFyB,KCGzB,gBACA,MvG63BgC,qBuG53BhC,iBjFOA,KiFNA,ajFqBA,KHbJ,2BoFJI,6DACI,iCpFYR,yBACA,0BoFRI,6DACI,oCpFoBR,6BACA,4BoFhBI,qDACI,uBAGA,4EACI,cACA,WACA,uBACA,YDvBiB,QvFmR3B,UALI,KwFrPM,YvGukBc,IuGtkBd,YrFhCG,IqFiCH,MvG+1BwB,qBuG91BxB,iBjFvBR,KiFwBQ,4BACA,4CACA,gBpFxBZ,2BlBHE,WsG+BU,0DtG3BV,uCsGWM,4EtGVJ,iBsG4BQ,kFACI,ajFlBZ,KiFmBY,WvEzCW,KuEgDnB,sGACI,WDWiB,MCVjB,gBAIJ,wFACI,uBxF8NV,UALI,KwFvNM,YvGyiBc,IuGxiBd,YrF9DG,IqFiEH,iHACI,MvG60BoB,0BuGz0BxB,6HACI,WACA,iBjF1DT,QiF8DK,iRAEI,WACA,iBjFjFX,QiFqFO,sOAEI,MvGklBU,0BuG9kBd,oGACI,UAGA,4HACI,wBACA,YvG0iBM,IuGziBN,YrFhGL,IqFiGK,MjFvEhB,KiF4EgB,+JACI,uBC5GxB,8CACI,uCACA,iPACA,4BACA,oBxG4+B4B,oBwG3+B5B,gBxG4+B4B,UwGz+B5B,2EACI,UACA,YxGimBkB,IwGhmBlB,YtFNO,IsFOP,MxGy3B4B,qBwGt3B5B,2GACI,YxG2lBc,IwG1lBd,YtFZG,IsFaH,MxGk4BwB,0BwG73BhC,wEACI,aCtBJ,6EACI,aACA,mBACA,eACA,eACA,SACA,gBAGA,wGACI,aACA,mBACA,mBACA,oBACA,qBACA,sB1F6QV,UALI,K0FtQM,MzGk3BwB,qByGj3BxB,YACA,4CtFHZ,2BsFOY,2IACI,MH8Ca,OG7Cb,OH8Ca,OG7Cb,oBACA,oBACA,gBACA,iBACA,mBACA,WH4Ca,iXG3Cb,SAEA,iJACI,WHyCS,8WGrCb,gJACI,aAOhB,gEACI,cACA,WACA,OHnDqB,OGsDrB,uFACI,WACA,OHxDiB,OGyDjB,aACA,cACA,YHjDiB,QGkDjB,YvFxDG,IuFyDH,+BAKR,0EACI,MzG+sBkB,O0GhxBtB,6JACI,M1GwqBkB,0B0GvqBlB,mBACA,iB1G43B4B,uB0G33B5B,apFaD,QoFZC,gBAKA,qOACI,aAIJ,uOACI,mBACA,6SACI,aAKR,mQACI,iBAEA,mSACI,aC1BJ,mIxF8BZ,0BACA,6BwFrBY,gIxFoBZ,0BACA,6BwFXI,yNxFwBJ,yBACA,4BwFnBA,gCACI,YACA,mDACI,YC7BJ,kHACI,atF8BJ,QsFxBI,sUACI,atFuBR,QsFtBQ,WN4BiB,4BMtBrB,oNACI,oCAIJ,oNACI,iCzFEZ,yBACA,0ByFOI,sHACI,atFhCN,QsFsCM,8UACI,atFvCV,QsFwCU,WNCiB,4BMKrB,wNACI,oCAIJ,wNACI,iCzF7BZ,yBACA,0B0F3BA,qDACI,mEACA,qB9F2RF,UALI,SIvQN,2B0FRI,gLACI,YACA,aACA,wBACA,2XAEA,4LACI,wXAKJ,sWAEI,aAMZ,oD1FZA,2B0FgBI,4E1FPJ,yBACA,0B0FWI,4E1FEJ,6BACA,4B0FEQ,2FACI,qB9FiPV,UALI,S8FtOE,uGACI,qB9F0OV,UALI,S8FjOU,2IACI,sBAIA,8KACI,qBASxB,6DACI,oCAMI,uHACI,oB9F+MV,UALI,S8FvMM,0JACI,YACA,aACA,wBACA,2XAEA,gKACI,wXAMhB,yFACI,YA/FR,qDACI,iEACA,mB9F2RF,UALI,QIvQN,2B0FRI,gLACI,WACA,YACA,oBACA,yXAEA,4LACI,sXAKJ,sWAEI,aAMZ,oD1FZA,2B0FgBI,4E1FPJ,yBACA,0B0FWI,4E1FEJ,6BACA,4B0FEQ,2FACI,mB9FiPV,UALI,Q8FtOE,uGACI,mB9F0OV,UALI,Q8FjOU,2IACI,oBAIA,8KACI,mBASxB,6DACI,iCAMI,uHACI,oB9F+MV,UALI,Q8FvMM,0JACI,WACA,YACA,oBACA,yXAEA,gKACI,sXAMhB,yFACI,WA/FI,sDACR,mEACA,qB9F2RF,UALI,SIvQN,2B0FRI,kLACI,YACA,aACA,wBACA,2XAEA,8LACI,wXAKJ,0WAEI,aAMA,qD1FZZ,2B0FgBI,6E1FPJ,yBACA,0B0FWI,6E1FEJ,6BACA,4B0FEQ,4FACI,qB9FiPV,UALI,S8FtOE,wGACI,qB9F0OV,UALI,S8FjOU,4IACI,sBAIA,+KACI,qBASZ,8DACR,oCAMI,wHACI,oB9F+MV,UALI,S8FvMM,2JACI,YACA,aACA,wBACA,2XAEA,iKACI,wXAMhB,0FACI,YA/FI,sDACR,iEACA,mB9F2RF,UALI,QIvQN,2B0FRI,kLACI,WACA,YACA,oBACA,yXAEA,8LACI,sXAKJ,0WAEI,aAMA,qD1FZZ,2B0FgBI,6E1FPJ,yBACA,0B0FWI,6E1FEJ,6BACA,4B0FEQ,4FACI,mB9FiPV,UALI,Q8FtOE,wGACI,mB9F0OV,UALI,Q8FjOU,4IACI,oBAIA,+KACI,mBASZ,8DACR,iCAMI,wHACI,oB9F+MV,UALI,Q8FvMM,2JACI,WACA,YACA,oBACA,yXAEA,iKACI,sXAMhB,0FACI,WCzFR,0GACI,gBACA,yBACA,YACA,gBACA,MxFWG,QwFNP,kGACI,YAaJ,4DACI,cAIR,oDACI","file":"bootstrap.css"} \ No newline at end of file From 7aab1322d6f0d0142cda2e480b9af1907621c724 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Tue, 30 Jul 2024 14:59:47 +0200 Subject: [PATCH 33/34] fix: make sure select2 uses the width it has Fixes #101 --- src/cdh/core/static/cdh.core/js/widget/searchable-select.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cdh/core/static/cdh.core/js/widget/searchable-select.js b/src/cdh/core/static/cdh.core/js/widget/searchable-select.js index e22d7caa..58bbb5ad 100644 --- a/src/cdh/core/static/cdh.core/js/widget/searchable-select.js +++ b/src/cdh/core/static/cdh.core/js/widget/searchable-select.js @@ -1,3 +1,5 @@ $(() => { - $('.dsc-select2').select2(); + $('.dsc-select2').select2({ + width: '100%', + }); }) \ No newline at end of file From 74a3b3a0e5953d60cc7869a41d69b6ddae32cae0 Mon Sep 17 00:00:00 2001 From: "Mees, T.D. (Ty)" Date: Tue, 30 Jul 2024 15:02:36 +0200 Subject: [PATCH 34/34] chore: bump versions --- README.md | 22 +++++++++++----------- package.json | 2 +- pyproject.toml | 12 ++++++------ 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 85fc82ad..f5ebc0f9 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Documentation provided here: https://centrefordigitalhumanities.github.io/django ## Currently targeting: - Python 3.9 (Django 4 only) - Python 3.11 -- Django 4.2 (lower versions might work, but unsupported) +- Django 4.2 - Django 5.0 Tests are run using these versions; Some apps have lower requirements, but are @@ -24,7 +24,7 @@ Add the following line to your python requirements: ``cdh-django-core[all] @ git+https://github.com/CentreForDigitalHumanities/django-shared-core.git@`` -Replacing ```` with the latest DSC release tag. (e.g. ``v3.1.0``). +Replacing ```` with the latest DSC release tag. (e.g. ``v3.2.0``). This will install the entire library with all required dependencies. @@ -47,14 +47,14 @@ the apps your project uses (sans ``cdh.``). For example: Base block for pure-Django projects, containing base templates, generic views, extra form/model fields and other miscellaneous code. -Requires Django >= 4; +Requires Django >= 4.2; ### Federated authentication (``cdh.federated_auth``) Helper app to connect a Django application as a Service Provider to a Federated Authentication realm. Currently only supports SAML. -Requires Django >= 4.1; +Requires Django >= 4.2; ### Files (``cdh.files``) @@ -64,14 +64,14 @@ allows arbitrary metadata to be added and most-importantly makes sysadmins happy. Soft requirement on ``cdh.core``, can work standalone if needed. -Required Django >= 4. +Required Django >= 4.2. ### Integration platform (``cdh.integration_platform``) Ready-to-use API clients for the UU's integration platform. Requires ``cdh.rest``; -Requires Django >= 3; +Requires Django >= 4.2. ### Mail (``cdh.mail``) @@ -80,7 +80,7 @@ emails from templates without having to define separate templates for each. Replaces `cdh.core.mail`. -Requires Django >= 4.2; +Requires Django >= 4.2. Soft-requires `cdh.core`, when using the mail-editor widget. ### Rest (``cdh.rest``) @@ -91,14 +91,14 @@ JWT authentication support and other helpfull snippits. Client code contains a full Django-ORM inspired REST client, for easy (de)serialization and transactions with REST APIs. -Requires Django >= 3; +Requires Django >= 4.2; ### System messages (``cdh.systemmessages``) Simple app to quickly add a 'system message' system to your app, useful for temporary announcements. -Requires Django >= 2; +Requires Django >= 4.2; ### Vue (``cdh.vue``) @@ -107,14 +107,14 @@ Requires Django >= 2; Helper app to (more) easily integrate small(-ish) Vue 2 components in your Django templates. -Requires Django >= 3; +Requires Django >= 4.2; ### Vue 3 (``cdh.vue3``) Helper app to (more) easily integrate small(-ish) Vue 3 components in your Django templates. -Requires Django >= 2; +Requires Django >= 4.2; # Included libraries These libraries have been completely integrated into this codebase diff --git a/package.json b/package.json index 40dd7ad3..1141fa9c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "django-shared-core", - "version": "3.1.0", + "version": "3.2.0", "repository": "git@github.com:DH-IT-Portal-Development/django-shared-core.git", "author": "Hum IT Portal Development & ILS Labs", "license": "Apache-2.0", diff --git a/pyproject.toml b/pyproject.toml index f5545123..3ba4967b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,7 @@ classifiers = [ "Operating System :: Linux", ] dependencies = [ - "Django >=2.0,<5.1", + "Django >=4.2,<5.1", "Deprecated", ] @@ -48,7 +48,7 @@ core = [ "djangorestframework", "django-csp", "cryptography", - "Django >=4.0,<5.1", + "Django >=4.2,<5.1", ] mail = [ "Django >=4.2,<5.1", @@ -58,25 +58,25 @@ federated-auth = [ ] files = [ "python-magic", - "Django >=4.0,<5.1", + "Django >=4.2,<5.1", ] integration_platform = [ "cdh-django-core[rest]", - "Django >=3.0,<5.1", + "Django >=4.2,<5.1", ] rest = [ "requests", "PyJWT", "djangorestframework", "django-filter", - "Django >=3.0,<5.1", + "Django >=4.2,<5.1", ] vue = [ "pyscss", "lesscpy", "closure", "vbuild", - "Django >=3.0,<5.1", + "Django >=4.2,<5.1", ] docs = [ "sphinx",