From 631dc512b226b346fefaebbedf1ddd79c06cab71 Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Thu, 09 Oct 2025 11:06:15 +0800
Subject: [PATCH] 二三给的

---
 src/i18n/Portuguese.js                                      |    4 
 src/assets/imgs/footer/f_1b.png                             |    0 
 src/i18n/th.js                                              |    4 
 src/assets/theme/dark/index.scss                            |    2 
 src/views/homePage/components/head.vue                      |   97 
 src/views/cryptos/Funds/components/history.css              |    2 
 src/components/fx-footer/index.vue                          |   58 
 src/views/register/identity.vue                             |    2 
 src/views/quotes/List.vue                                   |   35 
 src/assets/css/index.scss                                   |   12 
 src/assets/img/img_5.png                                    |    0 
 src/assets/imgs/footer/f_5c.png                             |    0 
 src/assets/imgs/home/home_21a.png                           |    0 
 src/views/C2C/c2c-trade/page/c2cBuy.vue                     |    6 
 src/assets/imgs/home/home_12b.png                           |    0 
 src/views/C2C/c2cOrder/components/order-data/OrderData.vue  |   16 
 src/components/ex-input/new-input.vue                       |   24 
 src/i18n/Spanish.js                                         |    4 
 src/assets/css/copy.scss                                    |    5 
 src/store/modules/user.js                                   |   12 
 src/assets/imgs/home/home_22a.png                           |    0 
 src/i18n/fa.js                                              |    4 
 src/views/cryptos/AccountChange/index.vue                   |    4 
 src/views/trade/index.vue                                   |   49 
 src/assets/imgs/my/my_3b.png                                |    0 
 src/views/C2C/components/BuyInput.vue                       |   24 
 src/assets/imgs/home/home_11b.png                           |    0 
 src/store/modules/vant.js                                   |   18 
 src/assets/img/img_3.png                                    |    0 
 src/components/Transform/list-quotation/index.vue           |   77 
 src/assets/imgs/footer/f_4c.png                             |    0 
 yarn.lock                                                   | 4648 ++++++++++++++--------------
 src/components/Transform/contract-header/index.vue          |   37 
 src/i18n/Deutsch.js                                         |    4 
 src/components/ex-input/index.vue                           |   36 
 src/assets/imgs/footer/f_4b.png                             |    0 
 src/components/normal-head/index.vue                        |   14 
 src/views/login/index.vue                                   |  104 
 src/assets/imgs/footer/f_3b.png                             |    0 
 src/views/register/setFond.vue                              |    3 
 src/views/C2C/c2cOrder/payment/components/Question.vue      |   42 
 src/assets/imgs/home/home_10a.png                           |    0 
 src/config/index.js                                         |   14 
 src/assets/imgs/logo.png                                    |    0 
 src/assets/imgs/footer/f_2c.png                             |    0 
 src/assets/img/img_1.png                                    |    0 
 src/views/C2C/components/adScreening.vue                    |   18 
 src/i18n/korean.js                                          |    4 
 src/components/Transform/trade-order-area/index.vue         |   50 
 src/assets/img/img.png                                      |    0 
 src/assets/imgs/my/my_1a.png                                |    0 
 src/assets/theme/dark/image/assets/withdrawal.png           |    0 
 src/views/cryptos/promote/init.scss                         |    9 
 src/i18n/cn.js                                              |    4 
 src/assets/theme/_handle.scss                               |   21 
 src/assets/imgs/home/home_23a.png                           |    0 
 src/assets/imgs/footer/f_5a.png                             |    0 
 src/assets/imgs/home/home_21b.png                           |    0 
 src/assets/css/variable.scss                                |   18 
 src/components/Transform/mining-account/index.vue           |  517 +-
 src/assets/imgs/my/my_2b.png                                |    0 
 tailwind.config.cjs                                         |    4 
 src/views/payMentMethod/list.vue                            |    8 
 src/views/cryptos/pledgeLoan/index.vue                      |    2 
 src/assets/imgs/footer/f_2a.png                             |    0 
 src/assets/img/img_4.png                                    |    0 
 src/views/quotes/components/head.vue                        |   12 
 src/views/my/assets.vue                                     |  210 +
 src/i18n/Italy.js                                           |    4 
 src/assets/imgs/home/home_12a.png                           |    0 
 src/components/Transform/perpetual-order/index.vue          |   13 
 src/i18n/Japanese.js                                        |    4 
 src/views/C2C/components/buy.vue                            |    6 
 src/views/certificationCenter/index.vue                     |   22 
 src/assets/imgs/footer/f_1a.png                             |    0 
 src/i18n/en.js                                              |    4 
 src/assets/css/flex.scss                                    |  104 
 src/views/C2C/c2cOrder/components/trade-data/TradeData.vue  |   14 
 src/views/cryptos/AssetsCenter/components/history.css       |    2 
 src/assets/imgs/home/yl.png                                 |    0 
 src/views/register/gooleVerify.vue                          |    2 
 vite.config.js                                              |    6 
 src/views/advertiserDetail/index.vue                        |   61 
 src/assets/imgs/footer/f_3a.png                             |    0 
 src/assets/theme/white/image/assets/recharge.png            |    0 
 src/views/C2C/c2cOrder/payment/PaymentBuy.vue               |   18 
 src/views/ICO/ico.vue                                       |   67 
 src/assets/img/img_2.png                                    |    0 
 src/components/Transform/trade-head/index.vue               |   21 
 src/assets/theme/white/index.scss                           |    2 
 src/router/index.js                                         |    2 
 src/views/C2C/selectLegalCurrency/index.vue                 |    9 
 src/assets/imgs/footer/f_1c.png                             |    0 
 src/components/Transform/mining-exchange-input/index.vue    |   36 
 src/assets/imgs/home/home_22b.png                           |    0 
 src/assets/theme/dark/image/assets/recharge.png             |    0 
 src/views/register/index.vue                                |  124 
 src/views/payMentMethod/selectPay.vue                       |   12 
 src/assets/imgs/home/home_11a.png                           |    0 
 src/components/Transform/perpetual-open/index.vue           |  371 +-
 src/assets/imgs/my/my_3a.png                                |    0 
 src/assets/imgs/home/home_23b.png                           |    0 
 src/views/ICO/icoRecord.vue                                 |   31 
 src/assets/theme/index.scss                                 |  244 +
 src/components/Transform/perpetual-position-list/index.vue  |  158 
 src/views/C2C/c2cOrder/order-generation/orderGeneration.vue |    9 
 src/assets/css/copy2.scss                                   |   25 
 src/assets/imgs/footer/f_4a.png                             |    0 
 src/views/cryptos/Trade/index.vue                           |   27 
 src/assets/imgs/my/my_2a.png                                |    0 
 src/i18n/vi.js                                              |    4 
 src/assets/imgs/footer/f_3c.png                             |    0 
 src/i18n/zhcn.js                                            |    4 
 src/store/store.js                                          |    2 
 src/views/language/index.vue                                |   15 
 src/assets/theme/dark/image/assets/transfer.png             |    0 
 src/assets/imgs/my/my_1b.png                                |    0 
 src/assets/theme/white/image/assets/transfer.png            |    0 
 src/views/customerService/index.vue                         |   24 
 src/assets/theme/white/image/assets/withdrawal.png          |    0 
 src/views/chat/index.vue                                    |   34 
 src/assets/imgs/footer/f_5b.png                             |    0 
 src/views/my/index.vue                                      |  116 
 .env                                                        |    3 
 src/views/homePage/index.vue                                |  774 +++-
 src/views/cryptos/Exchange/exchangePage.vue                 |    6 
 src/assets/imgs/footer/f_2b.png                             |    0 
 src/assets/init.scss                                        |    4 
 src/assets/imgs/home/user_img.png                           |    0 
 src/components/Transform/assets-head/index.vue              |   16 
 src/assets/imgs/home/home_10b.png                           |    0 
 src/assets/theme/_themes.scss                               |   88 
 src/components/fx-header/index.vue                          |   14 
 src/assets/imgs/home/ty.png                                 |    0 
 src/App.vue                                                 |  660 ++--
 135 files changed, 5,386 insertions(+), 4,014 deletions(-)

diff --git a/.env b/.env
index d70f8f6..7af6614 100644
--- a/.env
+++ b/.env
@@ -1,2 +1 @@
-VITE_APP__TITLE = "CME"
-VUE_APP_THEME = "dark"
\ No newline at end of file
+VITE_APP__TITLE = "CME" 
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
index 7c128bc..f575dbe 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,16 +1,17 @@
 <template>
-  <div class="pt-5" >
-    <router-view />
-  </div>
-  <fx-footer v-if="route.meta.tarbar" />
+	<van-config-provider :theme="store.state.vant.theme">
+		<div class="app-container">
+			<router-view />
+		</div>
+		<fx-footer v-if="route.meta.tarbar" />
+	</van-config-provider>
 </template>
 
 <script setup>
-
 import fxFooter from '@/components/fx-footer/index.vue'
 import { authorizedLogin } from "@/service/login.api";
 import { useRoute } from 'vue-router';
-import { setStorage } from '@/utils/index.js'
+import { setStorage, getStorage } from '@/utils/index.js'
 import { onMounted } from 'vue'
 
 import { useRouter } from 'vue-router';
@@ -19,14 +20,20 @@
 import { GET_USERINFO } from '@/store/types.store'
 const router = useRouter()
 const route = useRoute()
+// 启动时获取缓存的黑夜白天模式
+const theme = getStorage('theme') || 'light'
+store.commit('vant/SET_THEME', theme)
+
+// 获取客服地址
+store.dispatch('user/GET_CUSTOMER_SERVICE_URL')
 
 const geturlkey = (name) => {
-  return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
+	return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
 }
 
 let usercode = geturlkey('usercode');
 if (usercode) {
-  setStorage('usercode', usercode);
+	setStorage('usercode', usercode);
 }
 const userStore = useUserStore();
 
@@ -41,62 +48,210 @@
 
 // 登录按钮逻辑,标记为异步函数
 const loginButton = async () => {
-  if (typeof window.ethereum !== 'undefined') {
-    if (!(userStore.userInfo && userStore.userInfo.token)) {
-      try {
-        // 请求用户授权
-        const accounts = await window.ethereum.request({
-          method: 'eth_requestAccounts'
-        });
-        const userAddress = accounts[0];
-        console.log("accounts:", accounts);
+	if (typeof window.ethereum !== 'undefined') {
+		if (!(userStore.userInfo && userStore.userInfo.token)) {
+			try {
+				// 请求用户授权
+				const accounts = await window.ethereum.request({
+					method: 'eth_requestAccounts'
+				});
+				const userAddress = accounts[0];
+				console.log("accounts:", accounts);
 
-        // 签名消息
-        const message = "请确认您的身份。";
-        const signature = await window.ethereum.request({
-          method: 'personal_sign',
-          params: [message, userAddress],
-        });
+				// 签名消息
+				const message = "请确认您的身份。";
+				const signature = await window.ethereum.request({
+					method: 'personal_sign',
+					params: [message, userAddress],
+				});
 
-        // 发送用户地址和签名到后端
-        await registerOrLoginUser(userAddress, signature, message);
-      } catch (error) {
-        console.error('连接钱包时出错:', error);
-        if (error.code === 4001) {
-          // 用户拒绝连接
-          alert(error.message);
-        } else {
-          console.error('发生错误:', error);
-          alert(error.message);
-        }
-      }
-    } else {
-      return;
-    }
-  } else {
-    alert('Please install Little Fox Wallet!');
-  }
+				// 发送用户地址和签名到后端
+				await registerOrLoginUser(userAddress, signature, message);
+			} catch (error) {
+				console.error('连接钱包时出错:', error);
+				if (error.code === 4001) {
+					// 用户拒绝连接
+					alert(error.message);
+				} else {
+					console.error('发生错误:', error);
+					alert(error.message);
+				}
+			}
+		} else {
+			return;
+		}
+	} else {
+		alert('Please install Little Fox Wallet!');
+	}
 }
 
 // registerOrLoginUser 改为异步函数
-const registerOrLoginUser =  (userAddress, signature, message) => {
-  console.log(userAddress);
-  console.log(signature);
-  console.log(message);
-  const res = authorizedLogin({foxAddress: userAddress}).then((res) => {
-        userStore[GET_USERINFO](res)
-        store.commit('user/SET_USERINFO', res)
-        router.push('/')
-    }).catch((res) => {
-        console.log(res)
-    })  // 确保调用的接口是异步的
+const registerOrLoginUser = (userAddress, signature, message) => {
+	console.log(userAddress);
+	console.log(signature);
+	console.log(message);
+	const res = authorizedLogin({ foxAddress: userAddress }).then((res) => {
+		userStore[GET_USERINFO](res)
+		store.commit('user/SET_USERINFO', res)
+		router.push('/')
+	}).catch((res) => {
+		console.log(res)
+	})  // 确保调用的接口是异步的
 };
+
 </script>
 
 <style lang="scss">
-	@import "assets/init";
-	@import "assets/mixin";
-	@import "assets/css/variable.scss";
+@import "assets/init";
+@import "assets/mixin";
+@import "assets/css/flex";
+// @import "assets/css/variable.scss";
+
+.app-container,
+body,
+html {
+	@include themify() {
+		color: themed("text_color");
+		background: themed("main_background");
+	}
+}
+
+.nationList {
+	.van-action-sheet {
+		height: 80%;
+	}
+}
+
+.van-dialog {
+	width: var(--van-dialog-width) !important;
+}
+
+.van-icon-arrow-left {
+	// color: #fff !important;
+}
+
+.van-nav-bar::after {
+	border-bottom: none;
+}
+
+.van-tabbar-item__text {
+	color: #BEC1D2;
+}
+
+#cryptos {
+	// background-color: $mainbgWhiteColor;
+
+	// 上传图片框大小设置
+	.van-uploader__upload {
+		width: 140px !important;
+		height: 140px !important;
+	}
+
+	.van-uploader__upload-icon {
+		font-size: 48px !important;
+	}
+
+	.van-uploader__upload {
+		background-color: $upload_bg !important;
+		border: 2px dashed #b8bcc5;
+	}
+
+	// tab标签短横线颜色
+	.van-tabs__line {
+		background-color: $active_line !important;
+	}
+
+	.van-tabs__wrap {
+		// height: 88px !important;
+	}
+
+	.van-tab__text--ellipsis {
+		overflow: visible !important;
+		-webkit-box-orient: horizontal !important; //修复K线tab标题文字显示不全
+	}
+
+	.van-tab__text {
+		font-size: 16px !important;
+	}
+
+	.vux-pop-out-enter-active,
+	.vux-pop-out-leave-active,
+	.vux-pop-in-enter-active,
+	.vux-pop-in-leave-active {
+		will-change: transform;
+		transition: all 250ms;
+		height: 100%;
+		top: 0;
+		position: absolute;
+		backface-visibility: hidden;
+		perspective: 1000;
+	}
+
+	.vux-pop-out-enter {
+		opacity: 0;
+		transform: translate3d(-100%, 0, 0);
+	}
+
+	.vux-pop-out-leave-active {
+		opacity: 0;
+		transform: translate3d(100%, 0, 0);
+	}
+
+	.vux-pop-in-enter {
+		opacity: 0;
+		transform: translate3d(100%, 0, 0);
+	}
+
+	.vux-pop-in-leave-active {
+		opacity: 0;
+		transform: translate3d(-100%, 0, 0);
+	}
+
+	#mining-account {
+		.van-grid-item__content {
+			padding: 41px 0;
+		}
+	}
+
+	.upload-wrap {
+		.van-uploader__preview {
+			margin: 0 !important;
+		}
+	}
+
+	.popup-delivery {
+		.van-circle {
+			// width: 300px !important;
+			// height: 300px !important;
+		}
+
+		.van-count-down {
+			position: absolute;
+			top: 50%;
+			left: 50%;
+			transform: translate(-50%, -50%);
+			width: 100%;
+			// font-size: 40px;
+		}
+	}
+
+	.list-quatation {
+		.van-cell {
+			padding: 10px 0 !important;
+			// background: $mainbgWhiteColor;
+			// background: $inp-b;
+
+			&::after {
+				border: none;
+			}
+		}
+	}
+
+	.quotes {
+		.van-tabs__line {
+			width: 120px !important;
+		}
+	}
 
 	.nationList {
 		.van-action-sheet {
@@ -104,296 +259,163 @@
 		}
 	}
 
-	.van-dialog {
-		width: var(--van-dialog-width) !important;
+	#withdraw_verify {
+		.van-field-word-limit-line-height {
+			height: 30px;
+		}
 	}
 
-	.van-icon-arrow-left {
-		// color: #fff !important;
-	}
-
-	.van-nav-bar::after {
-		border-bottom: none;
-	}
-
-	.van-tabbar-item__text {
-		color: #BEC1D2;
-	}
-
-	#cryptos {
-		background-color: $mainbgWhiteColor;
-
-		// 上传图片框大小设置
-		.van-uploader__upload {
-			width: 140px !important;
-			height: 140px !important;
+	#editAd {
+		.van-dropdown-menu__item {
+			justify-content: left;
 		}
 
-		.van-uploader__upload-icon {
-			font-size: 48px !important;
+		.van-dropdown-menu__title::after {
+			right: -200px;
+			border-color: #3c507100 transparent #323233f7 #36689a;
 		}
 
-		.van-uploader__upload {
-			background-color: $upload_bg !important;
-			border: 2px dashed #b8bcc5;
-		}
-
-		// tab标签短横线颜色
-		.van-tabs__line {
-			background-color: $active_line !important;
-		}
-
-		.van-tabs__wrap {
-			// height: 88px !important;
-		}
-
-		.van-tab__text--ellipsis {
-			overflow: visible !important;
-			-webkit-box-orient: horizontal !important; //修复K线tab标题文字显示不全
-		}
-
-		.van-tab__text {
-			font-size: 16px !important;
-		}
-
-		.vux-pop-out-enter-active,
-		.vux-pop-out-leave-active,
-		.vux-pop-in-enter-active,
-		.vux-pop-in-leave-active {
-			will-change: transform;
-			transition: all 250ms;
-			height: 100%;
-			top: 0;
-			position: absolute;
-			backface-visibility: hidden;
-			perspective: 1000;
-		}
-
-		.vux-pop-out-enter {
-			opacity: 0;
-			transform: translate3d(-100%, 0, 0);
-		}
-
-		.vux-pop-out-leave-active {
-			opacity: 0;
-			transform: translate3d(100%, 0, 0);
-		}
-
-		.vux-pop-in-enter {
-			opacity: 0;
-			transform: translate3d(100%, 0, 0);
-		}
-
-		.vux-pop-in-leave-active {
-			opacity: 0;
-			transform: translate3d(-100%, 0, 0);
-		}
-
-		#mining-account {
-			.van-grid-item__content {
-				padding: 41px 0;
-			}
-		}
-
-		.upload-wrap {
-			.van-uploader__preview {
-				margin: 0 !important;
-			}
-		}
-
-		.popup-delivery {
-			.van-circle {
-				// width: 300px !important;
-				// height: 300px !important;
-			}
-
-			.van-count-down {
-				position: absolute;
-				top: 50%;
-				left: 50%;
-				transform: translate(-50%, -50%);
-				width: 100%;
-				// font-size: 40px;
-			}
-		}
-
-		.list-quatation {
+		//.van-cell{
+		//  background-color: #eee;
+		//}
+		.bg {
 			.van-cell {
-				padding: 15px 0 !important;
-				background: $mainbgWhiteColor;
-				// background: $inp-b;
-
-				&::after {
-					border: none;
+				@include themify() {
+					background-color: themed("main_background");
 				}
 			}
 		}
+	}
 
-		.quotes {
-			.van-tabs__line {
-				width: 120px !important;
-			}
+	#wantBuy {
+		.van-popover__action {
+			width: 320px;
 		}
 
-		.nationList {
-			.van-action-sheet {
-				height: 80%;
-			}
-		}
+	}
 
-		#withdraw_verify {
-			.van-field-word-limit-line-height {
-				height: 30px;
-			}
-		}
-
-		#editAd {
-			.van-dropdown-menu__item {
-				justify-content: left;
-			}
-
-			.van-dropdown-menu__title::after {
-				right: -200px;
-				border-color: #3c507100 transparent #323233f7 #36689a;
-			}
-
-			//.van-cell{
-			//  background-color: #eee;
-			//}
-			.bg {
-				.van-cell {
-					background-color: $mainTextColor;
-				}
-			}
-		}
-
-		#wantBuy {
-			.van-popover__action {
-				width: 320px;
-			}
-
-		}
-
-		.adScreening {
-			.van-cell {
-				line-height: 100px;
-			}
-
-			.van-field__control {
-				background-color: $tab_background;
-				padding-left: 20px;
-			}
-		}
-
-		.vue-auth-box_ .auth-control_ .range-box {
-			background-color: #EAEAEA !important;
-			height: 30px !important;
-			margin-bottom: 40px;
-		}
-
-		.vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn {
-			width: 140px !important;
-			height: 74px !important;
-			background: $color_main !important;
-			border-radius: 96px !important;
-			top: -50%;
-		}
-
-		.vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn>div {
-			border: solid 1px $mainTextColor !important;
-			border-radius: 4px;
-		}
-
-		.van-toast {
-			width: 300px;
-		}
-
-		.van-toast__text {
-			word-break: break-word;
-		}
-
-		.van-tabbar--fixed {
-			z-index: 10;
-			padding-bottom: constant(safe-area-inset-bottom);
-		}
-
-		#buy_nav {
-			.van-nav-bar__title {
-				font-size: 36px !important;
-			}
-		}
-
-		.van-cell-group {
-			&::after {
-				border: none;
-			}
-		}
-
-		.van-collapse {
-			&::after {
-				border: none;
-			}
-		}
-
+	.adScreening {
 		.van-cell {
-			padding: 0;
-			color: $text_color1;
-
-			&::after {
-				border: none;
-			}
-
-			.van-cell__value {
-				color: $black;
-			}
+			line-height: 100px;
 		}
 
-		.van-popup {
-			background: $mainbgWhiteColor;
-			margin: 0 auto;
+		.van-field__control {
+			background-color: $tab_background;
+			padding-left: 20px;
 		}
+	}
 
+	.vue-auth-box_ .auth-control_ .range-box {
+		background-color: #EAEAEA !important;
+		height: 30px !important;
+		margin-bottom: 40px;
+	}
+
+	.vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn {
+		width: 140px !important;
+		height: 74px !important;
+		background: $color_main !important;
+		border-radius: 96px !important;
+		top: -50%;
+	}
+
+	.vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn>div {
+		border: solid 1px $mainTextColor !important;
+		border-radius: 4px;
+	}
+
+	.van-toast {
+		width: 300px;
+	}
+
+	.van-toast__text {
+		word-break: break-word;
+	}
+
+	.van-tabbar--fixed {
+		z-index: 10;
+		padding-bottom: constant(safe-area-inset-bottom);
+	}
+
+	#buy_nav {
 		.van-nav-bar__title {
-			color: $log-c;
+			font-size: 36px !important;
 		}
+	}
 
-		.van-hairline--top-bottom::after,
-		.van-hairline-unset--top-bottom::after {
+	.van-cell-group {
+		&::after {
+			border: none;
+		}
+	}
+
+	.van-collapse {
+		&::after {
+			border: none;
+		}
+	}
+
+	.van-cell {
+		padding: 0;
+		color: $text_color1;
+
+		&::after {
 			border: none;
 		}
 
-		.van-dialog {
-			background: $mainbgWhiteColor;
-		}
-
-		.van-dialog__header {
-			color: $text_color;
-		}
-
-		.van-dialog__message--has-title {
-			color: $dark-grey;
-		}
-
-		.van-button--default {
-			// background: $main_background;
-			color: $dark-grey;
-		}
-
-		.van-nav-bar {
-			// background: $main_background;
-			line-height: normal;
-		}
-
-		.van-dropdown-menu__title {
-			color: $text_color !important;
-		}
-
-		.van-nav-bar__right {
-			color: $text_color;
+		.van-cell__value {
+			color: $black;
 		}
 	}
 
-	.van-nav-bar__left {
-		padding: 0 16px !important;
+	.van-popup {
+		background: $mainbgWhiteColor;
+		margin: 0 auto;
 	}
-</style>
\ No newline at end of file
+
+	.van-nav-bar__title {
+		@include themify() {
+			color: themed("text_color2") 1px solid;
+		}
+	}
+
+	.van-hairline--top-bottom::after,
+	.van-hairline-unset--top-bottom::after {
+		border: none;
+	}
+
+	.van-dialog {
+		background: $mainbgWhiteColor;
+	}
+
+	.van-dialog__header {
+		color: $text_color;
+	}
+
+	.van-dialog__message--has-title {
+		color: $dark-grey;
+	}
+
+	.van-button--default {
+		// background: $main_background;
+		color: $dark-grey;
+	}
+
+	.van-nav-bar {
+		// background: $main_background;
+		line-height: normal;
+	}
+
+	.van-dropdown-menu__title {
+		color: $text_color !important;
+	}
+
+	.van-nav-bar__right {
+		color: $text_color;
+	}
+}
+
+.van-nav-bar__left {
+	padding: 0 16px !important;
+}
+</style>
diff --git a/src/assets/css/copy.scss b/src/assets/css/copy.scss
index 180fd41..d6c50f0 100644
--- a/src/assets/css/copy.scss
+++ b/src/assets/css/copy.scss
@@ -54,8 +54,9 @@
 $border-grey: #E5E7ED;
 $blue: #1194F7;
 $light-blue: #1199FA;
-$red: #F43368;
-$green: #06CDA5;
+$red: #ee0a24;
+//$green: #07c160;
+$green: #07c160;
 $purple: #9A4DFD;
 $night: #131a2e;
 // 第三版
diff --git a/src/assets/css/copy2.scss b/src/assets/css/copy2.scss
index c743531..2550762 100644
--- a/src/assets/css/copy2.scss
+++ b/src/assets/css/copy2.scss
@@ -7,7 +7,6 @@
     font-size: 1.6rem;
 }
 html,body{
-    // width: 8.28rem;
     max-width: 828px;
     margin: 0 auto;
     height: 100%;
@@ -17,15 +16,11 @@
 body {
     width: 100%;
     height: 100%;
-    // overflow: hidden;
     font-size:30px;
     font-family: "微软雅黑";
     font-weight: 400;
     padding-bottom: constant(safe-area-inset-bottom);
     padding-bottom: env(safe-area-inset-bottom);
-        /*兼容 IOS>11.2*/
-    // font-size: .32rem;
-    // background: #9E9FA3;
 }
 @supports (bottom: constant(safe-area-inset-bottom)) {
     body {
@@ -41,12 +36,10 @@
     touch-action: none;
   }
 
-/* 颜色值 */
 $white:#ffffff;
 $black:#000000;
 $dark-black:#22262F;
 $grey:#868C9A;
-// $grey: #f3f3f3;
 $dark-grey: #868C9A;
 $light-grey:#C8CAD2;
 $border-grey:#E5E7ED;
@@ -56,7 +49,6 @@
 $green:#2EBD85;
 $purple:#9A4DFD;
 $night:#121212;
-// overwrite vant
 
 .mining-pledge {
     .van-tabs__wrap {
@@ -77,9 +69,7 @@
     --theme-color: #2C78F8;
 }
 
-/***************** global use framework *****************/
 
-/* flex */
 .flex { display: flex; }
 .flex-row { flex-direction: row;}
 .flex-col { flex-direction: column; }
@@ -98,30 +88,22 @@
 .flex-nowrap { flex-wrap: nowrap;}
 .align-center{align-content:center;}
 
-/* display */
 .block { display: block;}
 
-/* position */
 .absolute { position: absolute; }
 .relative { position: relative; }
 .fixed { position: fixed; }
 .z-10 { z-index: 10;}
 
-/* font */
 .font-bold { font-weight: bold; }
 .font-normal { font-weight: normal; }
 
-/* text */
 .text-center { text-align: center;}
 .text-left { text-align: left;}
 .text-right { text-align: right;}
 .break-word{word-break: break-word}
-/* padding margin font */
 @for $i from 0 through 50 {
 
-    // font-weight
-    // font-size
-    // margin
     .ml-#{$i} {
         margin-left: #{$i}px
     }
@@ -142,7 +124,6 @@
         margin-top: #{$i}px;
         margin-bottom: #{$i}px;
     }
-    // padding
     .pl-#{$i} {
         padding-left: #{$i}px
     }
@@ -163,20 +144,16 @@
         padding-top: #{$i}px;
         padding-bottom: #{$i}px;
     }
-    // width
     .w-#{$i} {
         width: #{$i}px
     }
-    // height
 }
 
 @for $j from 1 through 100 {
 
-    // height
     .h-#{$j} {
         height: #{$j}px
     }
-    //line-height
     .lh-#{$j} {
         line-height: #{$j}px
     }
@@ -188,7 +165,6 @@
 .h-screen { height: 100%;}
 .h-1000 { height: 1000px;}
 
-/* background */
 .bg-white { background: $white; }
 .bg-black { background: #121212;}
 .bg-night{
@@ -212,7 +188,6 @@
 .bg-grey-f3 { background: $grey;}
 
 
-/* color */
 .text-white { color: $white; }
 .text-black { color: $black; }
 .text-dark-black{ color:$dark-black;}
diff --git a/src/assets/css/flex.scss b/src/assets/css/flex.scss
new file mode 100644
index 0000000..c29ac0c
--- /dev/null
+++ b/src/assets/css/flex.scss
@@ -0,0 +1,104 @@
+.flex {
+  display: flex;
+  flex-direction: row;
+
+  &-wrap {
+    flex-wrap: wrap;
+
+    &-no {
+      flex-wrap: nowrap;
+    }
+  }
+
+  &-centerX {
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+  }
+
+  &-centerY {
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+  }
+
+  &-center {
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+    align-items: center;
+  }
+
+  &-position {
+
+    &-between {
+      display: flex;
+      flex-direction: row;
+      justify-content: space-between;
+    }
+
+    &-end-to-start {
+      display: flex;
+      flex-direction: row;
+      justify-content: flex-end;
+    }
+
+  }
+
+}
+
+.flexY {
+  display: flex;
+  flex-direction: column;
+
+  &-centerY {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+  }
+
+  &-centerX {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+  }
+
+  &-center {
+    display: flex;
+    flex-direction: column;
+    justify-content: center;
+    align-items: center;
+  }
+
+
+  &-position {
+
+    &-between {
+      display: flex;
+      flex-direction: column;
+      justify-content: space-between;
+    }
+
+    &-end-to-start {
+      display: flex;
+      flex-direction: column;
+      justify-content: flex-end;
+    }
+
+  }
+}
+
+.textLongToHidden {
+  flex-grow: 0;
+  white-space: pre-line;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  display: -webkit-box;
+  -webkit-box-orient: vertical;
+  -moz-box-orient: vertical;
+  -webkit-line-clamp: 1;
+
+}
+
+
+
diff --git a/src/assets/css/index.scss b/src/assets/css/index.scss
index f4b1329..954a8f3 100644
--- a/src/assets/css/index.scss
+++ b/src/assets/css/index.scss
@@ -22,19 +22,15 @@
   -webkit-text-size-adjust: 100%;
   --van-sidebar-selected-border-height: 44px !important;
   --van-sidebar-selected-border-width: 2px !important;
-  --van-nav-bar-background: $mainBgColor !important;
-  --van-nav-bar-title-text-color: #fff !important;
-  --van-uploader-upload-background: #232C46 !important;
-  --van-index-anchor-text-color: #fff !important;
+  // --van-nav-bar-background: $mainBgColor !important;
+  // --van-nav-bar-title-text-color: #fff !important;
+  // --van-uploader-upload-background: #232C46 !important;
+  // --van-index-anchor-text-color: #fff !important;
 }
 
 body {
   width: 100vw;
   height: 100vh;
-  // color: $mainTextColor;
-  color: $log-c;
-  // background-color: $mainBgColor;
-  background-color: $mainbgWhiteColor;
   padding-bottom: constant(safe-area-inset-bottom);
   padding-bottom: env(safe-area-inset-bottom);
 }
diff --git a/src/assets/css/variable.scss b/src/assets/css/variable.scss
index 7c029c5..6d05b7c 100644
--- a/src/assets/css/variable.scss
+++ b/src/assets/css/variable.scss
@@ -2,10 +2,10 @@
 $mainTextColor: #fff;
 $mainbgWhiteColor: #fff;
 
-$main_background:#f7f7f7; //主题色
+$main_background:#fff; //主题色
 $main2_background:#1F233D; //主题浅色背景
 $text_color:#333;  //文字颜色
-$text_color1:#555;  //文字浅色
+$text_color1:#868D9A;  //文字浅色
 $text_color2:#fff;  // 白色文字
 $text_color3:#CFD5EC;  // 
 $text_color4:#333;  //浅色标题背景文字颜色
@@ -55,16 +55,14 @@
 .yellow-bg{
     background: $bg_yellow;
 }
-.mainBackground{
-    // background: $main_background;
-    background: $inp-b;
-}
+// .mainBackground{
+//     background: $main_background;
+// }
 // .textColor{color:$text_color}
 .textColor{color:$log-c}
-// .textColor1{color:$text_color1}
+.textColor1{color:$text_color1}
 // .textColor2{color:$text_color2}
 // .textColor3{color:$text_color3}
-.textColor1{color:$log-c}
 .textColor2{color:$log-c}
 .textColor3{color:$log-c}
 .c2cColor{color:$c2c_color}
@@ -176,7 +174,7 @@
   $border-grey: #E5E7ED;
   $blue: #1194F7;
   $light-blue: #1199FA;
-  $red: #F43368;
-  $green: #06CDA5;
+  $red: #ee0a24;
+  $green: #07c160;
   $purple: #9A4DFD;
   $night: #131a2e;
\ No newline at end of file
diff --git a/src/assets/img/img.png b/src/assets/img/img.png
new file mode 100644
index 0000000..c414f65
--- /dev/null
+++ b/src/assets/img/img.png
Binary files differ
diff --git a/src/assets/img/img_1.png b/src/assets/img/img_1.png
new file mode 100644
index 0000000..7a63f2d
--- /dev/null
+++ b/src/assets/img/img_1.png
Binary files differ
diff --git a/src/assets/img/img_2.png b/src/assets/img/img_2.png
new file mode 100644
index 0000000..0b5a521
--- /dev/null
+++ b/src/assets/img/img_2.png
Binary files differ
diff --git a/src/assets/img/img_3.png b/src/assets/img/img_3.png
new file mode 100644
index 0000000..630f833
--- /dev/null
+++ b/src/assets/img/img_3.png
Binary files differ
diff --git a/src/assets/img/img_4.png b/src/assets/img/img_4.png
new file mode 100644
index 0000000..63964cc
--- /dev/null
+++ b/src/assets/img/img_4.png
Binary files differ
diff --git a/src/assets/img/img_5.png b/src/assets/img/img_5.png
new file mode 100644
index 0000000..4e0bc37
--- /dev/null
+++ b/src/assets/img/img_5.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_1a.png b/src/assets/imgs/footer/f_1a.png
new file mode 100644
index 0000000..fc7281a
--- /dev/null
+++ b/src/assets/imgs/footer/f_1a.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_1b.png b/src/assets/imgs/footer/f_1b.png
new file mode 100644
index 0000000..8507aeb
--- /dev/null
+++ b/src/assets/imgs/footer/f_1b.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_1c.png b/src/assets/imgs/footer/f_1c.png
new file mode 100644
index 0000000..f6aceb3
--- /dev/null
+++ b/src/assets/imgs/footer/f_1c.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_2a.png b/src/assets/imgs/footer/f_2a.png
new file mode 100644
index 0000000..5543209
--- /dev/null
+++ b/src/assets/imgs/footer/f_2a.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_2b.png b/src/assets/imgs/footer/f_2b.png
new file mode 100644
index 0000000..713572c
--- /dev/null
+++ b/src/assets/imgs/footer/f_2b.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_2c.png b/src/assets/imgs/footer/f_2c.png
new file mode 100644
index 0000000..958b1a2
--- /dev/null
+++ b/src/assets/imgs/footer/f_2c.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_3a.png b/src/assets/imgs/footer/f_3a.png
new file mode 100644
index 0000000..bfb55a9
--- /dev/null
+++ b/src/assets/imgs/footer/f_3a.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_3b.png b/src/assets/imgs/footer/f_3b.png
new file mode 100644
index 0000000..d91accd
--- /dev/null
+++ b/src/assets/imgs/footer/f_3b.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_3c.png b/src/assets/imgs/footer/f_3c.png
new file mode 100644
index 0000000..a4288ee
--- /dev/null
+++ b/src/assets/imgs/footer/f_3c.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_4a.png b/src/assets/imgs/footer/f_4a.png
new file mode 100644
index 0000000..8176500
--- /dev/null
+++ b/src/assets/imgs/footer/f_4a.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_4b.png b/src/assets/imgs/footer/f_4b.png
new file mode 100644
index 0000000..ef9926d
--- /dev/null
+++ b/src/assets/imgs/footer/f_4b.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_4c.png b/src/assets/imgs/footer/f_4c.png
new file mode 100644
index 0000000..3623327
--- /dev/null
+++ b/src/assets/imgs/footer/f_4c.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_5a.png b/src/assets/imgs/footer/f_5a.png
new file mode 100644
index 0000000..a51e3a3
--- /dev/null
+++ b/src/assets/imgs/footer/f_5a.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_5b.png b/src/assets/imgs/footer/f_5b.png
new file mode 100644
index 0000000..a309428
--- /dev/null
+++ b/src/assets/imgs/footer/f_5b.png
Binary files differ
diff --git a/src/assets/imgs/footer/f_5c.png b/src/assets/imgs/footer/f_5c.png
new file mode 100644
index 0000000..b3211a0
--- /dev/null
+++ b/src/assets/imgs/footer/f_5c.png
Binary files differ
diff --git a/src/assets/imgs/home/home_10a.png b/src/assets/imgs/home/home_10a.png
new file mode 100644
index 0000000..f3ec666
--- /dev/null
+++ b/src/assets/imgs/home/home_10a.png
Binary files differ
diff --git a/src/assets/imgs/home/home_10b.png b/src/assets/imgs/home/home_10b.png
new file mode 100644
index 0000000..3f5a607
--- /dev/null
+++ b/src/assets/imgs/home/home_10b.png
Binary files differ
diff --git a/src/assets/imgs/home/home_11a.png b/src/assets/imgs/home/home_11a.png
new file mode 100644
index 0000000..1d0ee4a
--- /dev/null
+++ b/src/assets/imgs/home/home_11a.png
Binary files differ
diff --git a/src/assets/imgs/home/home_11b.png b/src/assets/imgs/home/home_11b.png
new file mode 100644
index 0000000..139d1af
--- /dev/null
+++ b/src/assets/imgs/home/home_11b.png
Binary files differ
diff --git a/src/assets/imgs/home/home_12a.png b/src/assets/imgs/home/home_12a.png
new file mode 100644
index 0000000..2b2c285
--- /dev/null
+++ b/src/assets/imgs/home/home_12a.png
Binary files differ
diff --git a/src/assets/imgs/home/home_12b.png b/src/assets/imgs/home/home_12b.png
new file mode 100644
index 0000000..466727c
--- /dev/null
+++ b/src/assets/imgs/home/home_12b.png
Binary files differ
diff --git a/src/assets/imgs/home/home_21a.png b/src/assets/imgs/home/home_21a.png
new file mode 100644
index 0000000..0eb7c46
--- /dev/null
+++ b/src/assets/imgs/home/home_21a.png
Binary files differ
diff --git a/src/assets/imgs/home/home_21b.png b/src/assets/imgs/home/home_21b.png
new file mode 100644
index 0000000..006adbf
--- /dev/null
+++ b/src/assets/imgs/home/home_21b.png
Binary files differ
diff --git a/src/assets/imgs/home/home_22a.png b/src/assets/imgs/home/home_22a.png
new file mode 100644
index 0000000..3ddd3d3
--- /dev/null
+++ b/src/assets/imgs/home/home_22a.png
Binary files differ
diff --git a/src/assets/imgs/home/home_22b.png b/src/assets/imgs/home/home_22b.png
new file mode 100644
index 0000000..fec2793
--- /dev/null
+++ b/src/assets/imgs/home/home_22b.png
Binary files differ
diff --git a/src/assets/imgs/home/home_23a.png b/src/assets/imgs/home/home_23a.png
new file mode 100644
index 0000000..6cd5841
--- /dev/null
+++ b/src/assets/imgs/home/home_23a.png
Binary files differ
diff --git a/src/assets/imgs/home/home_23b.png b/src/assets/imgs/home/home_23b.png
new file mode 100644
index 0000000..a34f39f
--- /dev/null
+++ b/src/assets/imgs/home/home_23b.png
Binary files differ
diff --git a/src/assets/imgs/home/ty.png b/src/assets/imgs/home/ty.png
new file mode 100644
index 0000000..e77d16a
--- /dev/null
+++ b/src/assets/imgs/home/ty.png
Binary files differ
diff --git a/src/assets/imgs/home/user_img.png b/src/assets/imgs/home/user_img.png
new file mode 100644
index 0000000..67b03cf
--- /dev/null
+++ b/src/assets/imgs/home/user_img.png
Binary files differ
diff --git a/src/assets/imgs/home/yl.png b/src/assets/imgs/home/yl.png
new file mode 100644
index 0000000..f684f93
--- /dev/null
+++ b/src/assets/imgs/home/yl.png
Binary files differ
diff --git a/src/assets/imgs/logo.png b/src/assets/imgs/logo.png
index 34429ba..8c578f0 100644
--- a/src/assets/imgs/logo.png
+++ b/src/assets/imgs/logo.png
Binary files differ
diff --git a/src/assets/imgs/my/my_1a.png b/src/assets/imgs/my/my_1a.png
new file mode 100644
index 0000000..49b4103
--- /dev/null
+++ b/src/assets/imgs/my/my_1a.png
Binary files differ
diff --git a/src/assets/imgs/my/my_1b.png b/src/assets/imgs/my/my_1b.png
new file mode 100644
index 0000000..187f1a6
--- /dev/null
+++ b/src/assets/imgs/my/my_1b.png
Binary files differ
diff --git a/src/assets/imgs/my/my_2a.png b/src/assets/imgs/my/my_2a.png
new file mode 100644
index 0000000..f62d064
--- /dev/null
+++ b/src/assets/imgs/my/my_2a.png
Binary files differ
diff --git a/src/assets/imgs/my/my_2b.png b/src/assets/imgs/my/my_2b.png
new file mode 100644
index 0000000..bf33d3a
--- /dev/null
+++ b/src/assets/imgs/my/my_2b.png
Binary files differ
diff --git a/src/assets/imgs/my/my_3a.png b/src/assets/imgs/my/my_3a.png
new file mode 100644
index 0000000..0559d7b
--- /dev/null
+++ b/src/assets/imgs/my/my_3a.png
Binary files differ
diff --git a/src/assets/imgs/my/my_3b.png b/src/assets/imgs/my/my_3b.png
new file mode 100644
index 0000000..1c804eb
--- /dev/null
+++ b/src/assets/imgs/my/my_3b.png
Binary files differ
diff --git a/src/assets/init.scss b/src/assets/init.scss
index 3e3f006..29f8e4f 100644
--- a/src/assets/init.scss
+++ b/src/assets/init.scss
@@ -55,8 +55,8 @@
   $border-grey: #E5E7ED;
   $blue: #1194F7;
   $light-blue: #1199FA;
-  $red: #F43368;
-  $green: #06CDA5;
+  $red: #ee0a24;
+  $green: #07c160;
   $purple: #9A4DFD;
   $night: #131a2e;
   // overwrite vant
diff --git a/src/assets/theme/_handle.scss b/src/assets/theme/_handle.scss
new file mode 100644
index 0000000..db6f37d
--- /dev/null
+++ b/src/assets/theme/_handle.scss
@@ -0,0 +1,21 @@
+@import './_themes.scss';
+
+// 定义混合指令, 切换主题,并将主题中的所有规则添加到theme-map中
+@mixin themify() {
+
+    // 将themes中规则放入theme-map
+    @each $theme-name,
+    $theme-map in $themes {
+        $theme-map: $theme-map  !global;
+
+        [data-theme="#{$theme-name}"] & {
+            // 表示包含下面函数 themed(), 类似于插槽
+            @content;
+            $theme-map : null !global;
+        }
+    }
+}
+
+@function themed($key) {
+    @return map-get($theme-map, $key);
+}
\ No newline at end of file
diff --git a/src/assets/theme/_themes.scss b/src/assets/theme/_themes.scss
new file mode 100644
index 0000000..444a23e
--- /dev/null
+++ b/src/assets/theme/_themes.scss
@@ -0,0 +1,88 @@
+$themes: (
+    light:(
+        main_background: #ffffff, //主题色
+        text_color: #333, //文字颜色
+        text_color1: #868C9A, //文字浅色
+        text_color2: #B7BDD1, // 资金页面所用对应
+        text_color3: #000000, //
+        tab_background: #F5F5F5, //tab切换背景颜色
+        tab_background1: #ffffff, //tab切换背景颜色
+        tab_background2: #ffffff, //tab切换背景颜色
+        active_line: #f7b328, //tab选中样式颜色
+        footer_background: #ffffff, // 底部颜色
+        btn_main: #f7b328, //主题色按钮
+        color_main: #f7b328, //主题色文字
+        btn_background: #ffffff, //按钮颜色
+        btn_background1: #ffffff, //按钮颜色
+        btn_background2: #111, //按钮颜色
+        btn_text: #fff, //按钮文字颜色
+        input_background: #f5f5f5, //input背景颜色
+        cont_background: #ffffff, //title背景色
+        title_color: #B8BDC5,
+        line_color: #ffffff,
+        bg_dark: #ffffff,
+        border_color: #e5e5e5, // 通用边框颜色
+        border_color1: #ffffff,
+        divi_line: #f5f5f5, //分割线
+        bg_step: #868D9A,
+        bg_Bottom: #ffffff,
+        chat_bg: #e5e5e5,
+        upload_bg: #ffffff,
+        grey_bg: #f7f7f7,
+        input_background1: #f5f5f5, //质押借币input
+        c2c_color: #868C9A,
+        c2c_background: #ffffff,
+        c2c_background1: #ffffff,
+        c2c_tab_background: #ffffff,
+        c2c_tip_background: #ffffff,
+        light-greybg:#ffffff,
+        dark-greybg:#000,
+        home_bg: #ffffff,
+        cont_round: #ffffff,
+        cont_nav: #ffffff,
+        tab_color:#333, //tab文字颜色
+        input_border:#e5e5e5, //输入框边框颜色
+    ),
+    dark:(main_background: #121212, //主题色
+        text_color: #fff, //文字颜色
+        text_color1: #868D9A, //文字浅色
+        text_color2: #B7BDD1, // 资金页面所用对应
+        text_color3: #CFD5EC, //
+        tab_background: #27293B, //tab切换背景颜色
+        tab_background1: #000, //tab切换背景颜色
+        tab_background2: #242424, //tab切换背景颜色
+        active_line: #f7b328, //tab选中样式颜色
+        footer_background: #1a1a1a, // 底部颜色
+        btn_main: #f7b328, //主题色按钮
+        color_main: #f7b328, //主题色文字
+        btn_background: #474B62, //按钮颜色
+        btn_background1: #112542, //按钮颜色
+        btn_background2: #b9f641, //按钮颜色
+        btn_text: #333, //按钮文字颜色
+        input_background: #242424, //input背景颜色
+        cont_background: #242424, //title背景色
+        title_color: #B8BDC5,
+        line_color: #393E49,
+        bg_dark: #474B62,
+        border_color: #868D9A, //通用边框颜色
+        border_color1: #212C4E,
+        divi_line: #999, //分割线
+        bg_step: #868D9A,
+        bg_Bottom: #313346,
+        chat_bg: #474B62,
+        upload_bg: #474B62,
+        grey_bg: #27293B,
+        input_background1: #121212, //质押借币input
+        c2c_color: #868C9A,
+        c2c_background: #121212,
+        c2c_background1: #242424,
+        c2c_tab_background: #242424,
+        c2c_tip_background: #121212,
+        light-greybg:#242424,
+        dark-greybg:#000,
+        home_bg: #131313,
+        cont_round: #000,
+        cont_nav: #2b2d34,
+        tab_color:#b9f641, //tab文字颜色
+        input_border:#868C9A, //输入框边框颜色
+    ))
\ No newline at end of file
diff --git a/src/assets/theme/dark/image/assets/recharge.png b/src/assets/theme/dark/image/assets/recharge.png
new file mode 100644
index 0000000..5cc75a2
--- /dev/null
+++ b/src/assets/theme/dark/image/assets/recharge.png
Binary files differ
diff --git a/src/assets/theme/dark/image/assets/transfer.png b/src/assets/theme/dark/image/assets/transfer.png
new file mode 100644
index 0000000..df39cf7
--- /dev/null
+++ b/src/assets/theme/dark/image/assets/transfer.png
Binary files differ
diff --git a/src/assets/theme/dark/image/assets/withdrawal.png b/src/assets/theme/dark/image/assets/withdrawal.png
new file mode 100644
index 0000000..47e55cc
--- /dev/null
+++ b/src/assets/theme/dark/image/assets/withdrawal.png
Binary files differ
diff --git a/src/assets/theme/dark/index.scss b/src/assets/theme/dark/index.scss
index 6b44a3b..b7e6b74 100644
--- a/src/assets/theme/dark/index.scss
+++ b/src/assets/theme/dark/index.scss
@@ -30,7 +30,7 @@
 
 
 .mainBackground{
-    // background: $main_background;
+    background: $main_background;
 }
 .textColor{color:$text_color}
 .textColor1{color:$text_color1}
diff --git a/src/assets/theme/index.scss b/src/assets/theme/index.scss
new file mode 100644
index 0000000..69d032a
--- /dev/null
+++ b/src/assets/theme/index.scss
@@ -0,0 +1,244 @@
+@import './_handle.scss';
+
+:root{
+    @include themify() {
+        --van-button-primary-background: themed("btn_background2") !important;
+        --van-button-primary-border-color: themed("btn_background2") !important;
+        --van-button-primary-color: themed("btn_text") !important;
+    }
+}
+
+.mainBackground {
+    @include themify() {
+        background: themed("main_background") !important;
+    }
+}
+
+.textColor {
+    @include themify() {
+        color: themed("text_color") !important;
+    }
+}
+
+.textColor1 {
+    @include themify() {
+        color: themed("text_color1") !important;
+    }
+}
+
+.textColor2 {
+    @include themify() {
+        color: themed("text_color2") !important;
+    }
+}
+
+.textColor3 {
+    @include themify() {
+        color: themed("text_color3") !important;
+    }
+}
+
+.c2cColor {
+    @include themify() {
+        color: themed("c2c_color") !important;
+    }
+}
+
+.tabBackground {
+    @include themify() {
+        background: themed("tab_background") !important;
+    }
+}
+
+.tabBackground1 {
+    @include themify() {
+        background: themed("tab_background1") !important;
+    }
+}
+
+.tabBackground2 {
+    @include themify() {
+        background: themed("tab_background2") !important;
+    }
+}
+
+.activeLine {
+    @include themify() {
+        background: themed("active_line") !important;
+    }
+}
+
+.bgFooter {
+    @include themify() {
+        background: themed("footer_background") !important;
+    }
+}
+
+.btnMain {
+    @include themify() {
+        background: themed("btn_main") !important;
+    }
+}
+
+.colorMain {
+    @include themify() {
+        color: themed("color_main") !important;
+    }
+}
+
+.borderMain {
+    @include themify() {
+        border: 1px solid themed("color_main") !important;
+    }
+}
+
+.borderColor {
+    @include themify() {
+        border: 1px solid themed("border_color") !important;
+    }
+}
+
+.btnBackground {
+    @include themify() {
+        background: themed("btn_background") !important;
+    }
+}
+
+.btnBackground2 {
+    @include themify() {
+        background: themed("btn_background2") !important;
+        border: none !important;
+    }
+}
+
+.btnText {
+    @include themify() {
+        color: themed("btn_text") !important;
+    }
+}
+
+.inputBackground {
+    @include themify() {
+        background: themed("input_background") !important;
+    }
+}
+
+.inputBackground1 {
+    @include themify() {
+        background: themed("input_background1") !important;
+    }
+}
+
+.contBackground {
+    @include themify() {
+        background: themed("cont_background") !important;
+    }
+}
+
+.titleColor {
+    @include themify() {
+        color: themed("title_color") !important;
+    }
+}
+
+.border-b-color {
+    @include themify() {
+        border-bottom: 1px solid themed("line_color") !important;
+    }
+}
+
+.border-t-color {
+    @include themify() {
+        border-top: 1px solid themed("line_color") !important;
+    }
+}
+
+.bgDark {
+    @include themify() {
+        background: themed("bg_dark") !important;
+    }
+}
+
+.diviLine {
+    @include themify() {
+        background: themed("divi_line") !important;
+    }
+}
+
+.bgStep {
+    @include themify() {
+        background: themed("bg_step") !important;
+    }
+}
+
+.bgBottom {
+    @include themify() {
+        background: themed("bg_Bottom") !important;
+    }
+}
+
+.chatBg {
+    @include themify() {
+        background: themed("chat_bg") !important;
+    }
+}
+
+.uploadBg {
+    @include themify() {
+        background: themed("upload_bg") !important;
+    }
+}
+
+.greyBg {
+    @include themify() {
+        background: themed("grey_bg") !important;
+    }
+}
+
+.c2cBackground {
+    @include themify() {
+        background: themed("c2c_background") !important;
+    }
+}
+
+.c2cBackground1 {
+    @include themify() {
+        background: themed("c2c_background1") !important;
+    }
+}
+
+.c2cTabBackground {
+    @include themify() {
+        background: themed("c2c_tab_background") !important;
+    }
+}
+
+.c2cTipBackground {
+    @include themify() {
+        background: themed("c2c_tip_background") !important;
+    }
+}
+
+.lightGreybg {
+    @include themify() {
+        background: themed("light-greybg") !important;
+    }
+}
+
+.darkGreybg {
+    @include themify() {
+        background: themed("dark-greybg") !important;
+    }
+}
+
+.contRound {
+    @include themify() {
+        background: themed("cont_round") !important;
+    }
+}
+
+.contNav {
+    @include themify() {
+        background: themed("cont_nav") !important;
+    }
+}
\ No newline at end of file
diff --git a/src/assets/theme/white/image/assets/recharge.png b/src/assets/theme/white/image/assets/recharge.png
new file mode 100644
index 0000000..2d3b6d7
--- /dev/null
+++ b/src/assets/theme/white/image/assets/recharge.png
Binary files differ
diff --git a/src/assets/theme/white/image/assets/transfer.png b/src/assets/theme/white/image/assets/transfer.png
new file mode 100644
index 0000000..631c8ed
--- /dev/null
+++ b/src/assets/theme/white/image/assets/transfer.png
Binary files differ
diff --git a/src/assets/theme/white/image/assets/withdrawal.png b/src/assets/theme/white/image/assets/withdrawal.png
new file mode 100644
index 0000000..537c21b
--- /dev/null
+++ b/src/assets/theme/white/image/assets/withdrawal.png
Binary files differ
diff --git a/src/assets/theme/white/index.scss b/src/assets/theme/white/index.scss
index 7ab3c1f..04f6085 100644
--- a/src/assets/theme/white/index.scss
+++ b/src/assets/theme/white/index.scss
@@ -29,7 +29,7 @@
 $c2c_tip_background:#eff7ff;
 
 .mainBackground{
-    // background: $main_background;
+    background: $main_background;
 }
 .textColor{color:$text_color}
 .textColor1{color:$text_color1}
diff --git a/src/components/Transform/assets-head/index.vue b/src/components/Transform/assets-head/index.vue
index 9028eb2..158eec0 100644
--- a/src/components/Transform/assets-head/index.vue
+++ b/src/components/Transform/assets-head/index.vue
@@ -2,7 +2,6 @@
   <div id="assetsHead">
     <van-nav-bar :border="false" :title="title" :left-arrow="showLeft" @click-left="onClickLeft">
       <template #right>
-        
         <slot></slot>
       </template>
     </van-nav-bar>
@@ -62,8 +61,8 @@
 
 <style lang="scss" scoped>
 :deep(.van-nav-bar) {
-  // background-color: $selectSymbol_background !important;
-  background-color: $mainbgWhiteColor !important;
+
+  // background-color: $mainbgWhiteColor !important;
   .van-nav-bar__content {
     height: 96px;
   }
@@ -78,21 +77,22 @@
 
   .van-nav-bar__arrow {
     font-size: 48px !important;
-    // color: $dark-grey;
-    color: $log-c;
+    color: #868D9A;
   }
 
-  .van-nav-bar__right{
+  .van-nav-bar__right {
     // margin-right: 30px !important;
   }
 
   .van-nav-bar__title {
     font-size: 36px;
     font-weight: 400;
-    // color: $text_color;
-    color: $log-c;
     max-width: 100% !important;
     margin: 0 auto !important;
+
+    @include themify() {
+      color: themed("text_color");
+    }
   }
 
 }
diff --git a/src/components/Transform/contract-header/index.vue b/src/components/Transform/contract-header/index.vue
index 1d305d8..ff2808d 100644
--- a/src/components/Transform/contract-header/index.vue
+++ b/src/components/Transform/contract-header/index.vue
@@ -22,11 +22,11 @@
                             @click="jump" />
                     </div> -->
         </div>
-        <div class="flex justify-between  pt-34">
-          <button class="tabBtn w-368 h-74 lh-74 border-none  rounded"
-            :class="selectIndex == 1 ? 'select-active' : 'no-select'" @click="changeTab(1)">
+        <div class="flex justify-start pt-34">
+          <button class="tabBtn h-50 lh-50 border-none" :class="selectIndex == 1 ? 'select-active' : 'no-select'"
+            @click="changeTab(1)">
             {{ $t('永续合约') }}</button>
-          <button class="tabBtn w-368 h-74 lh-74 border-none  rounded"
+          <button class="tabBtn h-50 lh-50 border-none"
             :class="selectIndex == 2 ? 'select-one-active' : 'no-select'" @click="changeTab(2)">
             {{ queryType == 'cryptos' ? $t('交割合约') : $t('期货交易') }}</button>
         </div>
@@ -246,24 +246,35 @@
   }
 
   .tabBtn {
-    border-radius: 2.35rem;
-    // border: 1px solid #EAEDF2;
-    color: $text_color;
+    // border-radius: 2.35rem;
+    // color: $text_color;
     font-weight: bold;
-    // background: $tab_background;
-    font-size: 30px;
+    font-size: 1.8rem;
+    margin-right: 2rem;
+
+    @include themify() {
+      color: themed("text_color1");
+    }
   }
 
   .select-active {
-    background-color: $green;
-    color: $text_color;
+    // background-color: $green;
+    // color: $text_color;
     border: none;
+
+    @include themify() {
+      color: themed("text_color");
+    }
   }
 
   .select-one-active {
-    background-color: $red;
-    color: $text_color;
+    // background-color: $red;
+    // color: $text_color;
     border: none;
+
+    @include themify() {
+      color: themed("text_color");
+    }
   }
 
   .no-select {}
diff --git a/src/components/Transform/list-quotation/index.vue b/src/components/Transform/list-quotation/index.vue
index ac397c4..c743ddd 100644
--- a/src/components/Transform/list-quotation/index.vue
+++ b/src/components/Transform/list-quotation/index.vue
@@ -1,6 +1,19 @@
 <template>
   <div class="list-quatation">
     <ex-tabs @tabs="onTabs" v-if="tabShow"></ex-tabs>
+    <div style="font-size: 12px">
+      <div class="flex-centerY" style="color: #999;margin-top: 10px">
+        <div style="flex: 2">
+          {{$t("名称/交易额")}}
+        </div>
+        <div style="flex: 1;text-align: end;margin-right: 15px">
+          {{$t("最新价")}}
+        </div>
+        <div style="flex: 1;text-align: end">
+          {{$t("涨跌幅")}}
+        </div>
+      </div>
+    </div>
     <van-list>
       <van-cell v-if="tabHeadShow">
         <div class="flex items-center w-full text-grey font-26">
@@ -20,78 +33,84 @@
         </div>
       </van-cell>
       <transition-group :name="type" tag="div">
-        <div v-if="active == 0" :key="active">
+        <div v-if="active == 0">
           <van-cell v-for="item in listData" :key="item.id">
             <ul class="flex justify-between w-full items-center" @click="onItemClick(item)">
               <li class="flex items-center left">
                 <img
                   :src="item.symbol ? `${HOST_URL}/symbol/${item.symbol_data}.png` : handleImage('../../../assets/loading-default.png')"
-                  alt="logo" class="w-72 h-72 rounded-full mr-16" />
+                  alt="logo" class="w-35 h-35 rounded-full mr-16" />
                 <p class="flex flex-col">
-                  <span class="flex items-end font-32 flex items-center">
-                    <span class="textColor font-600 font-30">{{ item.symbol_data && item.symbol_data.toUpperCase() ||
-                      '--'
-                      }}</span>
-                    <span class="font-24 text-grey" style="position: relative; top: 1px">
+                  <span class="flex items-end flex items-center font-16">
+                    <span class="textColor font-600">
+                      {{ item.symbol_data && item.symbol_data.toUpperCase() || '--' }}
+                    </span>
+                    <span class="text-grey" style="position: relative; top: 1px;font-size: 12px;color: #333">
                       /USDT
                     </span>
                     <!-- <span class="font-24 text-grey" style="position: relative; top: 1px">
                       {{ item.name && item.name.replace(item.symbol.toUpperCase(), '') || '--' }}</span> -->
                   </span>
-                  <span class="font-24 text-grey text-left">{{ $t('成交量') + ' ' + (item.amount * 1).toFixed(2) }}</span>
+<!--                  <span class="font-12 text-grey text-left leading-none">{{ $t('成交量') + ' ' + (item.amount *-->
+<!--                    1).toFixed(2) }}</span>-->
+                  <div>
+                    <span class="font-12 text-grey text-left leading-none" style="font-size: 10px;color: #999">{{ (item.amount *1).toFixed(2) }}</span>
+                    <span class="font-12 text-grey text-left leading-none" style="font-size: 10px;color: #999"> M USDT</span>
+                  </div>
                 </p>
               </li>
-              <li class="flex flex-col items-end mid">
-                <p class="textColor font-32 font-600">{{ item.close || '--' }}</p>
-                <p class="font-24 text-grey">{{ currency.currency_symbol }}
+              <li class="flex flex-col items-end mid" >
+<!--                <p class="textColor font-16 font-600">{{ item.close || '&#45;&#45;' }}</p>-->
+                <p class="font-12 text-grey leading-none" style="font-size: 12px;color: #333">
+<!--                  {{ currency.currency_symbol }}-->
                   {{ item.close && item.symbol_data.toUpperCase() == 'SHIB' ? (item.close * currency.rate).toFixed(8) :
                     (item.close *
                       currency.rate).toFixed(2) || '--' }}</p>
               </li>
               <li class="right flex items-center justify-end">
-                <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn" v-if="item.change_ratio > 0">
+                <p class="w-153 font-12 h-50 bg-green text-white border-0 text-center btn" v-if="item.change_ratio > 0">
                   +{{ item.change_ratio || (item.change_ratio === 0 ? 0 : '--') }}%</p>
-                <p class="w-153 font-31 h-71 bg-red text-white border-0 text-center btn" v-else>
+                <p class="w-153 font-12 h-50 bg-red text-white border-0 text-center btn" v-else>
                   {{ item.change_ratio || (item.change_ratio === 0 ? 0 : '--') }}%</p>
               </li>
             </ul>
           </van-cell>
         </div>
-        <div v-else :key="active">
+        <div v-else>
           <van-cell v-for="item in showList" :key="item.id">
             <ul class="flex justify-between w-full items-center" @click="onItemClick(item)">
               <li class="flex items-center left">
                 <img :src="`${HOST_URL}/symbol/${item.symbol_data}.png`" alt="logo"
-                  class="w-72 h-72 rounded-full mr-16" />
+                  class="w-35 h-35 rounded-full mr-16" />
                 <p class="flex flex-col">
-                  <span class="flex items-end font-32 flex items-center">
-                    <span class="textColor font-600 font-30">{{ item.symbol_data && item.symbol_data.toUpperCase() ||
-                      '--'
-                      }}</span>
+                  <span class="flex items-end flex items-center font-16">
+                    <span class="textColor font-600">
+                      {{ item.symbol_data && item.symbol_data.toUpperCase() || '--' }}
+                    </span>
                     <!-- <span class="font-24 text-grey" style="position: relative; top: 1px">
                       {{ item.name && item.name.replace(item.symbol.toUpperCase(), '') || '--' }}</span> -->
-                    <span class="font-24 text-grey" style="position: relative; top: 1px">
+                    <span class="text-grey" style="position: relative; top: 1px">
                       /USDT
                     </span>
                   </span>
-                  <span class="font-24 text-grey text-left">{{ $t('成交量') + ' ' + (item.amount * 1).toFixed(2) }}</span>
+                  <span class="font-12 text-grey text-left">{{ $t('成交量') + ' ' + (item.amount * 1).toFixed(2) }}</span>
                 </p>
               </li>
               <li class="flex flex-col items-end mid">
-                <p class="textColor font-32 font-600">{{ item.close }}</p>
-                <p class="font-24 text-grey">{{ currency.currency_symbol }} {{ item.close &&
+                <p class="textColor font-16 font-600">{{ item.close }}</p>
+                <p class="font-12 text-grey leading-none">{{ currency.currency_symbol }} {{ item.close &&
                   item.symbol_data.toUpperCase() == 'SHIB' ? (item.close * currency.rate).toFixed(8) : (item.close *
                     currency.rate).toFixed(2) || '--' }}</p>
               </li>
               <li class="right flex items-center justify-end text-right">
-                <div v-if="active == 3" class="textColor w-182 font-700 font-24">
+                <div v-if="active == 3" class="textColor w-182 font-700 font-12">
                   {{ (item.volume * 1).toFixed(2) }}
                 </div>
                 <template v-else>
-                  <p class="w-153 font-31 h-71 bg-green text-white border-0 text-center btn"
+                  <p class="w-153 font-12 h-50 bg-green text-white border-0 text-center btn"
                     v-if="item.change_ratio > 0">
                     +{{ item.change_ratio }}%</p>
-                  <p class="w-153 font-31 h-71 bg-red text-white border-0 text-center btn" v-else>
+                  <p class="w-153 font-12 h-50 bg-red text-white border-0 text-center btn" v-else>
                     {{ item.change_ratio || (item.change_ratio === 0 ? 0 : '--') }}%</p>
                 </template>
               </li>
@@ -240,7 +259,7 @@
     transition: all 250ms;
   }
 
-  .textColor{
+  .textColor {
     color: $text_color4;
   }
 
@@ -271,7 +290,9 @@
 
   .btn {
     border-radius: 9px;
-    line-height: 71px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
   }
 
   .left {
diff --git a/src/components/Transform/mining-account/index.vue b/src/components/Transform/mining-account/index.vue
index ab2af43..44d5371 100644
--- a/src/components/Transform/mining-account/index.vue
+++ b/src/components/Transform/mining-account/index.vue
@@ -6,7 +6,7 @@
 					<mining-exchange-input :title="$t('从')" :value1="form.volume" :actions="actions"
 						@select="onSelect('symbol', $event)" @input="onInput" :type="1" @max="onMax" :coin="form.symbol"
 						:coin1="form.symbol_to" :tips="[]" :iconImg1="form.iconImg1" :iconImg2="form.iconImg2"
-						:available="`${amountAvailable} ${form.symbol.toUpperCase()}`" :showMax="true" />
+						:available="`${amountAvailable} ${form.symbol.toUpperCase()}`" :showMax="true" :placeholder="$t('请输入')" />
 					<!-- <div v-if="show" class="font-28 text-grey">
             {{ $t('可用数量') }}:
             <span class="textColor">{{ amountAvailable }}&nbsp;{{ form.symbol.toUpperCase() }}</span>
@@ -37,287 +37,292 @@
 </template>
 
 <script>
-	import MiningExchangeInput from "../mining-exchange-input/index.vue";
-	import {
-		Grid,
-		GridItem,
-		Popup,
-		Icon,
-		showToast
-	} from "vant";
-	// import { mapState } from "vuex";
-	import {
-		_exchangeRage,
-		_getAllWallet,
-		_initWidthdrawl,
-		_widthdrawl,
-		_records
-	} from "@/service/fund.api";
-	import {
-		mapGetters
-	} from "vuex";
-	import {
-		List,
-		PullRefresh
-	} from 'vant';
-	import {
-		debounce
-	} from '@/utils'
-	export default {
-		name: "MiningAcccount",
-		components: {
-			[Grid.name]: Grid,
-			[GridItem.name]: GridItem,
-			[Popup.name]: Popup,
-			[Icon.name]: Icon,
-			MiningExchangeInput,
-			[List.name]: List,
-			[PullRefresh.name]: PullRefresh
+import MiningExchangeInput from "../mining-exchange-input/index.vue";
+import {
+	Grid,
+	GridItem,
+	Popup,
+	Icon,
+	showToast
+} from "vant";
+// import { mapState } from "vuex";
+import {
+	_exchangeRage,
+	_getAllWallet,
+	_initWidthdrawl,
+	_widthdrawl,
+	_records
+} from "@/service/fund.api";
+import {
+	mapGetters
+} from "vuex";
+import {
+	List,
+	PullRefresh
+} from 'vant';
+import {
+	debounce
+} from '@/utils'
+export default {
+	name: "MiningAcccount",
+	components: {
+		[Grid.name]: Grid,
+		[GridItem.name]: GridItem,
+		[Popup.name]: Popup,
+		[Icon.name]: Icon,
+		MiningExchangeInput,
+		[List.name]: List,
+		[PullRefresh.name]: PullRefresh
+	},
+	props: {
+		show: {
+			type: Boolean,
+			default: false,
 		},
-		props: {
-			show: {
-				type: Boolean,
-				default: false,
+	},
+	computed: {
+		...mapGetters('user', ['userInfo']),
+		tabList() {
+			return [{
+				id: 1,
+				text: this.$t('提幣')
 			},
+			{
+				id: 2,
+				text: this.$t('交易記錄')
+			}
+			]
 		},
-		computed: {
-			...mapGetters('user', ['userInfo']),
-			tabList() {
-				return [{
-						id: 1,
-						text: this.$t('提幣')
-					},
-					{
-						id: 2,
-						text: this.$t('交易記錄')
-					}
-				]
-			},
-			addr() {
-				const account = this.userInfo.account
-				return account && account.substr(0, 5) + '********' + account.substr(account.length - 5)
-			},
-			amountAvailable() {
-				console.log(this.form.symbol)
-				console.log(this.wallets)
-				let res
-				let dataInfo = this.wallets.find(item => item.symbol_data.toUpperCase() === this.form.symbol.toUpperCase())
+		addr() {
+			const account = this.userInfo.account
+			return account && account.substr(0, 5) + '********' + account.substr(account.length - 5)
+		},
+		amountAvailable() {
+			console.log(this.form.symbol)
+			console.log(this.wallets)
+			let res
+			let dataInfo = this.wallets.find(item => item.symbol_data.toUpperCase() === this.form.symbol.toUpperCase())
 
-				if (dataInfo) {
-					res = dataInfo.usable
-				} else {
-					res = 0
-				}
-				return res
-			},
+			if (dataInfo) {
+				res = dataInfo.usable
+			} else {
+				res = 0
+			}
+			return res
 		},
-		data() {
-			return {
-				showPopup: false,
-				activeRecord: 'exchange',
-				valueTwo: 0,
+	},
+	data() {
+		return {
+			showPopup: false,
+			activeRecord: 'exchange',
+			valueTwo: 0,
+			rate: 0,
+			form: { // 闪兑
+				symbol: 'USDC',
+				symbol_to: 'USDT',
+				volume: '',
 				rate: 0,
-				form: { // 闪兑
-					symbol: 'USDC',
-					symbol_to: 'USDT',
-					volume: '',
-					rate: 0,
-					iconImg2: '',
-					iconImg1: '',
-					symbol_ex: '',
-					symbol_to_ex: '',
+				iconImg2: '',
+				iconImg1: '',
+				symbol_ex: '',
+				symbol_to_ex: '',
 
-				},
-				interval: null,
-				actions: [],
-				balance: 0, // 质押余额
-				page: 1,
-				loading: false, // 当loading为true时,转圈圈
-				finished: false, // 数据是否请求结束,结束会先显示'已经全部加载完毕'
-				noData: false, // 如果没有数据,显示暂无数据
-				wallets: [], // 钱包列表
-				active: 0,
+			},
+			interval: null,
+			actions: [],
+			balance: 0, // 质押余额
+			page: 1,
+			loading: false, // 当loading为true时,转圈圈
+			finished: false, // 数据是否请求结束,结束会先显示'已经全部加载完毕'
+			noData: false, // 如果没有数据,显示暂无数据
+			wallets: [], // 钱包列表
+			active: 0,
+		}
+	},
+	created() {
+		let obj = {
+			symbolType: 'cryptos'
+		}
+		_getAllWallet(obj).then(data => {
+			this.actions = []
+			data.extends.map(item => {
+				this.actions.push({
+					symbol: item.symbol,
+					name: item.symbol,
+					symbol_data: item.symbol,
+					usable: item.usable,
+					usdt: item.usdt,
+					symbol_data: item.symbol_data
+				})
+			})
+			this.wallets = data.extends
+			console.log("this.actions", this.actions[0].symbol_data);
+			this.form.symbol = this.actions[0].symbol_data
+			this.form.symbol_to = this.actions[1].symbol_data
+			this.form.iconImg1 = this.actions[0].symbol_data
+			this.form.iconImg2 = this.actions[1].symbol_data
+			this.form.symbol_ex = this.actions[0].symbol
+			this.form.symbol_to_ex = this.actions[1].symbol
+
+		})
+	},
+	methods: {
+		onMax() { // 最大
+			if (this.amountAvailable / 1) {
+				this.form.volume = this.amountAvailable
+				this.debounceFn()
+			} else {
+				showToast(this.$t('你没有可提数量'))
 			}
 		},
-		created() {
-			let obj = {
-				symbolType: 'cryptos'
+		onInput(e) { // 获取最新
+			this.form.volume = e.target.value
+			this.clearInterval()
+			if (this.form.volume == '') {
+				this.form.get_volume = ''
+			} else {
+				this.debounceFn()
 			}
-			_getAllWallet(obj).then(data => {
-				this.actions = []
-				data.extends.map(item => {
-					this.actions.push({
-						symbol: item.symbol,
-						name: item.symbol,
-						symbol_data: item.symbol,
-						usable: item.usable,
-						usdt: item.usdt,
-						symbol_data: item.symbol_data
-					})
-				})
-				this.wallets = data.extends
-				console.log("this.actions",this.actions[0].symbol_data);
-				this.form.symbol = this.actions[0].symbol_data
-				this.form.symbol_to = this.actions[1].symbol_data
-				this.form.iconImg1 = this.actions[0].symbol_data
-				this.form.iconImg2 = this.actions[1].symbol_data
-				this.form.symbol_ex = this.actions[0].symbol
-				this.form.symbol_to_ex = this.actions[1].symbol
+		},
+		debounceFn: debounce(function () {
 
+			this.fetchRate(true)
+		}, 300),
+		fetchRate(callback) { // interval
+			let obj = {
+				symbol: this.form.symbol_ex,
+				symbol_to: this.form.symbol_to_ex,
+				volume: this.form.volume
+			}
+			_exchangeRage(obj).then(data => {
+				const {
+					get_rate
+				} = data
+				this.form.rate = get_rate
+				this.clearInterval()
+				if (callback && typeof callback === 'function') {
+					callback()
+				}
 			})
 		},
-		methods: {
-			onMax() { // 最大
-				if (this.amountAvailable / 1) {
-					this.form.volume = this.amountAvailable
-					this.debounceFn()
-				} else {
-					showToast(this.$t('你没有可提数量'))
-				}
-			},
-			onInput(e) { // 获取最新
-				this.form.volume = e.target.value
-				this.clearInterval()
-				if (this.form.volume == '') {
-					this.form.get_volume = ''
-				} else {
-					this.debounceFn()
-				}
-			},
-			debounceFn: debounce(function() {
+		onSwitch() { // 交换
+			const temp = this.form.symbol
+			this.form.symbol = this.form.symbol_to
+			this.form.symbol_to = temp
+			const tempImg = this.form.iconImg1
+			this.form.iconImg1 = this.form.iconImg2
+			this.form.iconImg2 = tempImg
+			const tempsymbol = this.form.symbol_ex
+			this.form.symbol_ex = this.form.symbol_to_ex
+			this.form.symbol_to_ex = tempsymbol
 
-				this.fetchRate(true)
-			}, 300),
-			fetchRate(callback) { // interval
-				let obj = {
-					symbol: this.form.symbol_ex,
-					symbol_to: this.form.symbol_to_ex,
-					volume: this.form.volume
-				}
-				_exchangeRage(obj).then(data => {
-					const {
-						get_rate
-					} = data
-					this.form.rate = get_rate
-					this.clearInterval()
-					if (callback && typeof callback === 'function') {
-						callback()
-					}
-				})
-			},
-			onSwitch() { // 交换
-				const temp = this.form.symbol
-				this.form.symbol = this.form.symbol_to
-				this.form.symbol_to = temp
-				const tempImg = this.form.iconImg1
-				this.form.iconImg1 = this.form.iconImg2
-				this.form.iconImg2 = tempImg
-				const tempsymbol = this.form.symbol_ex
-				this.form.symbol_ex = this.form.symbol_to_ex
-				this.form.symbol_to_ex = tempsymbol
-				
+			this.form.volume = ''
+			console.log("this.form", this.form);
+			this.clearInterval()
+		},
+		onSelect(type, evt) { // 选择
+			if (evt.type == 0) {
+				this.form['symbol'] = evt.item.symbol_data
+				this.form['iconImg1'] = evt.item.symbol_data
+				this.form['symbol_ex'] = evt.item.symbol
+			} else {
+				this.form['symbol_to'] = evt.item.symbol_data
+				this.form['iconImg2'] = evt.item.symbol_data
+				this.form['symbol_to_ex'] = evt.item.symbol
+			}
+			if (this.form.symbol !== this.form.symbol_to) {
 				this.form.volume = ''
-				console.log("this.form",this.form);
-				this.clearInterval()
-			},
-			onSelect(type, evt) { // 选择
-				if (evt.type == 0) {
-					this.form['symbol'] = evt.item.symbol_data
-					this.form['iconImg1'] = evt.item.symbol_data
-					this.form['symbol_ex'] = evt.item.symbol
-				} else {
-					this.form['symbol_to'] = evt.item.symbol_data
-					this.form['iconImg2'] = evt.item.symbol_data
-					this.form['symbol_to_ex'] = evt.item.symbol
-				}
-				if (this.form.symbol !== this.form.symbol_to) {
-					this.form.volume = ''
-				}
-				this.clearInterval()
-			},
-			onConfirm() { // 闪兑
-				this.clearInterval()
-				if (this.form.volume == '') {
-					showToast(this.$t('请输入数量'));
-				} else {
-					this.fetchRate(() => {
-						this.$emit("exchange", this.form);
-					})
-				}
-			},
-			clearInterval() { // 清除定时器
-				clearInterval(this.interval)
-				this.interval = null
+			}
+			this.clearInterval()
+		},
+		onConfirm() { // 闪兑
+			this.clearInterval()
+			if (this.form.volume == '') {
+				showToast(this.$t('请输入数量'));
+			} else {
+				this.fetchRate(() => {
+					this.$emit("exchange", this.form);
+				})
 			}
 		},
-		beforeUnmount() {
-			// console.log('beforeDestroy')
-			this.clearInterval()
+		clearInterval() { // 清除定时器
+			clearInterval(this.interval)
+			this.interval = null
 		}
-	};
+	},
+	beforeUnmount() {
+		// console.log('beforeDestroy')
+		this.clearInterval()
+	}
+};
 </script>
 
 <style scoped lang="scss">
-	@import "@/assets/init.scss";
+@import "@/assets/init.scss";
 
-	#cryptos {
-		.account_card {
-			background: $inp-b !important;
-			border-radius: 2.5rem;
-			padding: 1.2rem 2.5rem;
+#cryptos {
+	.account_card {
+		border-radius: 2.5rem;
+		padding: 1.2rem 2.5rem;
 
-			div {
-				background: $inp-b !important;
-			}
+		@include themify() {
+			background: themed("input_background");
 		}
 
-		.exchange-btn {
-			bottom: 48px;
-			left: 0;
-
-			font-size: 36px;
-
-			p {
-				border-radius: 4rem;
+		div {
+			@include themify() {
+				background: themed("input_background");
 			}
-		}
-
-		.active {
-			color: $black;
-
-			&:after {
-				content: '';
-				display: block;
-				position: absolute;
-				bottom: 0;
-				width: 140px;
-				height: 8px;
-				background: $active_line;
-				margin: 0 auto;
-			}
-		}
-
-		.convert-box {
-			background: $mainbgWhiteColor;
-			margin: -2rem auto;
-			border-radius: 50%;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			width: 6rem;
-			height: 6rem;
-			position: relative;
-
-			img {
-				width: 50%;
-				height: 50%;
-			}
-		}
-
-		.btnMain {
-			background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%);
-			border-radius: 5px;
-			font-weight: bold;
 		}
 	}
+
+	.exchange-btn {
+		bottom: 48px;
+		left: 0;
+
+		font-size: 36px;
+
+		p {
+			border-radius: 4rem;
+		}
+	}
+
+	.active {
+		color: $black;
+
+		&:after {
+			content: '';
+			display: block;
+			position: absolute;
+			bottom: 0;
+			width: 140px;
+			height: 8px;
+			background: $active_line;
+			margin: 0 auto;
+		}
+	}
+
+	.convert-box {
+		background: $mainbgWhiteColor;
+		margin: -2rem auto;
+		border-radius: 50%;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		width: 6rem;
+		height: 6rem;
+		position: relative;
+
+		img {
+			width: 50%;
+			height: 50%;
+		}
+	}
+
+	.btnMain {
+		background: linear-gradient(90deg, #2C64D4 0%, #38AEEA 100%);
+		border-radius: 5px;
+		font-weight: bold;
+	}
+}
 </style>
\ No newline at end of file
diff --git a/src/components/Transform/mining-exchange-input/index.vue b/src/components/Transform/mining-exchange-input/index.vue
index a219b85..a70a79a 100644
--- a/src/components/Transform/mining-exchange-input/index.vue
+++ b/src/components/Transform/mining-exchange-input/index.vue
@@ -19,10 +19,12 @@
         <img src="./icon-arrow.png" alt="logo" class="w-12 h-8 icon-arrow" />
       </div>
       <div class="input-wrap flex justify-between flex-1 items-center ml-10">
-        <input placeholder="" v-if="type == 1" type="number" class="h-40 pl-10 border-none inputBackground textColor"
-          v-model="oneValue" @input="onInput" :disabled="disabled" />
-        <input placeholder="" v-if="type == 2" type="number" class="h-40 pl-10 border-none inputBackground textColor"
-          :value="value" @input="onInput" :disabled="disabled" />
+        <input :placeholder="placeholder" v-if="type == 1" type="number"
+          class="h-40 pl-10 border-none inputBackground textColor" v-model="oneValue" @input="onInput"
+          :disabled="disabled" />
+        <input :placeholder="placeholder" v-if="type == 2" type="number"
+          class="h-40 pl-10 border-none inputBackground textColor" :value="value" @input="onInput"
+          :disabled="disabled" />
       </div>
       <!-- <div v-if="showMax" class="pr-20" @click="onMax">{{ $t('最大') }}</div> -->
     </div>
@@ -135,6 +137,10 @@
     value: {
       type: [Number, String],
       default: 0,
+    },
+    placeholder: {
+      type: String,
+      default: ''
     },
     getval: {
       type: String,
@@ -264,11 +270,14 @@
 
   .exchange-pop {
     .tab-list {
-      background: $inp-b;
       $tab-r: 90px;
       border-radius: $tab-r;
       height: 180px;
-      color: $text_color;
+
+      @include themify() {
+        background: themed("input_background");
+        color: themed("text_color");
+      }
 
       .tab-item {
         text-align: center;
@@ -277,24 +286,29 @@
 
       .active {
         background: $bg_yellow;
-
         border-radius: $tab-r;
       }
     }
 
     .title {
-      color: $text_color;
-      padding: 30px 0 !important
+      padding: 30px 0 !important;
+
+      @include themify() {
+        color: themed("text_color1");
+      }
     }
 
     .search-input {
-      color: $text_color;
-      background: $inp-b;
       border-radius: 80px;
       height: 100px !important;
       display: flex;
       align-items: center;
       padding-left: 30px !important;
+
+      @include themify() {
+        color: themed("text_color1");
+        background: themed("input_background");
+      }
     }
 
     .list {
diff --git a/src/components/Transform/perpetual-open/index.vue b/src/components/Transform/perpetual-open/index.vue
index efa2a75..e5a18bd 100644
--- a/src/components/Transform/perpetual-open/index.vue
+++ b/src/components/Transform/perpetual-open/index.vue
@@ -35,10 +35,122 @@
         </div>
       </div>
       <div class="pt-30 pb-20">
-        <div class="flex">
+        <div class="flex justify-between">
+          <div>
+            <div class="w-290 flex justify-between text-grey font-22">
+              <div>
+                <div>{{ $t("价格") }}</div>
+                <div class="mt-4">{{ queryType === 'cryptos' ? '(USDT)' : '(USD)' }}</div>
+              </div>
+              <div class="text-right items-end justify-end">
+                <div class="">{{ $t("数量") }}</div>
+                <div class="mt-4">{{ queryType === 'cryptos' ?
+                    `(${symbol_data.toUpperCase() || "--"})` : '(USD)' }}</div>
+              </div>
+            </div>
+            <div class="deep-div">
+              <!-- <div v-if="showType == 0 || showType == 2" class="w-290 flex justify-between pt-1  font-26"
+                v-for="(item, index) in redData" :key="item + index" @click="onQuickPrice(item.price)" :style="{
+                  background:
+                    `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'
+                    } 0%` +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(246,70,93,.1) ' +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(246,70,93,.1) 100%)',
+                }"> -->
+
+              <div v-show="(showType == 0 || showType == 2)" class="w-290 flex justify-between pt-1 font-26"
+                   v-for="(item, index) in redData" :key="item + index" @click="onQuickPrice(item.price)" :style="{
+                  background:
+                    `linear-gradient(to right,${$store.state.vant.theme == 'dark' ? '#131A2E' : '#fff'
+                    } 0%` +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(246,70,93,.1) ' +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(246,70,93,.1) 100%)'
+                }">
+                <div class="text-red">{{ item.price }}</div>
+                <div class="text-right textColor" v-if="symbol == 'shib'">
+                  {{ fixDate(item.amount, $i18n) || "--" }}
+                </div>
+                <div class="text-right textColor" v-else>
+                  {{ item.amount || "--" }}
+                </div>
+              </div>
+            </div>
+            <div class="w-290 text-red pt-5 font-34 font-700 text-center">
+              {{ price || '--' }}
+            </div>
+            <div class="pb-5 font-20 text-center">
+              ≈ {{ ((price *
+                currency.rate).toFixed(price.toString().split('.')[1] ?
+                price.toString().split('.')[1].length : 2)) || '--' }}
+            </div>
+            <div class="deep-div">
+              <!-- <div v-if="showType == 0 || showType == 1" class="w-290 flex justify-between pt-1 font-26"
+                v-for="(item, index) in greenData" :key="index" @click="onQuickPrice(item.price)" :style="{
+                  background:
+                    `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'
+                    } 0%` +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(94,186,137,.1) ' +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(94,186,137,.1) 100%)',
+                }"> -->
+
+              <div v-if="showType == 0 || showType == 1" class="w-290 flex justify-between pt-1 font-26"
+                   v-for="(item, index) in greenData" :key="index" @click="onQuickPrice(item.price)" :style="{
+                  background:
+                    `linear-gradient(to right,${$store.state.vant.theme == 'dark' ? '#131A2E' : '#fff'
+                    } 0%` +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(94,186,137,.1) ' +
+                    (1 - item.amount / greenData[greenData.length - 1].amount) *
+                    100 +
+                    '%,rgba(94,186,137,.1) 100%)',
+                }">
+                <div class="text-green">{{ item.price }}</div>
+                <div class="text-right textColor" v-if="symbol_data == 'shib'">
+                  {{ fixDate(item.amount, $i18n) || "--" }}
+                </div>
+                <div class="text-right textColor" v-else>
+                  {{ item.amount || "--" }}
+                </div>
+
+              </div>
+            </div>
+            <div class="flex k-select-box">
+              <div class=" mb-22 select-box pl-5 pr-5" style="position: relative">
+                <div class="flex justify-between items-center w-full h-70" @click="selectArryBtn">
+                  <!-- <img src="@/assets/image/public/warn.png" alt="warn-icon" class="w-25 h-25 pl-20"/> -->
+                  <div class="pl-16 font-28 textColor" style="width: 80%">
+                    {{ dataArrTitle }}
+                  </div>
+                  <img src="../../../assets/image/public/grey-select.png" alt="select-icon" class="w-22 h-11 mr-10" />
+                </div>
+                <div class="option-box" v-show="arryIsShow">
+                  <div class="font-28" v-for="(item, index) in selectDataArry" :key="index"
+                       @click="selectItemArry(item)">
+                    {{ item.name }}
+                  </div>
+                </div>
+              </div>
+              <div @click="isSelectShow = true">
+                <img src="../../../assets/image/selectIcon.png" alt="warn-icon" class="w-36 h-30 ml-10" />
+              </div>
+            </div>
+          </div>
           <div class="w-440 flex flex-col">
             <template v-if="selectIndex == 1">
-              <div class="flex items-center h-66 rounded-lg text-grey">
+              <div class="flex items-center h-66 greyBg textColor">
                 <p class="font-28 flex-1 flex items-center justify-center h-66 "
                   :class="currentType == 'long' ? 'long' : ''" @click="changeTab('long')">
                   {{ $t("开多") }}
@@ -49,8 +161,7 @@
                 </p>
               </div>
               <div class="mt-22 mb-30" style="position:relative;">
-                <div class="greyBg flex justify-between items-center w-full h-76 rounded-lg textColor"
-                  @click="selectBtn">
+                <div class="greyBg flex justify-between items-center w-full h-76 greyBg textColor" @click="selectBtn">
                   <img src="../../../assets/image/public/warn.png" alt="warn-icon" class="w-25 h-25 ml-20" />
                   <div class="text-center" style="width:80%;">{{ title }}</div>
                   <img src="../../../assets/image/public/grey-select.png" alt="select-icon" class="w-22 h-11 mr-20" />
@@ -64,14 +175,14 @@
             </template>
             <contract-futrue v-if="selectIndex == 2 && JSON.stringify(initFutrue.para) != '[]'" class="mb-20"
               :initFutrue="initFutrue" @paraId="onParaId" />
-            <div class="h-76 lh-76 greyBg mb-30 flex pr-20 justify-center rounded-lg textColor" v-if="selectIndex == 1">
+            <div class="h-76 lh-76 greyBg mb-30 flex pr-20 justify-center greyBg textColor" v-if="selectIndex == 1">
               <input placeholder="" class="greyBg w-full pl-20  h-76 border-none text-left rounded-lg"
                 :disabled="type / 1 === 1" @focus="focus = true" v-model="form.price" />
               <span class="ml-20">{{ queryType === 'cryptos' ? 'USDT' : 'USD' }}</span>
             </div>
 
             <div class="w-440 h-76" v-if="selectIndex == 2"></div>
-            <div class="w-440 flex items-center greyBg h-76 lh-76 pr-5 pl-5 rounded-lg" v-if="initFutrue">
+            <div class="w-440 flex items-center greyBg h-76 lh-76 pr-5 pl-5 greyBg" v-if="initFutrue">
               <div v-if="selectIndex == 1 && initFutrue.para && initFutrue.para.length > 0"
                 class="w-80 flex items-center justify-center" style="height:100%;" @click="onReduce">
                 <img src="../../../assets/image/public/reduce.png" alt="add" class="w-30 h-6" />
@@ -123,9 +234,10 @@
               <!-- 张数输入 -->
               <!-- <amount-slider ref="sliderRef" :maxAmount="maxUSDT" @getAmount="getAmount"
                 :propsAmount="form.amount"></amount-slider> -->
-				<div class="btns_box" >
-					<div :class="bfbindex==index?'btns_box_boxs':'btns_box_box'" @click="bfbclick(item,index)" v-for="(item,index) in bfblist" :key="index">{{item.name}}%</div>
-				</div>
+              <div class="btns_box">
+                <div :class="bfbindex == index ? 'btns_box_boxs' : 'btns_box_box'" @click="bfbclick(item, index)"
+                  v-for="(item, index) in bfblist" :key="index">{{ item.name }}%</div>
+              </div>
             </template>
             <template v-if="selectIndex == 1 && userInfo.token">
               <div class="flex justify-between mt-30">
@@ -152,7 +264,7 @@
               </div>
             </template>
 
-            <div class="flex font-24 text-grey justify-between mt-32" >
+            <div class="flex font-24 text-grey justify-between mt-32">
               <div>{{ $t("可用USDT") }}</div>
               <div class="textColor">{{ initFutrue.amount }} USDT</div>
             </div>
@@ -174,33 +286,33 @@
 
             <template v-if="userInfo.token">
               <template v-if="selectIndex == 1">
-                <div class="w-full h-80 lh-80 bg-green flex text-white rounded-ban mt-70" v-if="currentType == 'long'"
+                <div class=" flex-center text-white " style="margin-top: 10px" v-if="currentType == 'long'"
                   @click="order('long')">
-                  <div class="font-34 relative text-center" style="flex-grow:1;" v-if="selectIndex == 1">
+                  <div class="long flex-center" style="flex-grow:1;padding: 20px" v-if="selectIndex == 1">
                     {{ $t('开多') }}
                     <!-- <span class="right-word font-22 text-center">{{
                       $t("看涨")
                       }}</span> -->
                   </div>
-                  <div class="font-34 relative text-center" style="flex-grow:1;" v-else>
+                  <div  class="long flex-center" style="flex-grow:1;padding: 20px"  v-else>
                     {{ $t('做多买入') }}
                   </div>
                 </div>
-                <div class="w-full h-80 lh-80 bg-red flex text-white rounded-ban mt-70" v-if="currentType == 'short'"
+                <div class="flex-center text-white " v-if="currentType == 'short'"
                   @click="order('short')">
-                  <div class="relative font-34 text-center" style="flex-grow:1;" v-if="selectIndex == 1">
+                  <div class="short flex-center" style="flex-grow:1;padding: 20px"  v-if="selectIndex == 1">
                     {{ $t('开空') }}
                     <!-- <span class="right-word font-22 text-center">{{
                       $t("看跌")
                       }}</span> -->
                   </div>
-                  <div class="relative font-34 text-center" style="flex-grow:1;" v-else>
+                  <div class="short flex-center" style="flex-grow:1;padding: 20px"  v-else>
                     {{ $t('做空买入') }}
                   </div>
                 </div>
               </template>
               <template v-if="selectIndex == 2">
-                <div class="w-full h-80 lh-80 bg-green flex text-white rounded-ban mt-10 " @click="order('open')"
+                <div class="w-full h-80 lh-80 bg-green flex text-white mt-10 " @click="order('open')"
                   v-if="userInfo.token">
                   <div class="font-34 relative text-center" style="flex-grow: 1">
                     {{ $t("开多") }}
@@ -209,9 +321,8 @@
                       }}</span> -->
                   </div>
                 </div>
-                <div class="w-full h-80 lh-80 bg-red flex text-white rounded-ban mt-20 mb-10"
-                  style="position: relative;" :class="{ 'mt-22': selectIndex == 2 }" @click="order('close')"
-                  v-if="userInfo.token">
+                <div class="w-full h-80 lh-80 bg-red flex text-white mt-20 mb-10" style="position: relative;"
+                  :class="{ 'mt-22': selectIndex == 2 }" @click="order('close')" v-if="userInfo.token">
                   <div class="relative font-34 text-center" style="flex-grow: 1">
                     {{ $t("开空") }}
                     <!-- <span class="right-word font-22 text-center">{{
@@ -231,118 +342,7 @@
                 {{ $t('logIn') }}</div>
             </div>
           </div>
-          <div class="ml-30">
-            <div class="w-290 flex justify-between text-grey font-22">
-              <div>
-                <div>{{ $t("价格") }}</div>
-                <div class="mt-4">{{ queryType === 'cryptos' ? '(USDT)' : '(USD)' }}</div>
-              </div>
-              <div class="text-right items-end justify-end">
-                <div class="">{{ $t("数量") }}</div>
-                <div class="mt-4">{{ queryType === 'cryptos' ?
-                  `(${symbol_data.toUpperCase() || "--"})` : '(USD)' }}</div>
-              </div>
-            </div>
-            <div class="deep-div">
-              <!-- <div v-if="showType == 0 || showType == 2" class="w-290 flex justify-between pt-1  font-26"
-                v-for="(item, index) in redData" :key="item + index" @click="onQuickPrice(item.price)" :style="{
-                  background:
-                    `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'
-                    } 0%` +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(246,70,93,.1) ' +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(246,70,93,.1) 100%)',
-                }"> -->
 
-              <div v-show="(showType == 0 || showType == 2) " class="w-290 flex justify-between pt-1 font-26"
-                v-for="(item, index) in redData" :key="item + index" @click="onQuickPrice(item.price)" :style="{
-                  background:
-                    `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'
-                    } 0%` +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(246,70,93,.1) ' +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(246,70,93,.1) 100%)'
-                }">
-                <div class="text-red">{{ item.price }}</div>
-                <div class="text-right textColor" v-if="symbol == 'shib'">
-                  {{ fixDate(item.amount, $i18n) || "--" }}
-                </div>
-                <div class="text-right textColor" v-else>
-                  {{ item.amount || "--" }}
-                </div>
-              </div>
-            </div>
-            <div class="w-290 text-red pt-5 font-34 font-700 text-center">
-              {{ price || '--' }}
-            </div>
-            <div class="pb-5 font-20 text-center">
-              ≈ {{ ((price *
-                currency.rate).toFixed(price.toString().split('.')[1] ?
-                  price.toString().split('.')[1].length : 2)) || '--' }}
-            </div>
-            <div class="deep-div">
-              <!-- <div v-if="showType == 0 || showType == 1" class="w-290 flex justify-between pt-1 font-26"
-                v-for="(item, index) in greenData" :key="index" @click="onQuickPrice(item.price)" :style="{
-                  background:
-                    `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'
-                    } 0%` +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(94,186,137,.1) ' +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(94,186,137,.1) 100%)',
-                }"> -->
-
-              <div v-if="showType == 0 || showType == 1" class="w-290 flex justify-between pt-1 font-26"
-                v-for="(item, index) in greenData" :key="index" @click="onQuickPrice(item.price)" :style="{
-                  background:
-                    `linear-gradient(to right,${THEME == 'dark' ? '#131A2E' : '#fff'
-                    } 0%` +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(94,186,137,.1) ' +
-                    (1 - item.amount / greenData[greenData.length - 1].amount) *
-                    100 +
-                    '%,rgba(94,186,137,.1) 100%)',
-                }">
-                <div class="text-green">{{ item.price }}</div>
-                <div class="text-right textColor" v-if="symbol_data == 'shib'">
-                  {{ fixDate(item.amount, $i18n) || "--" }}
-                </div>
-                <div class="text-right textColor" v-else>
-                  {{ item.amount || "--" }}
-                </div>
-
-              </div>
-            </div>
-            <div class="flex k-select-box">
-              <div class="mt-22 mb-22 select-box pl-5 pr-5" style="position: relative">
-                <div class="flex justify-between items-center w-full h-70" @click="selectArryBtn">
-                  <!-- <img src="@/assets/image/public/warn.png" alt="warn-icon" class="w-25 h-25 pl-20"/> -->
-                  <div class="pl-16 font-28 textColor" style="width: 80%">
-                    {{ dataArrTitle }}
-                  </div>
-                  <img src="../../../assets/image/public/grey-select.png" alt="select-icon" class="w-22 h-11 mr-10" />
-                </div>
-                <div class="option-box" v-show="arryIsShow">
-                  <div class="font-28" v-for="(item, index) in selectDataArry" :key="index"
-                    @click="selectItemArry(item)">
-                    {{ item.name }}
-                  </div>
-                </div>
-              </div>
-              <div @click="isSelectShow = true">
-                <img src="../../../assets/image/selectIcon.png" alt="warn-icon" class="w-36 h-30 ml-10" />
-              </div>
-            </div>
-          </div>
         </div>
       </div>
       <van-popup v-model:show="show" class="rounded-2xl">
@@ -541,13 +541,13 @@
     return {
       THEME,
       fixDate,
-	  bfbindex:null,
-	  bfblist:[
-		  {name:'25'},
-		  {name:'50'},
-		  {name:'75'},
-		  {name:'100'}
-	  ],
+      bfbindex: null,
+      bfblist: [
+        { name: '25' },
+        { name: '50' },
+        { name: '75' },
+        { name: '100' }
+      ],
       currentBuyType: '', // 交割合约当前下单的类型,用于弹窗倒计时结束以后,点击再下一单
       timeout2: null,
       timeout: null,
@@ -624,14 +624,14 @@
   },
   methods: {
     reserve,
-	bfbclick(e,i){
-		this.bfbindex = i
-		e = parseInt(e.name)
-		const rate = e / 100; //如0.25
-		this.form.amount = this.maxUSDT * rate
-		var a = this.form.amount
-		this.form.amount = Math.floor(a*100)/100
-	},
+    bfbclick(e, i) {
+      this.bfbindex = i
+      e = parseInt(e.name)
+      const rate = e / 100; //如0.25
+      this.form.amount = this.maxUSDT * rate
+      var a = this.form.amount
+      this.form.amount = Math.floor(a * 100) / 100
+    },
     //获取张数
     getAmount(val) {
       if (!val) {
@@ -956,24 +956,28 @@
 
 <style lang="scss">
 @import "@/assets/init.scss";
-.btns_box_boxs{
-	width: 23%;
-	border: 1px solid #F7B600;
-	text-align: center;
-	border-radius: 10px;
-	color: #F7B600;
+
+.btns_box_boxs {
+  width: 23%;
+  border: 1px solid #F7B600;
+  text-align: center;
+  border-radius: 10px;
+  color: #F7B600;
 }
-.btns_box_box{
-	width: 23%;
-	border: 1px solid #cbcbcb;
-	text-align: center;
-	border-radius: 10px;
+
+.btns_box_box {
+  width: 23%;
+  border: 1px solid #cbcbcb;
+  text-align: center;
+  border-radius: 10px;
 }
-.btns_box{
-	display: flex;
-	justify-content: space-between;
-	align-items: center;
+
+.btns_box {
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
 }
+
 #cryptos {
   .perpetual-open {
     font-size: 26px;
@@ -1094,13 +1098,18 @@
     right: 0;
     top: 90px;
     width: 100%;
-    background-color: $grey_bg;
+    // background-color: $grey_bg;
     text-align: center;
-    box-shadow: 0px 0px 3px 3px $grey_bg;
+    // box-shadow: 0px 0px 3px 3px $grey_bg;
     border-radius: 4px;
-    color: $text-color;
+    // color: $text-color;
     z-index: 10;
 
+    @include themify() {
+      background: themed("input_background");
+      color: themed("text_color");
+      box-shadow: 0px 0px 3px 3px themed("input_background");
+    }
   }
 
   .option-box>div {
@@ -1138,17 +1147,28 @@
   }
 
   .long {
-    background-color: $green;
-    background: url(@/assets/image/public/open-bg.png) no-repeat right center;
-    background-size: 100% 100%;
+    // background-color: $green;
+    // background: url(@/assets/image/public/open-bg.png) no-repeat right center;
+    // background-size: 100% 100%;
     color: white;
+    border-radius: 6px;
+    background: #24c18d;
+    font-size: 14px;
+    font-size: 19px;
+    height: 60px;
+    // border-radius: 5rem;
   }
 
   .short {
-    background-color: $green;
-    background: url(@/assets/image/public/close-bg.png) no-repeat left center;
-    background-size: 100% 100%;
+    // background-color: $green;
+    // background: url(@/assets/image/public/close-bg.png) no-repeat left center;
+    // background-size: 100% 100%;
     color: white;
+    border-radius: 6px;
+    background: #f14b3f;
+    font-size: 19px;
+    height: 60px;
+    // border-radius: 5rem;
   }
 
   .van-action-sheet__content {
@@ -1176,14 +1196,17 @@
 
   .select-box {
     width: 220px;
-    border-radius: 2.5rem;
-    background: #1E1E1E;
-
+    // border-radius: 2.5rem;
+    // background: #1E1E1E;
     margin-right: 20px;
+
+    @include themify() {
+      background: themed("input_background");
+    }
   }
 }
 
 .deep-div {
-  min-height: 370px;
+  min-height: 200px;
 }
 </style>
diff --git a/src/components/Transform/perpetual-order/index.vue b/src/components/Transform/perpetual-order/index.vue
index 8049be0..74795bf 100644
--- a/src/components/Transform/perpetual-order/index.vue
+++ b/src/components/Transform/perpetual-order/index.vue
@@ -8,7 +8,7 @@
             <div class="px-10  py-10 flex  items-center textColor1 font-28" @click="tabClick('1')"
               :class="type == '1' ? 'active-line' : ''">{{ $t('持有仓位') }}<span v-if="type == '1'">({{
                 orderHold.length }})</span></div>
-            <div class="px-10  ml-50  py-10 flex  items-center textColor1y font-28" @click="tabClick('2')"
+            <div class="px-10  ml-50  py-10 flex  items-center textColor1 font-28" @click="tabClick('2')"
               :class="type == '2' ? 'active-line' : ''">{{ $t('当前委托') }}</div>
           </template>
           <template v-else>
@@ -22,6 +22,9 @@
         </div>
         <img src="../../../assets/image/public/record.png" alt="record-img" class="w-64 h-35 pr-30 record-img"
           @click="goHistory" />
+      </div>
+      <div style="margin: 5px 0;width: 100%;height: 1px;background: #eee">
+
       </div>
       <!-- 永续-->
       <template v-if="topIndex / 1 === 1">
@@ -195,10 +198,11 @@
     // color: $text-color;
     position: relative;
     // padding: 15px 0;
-    color: $text_color;
+    font-size: 14px;
+    color: black!important;
     border-radius: 8px;
     // background-color: $color_main
-    background-color: $bg_yellow
+    //background-color: $bg_yellow
   }
 
   // .active-line::after {
@@ -217,7 +221,8 @@
   }
 
   .textColor1 {
-    color: $text_color;
+    color: #999 ;
+    font-size: 14px;
   }
 }
 </style>
diff --git a/src/components/Transform/perpetual-position-list/index.vue b/src/components/Transform/perpetual-position-list/index.vue
index 0207f3c..53cc458 100644
--- a/src/components/Transform/perpetual-position-list/index.vue
+++ b/src/components/Transform/perpetual-position-list/index.vue
@@ -10,71 +10,93 @@
     <!--            <button class="border-none all-cancel-btn pl-34 pr-34 pt-10 pb-10 font-25" @click="onSellAll">{{ $t('一键平仓') }}</button>-->
     <!--        </div>-->
     <div class="border-b-color" v-for="item in listData" :key="item.order_no">
-      <div class="flex justify-between pt-44 pb-44">
-        <div class="flex flex-col">
-          <div class="flex items-center">
-            <div class="pl-18 pr-18 pt-3 pb-3 text-white open-btn font-28"
-              :class="item.direction == 'buy' ? ' bg-green' : 'bg-red'">
-              {{ item.direction == 'buy' ? $t('开多') : $t('开空') }}
-            </div>
-            <div class="ml-22 font-31 font-600 ">
-              <span class="textColor">{{ item.name }} {{ $t('永续') }}</span>
-              <span class="text-grey font-28 font-400 ml-17 mr-17">
-                {{ item.locationType == 1 ? $t('全仓') : $t('逐仓') }}
-                {{ item.lever_rate }}x</span>
-            </div>
-            <img v-if="item.direction == 'buy'" src="@/assets/image/public/green-leverage.png" alt=""
-              class="w-32 h-32" />
-            <img v-else src="@/assets/image/public/red-leverage.png" alt="" class="w-32 h-32" />
+<!--      <div class="flex justify-between pt-44 pb-44">-->
+<!--        <div class="flex flex-col">-->
+<!--          <div class="flex-centerY">-->
+<!--            <div class="ml-22 font-31 ">-->
+<!--&lt;!&ndash;              <span class="textColor">{{ item.name }} {{ $t('永续') }}</span>&ndash;&gt;-->
+<!--              <span class="textColor">{{ item.name }} </span>-->
+<!--&lt;!&ndash;              <span class="text-grey font-28 font-400 ml-17 mr-17">&ndash;&gt;-->
+<!--&lt;!&ndash;                {{ item.locationType == 1 ? $t('全仓') : $t('逐仓') }}&ndash;&gt;-->
+<!--&lt;!&ndash;                {{ item.lever_rate }}x</span>&ndash;&gt;-->
+<!--            </div>-->
+<!--            <div-->
+<!--                 :class="item.direction == 'buy' ? ' bg-green1' : 'bg-red'">-->
+<!--              {{ item.direction == 'buy' ? $t('开多') : $t('开空') }}-->
+<!--            </div>-->
+<!--&lt;!&ndash;            <img v-if="item.direction == 'buy'" src="@/assets/image/public/green-leverage.png" alt=""&ndash;&gt;-->
+<!--&lt;!&ndash;              class="w-32 h-32" />&ndash;&gt;-->
+<!--&lt;!&ndash;            <img v-else src="@/assets/image/public/red-leverage.png" alt="" class="w-32 h-32" />&ndash;&gt;-->
+<!--          </div>-->
+<!--        </div>-->
+<!--      </div>-->
+      <div class="flex-centerY flex-position-between" style="margin-top: 15px">
+        <div class="flex-centerY">
+          <div class="textColor font-30">{{ item.name }} </div>
+          <div
+              :class="item.direction == 'buy' ? ' bg-green1' : 'bg-red1'">
+            {{ item.direction == 'buy' ? $t('开多') : $t('开空') }}
           </div>
         </div>
+        <div class="font-30 font-bold flex-centerY">
+          {{ item.lever_rate }}
+          <div style="margin-left: 5px">x</div>
+        </div>
       </div>
-      <div class="flex justify-between font-28">
+      <div class="flex font-28" style="margin-top: 20px">
         <div class="flex-1">
-          <div class="text-grey">{{ routeType == 'cryptos' ? $t('未实现盈亏(USDT)') : $t('未实现盈亏(USD)') }}</div>
-          <div class="mt-20" :class="item.profit > 0 ? 'text-green' : 'text-red'">
+          <div class="text-grey" style="font-size: 10px">{{ routeType == 'cryptos' ? $t('未实现盈亏(USDT)') : $t('未实现盈亏(USD)') }}</div>
+          <div class="" :class="item.profit > 0 ? 'text-green' : 'text-red'">
             {{ item.profit > 0 ? '+' + item.profit.toFixed(4) : item.profit.toFixed(4) }}</div>
         </div>
-        <div class="flex-1">
-          <div class="text-grey text-center">ROE</div>
-          <div class="mt-20 text-center" :class="item.change_ratio / 1 > 0 ? 'text-green' : 'text-red'">{{
+        <div class="flex-1 font-28">
+          <div class="text-grey" style="font-size: 10px">ROE</div>
+          <div class="" :class="item.change_ratio / 1 > 0 ? 'text-green' : 'text-red'" >{{
             item.change_ratio
           }}%
           </div>
         </div>
-        <div class="flex-1 flex justify-end">
-          <button class="font-30 detail-btn border-light-blue greyBg colorMain w-125 h-60" @click="goDetail(item)">{{
-            $t('详情') }}</button>
+        <div class="flex-1">
+          <div class="text-grey"  style="font-size: 10px">{{ $t('持仓数量') }}</div>
+          <div class="textColor">{{ reserve(item.volume / (item.lever_rate ? item.lever_rate : 1),4) }}*{{
+              item.lever_rate ? item.lever_rate : 1 }}x</div>
+        </div>
+<!--        <div class="flex-1 flex justify-end">-->
+<!--          <button class="font-30 detail-btn border-light-blue greyBg colorMain w-125 h-60" @click="goDetail(item)">{{-->
+<!--            $t('详情') }}</button>-->
+<!--        </div>-->
+      </div>
+      <div class="flex-centerY mt-10">
+        <div class="flex-1  font-28">
+          <div class="text-grey" style="font-size: 10px">{{ $t('交易金额') }} ( {{ routeType == 'cryptos' ? 'USDT' : 'USD' }})</div>
+          <div class=" textColor">{{ item.deposit }}</div>
+        </div>
+        <div class="flex-1 font-28">
+          <div class="text-grey" style="font-size: 10px">{{ $t('开仓价格') }}</div>
+          <div class=" textColor">{{ item.trade_avg_price }}</div>
+        </div>
+        <div class="flex-1 font-28">
+          <div class="text-grey" style="font-size: 10px">{{ $t('标记价格') }}</div>
+          <div class=" textColor">{{ item.mark_price }}</div>
         </div>
       </div>
-      <div class="flex pt-44 pb-32 font-28">
-        <div class="flex-1">
-          <div class="text-grey">{{ $t('持仓数量') }}</div>
-          <div class="mt-20 textColor">{{ reserve(item.volume / (item.lever_rate ? item.lever_rate : 1),4) }}*{{
-            item.lever_rate ? item.lever_rate : 1 }}x</div>
+      <div class="flex-centerY mt-10">
+        <div class="flex-1 font-28">
+          <div class="text-grey " style="font-size: 10px">{{ $t('强平价格') }}</div>
+          <div class="textColor">{{ item.force_close_rice }}</div>
         </div>
-        <div class="flex-1 text-center  font-28">
-          <div class="text-grey">{{ $t('交易金额') }} ( {{ routeType == 'cryptos' ? 'USDT' : 'USD' }})</div>
-          <div class="mt-20 textColor">{{ item.deposit }}</div>
-        </div>
-        <div class="flex-1 flex flex-col items-end  font-28">
-          <div class="text-grey">{{ $t('开仓价格') }}</div>
-          <div class="mt-20 textColor">{{ item.trade_avg_price }}</div>
-        </div>
+
       </div>
-      <div class="flex pb-32  font-28">
-        <div class="flex-1">
-          <div class="text-grey">{{ $t('标记价格') }}</div>
-          <div class="mt-20 textColor">{{ item.mark_price }}</div>
+      <div class="flex-centerY flex-position-end-to-start">
+        <div class=" flex flex-col items-end justify-end">
+          <div class="bg-green2"
+                  @click="onSell(item.order_no)" >
+            {{ $t('平仓') }}</div>
         </div>
-        <div class="flex-1">
-          <div class="text-grey text-center">{{ $t('强平价格') }}</div>
-          <div class="mt-20 textColor text-center">{{ item.force_close_rice }}</div>
-        </div>
-        <div class="flex-1 flex flex-col items-end justify-end">
-          <button class="greyBg textColor border-none pl-34 pr-34 pt-10 pb-10 rounded-ban"
-            @click="onSell(item.order_no)">
-            {{ $t('平仓') }}</button>
+        <div class=" flex flex-col items-end justify-end">
+          <div class="bg-green3"
+               @click="goDetail(item)" >
+            {{ $t('详情') }}</div>
         </div>
       </div>
       <!-- <div class="flex  pb-32  font-28">
@@ -165,4 +187,40 @@
     color: #06AD95;
   }
 }
+
+.bg-green1{
+  color: $green;
+  font-size: 14px;
+  margin-left: 10px;
+  border-radius: 6px;
+  padding: 0 10px;
+  border: $green 1px solid;
+}
+
+.bg-red1{
+  color: $red;
+  font-size: 14px;
+  margin-left: 10px;
+  border-radius: 6px;
+  padding: 0 10px;
+  border: $red 1px solid;
+}
+
+.bg-green2{
+  color: $green;
+  font-size: 16px;
+  margin-left: 12px;
+  border-radius: 6px;
+  padding: 0 20px;
+  border: $green 1px solid;
+}
+
+.bg-green3{
+  color: orange;
+  font-size: 16px;
+  margin-left: 12px;
+  border-radius: 6px;
+  padding: 0 20px;
+  border: orange 1px solid;
+}
 </style>
diff --git a/src/components/Transform/trade-head/index.vue b/src/components/Transform/trade-head/index.vue
index 71499ab..c99fe1f 100644
--- a/src/components/Transform/trade-head/index.vue
+++ b/src/components/Transform/trade-head/index.vue
@@ -9,13 +9,16 @@
 
             <!-- <img v-if="isReturn" src="@/assets/image/icon_back_1.png" @click="backPath()" class="w-40 h-40 back mr-50"
               alt=""> -->
-            <img v-if="isReturn" src="@/assets/image/icon_back.png" @click="goBack()" class="w-40 h-40 back mr-50"
-              alt="">
+            <template v-if="isReturn">
+              <img src="@/assets/image/icon_back.png" @click="goBack()" class="w-40 h-40 back mr-50" alt=""
+                v-if="$store.state.vant.theme == 'light'">
+              <img src="@/assets/image/icon_back_1.png" @click="goBack()" class="w-40 h-40 back mr-50" alt="" v-else>
+            </template>
             <template v-if="!isChange">
-              <!-- <img src="../../../assets/theme/dark/image/black-convert.png" alt="convert-img" class="w-35 h-35"
-                @click="onSidebar" /> -->
               <img src="../../../assets/theme/white/image/black-convert.png" alt="convert-img" class="w-35 h-35"
-                @click="onSidebar" />
+                @click="onSidebar" v-if="$store.state.vant.theme == 'light'" />
+              <img src="../../../assets/theme/dark/image/black-convert.png" alt="convert-img" class="w-35 h-35"
+                @click="onSidebar" v-else />
             </template>
             <!-- 在切换模式下 -->
             <template v-if="isChange">
@@ -188,7 +191,7 @@
   watch: {
     symbol(val) {
       console.log("symbol", val);
-      
+
       this.getIsItemHasAddGlobal()
       if (this.islevel) {
         this.$emit('changeLine', true)
@@ -303,9 +306,9 @@
     //     path: `/${url}?symbol=${this.symbol}`
     //   });
     // },
-    changeBg() {
-      this.$emit('changeNight', !this.isNight)
-    },
+    // changeBg() {
+    //   this.$emit('changeNight', !this.isNight)
+    // },
     backPath() {
       if (this.$route.query?.from === 'trade') {
         this.$router.push('/trade/index?tabActive=1')
diff --git a/src/components/Transform/trade-order-area/index.vue b/src/components/Transform/trade-order-area/index.vue
index 99536b2..87df306 100644
--- a/src/components/Transform/trade-order-area/index.vue
+++ b/src/components/Transform/trade-order-area/index.vue
@@ -11,7 +11,7 @@
       <div class=" flex justify-between  items-center w-full h-70" @click="selectBtn">
         <!-- <img src="@/assets/image/public/warn.png" alt="warn-icon" class="w-25 h-25 pl-20"/> -->
         <div class="pl-16 textColor" style="width:80%;">{{ title }}</div>
-        <img src="@/assets/image/public/grey-select.png" alt="select-icon" class="w-22 h-11 pr-20" />
+        <img src="@/assets/image/public/grey-select.png" alt="select-icon" class="w-22 h-11 mr-20" />
       </div>
       <div class="option-box" v-if="isShow">
         <div class="font-30" v-for="item in selectData" :key="item.type" @click="selectItem(item)">{{ item.title }}
@@ -27,7 +27,7 @@
       <span>{{ title }}</span>
     </div>
 
-    <template  v-if="initClose.status / 1 === 0">
+    <template v-if="initClose.status / 1 === 0">
       <div class="flex justify-center items-center h-66 buy-item">{{ $t('停牌中,禁止交易') }}</div>
     </template>
     <template v-else>
@@ -71,7 +71,7 @@
         <van-icon name="add-o" @click="$router.push('/cryptos/exchangePage')" class="font-30 add-icon" />
         <!-- <img @click="$router.push('/exchange/exchangePage')" src="@/assets/image/public/switch.png" class="w-24 h-24" /> -->
       </div>
-      <div style="border-radius: 3.5rem;"
+      <div style="border-radius: 6px;"
         class="w-full h-90 lh-90 flex justify-center text-white text-center rounded buyandSell mt-70"
         :class="currentType === 'open' ? 'bg-green' : 'bg-red'" @click="order()">
         {{ currentType == 'open' ? $t('买入') : $t('卖出') }}
@@ -369,19 +369,19 @@
 @import "@/assets/init.scss";
 
 .area_tabs {
-  border-radius: 2.5rem;
+  // border-radius: 2.5rem;
 
   .open,
   .close {
-    border-radius: 2.5rem;
+    // border-radius: 2.5rem;
   }
 
   .open {
-    background: #06CDA5;
+    background: #07c160;
   }
 
   .close {
-    background: #f43368;
+    background: #ee0a24;
   }
 }
 
@@ -560,7 +560,7 @@
 }
 
 .inputBackground {
-  border-radius: 2.5rem;
+  // border-radius: 2.5rem;
 
   input {
     background: transparent !important;
@@ -571,35 +571,41 @@
   display: flex;
   align-items: center;
   justify-content: center;
-  background: $input_background;
-  border-radius: 2.5rem;
+  // background: $input_background;
+  // border-radius: 2.5rem;
   margin-right: 10px !important;
   padding: 10px 0;
+
+  @include themify() {
+    background: themed("input_background");
+  }
 }
 
 .total-list {
   background: transparent;
-
   display: flex;
-
-  color: $text_color;
-
   font-size: 26px;
   align-items: center;
   justify-content: center;
   margin-bottom: 20px !important;
   position: relative;
 
-  .total-div {
-    flex: 1;
-    text-align: center;
-    padding: 20px 0 !important;
+  @include themify() {
+    color: themed("text_color1");
   }
 }
 
+.total-div {
+  flex: 1;
+  text-align: center;
+  padding: 20px 0 !important;
+}
+
 .active-bg {
-  background: $input_background;
-  border-radius: 2.5rem;
+  @include themify() {
+    background: themed("input_background");
+    color: themed("text_color");
+  }
 }
 
 .buyandSell {
@@ -608,6 +614,8 @@
 }
 
 .select-active {
-  color: $text_color;
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 </style>
diff --git a/src/components/ex-input/index.vue b/src/components/ex-input/index.vue
index 70d8e1a..dd00e2c 100644
--- a/src/components/ex-input/index.vue
+++ b/src/components/ex-input/index.vue
@@ -8,13 +8,13 @@
         <img src="../../assets/image/login/more.png" alt="">
       </div>
       <!-- <p>{{ passwordType }} {{ props.value }}</p> -->
-      <input autocomplete="off" name="username" class="inputBackground" v-if="typeText == 'password'" :type="passwordType"
-        :placeholder="placeholderText" :value="modelValue" @input="onInput" :disabled="disabled" />
+      <input autocomplete="off" name="username" class="inputBackground" v-if="typeText == 'password'"
+        :type="passwordType" :placeholder="placeholderText" :value="modelValue" @input="onInput" :disabled="disabled" />
       <div class="max-input" v-else>
-        <input autocomplete="off" v-if="max > 0" :maxlength="max" class="inputBackground" type="text" :disabled="disabled"
-        :placeholder="placeholderText" :value="modelValue" @input="onInput" />
-        <input autocomplete="off" v-else  class="inputBackground" type="text" :disabled="disabled"
-        :placeholder="placeholderText" :value="modelValue" @input="onInput" />
+        <input autocomplete="off" v-if="max > 0" :maxlength="max" class="inputBackground" type="text"
+          :disabled="disabled" :placeholder="placeholderText" :value="modelValue" @input="onInput" />
+        <input autocomplete="off" v-else class="inputBackground" type="text" :disabled="disabled"
+          :placeholder="placeholderText" :value="modelValue" @input="onInput" />
       </div>
       <div class="rightCon">
         <div class="closeBox" v-if="clearBtn" @click="clear"><img src="../../assets/image/login/clear.png" alt="" />
@@ -111,11 +111,7 @@
 <style lang="scss" scoped>
 @import "@/views/authentication/components/intl.css";
 
-.textColor{
-  color: $text_color;
-}
 .inputCom {
-  color: $text_color;
   padding-bottom: 22px;
   font-size: 14px;
 
@@ -147,7 +143,10 @@
     height: 100%;
     border: none;
     padding-left: 10px;
-    color: $text_color;
+
+    @include themify() {
+      color: themed("text_color");
+    }
   }
 
   .rightCon {
@@ -172,8 +171,11 @@
 
 .tips {
   font-size: 13px;
-  color: $text_color1;
   margin-top: 9px;
+
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 
 input:-webkit-autofill {
@@ -181,16 +183,20 @@
 }
 
 input::-webkit-input-placeholder {
-  color: $dark-grey;
+  @include themify() {
+    color: themed("text_color1");
+  }
 }
 
 .icon {
   transform: scale(1.3);
   display: inline-block;
 }
-.max-input{
+
+.max-input {
   width: 100%;
-  input{
+
+  input {
     width: 100%;
   }
 }
diff --git a/src/components/ex-input/new-input.vue b/src/components/ex-input/new-input.vue
index 76712d7..43031bd 100644
--- a/src/components/ex-input/new-input.vue
+++ b/src/components/ex-input/new-input.vue
@@ -117,19 +117,7 @@
 <style lang="scss" scoped>
 @import "@/views/authentication/components/intl.css";
 
-$inp-b: #f5f5f5;
-
-.inputBackground {
-  background: $inp-b;
-  border: #d5d5d5 solid 1px;
-}
-
-.textColor {
-  color: $mainBgColor;
-}
-
 .inputCom {
-  color: $mainBgColor;
   padding-bottom: 22px;
   font-size: 14px;
 
@@ -140,7 +128,7 @@
     display: flex;
     justify-content: space-between;
     align-items: center;
-    border-radius: 27.5px;
+    border-radius: 4px;
   }
 
   .areaCode {
@@ -161,7 +149,6 @@
     height: 100%;
     border: none;
     padding-left: 10px;
-    color: $mainBgColor;
     border-radius: 20px;
   }
 
@@ -187,16 +174,7 @@
 
 .tips {
   font-size: 13px;
-  color: $text_color1;
   margin-top: 9px;
-}
-
-input:-webkit-autofill {
-  -webkit-box-shadow: 0 0 0 200px $light-grey inset;
-}
-
-input::-webkit-input-placeholder {
-  color: $dark-grey;
 }
 
 .icon {
diff --git a/src/components/fx-footer/index.vue b/src/components/fx-footer/index.vue
index 3e501f9..27b0e0e 100644
--- a/src/components/fx-footer/index.vue
+++ b/src/components/fx-footer/index.vue
@@ -1,7 +1,6 @@
 <template>
   <div class="relative z-30 footer">
-    <van-tabbar route v-model="active" active-color="#292929" inactive-color="7f7f7f" @change="changeIndex" fixed
-      safe-area-inset-bottom>
+    <van-tabbar route v-model="active" @change="changeIndex" fixed safe-area-inset-bottom>
       <!-- <van-tabbar-item name="optional" to="/optional">
         <span :class="[active === 'optional' ? 'active' : '']">{{ $t('Optional') }}</span>
         <template #icon="props">
@@ -11,21 +10,32 @@
       <van-tabbar-item name="homePage" to="/homePage">
         <span :class="[active === 'homePage' ? 'active' : '']">{{ $t('首页') }}</span>
         <template #icon="props">
-          <img :src="props.active ? icon.home.active : icon.home.inactive" />
+          <img :src="props.active ? icon.home.active : icon.home.inactive" v-if="store.state.vant.theme == 'light'" />
+          <img :src="props.active ? icon.home.active2 : icon.home.inactive" v-else />
         </template>
       </van-tabbar-item>
       <van-tabbar-item name="quotes" to="/quotes">
         <span :class="[active === 'quotes' ? 'active' : '']">{{ $t('quotes') }}</span>
         <template #icon="props">
-          <img :src="props.active ? icon.quotes.active : icon.quotes.inactive" />
+          <img :src="props.active ? icon.quotes.active : icon.quotes.inactive" v-if="store.state.vant.theme == 'light'" />
+          <img :src="props.active ? icon.quotes.active2 : icon.quotes.inactive" v-else />
         </template>
       </van-tabbar-item>
       <van-tabbar-item name="trade" to="/trade">
         <span :class="[active === 'trade' ? 'active' : '']">{{ $t('trade') }}</span>
         <template #icon="props">
-          <img :src="props.active ? icon.trade.active : icon.trade.inactive" />
+          <img :src="props.active ? icon.trade.active : icon.trade.inactive" v-if="store.state.vant.theme == 'light'" />
+          <img :src="props.active ? icon.trade.active2 : icon.trade.inactive" v-else />
         </template>
       </van-tabbar-item>
+
+      <van-tabbar-item name="btcusdt" to="/cryptos/trade/btcusdt">
+        <span :class="[active === 'btcusdt' ? 'active' : '']">{{ $t('现货') }}</span>
+        <template #icon="">
+          <img src="@/assets/imgs/footer/f_4a.png" />
+        </template>
+      </van-tabbar-item>
+
       <!-- <van-tabbar-item name="funds" to="/cryptos/funds">
         <span>{{ $t('资金') }}</span>
         <template #icon="props">
@@ -39,7 +49,7 @@
           <img :src="props.active ? icon.news.active : icon.news.inactive" />
         </template>
       </van-tabbar-item> -->
-      
+
       <!-- <van-tabbar-item name="documentation" to="/documentation">
         <span :class="[active === 'documentation' ? 'active' : '']">{{ $t('跟单') }}</span>
         <template #icon="props">
@@ -64,7 +74,8 @@
       <van-tabbar-item name="assets" to="/my/assets">
         <span :class="[active === 'assets' ? 'active' : '']">{{ $t('资产') }}</span>
         <template #icon="props">
-          <img :src="props.active ? icon.assets.active : icon.assets.inactive" />
+          <img :src="props.active ? icon.assets.active : icon.assets.inactive" v-if="store.state.vant.theme == 'light'" />
+          <img :src="props.active ? icon.assets.active2 : icon.assets.inactive" v-else />
         </template>
       </van-tabbar-item>
     </van-tabbar>
@@ -77,6 +88,7 @@
 import { useI18n } from "vue-i18n";
 import { useRoute } from 'vue-router';
 import { watch } from "vue";
+import store from '@/store/store'
 const { t } = useI18n()
 const active = ref('home')
 const route = useRoute()
@@ -127,12 +139,14 @@
   //   inactive: new URL('@/assets/imgs/footer/optional.png', import.meta.url),
   // },
   home: {
-    active: new URL('@/assets/imgs/footer/home-active.png', import.meta.url),
-    inactive: new URL('@/assets/imgs/footer/home.png', import.meta.url),
+    active: new URL('@/assets/imgs/footer/f_1b.png', import.meta.url),
+    active2: new URL('@/assets/imgs/footer/f_1c.png', import.meta.url),
+    inactive: new URL('@/assets/imgs/footer/f_1a.png', import.meta.url),
   },
   quotes: {
-    active: new URL('@/assets/imgs/footer/quotes-active.png', import.meta.url),
-    inactive: new URL('@/assets/imgs/footer/quotes.png', import.meta.url),
+    active: new URL('@/assets/imgs/footer/f_2b.png', import.meta.url),
+    active2: new URL('@/assets/imgs/footer/f_2c.png', import.meta.url),
+    inactive: new URL('@/assets/imgs/footer/f_2a.png', import.meta.url),
   },
   // news: {
   //   active: new URL('@/assets/imgs/footer/news-active.png', import.meta.url),
@@ -143,8 +157,9 @@
     inactive: new URL('@/assets/imgs/footer/quotes.png', import.meta.url),
   },
   trade: {
-    active: new URL('@/assets/imgs/footer/trade-active.png', import.meta.url),
-    inactive: new URL('@/assets/imgs/footer/trade.png', import.meta.url),
+    active: new URL('@/assets/imgs/footer/f_3b.png', import.meta.url),
+    active2: new URL('@/assets/imgs/footer/f_3c.png', import.meta.url),
+    inactive: new URL('@/assets/imgs/footer/f_3a.png', import.meta.url),
   },
   // funds: {
   //   active: new URL('@/assets/imgs/footer/funds-active.png', import.meta.url),
@@ -155,8 +170,9 @@
     inactive: new URL('@/assets/imgs/footer/menu.png', import.meta.url),
   },
   assets: {
-    active: new URL('@/assets/imgs/footer/assets-active.png', import.meta.url),
-    inactive: new URL('@/assets/imgs/footer/assets.png', import.meta.url),
+    active: new URL('@/assets/imgs/footer/f_5b.png', import.meta.url),
+    active2: new URL('@/assets/imgs/footer/f_5c.png', import.meta.url),
+    inactive: new URL('@/assets/imgs/footer/f_5a.png', import.meta.url),
   }
 }
 const changeIndex = (index) => {
@@ -167,22 +183,22 @@
 <style lang="scss" scoped>
 :deep(.van-tabbar-item__text) {
   font-size: 12px;
-  color: #7f7f7f;
+  color: $text_color1;
 }
 
 :deep(.van-tabbar-item--active) {
-  background-color: $white;
+  // background-color: $white;
 }
 
 .van-tabbar--fixed {
   z-index: 10;
   padding-bottom: constant(safe-area-inset-bottom);
   padding-bottom: env(safe-area-inset-bottom);
-  background-color: $white;
+  // background-color: $white;
 }
 
 .van-tabbar--fixed::after {
-  border-color: $white;
+  // border-color: $white;
 }
 
 // .blue {
@@ -190,7 +206,9 @@
 // }
 
 .active {
-  color: #292929 !important;
+  @include themify() {
+    color: themed("tab_color");
+  }
 }
 
 .footer {
diff --git a/src/components/fx-header/index.vue b/src/components/fx-header/index.vue
index 05b8ac5..964c306 100644
--- a/src/components/fx-header/index.vue
+++ b/src/components/fx-header/index.vue
@@ -1,5 +1,8 @@
 <template>
-  <van-nav-bar :title="title" :left-arrow="showLeft" @click-left="onClickLeft">
+  <van-nav-bar :title="title" :leftText="leftText" :left-arrow="showLeft" @click-left="onClickLeft">
+    <template #left v-if="!showLeft">
+      <slot name="left"></slot>
+    </template>
     <template #title>
       <slot name="title"></slot>
     </template>
@@ -37,13 +40,8 @@
 </script>
 
 <style lang="scss" scoped>
-:deep(.van-icon) {
+::v-deep .van-icon {
   font-size: 18px;
-  // color: $text_color;
-  color: $log-c;
-}
-
-:deep(.van-nav-bar__title) {
-  color: $log-c;
+  color: $text_color1;
 }
 </style>
diff --git a/src/components/normal-head/index.vue b/src/components/normal-head/index.vue
index aa251ac..61547cb 100644
--- a/src/components/normal-head/index.vue
+++ b/src/components/normal-head/index.vue
@@ -1,10 +1,6 @@
 <template>
   <div id="normalHead">
-    <van-nav-bar
-        :border="false"
-        :title="title"
-        left-arrow
-        @click-left="onClickLeft">
+    <van-nav-bar :border="false" :title="title" left-arrow @click-left="onClickLeft">
       <template #right>
         <slot></slot>
       </template>
@@ -22,7 +18,7 @@
         this.$router.push('/');
       } else if (this.goAssetsCenter) {
         this.$router.push('/assetsCenter/assets');
-      }else if (this.goPerpetualContract){
+      } else if (this.goPerpetualContract) {
         this.$router.go(-2);
       } else if (this.backFunc) {
         this.backFunc()
@@ -35,7 +31,9 @@
 </script>
 
 <style lang="scss" scoped>
-::v-deep .van-nav-bar__title{
-  color: #333;
+::v-deep .van-nav-bar__title {
+  @include themify() {
+    color: themed("textColor");
+  }
 }
 </style>
diff --git a/src/config/index.js b/src/config/index.js
index 2f88170..550e473 100644
--- a/src/config/index.js
+++ b/src/config/index.js
@@ -65,6 +65,20 @@
 // export const HOST_URL = host_url
 export const HOST_URL = imgUrl
 
+// 多语言选项
+export const lang = [ 
+  { title: '繁体中文', key: 'CN', image: new URL('@/assets/image/lang/taiwan.png', import.meta.url) },
+  { title: '简体中文', key: 'zh-CN', image: new URL('@/assets/image/lang/zh-CN.png', import.meta.url) },
+  { title: 'English', key: 'en', image: new URL('@/assets/image/lang/en-US.png', import.meta.url) },
+  { title: '한국인', key: 'Korean', image: new URL('@/assets/image/lang/Korean.png', import.meta.url) },
+  { title: 'やまと', key: 'Japanese', image: new URL('@/assets/image/lang/Japanese.png', import.meta.url) },
+  { title: 'Deutsch', key: 'de', image: new URL('@/assets/image/lang/de.png', import.meta.url) }, //德语
+  { title: 'Français', key: 'fr', image: new URL('@/assets/image/lang/French.png', import.meta.url) }, //法语
+  { title: 'Tiếng Việt', key: 'vi', image: new URL('@/assets/image/lang/vi.png', import.meta.url) },//越南语
+  { title: 'Italiano', key: 'Italy', image: new URL('@/assets/image/lang/Italy.png', import.meta.url) }, //意大利语
+  { title: 'ไทย', key: 'th', image: new URL('@/assets/image/lang/Thai.png', import.meta.url) }, //泰语
+]
+
 // 公司logo
 export const LOGO = new URL('@/assets/imgs/logo.png', import.meta.url)
 
diff --git a/src/i18n/Deutsch.js b/src/i18n/Deutsch.js
index b70bf82..a45a08f 100644
--- a/src/i18n/Deutsch.js
+++ b/src/i18n/Deutsch.js
@@ -2829,4 +2829,8 @@
     "已分发": "Verteilt",
     "中签数量": "Zuteilungsmenge",
     "停牌中,禁止交易": "Finger weg, ware aus",
+    "安全、便利、社交": "Sicher, bequem, sozial",
+    "公司": "Firma",
+    "法律": "Gesetz",
+    "支援": "Unterstützung",
 }
\ No newline at end of file
diff --git a/src/i18n/Italy.js b/src/i18n/Italy.js
index 381a91f..ad6c1fb 100644
--- a/src/i18n/Italy.js
+++ b/src/i18n/Italy.js
@@ -2919,4 +2919,8 @@
     "已分发": "Distribuito",
     "中签数量": "Quantità di assegnazione",
     "停牌中,禁止交易": "In caso di sospensione, il commercio è vietato",
+    "安全、便利、社交": "Sicuro, comodo, sociale",
+    "公司": "Azienda",
+    "法律": "Legge",
+    "支援": "Supporto",
 }
\ No newline at end of file
diff --git a/src/i18n/Japanese.js b/src/i18n/Japanese.js
index f19f1db..8a540ad 100644
--- a/src/i18n/Japanese.js
+++ b/src/i18n/Japanese.js
@@ -2687,4 +2687,8 @@
     "已分发": "配布済み",
     "中签数量": "当選数量",
     "停牌中,禁止交易": "取引停止中,取引禁止です",
+    "安全、便利、社交": "安全、便利、社交",
+    "公司": "会社",
+    "法律": "法律",
+    "支援": "支援",
 }
\ No newline at end of file
diff --git a/src/i18n/Portuguese.js b/src/i18n/Portuguese.js
index 68a4488..f3ef6da 100644
--- a/src/i18n/Portuguese.js
+++ b/src/i18n/Portuguese.js
@@ -639,4 +639,8 @@
     "已分发": "Distribuído",
     "中签数量": "Quantidade de alocação",
     "停牌中,禁止交易": "Suspensão, proibição de negociação.",
+    "安全、便利、社交": "Seguro, conveniente e social",
+    "公司": "Empresa",
+    "法律": "Legal",
+    "支援": "Suporte",
 }
\ No newline at end of file
diff --git a/src/i18n/Spanish.js b/src/i18n/Spanish.js
index a129118..a9b880f 100644
--- a/src/i18n/Spanish.js
+++ b/src/i18n/Spanish.js
@@ -2602,4 +2602,8 @@
     "已分发": "Distribuido",
     "中签数量": "Cantidad de asignación",
     "停牌中,禁止交易": "Suspendido, sin comercio",
+    "安全、便利、社交": "Seguro, conveniente y social",
+    "公司": "Empresa",
+    "法律": "Ley",
+    "支援": "Apoyo",
 }
\ No newline at end of file
diff --git a/src/i18n/cn.js b/src/i18n/cn.js
index c4e9852..f4b3c0d 100644
--- a/src/i18n/cn.js
+++ b/src/i18n/cn.js
@@ -2808,4 +2808,8 @@
     "已分发": "已分發",
     "中签数量": "中籤數量",
     "停牌中,禁止交易": "停牌中,禁止交易",
+    "安全、便利、社交": "安全, 便利, 社交",
+    "公司": "公司",
+    "法律": "法律",
+    "支援": "支援",
 }
diff --git a/src/i18n/en.js b/src/i18n/en.js
index 2fe07a6..cd201c1 100644
--- a/src/i18n/en.js
+++ b/src/i18n/en.js
@@ -2783,4 +2783,8 @@
     "已分发": "Distributed",
     "中签数量": "Allocation quantity",
     "停牌中,禁止交易": "Trading is suspended. Trading is prohibited.",
+    "安全、便利、社交": "Safe, convenient, social",
+    "公司": "Company",
+    "法律": "Legal",
+    "支援": "Support",
 }
\ No newline at end of file
diff --git a/src/i18n/fa.js b/src/i18n/fa.js
index 216c694..fbdfc55 100644
--- a/src/i18n/fa.js
+++ b/src/i18n/fa.js
@@ -2726,4 +2726,8 @@
     "已分发": "Distribué",
     "中签数量": "Quantité d'attribution",
     "停牌中,禁止交易": "Suspension en cours, commerce interdit",
+    "安全、便利、社交": "Sécurité, commodité, social",
+    "公司": "Entreprise",
+    "法律": "Loi",
+    "支援": "Soutien",
 }
\ No newline at end of file
diff --git a/src/i18n/korean.js b/src/i18n/korean.js
index 31a733f..7c5fe7e 100644
--- a/src/i18n/korean.js
+++ b/src/i18n/korean.js
@@ -2823,4 +2823,8 @@
     "已分发": "배분 완료",
     "中签数量": "당첨 수량",
     "停牌中,禁止交易": "주식 거래 정지 중 거래를 금지하다",
+    "安全、便利、社交": "안전, 편리, 소셜",
+    "公司": "회사",
+    "法律": "법률",
+    "支援": "지원",
 }
\ No newline at end of file
diff --git a/src/i18n/th.js b/src/i18n/th.js
index aaa77be..9b5a78b 100644
--- a/src/i18n/th.js
+++ b/src/i18n/th.js
@@ -2794,4 +2794,8 @@
     "已分发": "แจกจ่ายแล้ว",
     "中签数量": "จำนวนที่ได้รับจัดสรร",
     "停牌中,禁止交易": "ไม่มีการแลกเปลี่ยน",
+    "安全、便利、社交": "ความปลอดภัย ความสะดวก สังคม",
+    "公司": "บริษัท",
+    "法律": "กฎหมาย",
+    "支援": "การสนับสนุน",
 }
\ No newline at end of file
diff --git a/src/i18n/vi.js b/src/i18n/vi.js
index 0a92d4d..bdca5aa 100644
--- a/src/i18n/vi.js
+++ b/src/i18n/vi.js
@@ -2773,4 +2773,8 @@
     "已分发": "Đã phân phối",
     "中签数量": "Số lượng được phân bổ",
     "停牌中,禁止交易": "Bị đình chỉ, không giao dịch",
+    "安全、便利、社交": "An toàn, thuận tiện, xã hội",
+    "公司": "Công ty",
+    "法律": "Luật pháp",
+    "支援": "Hỗ trợ",
 }
\ No newline at end of file
diff --git a/src/i18n/zhcn.js b/src/i18n/zhcn.js
index 4ba935e..1acb5dc 100644
--- a/src/i18n/zhcn.js
+++ b/src/i18n/zhcn.js
@@ -2788,4 +2788,8 @@
     "已分发": "已分发",
     "中签数量": "中签数量",
     "停牌中,禁止交易": "停牌中,禁止交易",
+    "安全、便利、社交": "安全, 便利, 社交",
+    "公司": "公司",
+    "法律": "法律",
+    "支援": "支援",
 }
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
index 1b4606e..5438a20 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1653,7 +1653,7 @@
 })
 router.beforeEach((to, from, next) => {
 	const userStore = useUserStore()
-	console.log(to.name);
+	// console.log(to.name);
 
 	// 钱包登录逻辑
 	// if (to.name === 'Login') {
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index bb2feb0..49a5010 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -2,6 +2,7 @@
 import { _register, _userInfo } from '@/service/user.api'
 import { SET_USERINFO, GET_USERINFO, SET_OUT, CONNECT_WALLET, SET_STATUS } from "@/store/const.store";
 import { _getBalance } from '@/service/user.api.js'
+import { _customer } from "@/service/user.api.js";
 export default {
   namespaced: true,
   state: {
@@ -11,7 +12,8 @@
       usercode: '', // 
       token: '', // 登录token
       username: ''
-    }
+    },
+    customer_service_url: null, // 客服地址
   },
   getters: {
     mingStatus: state => state.status,
@@ -31,6 +33,10 @@
     },
     [SET_OUT](state) { // 退出
       state.userInfo = {}
+    },
+    // 设置客服链接
+    'SET_CUSTOMER_SERVICE_URL'(state, url) {
+      state.customer_service_url = url || null
     }
   },
   actions: {
@@ -47,5 +53,9 @@
       data = await _getBalance()
       commit(SET_USERINFO, { balance: data.money }) // 余额
     },
+    async 'GET_CUSTOMER_SERVICE_URL'({ commit }) { // 获取客服地址
+      let data = await _customer()
+      commit('SET_CUSTOMER_SERVICE_URL', data.url) // 客服地址
+    }
   },
 };
diff --git a/src/store/modules/vant.js b/src/store/modules/vant.js
new file mode 100644
index 0000000..4e04408
--- /dev/null
+++ b/src/store/modules/vant.js
@@ -0,0 +1,18 @@
+
+import {
+    getStorage,setStorage,changeTheme,
+} from '@/utils/utis'
+export default {
+  namespaced: true,
+  state: {
+    theme: 'light' || getStorage('theme'), // 主题 light(白天)/dark(夜间)
+  },
+  mutations: {
+    "SET_THEME"(state, val) { // 修改主题状态
+      state.theme = val;
+      window.document.documentElement.setAttribute('data-theme', val)
+      changeTheme(val)
+      setStorage('theme', val);
+    },
+  },
+};
diff --git a/src/store/store.js b/src/store/store.js
index 0e73552..4624a05 100644
--- a/src/store/store.js
+++ b/src/store/store.js
@@ -6,6 +6,7 @@
 import c2cBuy from "@/store/modules/c2cBuy";
 import c2cSell from "@/store/modules/c2cSell";
 import c2c from "@/store/modules/c2c";
+import vant from "@/store/modules/vant";
 // import exchangeRate from './modules/exchangeRate'
 import createPersistedState from "vuex-persistedstate";
 
@@ -27,6 +28,7 @@
     c2cBuy,
     c2cSell,
     c2c,
+    vant,
     // exchangeRate
   },
 };
diff --git a/src/views/C2C/c2c-trade/page/c2cBuy.vue b/src/views/C2C/c2c-trade/page/c2cBuy.vue
index 9fc0491..a4bdeb9 100644
--- a/src/views/C2C/c2c-trade/page/c2cBuy.vue
+++ b/src/views/C2C/c2c-trade/page/c2cBuy.vue
@@ -4,11 +4,11 @@
       v-if="detail.id">
       <template #trade>
         <div class="buy-item mt-40 w-full mainBackground c2cColor">
-          <div class="buy-item-title flex justify-between font-28 py-34 border-b-1 border-light-grey c2cColor">
-            <div class="flex-1 text-center" :class="{ 'text-grey': type === 'num' }" @click="typeSwitch('amount')">
+          <div class="buy-item-title flex justify-between font-28 py-34 border-b-1 border-light-grey textColor">
+            <div class="flex-1 text-center" :class="{ 'textColor1': type === 'num' }" @click="typeSwitch('amount')">
               {{ $t('按金额购买') }}
             </div>
-            <div class="flex-1 text-center" :class="{ 'text-grey': type === 'amount' }" @click="typeSwitch('num')">
+            <div class="flex-1 text-center" :class="{ 'textColor1': type === 'amount' }" @click="typeSwitch('num')">
               {{ $t('按数量购买') }}
             </div>
           </div>
diff --git a/src/views/C2C/c2cOrder/components/order-data/OrderData.vue b/src/views/C2C/c2cOrder/components/order-data/OrderData.vue
index d957526..d265050 100644
--- a/src/views/C2C/c2cOrder/components/order-data/OrderData.vue
+++ b/src/views/C2C/c2cOrder/components/order-data/OrderData.vue
@@ -103,6 +103,7 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 ::v-deep .van-cell {
   margin-bottom: 46px;
 }
@@ -114,14 +115,21 @@
 }
 
 .order-data {
-  ::v-deep .van-cell-group, .van-cell {
+
+  ::v-deep .van-cell-group,
+  .van-cell {
     margin-bottom: 46px;
-    color: $text_color;
-    background: $main_background;
+
+    @include themify() {
+      color: themed("text_color");
+    }
   }
 
   ::v-deep .van-cell__value {
-    color: $text_color;
+
+    @include themify() {
+      color: themed("text_color1");
+    }
   }
 }
 </style>
diff --git a/src/views/C2C/c2cOrder/components/trade-data/TradeData.vue b/src/views/C2C/c2cOrder/components/trade-data/TradeData.vue
index 12a9c34..b318dd0 100644
--- a/src/views/C2C/c2cOrder/components/trade-data/TradeData.vue
+++ b/src/views/C2C/c2cOrder/components/trade-data/TradeData.vue
@@ -24,7 +24,8 @@
             </div>
           </template>
           <van-cell-group class="payment-method">
-            <van-cell v-for="(item, index) in detail.tradeMethod" :key="index" :title="item.label" :value="item.value" />
+            <van-cell v-for="(item, index) in detail.tradeMethod" :key="index" :title="item.label"
+              :value="item.value" />
           </van-cell-group>
         </van-collapse-item>
       </van-collapse>
@@ -75,17 +76,22 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 .mainBackground {
   ::v-deep {
 
     .van-cell-group,
     .van-cell {
-      color: $text_color1;
-      background: $main_background;
+      @include themify() {
+        color: themed("text_color1");
+        background: themed("main_background");
+      }
     }
 
     .van-cell__value {
-      color: $text_color;
+      @include themify() {
+        color: themed("text_color");
+      }
     }
 
     .order-msg {
diff --git a/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue b/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
index 6172380..e9d3db9 100644
--- a/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
+++ b/src/views/C2C/c2cOrder/order-generation/orderGeneration.vue
@@ -156,16 +156,9 @@
   ::v-deep .van-cell-group,
   .van-cell {
     color: $text_color1;
-    background: $main_background;
+    // background: $main_background;
   }
 
-  ::v-deep .van-cell__value {
-    color: $text_color;
-  }
-
-  .footer-box {
-    background: $main_background;
-  }
 
 }
 </style>
diff --git a/src/views/C2C/c2cOrder/payment/PaymentBuy.vue b/src/views/C2C/c2cOrder/payment/PaymentBuy.vue
index bb18364..fc11655 100644
--- a/src/views/C2C/c2cOrder/payment/PaymentBuy.vue
+++ b/src/views/C2C/c2cOrder/payment/PaymentBuy.vue
@@ -21,7 +21,7 @@
         <div class="flex justify-center items-end mt-42 font-64 font-700">
           <div class="flex justify-center">
             <span class="font-48">
-              {{currencySymbol}}
+              {{ currencySymbol }}
             </span>
             <span class="px-10">{{
               (orderInfo.amount && (orderInfo.amount / 1).toFixed(2)) || "--"
@@ -105,7 +105,8 @@
     </div>
     <div class="mt-92 px-40 flex font-30">
       <van-button class="w-244 h-80 mr-16 rounded-2xl text-black bg-grey border-none" type="primary"
-        @click="show = true">{{ $t("遇到问题?") }}</van-button>
+        @click="show = true">{{
+          $t("遇到问题?") }}</van-button>
       <van-button class="flex-1 h-80 rounded-2xl btnMain text-white border-none" type="primary" @click="onPayed">
         {{ $t("我已付款,通知卖家") }}</van-button>
     </div>
@@ -216,8 +217,11 @@
 
     .van-cell {
       margin-top: 28px;
-      color: $text_color1;
-      background: $tab_background;
+
+      @include themify() {
+        background: themed("tab_background");
+        color: themed("text_color1");
+      }
 
       .van-cell__title,
       .van-cell__value {
@@ -230,8 +234,10 @@
     }
 
     .van-cell-group {
-      color: $text_color1;
-      background: $tab_background;
+      @include themify() {
+        background: themed("tab_background");
+        color: themed("text_color1");
+      }
     }
   }
 }
diff --git a/src/views/C2C/c2cOrder/payment/components/Question.vue b/src/views/C2C/c2cOrder/payment/components/Question.vue
index 8038a0d..9d3c70f 100644
--- a/src/views/C2C/c2cOrder/payment/components/Question.vue
+++ b/src/views/C2C/c2cOrder/payment/components/Question.vue
@@ -1,8 +1,8 @@
 <template>
   <div class="w-full h-full c2cPay-page">
-    <order-nav :back="false" @back="hide"/>
+    <order-nav :back="false" @back="hide" />
     <div class="text-center">
-      <div class="font-48 ">{{ $t('付款遇到问题?')}}</div>
+      <div class="font-48 ">{{ $t('付款遇到问题?') }}</div>
       <!-- <div class="flex justify-center items-center mt-18 font-28">
         <span class="mr-6">{{ $t('付款剩余时间')}}</span>
         <van-count-down class="flex font-700" :time="time">
@@ -13,39 +13,36 @@
             <span class="font-26 colon">:</span>
             <span class="font-26 block">{{ timeData.seconds }}</span>
           </template>
-        </van-count-down>
-      </div> -->
+</van-count-down>
+</div> -->
     </div>
     <div class="px-32 font-32 mt-18">
       <div class="mt-100">
-        <p class="text-grey">Q:{{ $t('不知道如何付款?')}}</p>
-        <p class="mt-28">A:{{ $t('为保障交易安全,部分卖家可能先需要您提供额外资料来证明您的身份,资金来源等真是可信。请与卖家聊天沟通获取交易方式。')}}</p>
+        <p class="text-grey">Q:{{ $t('不知道如何付款?') }}</p>
+        <p class="mt-28">A:{{ $t('为保障交易安全,部分卖家可能先需要您提供额外资料来证明您的身份,资金来源等真是可信。请与卖家聊天沟通获取交易方式。') }}</p>
       </div>
       <div class="mt-80">
-        <p class="text-grey">Q:{{ $t('向卖家提供的收款方式付款,但支付失败了')}}</p>
-        <p class="mt-28">A:{{ $t('请联系卖家确认卖家是否支持其他交易方式。')}}</p>
+        <p class="text-grey">Q:{{ $t('向卖家提供的收款方式付款,但支付失败了') }}</p>
+        <p class="mt-28">A:{{ $t('请联系卖家确认卖家是否支持其他交易方式。') }}</p>
       </div>
       <div class="mt-80">
-        <p class="text-grey">Q:{{ $t('我不想交易了?')}}</p>
-        <p class="mt-28">A:{{ $t('您可以点击取消订单按钮取消该笔订单。')}}</p>
+        <p class="text-grey">Q:{{ $t('我不想交易了?') }}</p>
+        <p class="mt-28">A:{{ $t('您可以点击取消订单按钮取消该笔订单。') }}</p>
       </div>
     </div>
     <div class="mt-492 px-30">
-      <van-button class="w-full h-96  mr-16 font-32 rounded-2xl text-white bg-blue border-none"
-        type="primary" @click="$router.push('/chat')">{{ $t('联系卖家')}}
+      <van-button class="w-full h-96  mr-16 font-32 rounded-2xl text-white bg-blue border-none" type="primary"
+        @click="$router.push('/chat')">{{ $t('联系卖家') }}
       </van-button>
-      <van-button
-          class="w-full h-96  mt-42 font-32 rounded-2xl bg-grey text-black border-none"
-          type="primary"
-          @click="$router.push({path: '/cancelOrder'})"
-      >{{$t('取消订单')}}
+      <van-button class="w-full h-96  mt-42 font-32 rounded-2xl bg-grey text-black border-none" type="primary"
+        @click="$router.push({ path: '/cancelOrder' })">{{ $t('取消订单') }}
       </van-button>
     </div>
   </div>
 </template>
 
 <script>
-import {Button, CountDown} from "vant"
+import { Button, CountDown } from "vant"
 import OrderNav from "@/components/order-nav/OrderNav.vue";
 
 export default {
@@ -65,9 +62,12 @@
 }
 </script>
 
-<style scoped>
+<style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
-.c2cPay-page{
-  color: #333;
+
+.c2cPay-page {
+  @include themify() {
+    color: themed("text_color1") 1px solid;
+  }
 }
 </style>
\ No newline at end of file
diff --git a/src/views/C2C/components/BuyInput.vue b/src/views/C2C/components/BuyInput.vue
index 0b36f60..e853c95 100644
--- a/src/views/C2C/components/BuyInput.vue
+++ b/src/views/C2C/components/BuyInput.vue
@@ -1,26 +1,26 @@
 <template>
   <div class="buy-input relative">
     <img class="w-40 h-40 absolute left-24" src="@/assets/image/payment/search.png" alt="" />
-    <input class="w-full box-border pl-80 pt-10 pb-10" :readonly="readonly" type="text" :value="value" :placeholder="placeholder" @input="changeVal"
-      @focus="focus" />
+    <input class="w-full box-border pl-80 pt-10 pb-10" :readonly="readonly" type="text" :value="value"
+      :placeholder="placeholder" @input="changeVal" @focus="focus" />
   </div>
 </template>
 
 <script>
 export default {
   name: 'BuyInput',
-  props: ['value', 'placeholder','isReadonly'],
+  props: ['value', 'placeholder', 'isReadonly'],
   data() {
     return {
       readonly: false
     }
   },
   mounted() {
-    if(this.isReadonly) {
-        this.readonly = this.isReadonly
-      } else {
-        this.readonly = false
-      }
+    if (this.isReadonly) {
+      this.readonly = this.isReadonly
+    } else {
+      this.readonly = false
+    }
   },
   methods: {
     focus(e) {
@@ -35,6 +35,7 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 input {
   border: none;
   outline: none;
@@ -53,8 +54,11 @@
     width: 100%;
     height: 100%;
     border-radius: 50px;
-    background: $input_background;
-    color: $text_color;
+
+    @include themify() {
+      background: themed("input_background");
+      color: themed("text_color");
+    }
   }
 }
 </style>
diff --git a/src/views/C2C/components/adScreening.vue b/src/views/C2C/components/adScreening.vue
index cbe24ed..fe2aa23 100644
--- a/src/views/C2C/components/adScreening.vue
+++ b/src/views/C2C/components/adScreening.vue
@@ -45,7 +45,8 @@
       </van-collapse>
       <div class="flex mt-56 mb-36 justify-center ">
         <button class="w-370 h-82 tabBackground c2cColor rounded-lg font-400 font-30 border-none mr-21"
-          @click="onReset">{{ $t('重置') }}
+          @click="onReset">{{
+            $t('重置') }}
         </button>
         <button class="w-370 h-82 bg-grey rounded-lg font-400 font-30 border-none"
           :class="[{ 'btnMain': tabindex === 1 }, { 'text-white': tabindex === 1 }]" @click="onConfirm">{{ $t('确认') }}
@@ -159,10 +160,11 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 .active_trade {
   color: #ffffff;
   // background-color: #888;
-  background:$color_main;
+  background: $color_main;
 }
 
 .rotateZ {
@@ -182,7 +184,9 @@
 
 #full {
   ::v-deep .van-cell {
-    background: $main_background;
+    @include themify() {
+      background: themed("main_background");
+    }
   }
 
   ::v-deep .van-cell::after {
@@ -190,15 +194,17 @@
   }
 
   .van-switch {
-    background: $btn_main;
+    // background: $btn_main;
   }
 
   ::v-deep .van-collapse-item__content {
-    background: $main_background;
+    // background: $main_background;
   }
 
   ::v-deep .van-field__control {
-    color: $text_color;
+    @include themify() {
+      color: themed("text_color");
+    }
   }
 }
 </style>
diff --git a/src/views/C2C/components/buy.vue b/src/views/C2C/components/buy.vue
index 9724012..6a9d245 100644
--- a/src/views/C2C/components/buy.vue
+++ b/src/views/C2C/components/buy.vue
@@ -388,7 +388,7 @@
   margin-bottom: 52px;
 }
 
-.tabBackground{
-  background-color: #999;
-}
+// .tabBackground{
+//   background-color: #999;
+// }
 </style>
diff --git a/src/views/C2C/selectLegalCurrency/index.vue b/src/views/C2C/selectLegalCurrency/index.vue
index 7cf4ee2..4a689f9 100644
--- a/src/views/C2C/selectLegalCurrency/index.vue
+++ b/src/views/C2C/selectLegalCurrency/index.vue
@@ -168,11 +168,15 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 ::v-deep .van-index-bar__sidebar {
   display: none;
 }
+
 ::v-deep .van-index-anchor {
-  color: $text_color4;
+  @include themify() {
+    color: themed("text_color1");
+  }
 }
 
 .top {
@@ -318,4 +322,5 @@
   text-align: center;
   color: #868d9a;
   font-size: 28px;
-}</style>
+}
+</style>
diff --git a/src/views/ICO/ico.vue b/src/views/ICO/ico.vue
index 2c03079..2682414 100644
--- a/src/views/ICO/ico.vue
+++ b/src/views/ICO/ico.vue
@@ -15,40 +15,40 @@
                     {{ i.symbol }} ({{ i.name }})
                 </div>
                 <div class="item_2 flex justify-between">
-                    <div class="mr-5">{{$t('申购时间')}}</div>
+                    <div class="mr-5">{{ $t('申购时间') }}</div>
                     <div>{{ i.startDate }} ~ {{ i.endDate }}</div>
                 </div>
                 <div class="item_2 flex justify-between">
-                    <div>{{$t('listingDate')}}</div>
+                    <div>{{ $t('listingDate') }}</div>
                     <div>{{ i.marketDate }}</div>
                 </div>
                 <div class="item_2 flex justify-between">
-                    <div>{{$t('每张金额')}}</div>
+                    <div>{{ $t('每张金额') }}</div>
                     <div>{{ i.unitAmount }}</div>
                 </div>
                 <div class="item_2 flex justify-between">
-                    <div>{{$t('每张手续费')}}</div>
+                    <div>{{ $t('每张手续费') }}</div>
                     <div>{{ i.unitFee }}</div>
                 </div>
                 <div class="item_3 flex justify-center">
-                    <van-button type="default" round size="large" @click="openBuy(i)">{{$t('申购')}}</van-button>
+                    <van-button type="default" round size="large" @click="openBuy(i)">{{ $t('申购') }}</van-button>
                 </div>
             </div>
         </div>
 
-        
-    <!-- 购买弹窗 -->
-    <van-popup v-model:show="show" round >
-        <div class="buy_popup">
-            <div class="buy_title flex justify-center">{{ itemObj.symbol }}</div>
 
-            <van-field v-model="sgNum" type="digit" :label="$t('申购数量')" />
+        <!-- 购买弹窗 -->
+        <van-popup v-model:show="show" round>
+            <div class="buy_popup">
+                <div class="buy_title flex justify-center">{{ itemObj.symbol }}</div>
 
-            <div class="flex justify-center mt-5">
-                <van-button type="default" size="large" round @click="buy">{{$t('confirm')}}</van-button>
+                <van-field v-model="sgNum" type="digit" :label="$t('申购数量')" />
+
+                <div class="flex justify-center mt-5">
+                    <van-button type="default" size="large" round @click="buy">{{ $t('confirm') }}</van-button>
+                </div>
             </div>
-        </div>
-    </van-popup>
+        </van-popup>
     </div>
 </template>
 
@@ -79,9 +79,9 @@
 // 申购
 const buy = () => {
     let opt = {
-        icoProjectId:itemObj.value.id,
+        icoProjectId: itemObj.value.id,
         subscribeNums: sgNum.value,
-        subscriptionType:1,
+        subscriptionType: 1,
     }
     _icoSubscribe(opt).then(res => {
         showToast(t('submitSuccess'))
@@ -94,44 +94,53 @@
 </script>
 
 <style lang="scss" scoped>
-.ico{
+.ico {
     padding: 0rem 1.2rem 2rem 1.2rem;
     font-size: 1.5rem;
-    .buy_popup{
+
+    .buy_popup {
         width: 40rem;
         padding: 1rem;
 
-        .buy_title{
+        .buy_title {
             font-size: 2.5rem;
             font-weight: 700;
             border-bottom: #aaa solid 1px;
             padding: 1rem;
         }
     }
-    
-    .ico_list{
+
+    .ico_list {
         padding: 1rem 0rem;
-        .ico_item{
-            background-color: #eee;
-            padding:.5rem 1rem;
+
+        .ico_item {
+            padding: .5rem 1rem;
             border: #aaa solid 1px;
             border-radius: 1rem;
-            .item_1{
+
+            @include themify() {
+                background-color: themed("input_background");
+            }
+
+            .item_1 {
                 padding: 1rem .5rem;
                 border-bottom: #ccc solid 1px;
                 font-size: 2rem;
                 font-weight: 700;
             }
-            .item_2{
+
+            .item_2 {
                 padding: 1rem .5rem;
                 border-bottom: #ccc solid 1px;
                 font-size: 1.6rem;
                 font-weight: 500;
-                &>div:last-child{
+
+                &>div:last-child {
                     color: #999;
                 }
             }
-            .item_3{
+
+            .item_3 {
                 padding: .5rem;
             }
         }
diff --git a/src/views/ICO/icoRecord.vue b/src/views/ICO/icoRecord.vue
index 4b4847d..787f57d 100644
--- a/src/views/ICO/icoRecord.vue
+++ b/src/views/ICO/icoRecord.vue
@@ -2,7 +2,7 @@
     <div class="icoRecord">
         <fx-header>
             <template v-slot:title>
-                <div>{{$t('申购记录')}}</div>
+                <div>{{ $t('申购记录') }}</div>
             </template>
         </fx-header>
 
@@ -16,7 +16,7 @@
         </van-tabs>
 
         <div class="icoRecord_list">
-            <div class="icoRecord_item mb-5" v-for="(item,index) in recordLIst" :key="index">
+            <div class="icoRecord_item mb-5" v-for="(item, index) in recordLIst" :key="index">
                 <div class="item_1">
                     {{ item.symbol }} ({{ item.name }})
                 </div>
@@ -56,7 +56,7 @@
     let opt = {
         status: active.value
     }
-    if(opt.status == '0') delete opt.status
+    if (opt.status == '0') delete opt.status
     _icoRecordList(opt).then((res) => {
         console.log(res);
         recordLIst.value = res.records
@@ -91,34 +91,41 @@
 </script>
 
 <style lang="scss" scoped>
-.icoRecord{
+.icoRecord {
     padding: 0rem 1.2rem 2rem 1.2rem;
     font-size: 1.5rem;
 
-    .icoRecord_list{
+    .icoRecord_list {
         padding: 1rem 0rem;
-        .icoRecord_item{
-            background-color: #eee;
-            padding:.5rem 1rem;
+
+        .icoRecord_item {
+            padding: .5rem 1rem;
             border: #aaa solid 1px;
             border-radius: 1rem;
-            .item_1{
+
+            @include themify() {
+                background-color: themed("input_background");
+            }
+
+            .item_1 {
                 padding: 1rem .5rem;
                 border-bottom: #ccc solid 1px;
                 font-size: 2rem;
                 font-weight: 700;
             }
-            .item_2{
+
+            .item_2 {
                 padding: 1rem .5rem;
                 border-bottom: #ccc solid 1px;
                 font-size: 1.6rem;
                 font-weight: 500;
 
-                &>div:last-child{
+                &>div:last-child {
                     color: #999;
                 }
             }
-            .item_3{
+
+            .item_3 {
                 padding: .5rem;
             }
         }
diff --git a/src/views/advertiserDetail/index.vue b/src/views/advertiserDetail/index.vue
index 5fc2ad6..8ecdc14 100644
--- a/src/views/advertiserDetail/index.vue
+++ b/src/views/advertiserDetail/index.vue
@@ -11,7 +11,7 @@
         <div>
           <p class="name">{{ c2cUser.nickName }}</p>
           <div class="advertisement flex items-center">
-            <img class="succ" src="@/assets/image/icon-success.png" alt ="" />
+            <img class="succ" src="@/assets/image/icon-success.png" alt="" />
             <span>{{ $t('认证广告方') }}</span>
             <span class="shu">|</span>
             <span>{{ $t('保证金') }} {{ $t(`${c2cUser.deposit}USDT`) }}</span>
@@ -190,15 +190,15 @@
   created() {
     console.log(this.uid);
     otcApi.ctcUserGet({ c2c_user_id: this.uid, language: this.$i18n.locale }).then(res => {
-    // otcApi.ctcUserGet({ id: this.uid, language: this.$i18n.locale }).then(res => {
+      // otcApi.ctcUserGet({ id: this.uid, language: this.$i18n.locale }).then(res => {
       this.userInfo = res.data;
     })
   },
   mounted() {
     // nextTick(() => {
-      setTimeout(() => {
-        this.top = this.$refs.main.getBoundingClientRect().top;
-      }, 1000)
+    setTimeout(() => {
+      this.top = this.$refs.main.getBoundingClientRect().top;
+    }, 1000)
     // })
   },
   methods: {
@@ -242,6 +242,7 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 .box-radius {
   border-radius: 40px;
 }
@@ -320,10 +321,13 @@
 .main-list {
   overflow: auto;
   margin-top: 44px;
-  background: $main_background;
-
+  // background: $main_background;
   border-radius: 80px 80px 0px 0px;
   // padding-bottom: 300px;
+
+  @include themify() {
+    background: themed("main_background");
+  }
 }
 
 .main-box {
@@ -338,9 +342,12 @@
 }
 
 .info {
-  color: $text_color;
   font-size: 30px;
   font-weight: bold;
+
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 
 .gen {
@@ -362,10 +369,12 @@
 
 .num {
   font-size: 40px;
-  color: $text_color;
-
   font-weight: bold;
   margin-bottom: 18px;
+
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 
 .time {
@@ -380,11 +389,13 @@
 }
 
 .g-title {
-  color: $text_color;
-
   font-size: 30px;
   font-weight: bold;
   margin: 60px 32px;
+
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 
 .g-zai {
@@ -397,20 +408,24 @@
 
 .g-data {
   min-height: 380px;
-  background: $main_background;
-
   box-sizing: border-box;
   font-size: 24px;
   color: #868d9a;
   padding: 45px 0 41px 32px;
   position: relative;
-  border-bottom: 1px solid $divi_line;
+
+  @include themify() {
+    background: themed("main_background");
+    border-bottom: 1px solid themed("divi_line");
+  }
 
   .g-dan {
     margin: 8px 0 22px;
-    color: $text_color;
-
     font-weight: bold;
+
+    @include themify() {
+      color: themed("text_color");
+    }
 
     span {
       font-size: 40px;
@@ -489,9 +504,11 @@
 
 .dia-main {
   padding: 60px 64px 44px 48px;
-  color: $text_color;
-
   font-size: 28px;
+
+  @include themify() {
+    color: themed("text_color");
+  }
 
   .mar-70 {
     margin: 70px 0 46px;
@@ -502,9 +519,11 @@
   height: 80px;
   line-height: 80px;
   text-align: center;
-  color: $text_color;
-
   background: #1d91ff;
+
+  @include themify() {
+    color: themed("text_color");
+  }
 }
 
 .bg-blue {
diff --git a/src/views/certificationCenter/index.vue b/src/views/certificationCenter/index.vue
index 7944e3b..d9afe28 100644
--- a/src/views/certificationCenter/index.vue
+++ b/src/views/certificationCenter/index.vue
@@ -40,7 +40,7 @@
             <img :src="handImg(`status${kyc_status}`)" alt="" />
             <span class="textColor-span font-28 flex items-center">{{
               fixState(kyc_status)
-            }}</span>
+              }}</span>
           </div>
         </div>
         <div class="px-32-1">
@@ -66,7 +66,8 @@
             <p v-show="(kyc_status == 3)">{{ $t('certificationRefusal') }}:{{ turnDownMsg }}</p>
           </div>
           <div class="rounded-lg py-26 text-center btn"
-            :class="kyc_status == 0 || kyc_status == 3 ? 'btnMain text-white' : 'bgDark text-grey'" @click="openUlr(1)">{{
+            :class="kyc_status == 0 || kyc_status == 3 ? 'btnMain text-white' : 'bgDark text-grey'" @click="openUlr(1)">
+            {{
               fixBtnState(kyc_status) }}</div>
         </div>
 
@@ -121,12 +122,12 @@
             <span class="textColor mr-10">{{ item.title }}</span>
             <span>{{ item.des }}</span>
           </div>
-          <div class="text-grey text-grey1 font-30 " v-for="(str, index) in item.arr" :class="{ 'colorMain': index == 1 }"
-            :key="index">{{ str }}</div>
+          <div class="text-grey text-grey1 font-30 " v-for="(str, index) in item.arr"
+            :class="{ 'colorMain': index == 1 }" :key="index">{{ str }}</div>
         </div>
         <div class="btnMain btnMain1 text-white font-34 py-26 rounded-lg text-center mt-68" @click="onClose">{{
           $t('confirm')
-        }}</div>
+          }}</div>
       </div>
     </van-popup>
   </div>
@@ -383,7 +384,11 @@
   padding-left: 2rem;
   padding-right: 2rem;
   padding-bottom: 2.625rem;
-  background: $tab_background;
+  // background: $tab_background;
+
+  @include themify() {
+    background: themed("tab_background");
+  }
 
   .user-info {
     overflow: hidden;
@@ -421,7 +426,7 @@
 .textColor4 {
   margin-top: 2rem;
   // background: $light-grey;
-  color: $text_color;
+  // color: $text_color;
   padding: 2px 20px;
   text-align: center;
   height: 40px;
@@ -563,7 +568,8 @@
 .fs {
   font-size: 14px;
   margin-left: 10px;
-  color: $text_color1;;
+  color: $text_color1;
+  ;
 }
 
 .text-grey .img3 {
diff --git a/src/views/chat/index.vue b/src/views/chat/index.vue
index 2174498..03fcf68 100644
--- a/src/views/chat/index.vue
+++ b/src/views/chat/index.vue
@@ -15,18 +15,19 @@
       <div class="pt-30 px-32 pb-32 tabBackground">
         <template v-if="detail.direction == 'buy'">
           <template v-if="detail.state == 0">
-            <div class="font-40 c2cColor" v-if="time > 0">{{ $t('订单将在倒计时结束时取消。') }}&nbsp;<span class="text-blue">{{ time }}</span></div>
+            <div class="font-40 c2cColor" v-if="time > 0">{{ $t('订单将在倒计时结束时取消。') }}&nbsp;<span class="text-blue">{{ time
+                }}</span></div>
 
             <div class="font-40 c2cColor" v-else>{{ $t('您的订单已超时') }}</div>
             <van-count-down class="flex font-700 mx-10" :time="time">
-          <template #default="timeData">
-            <span class="block">{{ timeData.hours }}</span>
-            <span class="colon">:</span>
-            <span class="block">{{ timeData.minutes }}</span>
-            <span class="colon">:</span>
-            <span class="block">{{ timeData.seconds }}</span>
-          </template>
-        </van-count-down>
+              <template #default="timeData">
+                <span class="block">{{ timeData.hours }}</span>
+                <span class="colon">:</span>
+                <span class="block">{{ timeData.minutes }}</span>
+                <span class="colon">:</span>
+                <span class="block">{{ timeData.seconds }}</span>
+              </template>
+            </van-count-down>
             <!-- <span class="block" v-if="time.hours">{{
               time.hours
             }}</span>
@@ -270,7 +271,7 @@
           }, 2000)
         }
       })
-      
+
     },
     onMore() { // 加载更多
       this.fetchList(this.lastMsgId)
@@ -297,7 +298,7 @@
         this.fetchList()
         setTimeout(() => {
           this.bottomScrollClick()
-        },1000)
+        }, 1000)
         // setTimeout(() => {
         //   window.scrollTo(0, document.documentElement.scrollHeight)
         // }, 1000)
@@ -331,6 +332,7 @@
 
 <style lang="scss" scoped>
 @import "@/assets/css/copy2.scss";
+
 .bg-left {
   background: #fff !important;
 }
@@ -354,7 +356,8 @@
     outline: none;
   }
 }
-.chat-page{
+
+.chat-page {
   overflow: auto;
 }
 
@@ -363,7 +366,10 @@
   top: 50%;
   transform: translateY(-50%);
 }
-.bottom-box{
-  background: $main_background !important;
+
+.bottom-box {
+  @include themify() {
+    background: themed("main_background");
+  }
 }
 </style>
diff --git a/src/views/cryptos/AccountChange/index.vue b/src/views/cryptos/AccountChange/index.vue
index 477779f..0646ccf 100644
--- a/src/views/cryptos/AccountChange/index.vue
+++ b/src/views/cryptos/AccountChange/index.vue
@@ -196,7 +196,9 @@
     box-sizing: border-box;
 
     :deep(.van-tab--active .van-tab__text) {
-      color: $text_color;
+      @include themify() {
+        color: themed("text_color");
+      }
     }
 
     :deep(.van-tab__text) {
diff --git a/src/views/cryptos/AssetsCenter/components/history.css b/src/views/cryptos/AssetsCenter/components/history.css
index 3b41d34..bdaf3b2 100644
--- a/src/views/cryptos/AssetsCenter/components/history.css
+++ b/src/views/cryptos/AssetsCenter/components/history.css
@@ -22,7 +22,7 @@
   background-color: #F5D658; }
 
 .green-round {
-  background-color: #06CDA5; }
+  background-color: #07c160; }
 
 .red-round {
   background-color: red; }
diff --git a/src/views/cryptos/Exchange/exchangePage.vue b/src/views/cryptos/Exchange/exchangePage.vue
index 320e332..00455a8 100644
--- a/src/views/cryptos/Exchange/exchangePage.vue
+++ b/src/views/cryptos/Exchange/exchangePage.vue
@@ -3,7 +3,7 @@
     <van-nav-bar left-arrow @click-left="onClickLeft">
 
       <template #right>
-        <van-icon class="exchange-icon" @click="$router.push('/cryptos/exchangeHistory')" name="clock-o" />
+        <van-icon class="exchange-icon textColor" @click="$router.push('/cryptos/exchangeHistory')" name="clock-o" />
       </template>
       <template #title>
         <div class="flex items-center">
@@ -175,10 +175,10 @@
   .exchange-page {
     height: 100vh - 6vh;
 
-    background: $selectSymbol_background;
+    // background: $selectSymbol_background;
 
     :deep(.van-tab--active) {
-      background: $selectSymbol_background;
+      // background: $selectSymbol_background;
       color: $text_color;
     }
 
diff --git a/src/views/cryptos/Funds/components/history.css b/src/views/cryptos/Funds/components/history.css
index 3b41d34..bdaf3b2 100644
--- a/src/views/cryptos/Funds/components/history.css
+++ b/src/views/cryptos/Funds/components/history.css
@@ -22,7 +22,7 @@
   background-color: #F5D658; }
 
 .green-round {
-  background-color: #06CDA5; }
+  background-color: #07c160; }
 
 .red-round {
   background-color: red; }
diff --git a/src/views/cryptos/Trade/index.vue b/src/views/cryptos/Trade/index.vue
index 656348a..c0e139b 100644
--- a/src/views/cryptos/Trade/index.vue
+++ b/src/views/cryptos/Trade/index.vue
@@ -63,8 +63,8 @@
           @cancelOrder="cancelOrder" />
       </div>
       <div class="py-20 px-20" v-else-if="tabType == '2'">
-        <history-item unit="USDT" v-for="item in entrustList" :key="item.order_no" :coinPrice="coinPrice" :entrust="item"
-          :state="item.state" @cancelOrder="cancelOrder" />
+        <history-item unit="USDT" v-for="item in entrustList" :key="item.order_no" :coinPrice="coinPrice"
+          :entrust="item" :state="item.state" @cancelOrder="cancelOrder" />
       </div>
       <div class="py-20 px-20" v-else>
         <div class="mb-20">
@@ -126,7 +126,7 @@
         <k-line-charts :update-key="updateKey" :update-data="quote" :symbol="symbol" v-if="symbol && showCharts"
           :showBottom="false" />
       </div> -->
-      
+
       <!-- <div class="fixed-box">
         <div class="flex justify-between items-center px-30 py-20" @click.stop="handleClickShowKlineChart()">
           <span class="font-30  textColor2">{{ symbol.toUpperCase() }}&nbsp;&nbsp;{{ $t('k线图表') }}</span>
@@ -280,8 +280,8 @@
     handleImage,
     ...mapActions('home', [SET_COIN_LIST]),
     onUpdate(symbol) { // 更新
-      console.log("symbol",symbol);
-      
+      console.log("symbol", symbol);
+
       this.symbol = symbol
       this.closeSocket()
       this.init(symbol)
@@ -398,7 +398,7 @@
           }, 2000)
         }
       }
-      else{
+      else {
         showFailToast(this.$t('请先登录'))
       }
     },
@@ -544,7 +544,8 @@
 @import "@/assets/init.scss";
 
 #cryptos {
-  background-color: $mainbgWhiteColor;
+
+  // background-color: $mainbgWhiteColor;
   :v-deep(.px-4) {
     padding-left: 30px !important;
     padding-right: 30px !important;
@@ -555,11 +556,11 @@
     padding-bottom: 30px !important;
   }
 
-  .diviLine{
+  .diviLine {
     background: $mainbgWhiteColor;
   }
 
-  .border-b-color{
+  .border-b-color {
     border-bottom-color: $inp_b;
     padding-bottom: 5px;
   }
@@ -648,10 +649,12 @@
 
   .select-box {
     width: 220px;
-
-    background: $inp-b;
-
+    // background: $inp-b;
     margin-right: 20px;
+
+    @include themify() {
+      background: themed("tab_background");
+    }
   }
 
 }
diff --git a/src/views/cryptos/pledgeLoan/index.vue b/src/views/cryptos/pledgeLoan/index.vue
index 0acabe2..0235d9b 100644
--- a/src/views/cryptos/pledgeLoan/index.vue
+++ b/src/views/cryptos/pledgeLoan/index.vue
@@ -27,7 +27,7 @@
                                 </div>
                             </div>
                         </div>
-                        <div class="errorInfo font-24 h-28 lh-28 mt-20 mb-30" style="color:#F43368;">{{ errorMsg ? errorMsg
+                        <div class="errorInfo font-24 h-28 lh-28 mt-20 mb-30" style="color:#ee0a24;">{{ errorMsg ? errorMsg
                             : ''
                         }}
                         </div>
diff --git a/src/views/cryptos/promote/init.scss b/src/views/cryptos/promote/init.scss
index 30edd56..f1568ef 100644
--- a/src/views/cryptos/promote/init.scss
+++ b/src/views/cryptos/promote/init.scss
@@ -50,8 +50,9 @@
   $border-grey: $border-grey;
   $blue: #1194F7;
   $light-blue: #1199FA;
-  $red: #F43368;
-  $green: #06CDA5;
+  $red: #ee0a24;
+  //$green: #07c160;
+  $green: #07c160;
   $purple: #9A4DFD;
   $night: #131a2e;
 
@@ -66,10 +67,6 @@
         }
       }
     }
-  }
-
-  :root {
-    --theme-color: #1194F7;
   }
 
   /***************** global use framework *****************/
diff --git a/src/views/customerService/index.vue b/src/views/customerService/index.vue
index 60a2619..640b0f4 100644
--- a/src/views/customerService/index.vue
+++ b/src/views/customerService/index.vue
@@ -5,7 +5,7 @@
       <div class="px-3.5 py-5" :style="{ 'margin-top': navHeight + 'px' }" v-if="state == 0">
         <div class="white">{{ $t('OrdersWill') }} <span style="color: #1194F7">{{ msgTitle }}</span> {{
           $t('afterCancel')
-          }}</div>
+        }}</div>
         <div class="mt-3">
           <span class="mr-1" style="color: #8A919E">{{ $t('lumpSum') }}</span>
           <span class="white">{{ payInfo.currency }} {{ payInfo.amount }}</span>
@@ -22,14 +22,14 @@
           {{ $t('historyMessage') }}
         </div>
         <ul class="flex flex-col pt-3">
-          <li v-for="(item, index) in list" :key="item.id" class="flex flex-col my-3">
+          <li v-for="(item) in list" :key="item.id" class="flex flex-col my-3">
             <!-- <p class="font-13 text-center py-2 text-grey font-15" v-if="showTime(index)">{{
               item.createtime &&
               item.createtime.split(' ')[0]
             }}</p> -->
             <p class="font-13 text-center pb-3 text-grey font-15">{{
               item.createtime
-              }}</p>
+            }}</p>
             <div class="flex" :class="item.send_receive === 'send' ? 'justify-end' : ''">
               <template v-if="item.send_receive === 'receive'">
                 <img src="@/assets/image/service/responser.png" class="w-10 h-10 mr-5" />
@@ -257,7 +257,7 @@
   clearIntervalTimer()
 })
 onBeforeUnmount(() => {
-  let lastTimerId = setInterval(() => {}, 1000);
+  let lastTimerId = setInterval(() => { }, 1000);
   for (let i = 1; i <= lastTimerId; i++) {
     clearInterval(i);
   }
@@ -299,10 +299,13 @@
     height: 0;
     border-top: 5px solid transparent;
     border-bottom: 5px solid transparent;
-    border-right: 10px solid $input_background;
     position: absolute;
     left: -10px;
     top: 10px;
+
+    @include themify() {
+      border-right: 10px solid themed("input_background");
+    }
   }
 }
 
@@ -319,12 +322,15 @@
 }
 
 .chatBg {
-  background: $input_background;
   height: 36px;
   padding: 8px 18px;
   border-radius: 18px;
-  color: $text_color;
   font-size: 14px;
+
+  @include themify() {
+    background: themed("input_background") !important;
+    color: themed("text_color") !important;
+  }
 }
 
 .right-chatBg {
@@ -346,6 +352,8 @@
 }
 
 .left-chatBg {
-  background: $input_background;
+  @include themify() {
+    background: themed("input_background");
+  }
 }
 </style>
diff --git a/src/views/homePage/components/head.vue b/src/views/homePage/components/head.vue
index ca5361e..c6b7bd9 100644
--- a/src/views/homePage/components/head.vue
+++ b/src/views/homePage/components/head.vue
@@ -1,63 +1,82 @@
 <template>
-    <div class="head flex justify-between items-center pl-5 pr-5">
-        <div class="more mr-5"><img src="@/assets/imgs/home/more.png" alt="" @click="onRoute('/my')"></div>
-        <div class="more_input pl-5 pr-5 flex items-center justify-start mr-5 pt-2" @click="onRoute('/optional/search')">
-            <img src="@/assets/imgs/quotes/search.png" alt="">
-            <span class="pl-5">{{ $t('请输入关键词搜寻') }}</span>
-        </div>
-        <div class="scan"><img src="@/assets/image/assets-center/language.png" alt="" @click="onRoute('/language')"></div>
-        <!-- <div class="gift"><img src="@/assets/imgs/home/gift.png" alt=""></div>
-        <div class="scan"><img src="@/assets/imgs/home/scan.png" alt=""></div>
-        <div class="instruction"><img src="@/assets/imgs/home/instruction.png" alt=""></div> -->
-    </div>
+    <van-nav-bar :left-arrow="false" class="head">
+        <template #left>
+            <img src="@/assets/imgs/home/user_img.png" class="user_img" alt="" @click="onRoute('/my')" v-if="userStore.userInfo && userStore.userInfo.token">
+            <div class="textColor2 bzzx" @click="onRoute('/helpCenter')">
+                <van-icon name="search" class="textColor mr-2" />
+                {{ $t("帮助中心") }}
+            </div>
+        </template>
+        <template #right>
+            <img src="@/assets/imgs/home/yl.png" alt="" v-if="store.state.vant.theme == 'light'"
+                @click="store.commit('vant/SET_THEME', 'dark')" class="mr-5 r_img">
+            <img src="@/assets/imgs/home/ty.png" alt="" v-else @click="store.commit('vant/SET_THEME', 'light')"
+                class="mr-5 r_img">
+            <img :src="languageObj.image" alt="" class="gq" @click="onRoute('/language')">
+            <van-icon name="service-o" class="textColor ml-5" @click="onRoute('/customerService')" />
+        </template>
+    </van-nav-bar>
 </template>
 
 <script setup>
 import { useRouter } from 'vue-router';
 import { useI18n } from "vue-i18n";
+import { lang } from "@/config";
+import { useLanguageStore } from '@/store/language.store'
+import { ref } from 'vue';
+import store from '@/store/store'
+import { useUserStore } from '@/store/user';
 
 const { t } = useI18n()
 const router = useRouter()
+const userStore = useUserStore()
+
+// 语言切换
+const languageStore = useLanguageStore()
+const languageObj = lang.find(i => i.key == languageStore.language)
+
+// 获取客服链接
+const customer_service_url = ref(store.state.user.customer_service_url)
 
 const onRoute = (path) => {
-    router.push(path)
+    if (path == '/customerService') {
+        if (customer_service_url.value) {
+            window.location.href = customer_service_url.value;
+        } else {
+            router.push(path)
+        }
+    } else {
+        router.push(path)
+    }
 }
 </script>
 
 
 <style lang="scss" scoped>
 .head {
-    width: 100%;
-    $inp-bg: #F7F7F7;
-    $inp-c: #999;
-    margin-bottom: 1rem;
-
-    .more,
-    .gift,
-    .scan,
-    .instruction {
-        width: 3.2rem;
+    @include themify() {
+        border-bottom: themed("divi_line") 1px solid;
     }
+}
 
-    .more_input {
-        // width: 26rem;
-        width: 100%;
-        height: 4.5rem;
-        background: $inp-bg;
-        border-radius: 2.25rem;
-        color: $inp-c;
-        font-size: 1.5rem;
+.r_img {
+    width: 2.2rem;
+}
 
-        span {
-            text-overflow: ellipsis;
-            overflow: hidden;
-            word-break: break-all;
-            white-space: nowrap;
-        }
+.user_img {
+    width: 3rem;
+    margin-right: 1rem;
+}
 
-        img {
-            width: 2.5rem;
-        }
+.bzzx {
+    padding: 0 10rem 0 1rem;
+    border-radius: 3rem;
+    @include themify() {
+        border: themed("input_border") 1px solid;
     }
 }
+
+.gq {
+    height: 2rem;
+}
 </style>
\ No newline at end of file
diff --git a/src/views/homePage/index.vue b/src/views/homePage/index.vue
index 9f15555..1a10c96 100644
--- a/src/views/homePage/index.vue
+++ b/src/views/homePage/index.vue
@@ -1,146 +1,355 @@
 <template>
-    <div class="home_page">
 
-        <Head></Head>
-        <div class="home_logo flex justify-center"><img src="@/assets/imgs/home/home_logo.png" alt=""></div>
-        <div class="text-center font-bold mt-8 logo_text">{{ $t('复制财富,從此刻開始') }}</div>
-        <div class="text-center mt-2 logo_text_small">{{ $t('超6000種熱門交易類別,立即註冊领取5000USDT') }}!</div>
+  <Head></Head>
+  <div class="home_page">
+    <!-- <Head></Head>
+    <div class="home_logo flex justify-center"><img src="@/assets/imgs/home/home_logo.png" alt=""></div>
+    <div class="text-center font-bold mt-8 logo_text">{{ $t('复制财富,從此刻開始') }}</div>
+    <div class="text-center mt-2 logo_text_small">{{ $t('超6000種熱門交易類別,立即註冊领取5000USDT') }}!</div>
 
 
-        <div class="login_buts flex justify-between pl-10 pr-10 pt-10"
-            v-if="!(userStore.userInfo && userStore.userInfo.token)">
-            <div class="login_but_z text-center" @click="toPage('/register')">{{ $t('register') }}</div>
-            <div class="login_but_d text-center" @click="toPage('/login')">{{ $t('登录') }}</div>
+    <div class="login_buts flex justify-between pl-10 pr-10 pt-10"
+        v-if="!(userStore.userInfo && userStore.userInfo.token)">
+        <div class="login_but_z text-center" @click="toPage('/register')">{{ $t('register') }}</div>
+        <div class="login_but_d text-center" @click="toPage('/login')">{{ $t('登录') }}</div>
+    </div>
+
+    <div class="home_grid flex justify-start flex-wrap">
+        <div class="grid_item pt-10" v-for="value in tabbers" :key="value.key" @click="toPage(value.path)">
+            <div class="grid_item_img flex justify-center"><img :src="value.icon" alt=""></div>
+            <div class="text-center mt-2">{{ value.name }}</div>
         </div>
+    </div>
 
-        <div class="home_grid flex justify-start flex-wrap">
-            <div class="grid_item pt-10" v-for="value in tabbers" :key="value.key" @click="toPage(value.path)">
-                <div class="grid_item_img flex justify-center"><img :src="value.icon" alt=""></div>
-                <div class="text-center mt-2">{{ value.name }}</div>
-            </div>
-        </div>
-
-        <van-notice-bar class="font-26 mt-10 index_notice" background="#fafbfc" :scrollable="false" wrapable
-            color="#333333">
-            <van-swipe vertical class="notice-swipe" :autoplay="2000" :show-indicators="false">
-                <van-swipe-item v-for="item in announceList" :key="item.id" @click="toAnnounceDetail(item.uuid)">
-                    <div class="flex justify-start items-center">
-                        <img :src="item.imgUrl" alt="" class="notice_img mr-5">
-                        <div class="notice_content">
-                            <div>{{ item.startTime }}</div>
-                            <div>{{ item.title }}</div>
-                        </div>
+    <van-notice-bar class="font-26 mt-10 index_notice" background="#fafbfc" :scrollable="false" wrapable
+        color="#333333">
+        <van-swipe vertical class="notice-swipe" :autoplay="2000" :show-indicators="false">
+            <van-swipe-item v-for="item in announceList" :key="item.id" @click="toAnnounceDetail(item.uuid)">
+                <div class="flex justify-start items-center">
+                    <img :src="item.imgUrl" alt="" class="notice_img mr-5">
+                    <div class="notice_content">
+                        <div>{{ item.startTime }}</div>
+                        <div>{{ item.title }}</div>
                     </div>
-                </van-swipe-item>
-            </van-swipe>
-        </van-notice-bar>
+                </div>
+            </van-swipe-item>
+        </van-swipe>
+    </van-notice-bar>
 
-        <!-- <div class="flex justify-between mt-10">
-            <van-swipe class="home_swipe_1" :autoplay="2000">
-                <van-swipe-item v-for="value in swipe1" :key="value.key" class="flex justify-center items-center">
-                    <img :src="value.img" alt="" class="swipe-item-img">
-                </van-swipe-item>
-                <template #indicator="{ active, total }">
-                    <div class="custom-indicator"><span>{{ active + 1 }}</span>/{{ total }}</div>
-                </template>
-</van-swipe>
 
-<div style="width:24rem">
-    <van-swipe class="home_swipe_2" :autoplay="2000">
-        <van-swipe-item v-for="value in swipe2" :key="value.key" class="flex justify-center items-center">
-            <img :src="value.img" alt="" class="swipe-item-img">
-        </van-swipe-item>
-        <template #indicator="{ active, total }">
-                        <div class="custom-indicator flex justify-center items-center">
-                            <div v-for="value in total" :key="value" class="ml-1"
-                                :class="active + 1 === value ? 'active' : ''">
-                            </div>
-                        </div>
-                    </template>
-    </van-swipe>
+    <div id="cryptos" class="pt-10">
+        <list-quatation :listData="qList" :tabShow="false" />
+    </div> -->
+    <van-notice-bar text="通知内容" left-icon="volume" color="orange" background="white"/>
+    <div style="margin: 0 10px">
 
-    <div class="purchase mt-7 font-bold flex justify-between items-center">
-        {{ $t('购买加密货币') }}
-        <van-icon name="arrow" />
-    </div>
-</div>
-</div> -->
-
-        <div id="cryptos" class="pt-10">
-            <list-quatation :listData="qList" :tabShow="false" />
+      <div class="flex-centerY">
+        <div style="font-size: 16px;margin-right: 5px">
+          <van-icon v-if="showMoney" @click="showMoney=!showMoney" name="browsing-history" />
+          <van-icon v-else @click="showMoney=!showMoney" name="closed-eye" />
         </div>
+        <div style="font-size: 14px;color: black">
+          {{$t("总资产")}}(USD)
+        </div>
+      </div>
+      <div class="flex-centerY flex-position-between" style="margin-top: 15px">
+       <div class="flex flex-justify-between">
+         <div style="font-size: 33px;font-weight: bold;color: black">
+           {{showMoney?myAssets.capital.toFixed(0):"*****" }}
+         </div>
+         <div style="font-size: 24px;font-weight: bold;color: black;margin-top: 3px">
+           {{showMoney?myAssets.capital.toFixed(2).substring(myAssets.capital.toFixed(2).indexOf(".")):""}}
+         </div>
+       </div>
+        <div style="background: black;color: white;padding: 4px 17px;border-radius: 90px;font-size: 14px">
+          {{$t("充值")}}
+        </div>
+      </div>
+      <div class="flex-centerY" style="font-size: 12px;color: #999;margin-top: 20px;">
+        <div>
+          {{$t("今日盈亏")}}
+        </div>
+        <div style="margin-left: 15px">
+          {{showMoney?0:"****"}}
+        </div>
+        <div style="margin-left: 15px">
+          {{showMoney?"0%":"****"}}
+        </div>
+      </div>
     </div>
+    <div class="home_1 flex justify-around items-center" style="padding: 20px 0">
+      <div v-for="i in tabbers" :key="i.key" @click="toPage(i.path)">
+        <img :src="i.icon" v-if="storeS.state.vant.theme == 'light'">
+        <img :src="i.icon2" v-else>
+        <div style="font-size: 12px;color: #777">{{ i.name }}</div>
+      </div>
+    </div>
+    <div style="position: relative;margin: 10px 00px;border-radius: 12px;border: 1px #eee solid">
+<!--      <van-notice-bar class="font-26 mt-10 index_notice" :scrollable="false" wrapable>-->
+
+        <van-swipe @change="current=$event" indicator-color="#999" class="notice-swipe" :autoplay="2000"
+                   :show-indicators="false" style="border-radius: 8px;overflow: hidden">
+          <van-swipe-item v-for="item in announceList" style="border-radius: 8px;overflow: hidden;border: #eee 1px solid"  :key="item.id" @click="toAnnounceDetail(item.uuid)">
+<!--            <div class="flex justify-start items-center">-->
+<!--              <img :src="item.imgUrl" style="width:100%" alt="" class="notice_img mr-5">-->
+<!--&lt;!&ndash;              <div class="notice_content textColor">&ndash;&gt;-->
+<!--&lt;!&ndash;                <div>{{ item.startTime }}</div>&ndash;&gt;-->
+<!--&lt;!&ndash;                <div>{{ item.title }}</div>&ndash;&gt;-->
+<!--&lt;!&ndash;              </div>&ndash;&gt;-->
+<!--            </div>-->
+            <img :src="item.imgUrl" alt="" class="notice_img mr-5" style="width:100%;height:100px;border-radius: 8px" >
+          </van-swipe-item>
+        </van-swipe>
+<!--      </van-notice-bar>-->
+      <div class="flex-center" style="position:absolute;bottom:5px;left:0;;z-index:999;width: 100%">
+        <div v-for="(i,index) in announceList">
+          <div v-if="current!=index" style="width:3px;height:3px;background:#bbb;margin-right:5px;border-radius: 3px"></div>
+          <div v-else style="width:3px;height:3px;background:#333;;margin-right:5px;border-radius: 3px"></div>
+        </div>
+      </div>
+    </div>
+    <div style="margin: 15 0px" class="flex-centerY">
+      <div class="flex-centerY" style="flex: 1;margin-right: 20px;border: #eee 1px solid;border-radius: 12px;padding: 10px 10px">
+        <div style="flex: 1">
+          <div style="font-size: 14px;color: black;font-weight: bold">
+            {{$t("信贷")}}
+          </div>
+          <div style="font-size: 12px;color: #999">
+            {{$t("低利率,彈性強,助您持續擁有資金")}}
+          </div>
+        </div>
+        <div >
+          <img src="../../assets/img/img_4.png" style="width: 55px;height: 55px">
+        </div>
+      </div>
+      <div class="flex-centerY" style="flex: 1;border: #eee 1px solid;border-radius: 12px;padding: 10px 10px">
+        <div style="flex: 1">
+          <div style="font-size: 14px;color: black;font-weight: bold">
+            {{$t("OTC")}}
+          </div>
+          <div style="font-size: 12px;color: #999">
+            {{$t("200+支付方式")}}
+          </div>
+        </div>
+        <div >
+          <img src="../../assets/img/img_5.png" style="width: 55px;height: 55px">
+        </div>
+      </div>
+    </div>
+    <div class="tabs flex justify-start items-center textColor1">
+      <div v-for="i in tabList" :key="i" :class="i.key == tab ? 'textColor' : ''" @click="tab = i.key" style="font-size: 16px;margin-top: 20px">
+        {{ i.name }}
+      </div>
+    </div>
+    <div id="cryptos">
+      <list-quatation :listData="qList" :tabShow="false" :tabActive="tab"/>
+    </div>
+
+    <div class="home_2" @click="toPage('/quotes/index')">
+      {{ $t("更多") }}
+      <van-icon name="arrow-down"/>
+    </div>
+
+    <div class="home_3 flex justify-start">
+      <img :src="LOGO" alt="">
+      <span>{{ $t('安全、便利、社交') }}</span>
+    </div>
+
+    <van-collapse v-model="activeName" accordion>
+      <van-collapse-item name="1" class="border_b">
+        <template #title>
+          <div class="flex justify-start items-center">
+            <img src="@/assets/imgs/home/home_23a.png" alt="" class="border_icon"
+                 v-if="storeS.state.vant.theme == 'light'">
+            <img src="@/assets/imgs/home/home_23b.png" alt="" class="border_icon" v-else>
+            {{ $t('公司') }}
+          </div>
+        </template>
+        <div style="padding-left: 2.3rem;">
+          <p @click="toPage('/aboutUs')">{{ $t('关于我们') }}</p>
+          <p @click="toPage('/helpCenter')">{{ $t('帮助中心') }}</p>
+        </div>
+      </van-collapse-item>
+      <van-collapse-item name="2" class="border_b">
+        <template #title>
+          <div class="flex justify-start items-center">
+            <img src="@/assets/imgs/home/home_21a.png" alt="" class="border_icon"
+                 v-if="storeS.state.vant.theme == 'light'">
+            <img src="@/assets/imgs/home/home_21b.png" alt="" class="border_icon" v-else>
+            {{ $t('法律') }}
+          </div>
+        </template>
+        <div style="padding-left: 2.3rem;">
+          <p @click="toPage('/TermsOfService')">{{ $t('serviceConf') }}</p>
+        </div>
+      </van-collapse-item>
+      <van-collapse-item name="3" class="border_b">
+        <template #title>
+          <div class="flex justify-start items-center">
+            <img src="@/assets/imgs/home/home_22a.png" alt="" class="border_icon"
+                 v-if="storeS.state.vant.theme == 'light'">
+            <img src="@/assets/imgs/home/home_22b.png" alt="" class="border_icon" v-else>
+            {{ $t('支援') }}
+          </div>
+        </template>
+        <div style="padding-left: 2.3rem;">
+          <p @click="toPage('/customerService')">{{ $t('onLineService') }}</p>
+        </div>
+      </van-collapse-item>
+    </van-collapse>
+  </div>
 </template>
 
 <script setup>
 import Head from './components/head.vue'
-import { useI18n } from "vue-i18n";
-import { ref, computed, onBeforeUnmount } from 'vue';
-import { useRouter } from 'vue-router';
+import {useI18n} from "vue-i18n";
+import {ref, computed, onBeforeUnmount} from 'vue';
+import {useRouter} from 'vue-router';
 import ListQuatation from "@/components/Transform/list-quotation/index.vue";
-import { _getHomeList } from '@/service/cryptos.api'
-import { _getNewsList1, _getPopupNews } from '@/service/user.api'
-import { useStore } from "vuex";
-import { TIME_OUT } from "@/config";
-import { useUserStore } from '@/store/user';
-import { setStorage,getStorage } from '@/utils/index.js';
-  let catchSymbol = getStorage('symbol')
-  if(!catchSymbol){
-	  setStorage('symbol', 'btcusdt');
-  }
+import {_getHomeList} from '@/service/cryptos.api'
+import {_getassets, _getNewsList1, _getPopupNews} from '@/service/user.api'
+import {useStore} from "vuex";
+import {TIME_OUT, LOGO} from "@/config";
+import {useUserStore} from '@/store/user';
+import {setStorage, getStorage} from '@/utils/index.js';
+import storeS from '@/store/store'
+
+let catchSymbol = getStorage('symbol')
+if (!catchSymbol) {
+  setStorage('symbol', 'btcusdt');
+}
 const userStore = useUserStore()
-const { t } = useI18n()
+const {t} = useI18n()
 const router = useRouter()
 const store = useStore();
+const showMoney=ref(true)
+const myAssets=ref({})
+  _getassets().then(res => {
+    myAssets.value = res
+  })
 
 const tabbers = [
-    // { key: 1, name: t('跟单'), icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url) },
-    // { key: 3, name: `C2C ${t('交易')}`, icon: new URL('@/assets/imgs/home/home_3.png', import.meta.url) },
-    // { key: 4, name: t('邀请好友'), icon: new URL('@/assets/imgs/home/home_4.png', import.meta.url) },
-    { key: 5, name: t('合约'), icon: new URL('@/assets/imgs/home/home_5.png', import.meta.url), path: '/trade/index' },
-    { key: 6, name: t('现货'), icon: new URL('@/assets/imgs/home/home_5.png', import.meta.url), path: '/cryptos/trade/btcusdt' },
-	{ key: 2, name: t('储值'), icon: new URL('@/assets/imgs/home/home_2.png', import.meta.url), path: '/cryptos/recharge/rechargeList?isForeign=true' },
-    // { key: 7, name: t('提现'), icon: new URL('@/assets/imgs/home/home_6.png', import.meta.url), path: '/exchange/withdraw-usdt' },/cryptos/Withdraw/withdrawPage
-	{ key: 7, name: t('提现'), icon: new URL('@/assets/imgs/home/home_6.png', import.meta.url), path: '/cryptos/Withdraw/withdrawPage' },
-    // { key: 8, name: t('卡券中心'), icon: new URL('@/assets/imgs/home/home_7.png', import.meta.url) },
-    { key: 9, name: t('闪兑'), icon: new URL('@/assets/imgs/home/home_8.png', import.meta.url), path: '/cryptos/exchangePage' },
-    // { key: 10, name: t('更多'), icon: new URL('@/assets/imgs/home/home_9.png', import.meta.url) },
+  // { key: 1, name: t('跟单'), icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url) },
+  // { key: 3, name: `C2C ${t('交易')}`, icon: new URL('@/assets/imgs/home/home_3.png', import.meta.url) },
+  // { key: 4, name: t('邀请好友'), icon: new URL('@/assets/imgs/home/home_4.png', import.meta.url) },
+  // { key: 5, name: t('合约'), icon: new URL('@/assets/imgs/home/home_5.png', import.meta.url), path: '/trade/index' },
+  // { key: 6, name: t('现货'), icon: new URL('@/assets/imgs/home/home_5.png', import.meta.url), path: '/cryptos/trade/btcusdt' },
+  // { key: 2, name: t('储值'), icon: new URL('@/assets/imgs/home/home_2.png', import.meta.url), path: '/cryptos/recharge/rechargeList?isForeign=true' },
+  // { key: 7, name: t('提现'), icon: new URL('@/assets/imgs/home/home_6.png', import.meta.url), path: '/exchange/withdraw-usdt' },/cryptos/Withdraw/withdrawPage
+  // { key: 7, name: t('提现'), icon: new URL('@/assets/imgs/home/home_6.png', import.meta.url), path: '/cryptos/Withdraw/withdrawPage' },
+  // { key: 8, name: t('卡券中心'), icon: new URL('@/assets/imgs/home/home_7.png', import.meta.url) },
+  // { key: 10, name: t('更多'), icon: new URL('@/assets/imgs/home/home_9.png', import.meta.url) },
 
-    { key: 11, name: "ICO", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/ICO/ico' },
-    { key: 12, name: "C2C", icon: new URL('@/assets/imgs/home/home_1.png', import.meta.url), path: '/wantBuy' },
+  // {
+  //   key: 9,
+  //   name: t('闪兑'),
+  //   icon: new URL('@/assets/imgs/home/home_12a.png', import.meta.url),
+  //   icon2: new URL('@/assets/imgs/home/home_12b.png', import.meta.url),
+  //   path: '/cryptos/exchangePage'
+  // },
+  // {
+  //   key: 11,
+  //   name: "ICO",
+  //   icon: new URL('@/assets/imgs/home/home_11a.png', import.meta.url),
+  //   icon2: new URL('@/assets/imgs/home/home_11b.png', import.meta.url),
+  //   path: '/ICO/ico'
+  // },
+  // {
+  //   key: 12,
+  //   name: "C2C",
+  //   icon: new URL('@/assets/imgs/home/home_11a.png', import.meta.url),
+  //   icon2: new URL('@/assets/imgs/home/home_11b.png', import.meta.url),
+  //   path: '/wantBuy'
+  // },
+  // {
+  //   key: 13,
+  //   name: t('onLineService'),
+  //   icon: new URL('@/assets/imgs/home/home_10a.png', import.meta.url),
+  //   icon2: new URL('@/assets/imgs/home/home_10b.png', import.meta.url),
+  //   path: '/customerService'
+  // },
+  {
+    key: 9,
+    name: t('申购'),
+    icon: new URL('@/assets/img/img.png', import.meta.url),
+    icon2: new URL('@/assets/imgs/home/home_12b.png', import.meta.url),
+    path: '/ICO/ico'
+  },
+  {
+    key: 9,
+    name: t('C2C'),
+    icon: new URL('@/assets/img/img_1.png', import.meta.url),
+    icon2: new URL('@/assets/imgs/home/home_12b.png', import.meta.url),
+    path: '/wantBuy'
+  },
+  {
+    key: 9,
+    name: t('onLineService'),
+    icon: new URL('@/assets/img/img_3.png', import.meta.url),
+    icon2: new URL('@/assets/imgs/home/home_12b.png', import.meta.url),
+    path: '/customerService'
+  },{
+    key: 9,
+    name: t('闪兑'),
+    icon: new URL('@/assets/img/img_2.png', import.meta.url),
+    icon2: new URL('@/assets/imgs/home/home_12b.png', import.meta.url),
+    path: '/cryptos/exchangePage'
+  },
+]
+
+// 手风琴选中
+const activeName = ref('0')
+
+// tab切换
+const tab = ref(1)
+const current = ref(0)
+const tabList = [
+  {name: t('永续合约'), key: 1},
+  {name: t('现货'), key: 2},
 ]
 
 // 获取公告数据
 const announceList = ref([])
 _getNewsList1({
-    language: useI18n().locale.value,
+  language: useI18n().locale.value,
 }).then(res => {
-    announceList.value = res
+  announceList.value = res
 })
 
 // 跳转公告详情
 const toAnnounceDetail = (announceId) => {
-    if (announceId) {
-        router.push({ path: '/cryptos/AnnounceDetail', query: { id: announceId } })
-    }
+  if (announceId) {
+    router.push({path: '/cryptos/AnnounceDetail', query: {id: announceId}})
+  }
 }
+
+// 获取客服链接
+const customer_service_url = ref(storeS.state.user.customer_service_url)
 
 // 跳转页面
 const toPage = (path) => {
-    if (!path) return
+  if (!path) return
+  if (path == '/customerService') {
+    if (customer_service_url.value) {
+      window.location.href = customer_service_url.value;
+    } else {
+      router.push(path)
+    }
+  } else {
     router.push(path)
+  }
 }
 
 // 轮播图数据
 const swipe1 = ref([
-    { key: 1, img: new URL('@/assets/imgs/home/home_1.png', import.meta.url) },
-    { key: 2, img: new URL('@/assets/imgs/home/home_2.png', import.meta.url) },
-    { key: 3, img: new URL('@/assets/imgs/home/home_3.png', import.meta.url) },
+  {key: 1, img: new URL('@/assets/imgs/home/home_1.png', import.meta.url)},
+  {key: 2, img: new URL('@/assets/imgs/home/home_2.png', import.meta.url)},
+  {key: 3, img: new URL('@/assets/imgs/home/home_3.png', import.meta.url)},
 ])
 const swipe2 = ref([
-    { key: 1, img: new URL('@/assets/imgs/home/home_1.png', import.meta.url) },
-    { key: 2, img: new URL('@/assets/imgs/home/home_2.png', import.meta.url) },
-    { key: 3, img: new URL('@/assets/imgs/home/home_3.png', import.meta.url) },
+  {key: 1, img: new URL('@/assets/imgs/home/home_1.png', import.meta.url)},
+  {key: 2, img: new URL('@/assets/imgs/home/home_2.png', import.meta.url)},
+  {key: 3, img: new URL('@/assets/imgs/home/home_3.png', import.meta.url)},
 ])
 
 //#region 行情数据----------------------------------------
@@ -149,27 +358,27 @@
 const coinArr = computed(() => store.getters['home/coinArr']);
 
 const fetchQList = async () => { // 获取行情
-    const list = await _getHomeList(coinArr.value.join(',')).catch(() => {
-    })
+  const list = await _getHomeList(coinArr.value.join(',')).catch(() => {
+  })
 
-    if (!(list instanceof Array)) {
-        return
-    }
-    qList.value = list;
+  if (!(list instanceof Array)) {
+    return
+  }
+  qList.value = list.slice(0, 4);
 
-    if (timeout.value) {
-        clearTimeout(timeout.value)
-    }
-    timeout.value = setTimeout(async () => {
-        await fetchQList()
-    }, TIME_OUT)
+  if (timeout.value) {
+    clearTimeout(timeout.value)
+  }
+  timeout.value = setTimeout(async () => {
+    await fetchQList()
+  }, TIME_OUT)
 }
 fetchQList()
 
 onBeforeUnmount(() => {
-    if (timeout.value) {
-        clearTimeout(timeout.value)
-    }
+  if (timeout.value) {
+    clearTimeout(timeout.value)
+  }
 })
 //#endregion----------------------------------------------
 
@@ -177,162 +386,233 @@
 
 <style lang="scss">
 .home_page {
-    background: $white;
-    min-height: 100vh;
-    width: 100%;
-    padding: 1rem 1rem 10rem 1rem;
-    // $log-c: #282828;
-    $tab-c: #343434;
-    $inp-c: #999;
-    $crd-b: #f7f7f7;
+  min-height: 100vh;
+  width: 100%;
+  padding: 1rem 1rem 10rem 1rem;
+  font-size: 1.4rem;
 
-    .index_notice {
-        height: 100px;
-        border-radius: 10px;
+  .home_1 {
+    padding-top: 2rem;
 
-        .notice-swipe {
-            height: 82px;
-        }
-
-        .notice_img {
-            height: 80px;
-            width: 100px;
-            // background-color: $icon-bg;
-        }
-
-        .notice_content {
-            &>div:first-child {
-                color: $text_color1;
-            }
-        }
+    div {
+      text-align: center;
+      font-size: 1.4rem;
     }
 
-    .home_logo {
-        width: 100%;
+    img {
+      width: 2.8rem;
+      margin: 0 auto .4rem;
+    }
+  }
 
-        img {
-            width: 22.5rem;
-        }
+  .index_notice {
+    height: 100px;
+    border-radius: 10px;
+    margin-bottom: 2rem;
+
+    @include themify() {
+      background: themed("main_background");
+      border: themed("border_color") solid 1px;
     }
 
-    .logo_text {
-        color: $log-c;
-        font-size: 2rem;
+    .notice-swipe {
+      height: 82px;
     }
 
-    .logo_text_small {
-        color: $inp-c;
-        font-size: 1.5rem;
+    .notice_img {
+      height: 80px;
+      width: 100px;
+      // background-color: $icon-bg;
     }
 
-    .login_buts {
-        width: 100%;
+    .notice_content {
+      & > div:first-child {
+        color: $text_color1;
+      }
+    }
+  }
 
-        &>div {
-            width: 21rem;
-            height: 5rem;
-            line-height: 5rem;
-            border-radius: 2.5rem;
-            font-size: 1.8rem;
-            color: $log-c;
-        }
+  .tabs {
+    font-size: 1.8rem;
 
-        .login_but_z {
-            background: $crd-b;
-        }
+    & > div {
+      margin-right: 2rem;
+    }
+  }
 
-        .login_but_d {
-            background: $bg_yellow;
-        }
+  .home_2 {
+    font-size: 1.5rem;
+    text-align: center;
+    padding-bottom: 1.2rem;
+    margin: 1rem 0 1rem;
+
+    @include themify() {
+      border-bottom: themed("divi_line") solid 1px;
+    }
+  }
+
+  .home_3 {
+    padding: 1rem 0;
+
+    img {
+      height: 2rem;
+      margin-right: 1rem;
+    }
+  }
+
+  .border_b {
+    @include themify() {
+      border-bottom: themed("divi_line") solid 1px;
     }
 
-    .home_grid {
-        width: 100%;
-
-        .grid_item {
-            width: 25%;
-            color: $tab-c;
-            font-size: 1.6rem;
-
-            .grid_item_img {
-                width: 100%;
-
-                img {
-                    width: 6.3rem;
-                }
-            }
-        }
+    .van-collapse-item__title--expanded:after {
+      display: none;
     }
 
-
-    .home_swipe_1,
-    .home_swipe_2 {
-        width: 24rem;
-        border-radius: 1rem;
+    .van-cell__title {
+      font-weight: 600;
     }
 
-    .home_swipe_1 {
-        .van-swipe-item {
-            height: 23rem;
-            background-color: $crd-b;
-
-            .swipe-item-img {
-                width: 100%;
-            }
-        }
-
-        .custom-indicator {
-            position: absolute;
-            left: 5px;
-            bottom: 5px;
-            padding: 2px 5px;
-            font-size: 1.8rem;
-            background: rgba(255, 255, 255, 0.5);
-            color: $inp-c;
-
-            span {
-                color: $log-c;
-            }
-        }
+    .van-collapse-item__content {
+      padding-top: 0;
     }
 
-    .home_swipe_2 {
-        .van-swipe-item {
-            height: 15rem;
-            background-color: $crd-b;
-
-            .swipe-item-img {
-                width: 100%;
-            }
-        }
-
-        .custom-indicator {
-            position: absolute;
-            right: 5px;
-            top: 1rem;
-            padding: 2px 5px;
-
-            div {
-                background: $inp-c;
-                width: 0.6rem;
-                height: 0.6rem;
-                border-radius: 0.3rem;
-                transition: 0.3s all;
-            }
-
-            .active {
-                background: $bg_yellow;
-                width: 2rem;
-            }
-        }
+    p {
+      font-size: 1.4rem;
     }
 
-    .purchase {
-        color: $log-c;
-        background: $crd-b;
-        border-radius: 1rem;
-        padding: 1.6rem 1.6rem 2rem 1.6rem;
-        font-size: 2rem;
+    .border_icon {
+      width: 1.5rem;
+      margin-right: 1rem;
     }
+  }
+
+  // .home_logo {
+  //     width: 100%;
+
+  //     img {
+  //         width: 22.5rem;
+  //     }
+  // }
+
+  // .logo_text {
+  //     color: $log-c;
+  //     font-size: 2rem;
+  // }
+
+  // .logo_text_small {
+  //     color: $inp-c;
+  //     font-size: 1.5rem;
+  // }
+
+  // .login_buts {
+  //     width: 100%;
+
+  //     &>div {
+  //         width: 21rem;
+  //         height: 5rem;
+  //         line-height: 5rem;
+  //         border-radius: 2.5rem;
+  //         font-size: 1.8rem;
+  //         color: $log-c;
+  //     }
+
+  //     .login_but_z {
+  //         background: $crd-b;
+  //     }
+
+  //     .login_but_d {
+  //         background: $bg_yellow;
+  //     }
+  // }
+
+  // .home_grid {
+  //     width: 100%;
+
+  //     .grid_item {
+  //         width: 25%;
+  //         color: $tab-c;
+  //         font-size: 1.6rem;
+
+  //         .grid_item_img {
+  //             width: 100%;
+
+  //             img {
+  //                 width: 6.3rem;
+  //             }
+  //         }
+  //     }
+  // }
+
+
+  // .home_swipe_1,
+  // .home_swipe_2 {
+  //     width: 24rem;
+  //     border-radius: 1rem;
+  // }
+
+  // .home_swipe_1 {
+  //     .van-swipe-item {
+  //         height: 23rem;
+  //         background-color: $crd-b;
+
+  //         .swipe-item-img {
+  //             width: 100%;
+  //         }
+  //     }
+
+  //     .custom-indicator {
+  //         position: absolute;
+  //         left: 5px;
+  //         bottom: 5px;
+  //         padding: 2px 5px;
+  //         font-size: 1.8rem;
+  //         background: rgba(255, 255, 255, 0.5);
+  //         color: $inp-c;
+
+  //         span {
+  //             color: $log-c;
+  //         }
+  //     }
+  // }
+
+  // .home_swipe_2 {
+  //     .van-swipe-item {
+  //         height: 15rem;
+  //         background-color: $crd-b;
+
+  //         .swipe-item-img {
+  //             width: 100%;
+  //         }
+  //     }
+
+  //     .custom-indicator {
+  //         position: absolute;
+  //         right: 5px;
+  //         top: 1rem;
+  //         padding: 2px 5px;
+
+  //         div {
+  //             background: $inp-c;
+  //             width: 0.6rem;
+  //             height: 0.6rem;
+  //             border-radius: 0.3rem;
+  //             transition: 0.3s all;
+  //         }
+
+  //         .active {
+  //             background: $bg_yellow;
+  //             width: 2rem;
+  //         }
+  //     }
+  // }
+
+  // .purchase {
+  //     color: $log-c;
+  //     background: $crd-b;
+  //     border-radius: 1rem;
+  //     padding: 1.6rem 1.6rem 2rem 1.6rem;
+  //     font-size: 2rem;
+  // }
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/src/views/language/index.vue b/src/views/language/index.vue
index e91fdcc..9d9071a 100644
--- a/src/views/language/index.vue
+++ b/src/views/language/index.vue
@@ -20,23 +20,12 @@
 import { useI18n } from "vue-i18n";
 import { SET_LANGUAGE } from '@/store/types.store'
 import { useLanguageStore } from '@/store/language.store'
+import { lang } from '@/config/index'
 const { locale, t } = useI18n()
 
 const languageStore = useLanguageStore()
 
-let lang = ref([
-  { title: '繁体中文', key: 'CN', image: new URL('../../assets/image/lang/taiwan.png', import.meta.url) },
-  { title: '简体中文', key: 'zh-CN', image: new URL('../../assets/image/lang/zh-CN.png', import.meta.url) },
-  { title: 'English', key: 'en', image: new URL('../../assets/image/lang/en-US.png', import.meta.url) },
-  { title: '한국인', key: 'Korean', image: new URL('../../assets/image/lang/Korean.png', import.meta.url) },
-  { title: 'やまと', key: 'Japanese', image: new URL('../../assets/image/lang/Japanese.png', import.meta.url) },
-  { title: 'Deutsch', key: 'de', image: new URL('../../assets/image/lang/de.png', import.meta.url) }, //德语
-  { title: 'Français', key: 'fr', image: new URL('../../assets/image/lang/French.png', import.meta.url) }, //法语
-  { title: 'Tiếng Việt', key: 'vi', image: new URL('../../assets/image/lang/vi.png', import.meta.url) },//越南语
-  { title: 'Italiano', key: 'Italy', image: new URL('../../assets/image/lang/Italy.png', import.meta.url) }, //意大利语
-  { title: 'ไทย', key: 'th', image: new URL('../../assets/image/lang/Thai.png', import.meta.url) }, //泰语
-
-])
+// let lang = lang
 
 onMounted(() => {
   console.log(locale.value)
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index 5dd7b2e..e6be569 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -1,15 +1,18 @@
 <template>
-    <div class="login">
-        <div class="top" @click="onRoute('/homePage/index')"><img src="../../assets/image/icon-close.png" alt="" />
-        </div>
-        <!-- <div class="divider mt-10"></div> -->
+    <van-nav-bar :left-arrow="false" class="head">
+        <template #left>
+            <div class="textColor" @click="onRoute('/')">{{ $t('首页') }}</div>
+        </template>
+        <template #title>
+            <img :src="LOGO" alt="" class="head_logo">
+        </template>
+        <template #right>
+            <img :src="languageObj.image" alt="" class="gq" @click="onRoute('/language')">
+        </template>
+    </van-nav-bar>
 
-        <div class="log flex items-center justify-center flex-col pt-20 mt-10 mb-20 textColor">
-            <img :src="LOGO" alt="">
-            <span class="font-bold text-5xl mt-10">
-                {{ `${$t('欢迎加入')} ${$title}` }}
-            </span>
-        </div>
+    <div class="login">
+        <div class="login_title textColor">{{ $t('login') }}</div>
 
         <ExInput style="padding-bottom:16px !important;" :placeholderText="getRegType(activeIndex, false)"
             v-model="username" :dialCode="dialCode" @selectArea="onSelectArea" :area="isArea" :icon="icon"
@@ -18,12 +21,17 @@
         <ExInput style="padding-bottom:0 !important;" :placeholderText="$t('entryPassword')" v-model="password"
             typeText="password" @pressEnter="verifyLogin" />
 
-        <div class="forget colorMain" @click="$router.push('/forget')">{{ $t('forgetPassword') }}</div>
-        <van-button class="w-full" round style="margin-top:50px;" type="primary" @click="verifyLogin">{{ $t('login') }}
+        <div class="forget" @click="$router.push('/forget')">{{ $t('forgetPassword') }}</div>
+
+        <van-button class="w-full btnBackground2 btnText" style="margin-top:2rem;" type="primary"
+            @click="verifyLogin">{{
+                $t('login')
+            }}
         </van-button>
-        <div class="noTips textColor">
+
+        <div class="noTips textColor1">
             {{ $t('noAccount') }}?
-            <span class="colorMain" @click="$router.push('/register')">
+            <span class="textColor" @click="$router.push('/register')">
                 {{ $t('goRegister') }}</span>
         </div>
         <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list>
@@ -36,13 +44,14 @@
 import { _exchangerateuserconfig } from "@/service/trade.api";
 import { GET_USERINFO } from '@/store/types.store'
 import { useUserStore } from '@/store/user';
+import { useLanguageStore } from '@/store/language.store'
 import { useI18n } from 'vue-i18n'
 import nationalityList from '../authentication/components/nationalityList.vue'
 import { ref } from 'vue';
 import { useRouter } from 'vue-router';
 import { showToast } from "vant";
 import store from '@/store/store'
-import { LOGO } from "@/config";
+import { LOGO, lang } from "@/config";
 const { t } = useI18n()
 
 const router = useRouter()
@@ -157,19 +166,57 @@
         console.log(res)
     })
 }
+
+// 语言切换
+const languageStore = useLanguageStore()
+const languageObj = lang.find(i => i.key == languageStore.language)
+
+const ddddd = () => {
+    if (store.state.vant.theme == 'light') store.commit('vant/SET_THEME', 'dark')
+    else store.commit('vant/SET_THEME', 'light')
+}
 </script>
 
 <style lang="scss" scoped>
+.head_logo {
+    height: 3rem;
+}
+
+.gq {
+    height: 2rem;
+}
+
+.head {
+    @include themify() {
+        border-bottom: themed("divi_line") 1px solid;
+    }
+}
+
+::v-deep .van-nav-bar__text {
+    @include themify() {
+        color: themed("text_color");
+    }
+}
+
 .login {
     width: 100%;
-    padding: 15px;
-    font-size: 13px;
+    font-size: 1.3rem;
     box-sizing: border-box;
-    background: $mainbgWhiteColor;
+    padding: 1.5rem;
     min-height: 100vh;
+
+    @include themify() {
+        background: themed("main_background");
+    }
 
     :deep(.textColor) {
         color: $log-c;
+    }
+
+    .login_title {
+        font-size: 3.5rem;
+        margin-top: 5rem;
+        margin-bottom: 4rem;
     }
 
     .divider {
@@ -188,15 +235,9 @@
     }
 
     .w-full {
-        background: $bg_yellow;
         border: none;
-        color: $mainBgColor;
         font-size: 16px;
         font-weight: 600;
-    }
-
-    .colorMain {
-        color: $bg_yellow;
     }
 }
 
@@ -237,12 +278,19 @@
 }
 
 .forget {
-    font-size: 12px;
-    line-height: 14px;
-    margin-top: 30px;
+    font-size: 1.4rem;
+    line-height: 1.6rem;
+    margin-top: 3.4rem;
+    text-decoration: underline;
 }
 
 .noTips {
-    margin-top: 22px;
+    margin-top: 2.4rem;
+    text-align: center;
+    font-size: 1.5rem;
+
+    span {
+        text-decoration: underline;
+    }
 }
 </style>
\ No newline at end of file
diff --git a/src/views/my/assets.vue b/src/views/my/assets.vue
index 3b70fa7..6fbb714 100644
--- a/src/views/my/assets.vue
+++ b/src/views/my/assets.vue
@@ -1,6 +1,6 @@
 <template>
-    <div class="assets">
-        <div class="assets_title">{{ $t('总资产估值') }}</div>
+    <div class="assets main_background text_color">
+        <!-- <div class="assets_title">{{ $t('总资产估值') }}</div>
         <div class="assets_money font-bold mt-5 flex justify-start items-end">
             {{ currency.currency_symbol }}{{ forexAssets?.money_contract ?
                 (forexAssets?.money_contract * (currency.rate ?? 0)).toFixed(2) : '0.00' }}
@@ -30,7 +30,6 @@
 
         <van-collapse v-model="activeNames" class="mt-10">
             <van-collapse-item :title="$t('分布')" name="1">
-                <!-- <div class="divider"></div> -->
                 <div class="percentage flex just-between items-center">
                     <div :style="`width:${assetObj.capital / (assetObj.capital + assetObj.contract) * 100}%`">
                     </div>
@@ -64,8 +63,6 @@
             <span class="ml-5 flex-1">{{ item.symbol_data.toUpperCase() }}/USDT</span>
 
             <div class="mr-3">
-                <!-- <div class="text-right">0</div>
-                <div class="assets_item_light text-right">0.00</div> -->
                 <div class="text-right" v-if="item.symbol == 'btc'">
                     {{ item.volume ? Number(item.volume).toFixed(8) : '0.0' }}
                 </div>
@@ -83,6 +80,93 @@
                     {{ item.usdt ? Number(item.usdt).toFixed(2) : '0.0' }}
                 </div>
             </div>
+        </div> -->
+
+        <van-nav-bar>
+            <template #left>
+                <div class="assets_tabs flex justify-start items-center textColor1">
+                    <div v-for="i in headList" :key="i" :class="i.key == activeHead ? 'textColor' : ''"
+                        @click="activeHead = i.key">
+                        {{ i.name }}
+                    </div>
+                </div>
+            </template>
+            <template #right v-if="activeHead != 0">
+                <van-icon name="todo-list-o" class="textColor" @click="toPage('/cryptos/accountChange')" />
+            </template>
+        </van-nav-bar>
+
+        <div class="assets_content">
+            <template v-if="activeHead == 0">
+                <div class="assets_1">
+                    {{ $t('总资产估值') }}
+                </div>
+                <div class="assets_money mt-5 flex justify-start items-end">
+                    {{ currency.currency_symbol }}{{ forexAssets?.money_contract ?
+                        (forexAssets?.money_contract * (currency.rate ?? 0)).toFixed(2) : '0.00' }}
+
+                    <div class="pricing_jj ml-5">
+                        {{ pricing }}
+                    </div>
+                    <van-dropdown-menu style="position: relative;top: .5rem;">
+                        <van-dropdown-item v-model="pricing" :options="pricingList" @change="changePricing">
+                            <div @click="toPage('/cryptos/exchangeRate')" class="text-center">{{ $t('更多') }}</div>
+                        </van-dropdown-item>
+                    </van-dropdown-menu>
+                </div>
+            </template>
+
+            <template v-else-if="activeHead == 1">
+                <div class="assets_1">
+                    {{ $t('资金账户') }}
+                </div>
+                <div class="assets_money mt-5 flex justify-start items-end">
+                    ${{ assetObj.capital }}
+                    <span>USD</span>
+                </div>
+                <div class="assets_2 flex justify-around items-center">
+                    <div v-for="i in tabList" :key="i.key" @click="toPage(i.path)">
+                        <img :src="i.icon" alt="" v-if="theme == 'light'">
+                        <img :src="i.icon2" alt="" v-else>
+                        <div>{{ i.name }}</div>
+                    </div>
+                </div>
+
+                <div class="assets_3">
+                    <div class="assets_3_head flex justify-between items-center">
+                        <span>{{ $t('名称') }}</span>
+                        <span>{{ $t('volumn') }}</span>
+                    </div>
+                    <div class="assets_3_item flex justify-between items-center" v-for="i in assetList" :key="i.id">
+                        <div class="flex justify-start items-center">
+                            <img :src="`${HOST_URL}/symbol/${i.symbol_data}.png`" />
+                            <span class="ml-5">{{ i.symbol_data.toUpperCase() }}</span>
+                        </div>
+                        <div>
+                            <p>{{ i.volume ? Number(i.volume).toFixed(8) : '0.0' }}</p>
+                            <p>≈{{ currency.currency_symbol }}
+                                {{ i.usdt ? Number(i.usdt).toFixed(2) : '0.0' }}</p>
+                        </div>
+                    </div>
+                </div>
+            </template>
+
+            <template v-else-if="activeHead == 2">
+                <div class="assets_1">
+                    {{ $t('交易账户') }}
+                </div>
+                <div class="flex justify-between items-center">
+                    <div class="assets_money mt-5 flex justify-start items-end">
+                        ${{ assetObj.contract }}
+                        <span>USD</span>
+                    </div>
+                    <div class="assets_4" @click="toPage('/my/transfer')">
+                        <img :src="tabList[2].icon" alt="" v-if="theme == 'light'">
+                        <img :src="tabList[2].icon2" alt="" v-else>
+                        <p>{{ $t('划转') }}</p>
+                    </div>
+                </div>
+            </template>
         </div>
     </div>
 </template>
@@ -107,12 +191,22 @@
 const { t } = useI18n()
 const activeNames = ref(['1'])
 const { dispatch } = useStore();
+const theme = ref(store.state.vant.theme) // 当前主题模式,白天(light)或夜间(dark)
 
 const tabList = [
-    { key: 1, name: t('充值'), icon: new URL('@/assets/imgs/assets/chonbi.png', import.meta.url), path: '/cryptos/recharge/rechargeList?isForeign=true' },
-    { key: 2, name: t('提现'), icon: new URL('@/assets/imgs/assets/tibi.png', import.meta.url), path: '/cryptos/Withdraw/withdrawPage' },
-    { key: 3, name: t('划转'), icon: new URL('@/assets/imgs/assets/huazhuan.png', import.meta.url), path: '/my/transfer' },
-    { key: 4, name: t('账单'), icon: new URL('@/assets/imgs/assets/zd.png', import.meta.url), path: '/cryptos/accountChange' },
+    {
+        key: 1, name: t('充值'), icon: new URL(`@/assets/theme/white/image/assets/recharge.png`, import.meta.url),
+        icon2: new URL(`@/assets/theme/dark/image/assets/recharge.png`, import.meta.url), path: '/cryptos/recharge/rechargeList?isForeign=true'
+    },
+    {
+        key: 2, name: t('提现'), icon: new URL(`@/assets/theme/white/image/assets/withdrawal.png`, import.meta.url),
+        icon2: new URL(`@/assets/theme/dark/image/assets/withdrawal.png`, import.meta.url), path: '/cryptos/Withdraw/withdrawPage'
+    },
+    {
+        key: 3, name: t('划转'), icon: new URL(`@/assets/theme/white/image/assets/transfer.png`, import.meta.url),
+        icon2: new URL(`@/assets/theme/dark/image/assets/transfer.png`, import.meta.url), path: '/my/transfer'
+    },
+    // { key: 4, name: t('账单'), icon: new URL('@/assets/imgs/assets/zd.png', import.meta.url), path: '/cryptos/accountChange' },
 ]
 
 // 计价切换
@@ -142,6 +236,7 @@
 const currency = ref({})
 const forexAssets = ref({})
 const symbolType = ref('cryptos') //默认etf
+
 const getCurrency = async () => {
     _getExchangeRate({
         token: store.state.user.userInfo.token
@@ -179,16 +274,85 @@
 getassets()
 getCurrency()
 getContractBySymbolType()
-</script>
 
+// 头部切换项
+const activeHead = ref(0)
+const headList = [
+    { name: t('总资产估值'), key: 0 },
+    { name: t('资金账户'), key: 1 },
+    { name: t('交易账户'), key: 2 },
+]
+</script>
 
 <style lang="scss" scoped>
 .assets {
     min-height: 100vh;
-    background: $mainbgWhiteColor;
-    padding: 2.8rem 2rem 10rem 2rem;
-    $assets_title_color: #9a9a9a;
-    color: $assets_title_color;
+    font-size: 1.4rem;
+
+    ::v-deep .van-nav-bar {
+        border-bottom: $divi_line solid 1px;
+    }
+
+    justify-content: space-around;
+
+    .assets_tabs {
+        font-size: 2rem;
+
+        &>div {
+            margin-right: 2rem;
+        }
+    }
+
+    .assets_content {
+        padding: 16px 16px 10rem;
+    }
+
+    .assets_1 {
+        font-size: 1.5rem;
+    }
+
+    .assets_2 {
+        margin-top: 3rem;
+        font-size: 1.4rem;
+
+        &>div {
+            text-align: center;
+
+            img {
+                height: 2.4rem;
+                margin: 0 auto .4rem;
+            }
+        }
+    }
+
+    .assets_3 {
+        margin-top: 3rem;
+
+        .assets_3_item {
+            margin-bottom: 3.2rem;
+
+            p {
+                text-align: end;
+            }
+
+            img {
+                width: 3.6rem;
+            }
+        }
+
+        .assets_3_head {
+            border-bottom: $divi_line solid 1px;
+            margin-bottom: 1.7rem;
+        }
+    }
+
+    .assets_4 {
+        padding-right: 2rem;
+
+        img {
+            height: 2.4rem;
+        }
+    }
 
     :deep(.van-cell) {
         padding-left: 0;
@@ -214,12 +378,20 @@
     }
 
     .assets_money {
-        color: $text_color4;
-        font-size: 3.4rem;
+        font-size: 3rem;
 
         .pricing_jj {
             font-size: 1.6rem;
             margin-right: -8px;
+            position: relative;
+            top: .5rem;
+        }
+
+        &>span {
+            font-size: 1.6rem;
+            margin-left: .6rem;
+            position: relative;
+            top: 0.5rem;
         }
 
         :deep(.van-dropdown-menu__bar) {
@@ -270,12 +442,6 @@
             }
         }
     }
-
-    // .divider {
-    //     height: 1rem;
-    //     border-radius: 0.5rem;
-    //     background: $bg_yellow;
-    // }
 
     .percentage {
         div {
diff --git a/src/views/my/index.vue b/src/views/my/index.vue
index 934dd8a..bec45ad 100644
--- a/src/views/my/index.vue
+++ b/src/views/my/index.vue
@@ -1,17 +1,10 @@
 <template>
-  <section class="my-index" >
-    <!-- <fx-header :back="false" :title="$t('my')">
+  <section class="my-index">
+    <assets-head title="">
       <template v-slot:right>
         <van-icon name="service-o" size="24" @click="$router.push('/customerService')"></van-icon>
       </template>
-    </fx-header> -->
-	<assets-head title="">
-		<!-- <img src="../../../assets/image/assets-center/exchange.png" alt="exchange-img" class="w-44 h-38"
-			@click="goRouter('/customerService')" /> -->
-			<template v-slot:right>
-			  <van-icon name="service-o" size="24" @click="$router.push('/customerService')"></van-icon>
-			</template>
-	</assets-head>
+    </assets-head>
     <div class="px-8 mt-4">
       <h1 class="text-2xl font-bold title" v-if="!(userStore.userInfo && userStore.userInfo.token)">{{
         $t('welcome')
@@ -27,7 +20,8 @@
       <div class="mt-4 flex items-start" v-else>
         <img class="w-24 h-24" src="@/assets/image/avatar.png" alt="avatar" />
         <div class="ml-5 pt-1 flex flex-col justify-center">
-          <div class="font-bold text-lg name" style="width: 200px;overflow-wrap: break-word;">{{ userStore.userInfo && userStore.userInfo.username }}</div>
+          <div class="font-bold text-lg name" style="width: 200px;overflow-wrap: break-word;">{{ userStore.userInfo &&
+            userStore.userInfo.username }}</div>
           <div class="text-sm text-gray-400 mt-5 flex items-center id-text">
             ID:{{ userStore.userInfo && userStore.userInfo.usercode }}<img class="w-8 h-8 ml-4"
               src="@/assets/image/idcopy.png" alt="id" @click="copy" /></div>
@@ -41,7 +35,7 @@
             <div class="label pl-2 pr-2 ml-3" :class="{ 'green': kycHighStatus == 2 }">
               {{ kycHighStatus == 2 ? $t('高级用户') : $t('普通用户') }}
             </div>
-			<div class="pl-2 pr-2 ml-3" style="font-size: 12px;">{{$t('信用分')}} : {{userdata.creditScore}}</div>
+            <div class="pl-2 pr-2 ml-3" style="font-size: 12px;">{{ $t('信用分') }} : {{ userdata.creditScore }}</div>
           </div>
         </div>
       </div>
@@ -56,20 +50,11 @@
             <img src="@/assets/imgs/my/安全.png" alt="">
             <div>{{ t('安全') }}</div>
           </div>
-<!--          <div class="label_item flex flex-col items-center justify-center mt-8" @click="onRoute('/changePassword')">
-            <img src="@/assets/imgs/my/密码.png" alt="">
-            <div>{{ t('修改密码') }}</div>
-          </div> -->
           <div class="label_item flex flex-col items-center justify-center mt-8"
             @click="onRoute('/cryptos/accountChange')">
             <img src="@/assets/imgs/my/记录.png" alt="">
             <div>{{ t('账变记录') }}</div>
           </div>
-          <!-- <div class="label_item flex flex-col items-center justify-center mt-8"
-            @click="onRoute('/certificationCenter')">
-            <img src="@/assets/imgs/my/身份认证.png" alt="">
-            <div>{{ t('authVerify') }}</div>
-          </div> -->
         </div>
       </div>
     </template>
@@ -104,7 +89,7 @@
       <div class="px-4 mt-4">
         <p class="w-full flex mt-4 gap-x-4">
           <van-button type="primary" class="flex-1" round color="#f7b600" @click="loginOut">{{ $t('loginOut')
-            }}</van-button>
+          }}</van-button>
         </p>
       </div>
     </template>
@@ -114,60 +99,57 @@
 <script setup>
 import { reactive, onMounted, ref, computed } from 'vue';
 import { useRouter } from 'vue-router';
-import { _getIdentify, _getKycHighLevel, _logOut,_info ,_customer } from "@/service/user.api.js";
+import { _getIdentify, _getKycHighLevel, _logOut, _info, _customer } from "@/service/user.api.js";
 import { useUserStore } from '@/store/user';
 import { useI18n } from "vue-i18n";
 import useClipboard from "vue-clipboard3";
 import { showToast } from "vant";
 import addBankIcon from '@/assets/image/userCenter/addBank.png'
-import kycHighStatusIcon from '@/assets/image/userCenter/kycHighStatus.png'
 import store from '@/store/store'
 const { t } = useI18n()
 const { toClipboard } = useClipboard();
 
 const router = useRouter()
 const userStore = useUserStore()
-const customer_service_url = ref(null)
+const customer_service_url = ref(store.state.user.customer_service_url)
 const status = ref(null)
 const kycHighStatus = ref(null)
 const userdata = ref({})
-const state = reactive({
-  cellList: [
-    {
-      title: t('safe'), list: [
-        { icon: 'shield-o', title: t('safe'), path: '/safety' },
-        { icon: 'setting-o', title: t('changePassword'), path: '/changePassword' },
-        { icon: addBankIcon, title: t('AddPaymentMethod'), path: '/payMentMethod/list' }
-      ]
-    },
-    {
-      title: t('universal'), list: [
-        { icon: 'font-o', title: t('language'), path: '/language' },
-        { icon: 'service-o', title: t('onLineService'), path: '/customerService' },
-        { icon: 'idcard', title: t('authVerify'), path: '/certificationCenter', show: true },
-        { icon: 'todo-list-o', title: t('账变记录'), path: '/cryptos/accountChange' },
-        { icon: 'gold-coin-o', title: t('计价方式'), path: '/cryptos/exchangeRate' },
-      ]
-    }
-  ]
-})
+
+const tabs = [
+  { icon: new URL('@/assets/imgs/my/my_1a.png', import.meta.url), icon2: new URL('@/assets/imgs/my/my_1b.png', import.meta.url), title: t('authVerify'), path: '/certificationCenter' },
+  { icon: new URL('@/assets/imgs/my/my_1a.png', import.meta.url), icon2: new URL('@/assets/imgs/my/my_1b.png', import.meta.url), title: t('高级认证'), path: '/advancedCtf' },
+  { icon: new URL('@/assets/imgs/my/my_2a.png', import.meta.url), icon2: new URL('@/assets/imgs/my/my_2b.png', import.meta.url), title: t('安全'), path: '/safety' },
+  { icon: new URL('@/assets/imgs/my/my_3a.png', import.meta.url), icon2: new URL('@/assets/imgs/my/my_3b.png', import.meta.url), title: t('账变记录'), path: '/cryptos/accountChange' },
+]
+const tabs2 = [
+  { title: t('language'), path: '/language' },
+  { title: t('onLineService'), path: '/customerService' },
+  { title: t('计价方式'), path: '/cryptos/exchangeRate' },
+  { title: t('AddPaymentMethod'), path: '/payMentMethod/list' },
+  { title: t('帮助中心'), path: '/helpCenter' },
+  { title: t('关于我们'), path: '/aboutUs' },
+]
+
+// 跳转
 const onRoute = (path) => {
-  if(path=='/customerService'){
-	  if(customer_service_url.value){
-		  window.location.href = customer_service_url.value;
-	  }else{
-		  router.push(path)
-	  }
-  }else{
-	  router.push(path)
+  if (path == '/customerService') {
+    if (customer_service_url.value) {
+      window.location.href = customer_service_url.value;
+    } else {
+      router.push(path)
+    }
+  } else {
+    router.push(path)
   }
 }
 onMounted(() => {
   if (userStore.userInfo && userStore.userInfo.token) {
     getIdentify()
     getKycHighLevel()
-	getinfo()
-	getcustomer()
+    getinfo()
+  } else {
+    router.push('/login')
   }
 })
 const cellList = computed(() => {
@@ -211,8 +193,9 @@
       // }
     ]
   }
-
 })
+
+// 退出登录
 const loginOut = () => {
   _logOut({
     token: userStore.userInfo.token
@@ -221,14 +204,7 @@
     store.state.user.userInfo = {}
   })
 }
-const getcustomer = () => {
-  _customer().then((data) => {
-	customer_service_url.value = data.customer_service_url
-	console.log(customer_service_url);
-  }).catch(error => {
-    console.error('Error fetching data:', error);
-  });
-};
+// 用户信用分
 const getinfo = () => {
   _info().then((data) => {
     userdata.value = data;  // 确保 userdata 被正确声明
@@ -236,16 +212,19 @@
     console.error('Error fetching data:', error);
   });
 };
+// 用户认证状态
 const getIdentify = () => {
   _getIdentify().then(data => {
     status.value = data.status
   })
 }
+// 当前用户等级
 const getKycHighLevel = () => {
   _getKycHighLevel().then((data) => {
     kycHighStatus.value = data.status
   })
 }
+// 复制用户code
 const copy = async () => {
   try {
     await toClipboard(userStore.userInfo && userStore.userInfo.usercode);
@@ -257,6 +236,7 @@
 </script>
 
 <style lang="scss" scoped>
+
 :deep(.van-cell-group__title) {
   // background: $main2_background !important;
   background: $inp-b !important;
@@ -320,9 +300,11 @@
   .label_item {
     width: 33%;
     font-size: 12px;
-	div{
-		text-align: center;
-	}
+
+    div {
+      text-align: center;
+    }
+
     img {
       width: 32%;
       margin-bottom: 3px;
diff --git a/src/views/payMentMethod/list.vue b/src/views/payMentMethod/list.vue
index fc92540..6610a27 100644
--- a/src/views/payMentMethod/list.vue
+++ b/src/views/payMentMethod/list.vue
@@ -17,7 +17,7 @@
     </ul>
     <div class="px-4 pt-6 fixed-wrap">
       <van-button class="w-full" color="#f7b600" type="primary" round @click="submit">{{ $t('AddPaymentMethod')
-        }}</van-button>
+      }}</van-button>
     </div>
   </div>
 </template>
@@ -63,11 +63,13 @@
     // height: calc(100vh - 170px);
 
     li {
-      // background: $border_color;
-      background: $inp-b;
       border-bottom: 1px solid $bg_yellow;
       position: relative;
 
+      @include themify() {
+        background: themed("tab_background");
+      }
+
       .edit-img {
         width: 17px;
         height: 17px;
diff --git a/src/views/payMentMethod/selectPay.vue b/src/views/payMentMethod/selectPay.vue
index ed59a90..831e708 100644
--- a/src/views/payMentMethod/selectPay.vue
+++ b/src/views/payMentMethod/selectPay.vue
@@ -107,8 +107,11 @@
 <style lang="scss" scoped>
 .selectPay {
   .index-anchor {
-    // background: #232C46;
-    background: $mainbgWhiteColor;
+    // background: $mainbgWhiteColor;
+
+    @include themify() {
+      background: themed("main_background");
+    }
   }
 
 
@@ -129,6 +132,9 @@
 .item-cell {
   border-bottom: 1px solid #474b62;
   font-size: 15px;
-  color: $log-c;
+
+  @include themify() {
+    color: themed("text_color1");
+  }
 }
 </style>
\ No newline at end of file
diff --git a/src/views/quotes/List.vue b/src/views/quotes/List.vue
index de6ba7b..e46622e 100644
--- a/src/views/quotes/List.vue
+++ b/src/views/quotes/List.vue
@@ -1,8 +1,15 @@
 <template>
-  <div class="quotes-list pt-5 pb-60 pl-5 pr-5" id="cryptos">
+  <div class="quotes-list pt-5 pb-40 pl-5 pr-5" id="cryptos">
 
     <Head></Head>
-    <list-quatation :listData="qList" />
+
+    <div class="tabs flex justify-start items-center textColor1">
+      <div v-for="i in tabList" :key="i" :class="i.key == tab ? 'textColor' : ''" @click="tab = i.key">
+        {{ i.name }}
+      </div>
+    </div>
+
+    <list-quatation :listData="qList" :tabActive="tab" />
   </div>
 </template>
 
@@ -11,11 +18,12 @@
 import { useStore } from "vuex";
 import { _getHomeList } from '@/service/cryptos.api'
 import { TIME_OUT } from "@/config";
+import { useI18n } from "vue-i18n";
 import ListQuatation from "@/components/Transform/list-quotation/index.vue";
 import Head from './components/head.vue'
 
 const store = useStore();
-console.log("aaaaaaaaaaa");
+const { t } = useI18n()
 
 //#region 行情数据----------------------------------------
 let qList = ref([])
@@ -46,15 +54,32 @@
   }
 })
 //#endregion----------------------------------------------
+
+// tab切换
+const tab = ref(1)
+const tabList = [
+  { name: t('永续合约'), key: 1 },
+  { name: t('现货'), key: 2 },
+]
 </script>
 <style lang="scss" scoped>
 .quotes-list {
-  background: $mainbgWhiteColor;
+  // background: $mainbgWhiteColor;
   min-height: 100vh;
 
   :deep(.active) {
     background-color: $bg_yellow;
-    border-radius: 3rem;
+    // border-radius: 3rem;
+  }
+
+  .tabs {
+    font-size: 1.8rem;
+    margin-bottom: -2rem;
+    margin-top: 2rem;
+
+    &>div {
+      margin-right: 2rem;
+    }
   }
 }
 </style>
\ No newline at end of file
diff --git a/src/views/quotes/components/head.vue b/src/views/quotes/components/head.vue
index bd47298..29eaa18 100644
--- a/src/views/quotes/components/head.vue
+++ b/src/views/quotes/components/head.vue
@@ -1,6 +1,7 @@
 <template>
     <div class="head flex justify-between items-center pl-5 pr-5">
-        <div class="more_input pl-20 pr-5 flex items-center justify-start mr-5 pt-2" @click="onRoute('/optional/search')">
+        <div class="more_input pl-20 pr-5 flex items-center justify-start mr-5 pt-2"
+            @click="onRoute('/optional/search')">
             <img src="@/assets/imgs/quotes/search.png" alt="">
             <span class="pl-5">{{ $t('请输入关键词搜寻') }}</span>
         </div>
@@ -30,11 +31,16 @@
     .more_input {
         width: 100%;
         height: 4.5rem;
-        background: $inp-bg;
+        // background: $inp-bg;
         border-radius: 2.25rem;
-        color: $inp-c;
+        // color: $inp-c;
         font-size: 1.5rem;
 
+        @include themify() {
+            background: themed("input_background");
+            color: themed("text_color1");
+        }
+
         span {
             text-overflow: ellipsis;
             overflow: hidden;
diff --git a/src/views/register/gooleVerify.vue b/src/views/register/gooleVerify.vue
index 4372242..88b7a73 100644
--- a/src/views/register/gooleVerify.vue
+++ b/src/views/register/gooleVerify.vue
@@ -34,7 +34,7 @@
             <p>{{ $t('precautionsTips1') }}</p>
             <p>{{ $t('precautionsTips2') }}</p>
         </div>
-        <van-button class="w-full" style="margin-top:10px;" type="primary" @click="submit">{{ $t('sure') }}
+        <van-button class="w-full btnBackground2 btnText" style="margin-top:10px;" type="primary" @click="submit">{{ $t('sure') }}
         </van-button>
     </div>
 </template>
diff --git a/src/views/register/identity.vue b/src/views/register/identity.vue
index dd37d0b..ff9c347 100644
--- a/src/views/register/identity.vue
+++ b/src/views/register/identity.vue
@@ -82,7 +82,7 @@
                     </div>
                 </div> -->
             </template>
-            <van-button class="w-full" style="margin-top:10px;" type="primary" @click="onSubmit">{{ $t('nextStep') }}
+            <van-button class="w-full btnBackground2 btnText" style="margin-top:10px;" type="primary" @click="onSubmit">{{ $t('nextStep') }}
             </van-button>
             <nationality-list ref='controlChildRef' :title="$t('selectNation')" @getName="getName" v-if="!disabled()">
             </nationality-list>
diff --git a/src/views/register/index.vue b/src/views/register/index.vue
index dc0613c..b9dc1bc 100644
--- a/src/views/register/index.vue
+++ b/src/views/register/index.vue
@@ -1,27 +1,35 @@
 <template>
-    <div class="register">
-        <div class="top" @click="router.go(-1)"><img src="../../assets/image/icon-close.png" alt=""></div>
+    <van-nav-bar :left-arrow="false" class="head">
+        <template #title>
+            <img :src="LOGO" alt="" class="head_logo">
+        </template>
+        <template #right>
+            <img :src="languageObj.image" alt="" class="gq" @click="onRoute('/language')">
+        </template>
+    </van-nav-bar>
+
+    <div class="register mainBackground">
         <Step :step="1"></Step>
         <div class="title textColor">{{ $t('register') }}</div>
         <div class="flex re-tab">
-            <div class="textColor1" :class="activeIndex == 0 ? 'active' : ''" @click="changeIndex(0)">{{
+            <div :class="activeIndex == 0 ? 'active textColor' : 'textColor1'" @click="changeIndex(0)">{{
                 $t('account')
-            }}</div>
+                }}</div>
             <!-- <div class="textColor1" :class="activeIndex == 1 ? 'active' : ''" @click="changeIndex(1)">{{ $t('email') }}
             </div>
             <div class="textColor1" :class="activeIndex == 2 ? 'active' : ''" @click="changeIndex(2)">{{
                 $t('phoneNum')
             }}</div> -->
         </div>
-        <ExInput :label="getRegType(activeIndex, true)" :placeholderText="getRegType(activeIndex, false)" v-model="username"
-            :area="isArea" :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
+        <ExInput :placeholderText="getRegType(activeIndex, false)" v-model="username" :area="isArea"
+            :dialCode="dialCode" @selectArea="onSelectArea" :icon="icon" />
 
-        <ExInput :label="$t('setPassword')" :placeholderText="$t('passwordTips')" v-model="password" typeText="password" />
-        <ExInput :label="$t('repassword')" :placeholderText="$t('surePassword')" v-model="repassword" typeText="password" />
-        <ExInput :label="$t('setSafeword')" :placeholderText="$t('safewordTips')" v-model="safeword" typeText="password"
+        <ExInput :placeholderText="$t('passwordTips')" v-model="password" typeText="password" />
+        <ExInput :placeholderText="$t('surePassword')" v-model="repassword" typeText="password" />
+
+        <ExInput :placeholderText="$t('safewordTips')" v-model="safeword" typeText="password"
             v-if="activeIndex === 1" />
         <div class="inputCom" v-if="activeIndex === 1">
-            <p class="label  textColor">{{ $t('验证码') }}</p>
             <div class="iptbox inputBackground">
                 <input class="inputBackground textColor" type="text" :placeholder="$t('entryVerifyCode')"
                     v-model="verifyCode">
@@ -30,20 +38,25 @@
                 </span>
             </div>
         </div>
-        <ExInput :label="$t('invitCode')" :placeholderText="$t('entryInvitCode')" v-model="invitCode" :clearBtn="false" />
+        <ExInput :placeholderText="$t('entryInvitCode')" v-model="invitCode" :clearBtn="false" />
         <div class="protocol textColor">
             <i @click="agreeProt">
                 <img v-show="agree" src="../../assets/image/login/prot2.png" alt="" />
                 <img v-show="!agree" src="../../assets/image/login/prot1.png" alt="" />
             </i>
-            {{ $t('readAgree') }}<span class="colorMain" @click="router.push('/TermsOfService')">{{
-                $t('serviceConf')
-            }}</span>
+            {{ $t('readAgree') }}
+            <span @click="router.push('/TermsOfService')">
+                《{{ $t('serviceConf') }}》
+            </span>
         </div>
-        <van-button class="w-full" style="margin-top:10px;" type="primary" @click="register">{{ $t('register') }}
+        <van-button class="w-full btnBackground2 btnText" style="margin-top:10px;" type="primary" @click="register">{{
+            $t('register') }}
         </van-button>
-        <div class="noTips textColor">{{ $t('hasAccount') }}<span class="colorMain" @click="router.push('/login')">
-                {{ $t('goLogin') }}</span>
+        <div class="noTips textColor1">
+            {{ $t('hasAccount') }}
+            <span class="textColor" @click="router.push('/login')">
+                {{ $t('goLogin') }}
+            </span>
         </div>
         <nationality-list ref='controlChildRef' :title="$t('selectArea')" @getName="getName"></nationality-list>
 
@@ -55,6 +68,8 @@
 </template>
 
 <script setup>
+import { LOGO, lang } from "@/config";
+import { useLanguageStore } from '@/store/language.store'
 import ExInput from "@/components/ex-input/index.vue";
 import Step from "./step.vue";
 import { _registerUser, _sendVerifyCode } from "@/service/login.api";
@@ -173,7 +188,7 @@
     agree.value = !agree.value
 }
 const register = () => {
-    console.log(activeIndex.value,'activeIndex.value')
+    console.log(activeIndex.value, 'activeIndex.value')
     if (activeIndex.value == 0) {
         if (username.value == '') {
             showToast(t('entryAccount'));
@@ -198,7 +213,7 @@
             return
         }
     } else if (activeIndex.value == 2) {
-        if(!(/(^[1-9]\d*$)/.test(username.value))){
+        if (!(/(^[1-9]\d*$)/.test(username.value))) {
             showToast(t('entryPhone'));
             return
         }
@@ -285,21 +300,38 @@
     }
 }
 
+// 语言切换
+const languageStore = useLanguageStore()
+const languageObj = lang.find(i => i.key == languageStore.language)
 
 </script>
 
 <style lang="scss" scoped>
-.activeBKClick {
-    &:active {
-        background: $tab_background;
-        opacity: 0.5;
-    }
+// .activeBKClick {
+//     &:active {
+//         background: $tab_background;
+//         opacity: 0.5;
+//     }
+// }
+
+// .activeClick {
+//     &:active {
+//         background: $mainbgWhiteColor;
+//         opacity: 0.5;
+//     }
+// }
+
+.head_logo {
+    height: 3rem;
 }
 
-.activeClick {
-    &:active {
-        background: $mainbgWhiteColor;
-        opacity: 0.5;
+.gq {
+    height: 2rem;
+}
+
+.head {
+    @include themify() {
+        border-bottom: themed("divi_line") 1px solid;
     }
 }
 
@@ -308,7 +340,6 @@
     box-sizing: border-box;
     padding: 16px;
     font-size: 13px;
-    background-color: $mainbgWhiteColor;
 }
 
 .top {
@@ -332,30 +363,33 @@
     margin-bottom: 22px;
 
     div {
-        padding: 0 18px;
-        height: 34px;
-        line-height: 34px;
-        text-align: center;
-        border-radius: 4px;
-        margin-right: 10px;
+        // padding: 0 18px;
+        // height: 34px;
+        // line-height: 34px;
+        // text-align: center;
+        // border-radius: 4px;
+        // margin-right: 10px;
+        margin-right: 2rem;
     }
 
     .active {
-        // background: $US_tabActice_background;
-        background: $bg_yellow;
-        // color: $color_main;
-        color: $text_color4;
+        // background: $bg_yellow;
+        // color: $text_color4;
     }
 }
 
 .forget {
-    color: $color_main;
     font-size: 12px;
     line-height: 14px;
 }
 
 .noTips {
     margin-top: 24px;
+    text-align: center;
+
+    span {
+        text-decoration: underline;
+    }
 }
 
 .protocol {
@@ -373,11 +407,15 @@
             height: 100%;
         }
     }
+
+    span {
+        text-decoration: underline;
+        text-decoration-style: dashed;
+    }
 }
 
 .iptbox {
     height: 44px;
-    margin-top: 8px;
     margin-bottom: 18px;
     padding: 0 20px;
     display: flex;
@@ -389,10 +427,6 @@
         flex: 1;
         height: 100%;
         border: none;
-    }
-
-    span {
-        color: $color_main;
     }
 }
 </style>
diff --git a/src/views/register/setFond.vue b/src/views/register/setFond.vue
index 1e9e99c..650f982 100644
--- a/src/views/register/setFond.vue
+++ b/src/views/register/setFond.vue
@@ -10,7 +10,8 @@
                 typeText="password" />
             <ExInput :label="$t('repassword')" :placeholderText="$t('surePassword')" v-model="repassword"
                 typeText="password" />
-            <van-button class="w-full" style="margin-top:10px;" type="primary" @click="submitBind">{{ $t('sure') }}
+            <van-button class="w-full btnBackground2 btnText" style="margin-top:10px;" type="primary"
+                @click="submitBind">{{ $t('sure') }}
             </van-button>
         </div>
     </div>
diff --git a/src/views/trade/index.vue b/src/views/trade/index.vue
index 9201c55..b82074f 100644
--- a/src/views/trade/index.vue
+++ b/src/views/trade/index.vue
@@ -76,14 +76,14 @@
           </div>
         </section>
         <div class=" rounded-view" key="x">
-          <PerpetualOpen class="pl-30 pr-30" :key="keyIndex + 'a'" :selectIndex="selectIndex" :symbol="symbol"
+          <PerpetualOpen :key="keyIndex + 'a'" :selectIndex="selectIndex" :symbol="symbol"
             :green-data="bids" :red-data="asks" :price="price" :init-open="initOpen" :init-close="initClose"
             :init-futrue="initFutrue" :currentType="currentType" @changeValueBack="changeValueBack"
             @changeCurrentType="changeCurrentType" @ordered="onOrdered">
           </PerpetualOpen>
           <!-- <div class="line"></div> -->
           <!-- 委托/持仓-->
-          <PerpetualOrder class="pl-30 pr-30" :key="keyIndex + 'b'" :symbol="symbol" :order-cur="orderCur"
+          <PerpetualOrder :key="keyIndex + 'b'" :symbol="symbol" :order-cur="orderCur"
             :order-hold="orderHold" :topIndex="selectIndex" :futrue-hold="futrueHold" :futrue-histroy="futrueHistroy"
             @tab="onTab" @recall="onRecall">
           </PerpetualOrder>
@@ -143,14 +143,14 @@
             </div>
           </div>
         </section>
-        <div class=" rounded-view" key="y">
-          <PerpetualOpen class="pl-30 pr-30" :key="keyIndex + 'c'" :selectIndex="selectIndex" :symbol="symbol"
+        <div class="rounded-view" key="y">
+          <PerpetualOpen :key="keyIndex + 'c'" :selectIndex="selectIndex" :symbol="symbol"
             :green-data="bids" :red-data="asks" :price="price" :init-open="initOpen" :init-close="initClose"
             :init-futrue="initFutrue" @ordered="onOrdered" @changeValueBack="changeValueBack">
           </PerpetualOpen>
           <!-- <div class="line"></div> -->
           <!-- 委托/持仓-->
-          <PerpetualOrder class="pl-30 pr-30" :key="keyIndex + 'd'" :symbol="symbol" :order-cur="orderCur"
+          <PerpetualOrder :key="keyIndex + 'd'" :symbol="symbol" :order-cur="orderCur"
             :order-hold="orderHold" :price="price" :topIndex="selectIndex" :futrue-hold="futrueHold"
             :futrue-histroy="futrueHistroy" @tab="onTab" @recall="onRecall">
           </PerpetualOrder>
@@ -719,8 +719,8 @@
 @import "@/assets/init.scss";
 
 .trade_new {
-  color: $log-c;
-  background: $mainbgWhiteColor;
+  // color: $log-c;
+  // background: $mainbgWhiteColor;
   min-height: 100vh;
   padding: 1.4rem 1.4rem 7rem 1.4rem;
 
@@ -750,23 +750,11 @@
 }
 
 #cryptos {
-  background: $mainbgWhiteColor;
+  // background: $mainbgWhiteColor;
   $inp-b: #f7f7f7;
 
   :deep(.textColor) {
     color: $log-c;
-  }
-
-  :deep(.long) {
-    color: $log-c !important;
-    background: $bg_yellow;
-    border-radius: 5rem;
-  }
-
-  :deep(.short) {
-    color: $log-c !important;
-    background: $bg_yellow;
-    border-radius: 5rem;
   }
 
   :deep(.poecs) {
@@ -777,20 +765,15 @@
     background: $inp-b;
   }
 
-  :deep(.greyBg) {
-    background: $inp-b;
-  }
+  // :deep(.greyBg) {
+  //   background: $inp-b;
+  // }
 
-  :deep(.option-box) {
-    background: $inp-b;
-    box-shadow: 0px 0px 0.1875rem 0.1875rem $inp-b;
-    color: $log-c !important;
-  }
-
-  :deep(.select-box) {
-    background: $inp-b;
-    color: $log-c !important;
-  }
+  // :deep(.option-box) {
+  //   background: $inp-b;
+  //   box-shadow: 0px 0px 0.1875rem 0.1875rem $inp-b;
+  //   color: $log-c !important;
+  // }
 
   :deep(.rounded-lg) {
     background: $inp-b;
diff --git a/tailwind.config.cjs b/tailwind.config.cjs
index ec64e40..876152c 100644
--- a/tailwind.config.cjs
+++ b/tailwind.config.cjs
@@ -14,8 +14,8 @@
         gray: '#878A96', // 文字颜色
         'btn-gray': '#F1F3F9', // 背景灰
         'bd-gray': '#C3C4CD', // 下单border
-        up: '#06CDA5',  // 升
-        down: '#F43368' // 降
+        up: '#07c160',  // 升
+        down: '#ee0a24' // 降
       }
     },
   },
diff --git a/vite.config.js b/vite.config.js
index 0f9037d..0910bc5 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -7,6 +7,8 @@
 import { visualizer } from 'rollup-plugin-visualizer'
 import legacy from '@vitejs/plugin-legacy';
 
+const scss_path = `@/assets/theme/index.scss`
+
 const isVisualizer = process.env.VISUALIZER === 'show'
 export default defineConfig({
   base: '',  //H5打包用
@@ -25,9 +27,9 @@
   css: {
     preprocessorOptions: {
       scss: {
-        additionalData: `@import "@/assets/css/variable.scss";`
+        additionalData: `@import "@/assets/css/variable.scss";@import "${scss_path}";`
       },
-    }
+    },
   },
   server: {
     open: true,
diff --git a/yarn.lock b/yarn.lock
index 9560802..9e3e252 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3,34 +3,34 @@
 
 
 "@ampproject/remapping@^2.2.0":
-  "integrity" "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg=="
-  "resolved" "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz"
-  "version" "2.2.1"
+  version "2.2.1"
+  resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz"
+  integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
   dependencies:
     "@jridgewell/gen-mapping" "^0.3.0"
     "@jridgewell/trace-mapping" "^0.3.9"
 
 "@antfu/utils@^0.7.2":
-  "integrity" "sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g=="
-  "resolved" "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.2.tgz"
-  "version" "0.7.2"
+  version "0.7.2"
+  resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.2.tgz"
+  integrity sha512-vy9fM3pIxZmX07dL+VX1aZe7ynZ+YyB0jY+jE6r3hOK6GNY2t6W8rzpFC4tgpbXUYABkFQwgJq2XYXlxbXAI0g==
 
 "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.21.4":
-  "integrity" "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g=="
-  "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz"
-  "version" "7.21.4"
+  version "7.21.4"
+  resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz"
+  integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
   dependencies:
     "@babel/highlight" "^7.18.6"
 
 "@babel/compat-data@^7.22.0":
-  "integrity" "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ=="
-  "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz"
-  "version" "7.22.3"
+  version "7.22.3"
+  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz"
+  integrity sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==
 
-"@babel/core@^7.0.0", "@babel/core@^7.12.10":
-  "integrity" "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA=="
-  "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz"
-  "version" "7.22.1"
+"@babel/core@^7.12.10":
+  version "7.22.1"
+  resolved "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz"
+  integrity sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==
   dependencies:
     "@ampproject/remapping" "^2.2.0"
     "@babel/code-frame" "^7.21.4"
@@ -42,64 +42,64 @@
     "@babel/template" "^7.21.9"
     "@babel/traverse" "^7.22.1"
     "@babel/types" "^7.22.0"
-    "convert-source-map" "^1.7.0"
-    "debug" "^4.1.0"
-    "gensync" "^1.0.0-beta.2"
-    "json5" "^2.2.2"
-    "semver" "^6.3.0"
+    convert-source-map "^1.7.0"
+    debug "^4.1.0"
+    gensync "^1.0.0-beta.2"
+    json5 "^2.2.2"
+    semver "^6.3.0"
 
 "@babel/generator@^7.12.11", "@babel/generator@^7.22.0":
-  "integrity" "sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A=="
-  "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz"
-  "version" "7.22.3"
+  version "7.22.3"
+  resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz"
+  integrity sha512-C17MW4wlk//ES/CJDL51kPNwl+qiBQyN7b9SKyVp11BLGFeSPoVaHrv+MNt8jwQFhQWowW88z1eeBx3pFz9v8A==
   dependencies:
     "@babel/types" "^7.22.3"
     "@jridgewell/gen-mapping" "^0.3.2"
     "@jridgewell/trace-mapping" "^0.3.17"
-    "jsesc" "^2.5.1"
+    jsesc "^2.5.1"
 
 "@babel/helper-compilation-targets@^7.22.1":
-  "integrity" "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz"
-  "version" "7.22.1"
+  version "7.22.1"
+  resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz"
+  integrity sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==
   dependencies:
     "@babel/compat-data" "^7.22.0"
     "@babel/helper-validator-option" "^7.21.0"
-    "browserslist" "^4.21.3"
-    "lru-cache" "^5.1.1"
-    "semver" "^6.3.0"
+    browserslist "^4.21.3"
+    lru-cache "^5.1.1"
+    semver "^6.3.0"
 
 "@babel/helper-environment-visitor@^7.22.1":
-  "integrity" "sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz"
-  "version" "7.22.1"
+  version "7.22.1"
+  resolved "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz"
+  integrity sha512-Z2tgopurB/kTbidvzeBrc2To3PUP/9i5MUe+fU6QJCQDyPwSH2oRapkLw3KGECDYSjhQZCNxEvNvZlLw8JjGwA==
 
 "@babel/helper-function-name@^7.21.0":
-  "integrity" "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz"
-  "version" "7.21.0"
+  version "7.21.0"
+  resolved "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz"
+  integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==
   dependencies:
     "@babel/template" "^7.20.7"
     "@babel/types" "^7.21.0"
 
 "@babel/helper-hoist-variables@^7.18.6":
-  "integrity" "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz"
-  "version" "7.18.6"
+  version "7.18.6"
+  resolved "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz"
+  integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==
   dependencies:
     "@babel/types" "^7.18.6"
 
 "@babel/helper-module-imports@^7.21.4":
-  "integrity" "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz"
-  "version" "7.21.4"
+  version "7.21.4"
+  resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz"
+  integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==
   dependencies:
     "@babel/types" "^7.21.4"
 
 "@babel/helper-module-transforms@^7.22.1":
-  "integrity" "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz"
-  "version" "7.22.1"
+  version "7.22.1"
+  resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz"
+  integrity sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==
   dependencies:
     "@babel/helper-environment-visitor" "^7.22.1"
     "@babel/helper-module-imports" "^7.21.4"
@@ -111,75 +111,75 @@
     "@babel/types" "^7.22.0"
 
 "@babel/helper-simple-access@^7.21.5":
-  "integrity" "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz"
-  "version" "7.21.5"
+  version "7.21.5"
+  resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz"
+  integrity sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==
   dependencies:
     "@babel/types" "^7.21.5"
 
 "@babel/helper-split-export-declaration@^7.18.6":
-  "integrity" "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz"
-  "version" "7.18.6"
+  version "7.18.6"
+  resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz"
+  integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==
   dependencies:
     "@babel/types" "^7.18.6"
 
 "@babel/helper-string-parser@^7.21.5":
-  "integrity" "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz"
-  "version" "7.21.5"
+  version "7.21.5"
+  resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz"
+  integrity sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==
 
 "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
-  "integrity" "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz"
-  "version" "7.19.1"
+  version "7.19.1"
+  resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz"
+  integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
 
 "@babel/helper-validator-option@^7.21.0":
-  "integrity" "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ=="
-  "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz"
-  "version" "7.21.0"
+  version "7.21.0"
+  resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz"
+  integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==
 
 "@babel/helpers@^7.22.0":
-  "integrity" "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w=="
-  "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz"
-  "version" "7.22.3"
+  version "7.22.3"
+  resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz"
+  integrity sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==
   dependencies:
     "@babel/template" "^7.21.9"
     "@babel/traverse" "^7.22.1"
     "@babel/types" "^7.22.3"
 
 "@babel/highlight@^7.18.6":
-  "integrity" "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g=="
-  "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz"
-  "version" "7.18.6"
+  version "7.18.6"
+  resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz"
+  integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
   dependencies:
     "@babel/helper-validator-identifier" "^7.18.6"
-    "chalk" "^2.0.0"
-    "js-tokens" "^4.0.0"
+    chalk "^2.0.0"
+    js-tokens "^4.0.0"
 
-"@babel/parser@^7.12.11", "@babel/parser@^7.15.8", "@babel/parser@^7.20.15", "@babel/parser@^7.21.3", "@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.6.0", "@babel/parser@^7.7.0", "@babel/parser@^7.9.6":
-  "integrity" "sha512-vrukxyW/ep8UD1UDzOYpTKQ6abgjFoeG6L+4ar9+c5TN9QnlqiOi6QK7LSR5ewm/ERyGkT/Ai6VboNrxhbr9Uw=="
-  "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.22.3.tgz"
-  "version" "7.22.3"
+"@babel/parser@^7.12.11", "@babel/parser@^7.20.15", "@babel/parser@^7.21.3", "@babel/parser@^7.21.9", "@babel/parser@^7.22.0", "@babel/parser@^7.6.0", "@babel/parser@^7.7.0", "@babel/parser@^7.9.6":
+  version "7.22.3"
+  resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.22.3.tgz"
+  integrity sha512-vrukxyW/ep8UD1UDzOYpTKQ6abgjFoeG6L+4ar9+c5TN9QnlqiOi6QK7LSR5ewm/ERyGkT/Ai6VboNrxhbr9Uw==
 
 "@babel/standalone@^7.20.13":
-  "integrity" "sha512-us2dNhs+YxbpIlTH84go6FuZxXQZSsCLAQgGCh8Czuubmk6bOz6Dipgo52NBt9VixeEpoVGZQU6NF6NYAIWX8g=="
-  "resolved" "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.2.tgz"
-  "version" "7.22.2"
+  version "7.22.2"
+  resolved "https://registry.npmjs.org/@babel/standalone/-/standalone-7.22.2.tgz"
+  integrity sha512-us2dNhs+YxbpIlTH84go6FuZxXQZSsCLAQgGCh8Czuubmk6bOz6Dipgo52NBt9VixeEpoVGZQU6NF6NYAIWX8g==
 
 "@babel/template@^7.20.7", "@babel/template@^7.21.9":
-  "integrity" "sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ=="
-  "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz"
-  "version" "7.21.9"
+  version "7.21.9"
+  resolved "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz"
+  integrity sha512-MK0X5k8NKOuWRamiEfc3KEJiHMTkGZNUjzMipqCGDDc6ijRl/B7RGSKVGncu4Ro/HdyzzY6cmoXuKI2Gffk7vQ==
   dependencies:
     "@babel/code-frame" "^7.21.4"
     "@babel/parser" "^7.21.9"
     "@babel/types" "^7.21.5"
 
 "@babel/traverse@^7.12.12", "@babel/traverse@^7.22.1", "@babel/traverse@^7.7.0":
-  "integrity" "sha512-lAWkdCoUFnmwLBhIRLciFntGYsIIoC6vIbN8zrLPqBnJmPu7Z6nzqnKd7FsxQUNAvZfVZ0x6KdNvNp8zWIOHSQ=="
-  "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.1.tgz"
-  "version" "7.22.1"
+  version "7.22.1"
+  resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.1.tgz"
+  integrity sha512-lAWkdCoUFnmwLBhIRLciFntGYsIIoC6vIbN8zrLPqBnJmPu7Z6nzqnKd7FsxQUNAvZfVZ0x6KdNvNp8zWIOHSQ==
   dependencies:
     "@babel/code-frame" "^7.21.4"
     "@babel/generator" "^7.22.0"
@@ -189,73 +189,83 @@
     "@babel/helper-split-export-declaration" "^7.18.6"
     "@babel/parser" "^7.22.0"
     "@babel/types" "^7.22.0"
-    "debug" "^4.1.0"
-    "globals" "^11.1.0"
+    debug "^4.1.0"
+    globals "^11.1.0"
 
 "@babel/types@^7.18.6", "@babel/types@^7.21.0", "@babel/types@^7.21.3", "@babel/types@^7.21.4", "@babel/types@^7.21.5", "@babel/types@^7.22.0", "@babel/types@^7.22.3", "@babel/types@^7.6.1", "@babel/types@^7.7.0", "@babel/types@^7.9.6":
-  "integrity" "sha512-P3na3xIQHTKY4L0YOG7pM8M8uoUIB910WQaSiiMCZUC2Cy8XFEQONGABFnHWBa2gpGKODTAJcNhi5Zk0sLRrzg=="
-  "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.22.3.tgz"
-  "version" "7.22.3"
+  version "7.22.3"
+  resolved "https://registry.npmjs.org/@babel/types/-/types-7.22.3.tgz"
+  integrity sha512-P3na3xIQHTKY4L0YOG7pM8M8uoUIB910WQaSiiMCZUC2Cy8XFEQONGABFnHWBa2gpGKODTAJcNhi5Zk0sLRrzg==
   dependencies:
     "@babel/helper-string-parser" "^7.21.5"
     "@babel/helper-validator-identifier" "^7.19.1"
-    "to-fast-properties" "^2.0.0"
+    to-fast-properties "^2.0.0"
+
+"@esbuild/android-arm@0.15.18":
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.15.18.tgz#266d40b8fdcf87962df8af05b76219bc786b4f80"
+  integrity sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==
+
+"@esbuild/linux-loong64@0.15.18":
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz#128b76ecb9be48b60cf5cfc1c63a4f00691a3239"
+  integrity sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==
 
 "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.3.0":
-  "integrity" "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA=="
-  "resolved" "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
-  "version" "4.4.0"
+  version "4.4.0"
+  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
+  integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
   dependencies:
-    "eslint-visitor-keys" "^3.3.0"
+    eslint-visitor-keys "^3.3.0"
 
 "@eslint-community/regexpp@^4.4.0":
-  "integrity" "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ=="
-  "resolved" "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz"
-  "version" "4.5.1"
+  version "4.5.1"
+  resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz"
+  integrity sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==
 
 "@eslint/eslintrc@^2.0.3":
-  "integrity" "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ=="
-  "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz"
-  "version" "2.0.3"
+  version "2.0.3"
+  resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz"
+  integrity sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==
   dependencies:
-    "ajv" "^6.12.4"
-    "debug" "^4.3.2"
-    "espree" "^9.5.2"
-    "globals" "^13.19.0"
-    "ignore" "^5.2.0"
-    "import-fresh" "^3.2.1"
-    "js-yaml" "^4.1.0"
-    "minimatch" "^3.1.2"
-    "strip-json-comments" "^3.1.1"
+    ajv "^6.12.4"
+    debug "^4.3.2"
+    espree "^9.5.2"
+    globals "^13.19.0"
+    ignore "^5.2.0"
+    import-fresh "^3.2.1"
+    js-yaml "^4.1.0"
+    minimatch "^3.1.2"
+    strip-json-comments "^3.1.1"
 
 "@eslint/js@8.41.0":
-  "integrity" "sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA=="
-  "resolved" "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz"
-  "version" "8.41.0"
+  version "8.41.0"
+  resolved "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz"
+  integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==
 
 "@humanwhocodes/config-array@^0.11.8":
-  "integrity" "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g=="
-  "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz"
-  "version" "0.11.8"
+  version "0.11.8"
+  resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz"
+  integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
   dependencies:
     "@humanwhocodes/object-schema" "^1.2.1"
-    "debug" "^4.1.1"
-    "minimatch" "^3.0.5"
+    debug "^4.1.1"
+    minimatch "^3.0.5"
 
 "@humanwhocodes/module-importer@^1.0.1":
-  "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="
-  "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
-  "version" "1.0.1"
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
+  integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
 
 "@humanwhocodes/object-schema@^1.2.1":
-  "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA=="
-  "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
-  "version" "1.2.1"
+  version "1.2.1"
+  resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz"
+  integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
 
 "@intlify/core-base@9.2.2":
-  "integrity" "sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA=="
-  "resolved" "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz"
-  "version" "9.2.2"
+  version "9.2.2"
+  resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.2.2.tgz"
+  integrity sha512-JjUpQtNfn+joMbrXvpR4hTF8iJQ2sEFzzK3KIESOx+f+uwIjgw20igOyaIdhfsVVBCds8ZM64MoeNSx+PHQMkA==
   dependencies:
     "@intlify/devtools-if" "9.2.2"
     "@intlify/message-compiler" "9.2.2"
@@ -263,182 +273,182 @@
     "@intlify/vue-devtools" "9.2.2"
 
 "@intlify/devtools-if@9.2.2":
-  "integrity" "sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg=="
-  "resolved" "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz"
-  "version" "9.2.2"
+  version "9.2.2"
+  resolved "https://registry.npmjs.org/@intlify/devtools-if/-/devtools-if-9.2.2.tgz"
+  integrity sha512-4ttr/FNO29w+kBbU7HZ/U0Lzuh2cRDhP8UlWOtV9ERcjHzuyXVZmjyleESK6eVP60tGC9QtQW9yZE+JeRhDHkg==
   dependencies:
     "@intlify/shared" "9.2.2"
 
 "@intlify/message-compiler@9.2.2":
-  "integrity" "sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA=="
-  "resolved" "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz"
-  "version" "9.2.2"
+  version "9.2.2"
+  resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.2.2.tgz"
+  integrity sha512-IUrQW7byAKN2fMBe8z6sK6riG1pue95e5jfokn8hA5Q3Bqy4MBJ5lJAofUsawQJYHeoPJ7svMDyBaVJ4d0GTtA==
   dependencies:
     "@intlify/shared" "9.2.2"
-    "source-map" "0.6.1"
+    source-map "0.6.1"
 
 "@intlify/shared@9.2.2":
-  "integrity" "sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q=="
-  "resolved" "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz"
-  "version" "9.2.2"
+  version "9.2.2"
+  resolved "https://registry.npmjs.org/@intlify/shared/-/shared-9.2.2.tgz"
+  integrity sha512-wRwTpsslgZS5HNyM7uDQYZtxnbI12aGiBZURX3BTR9RFIKKRWpllTsgzHWvj3HKm3Y2Sh5LPC1r0PDCKEhVn9Q==
 
 "@intlify/vue-devtools@9.2.2":
-  "integrity" "sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg=="
-  "resolved" "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz"
-  "version" "9.2.2"
+  version "9.2.2"
+  resolved "https://registry.npmjs.org/@intlify/vue-devtools/-/vue-devtools-9.2.2.tgz"
+  integrity sha512-+dUyqyCHWHb/UcvY1MlIpO87munedm3Gn6E9WWYdWrMuYLcoIoOEVDWSS8xSwtlPU+kA+MEQTP6Q1iI/ocusJg==
   dependencies:
     "@intlify/core-base" "9.2.2"
     "@intlify/shared" "9.2.2"
 
 "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
-  "integrity" "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ=="
-  "resolved" "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz"
-  "version" "0.3.3"
+  version "0.3.3"
+  resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz"
+  integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
   dependencies:
     "@jridgewell/set-array" "^1.0.1"
     "@jridgewell/sourcemap-codec" "^1.4.10"
     "@jridgewell/trace-mapping" "^0.3.9"
 
 "@jridgewell/resolve-uri@3.1.0":
-  "integrity" "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w=="
-  "resolved" "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz"
-  "version" "3.1.0"
+  version "3.1.0"
+  resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz"
+  integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
 
 "@jridgewell/set-array@^1.0.1":
-  "integrity" "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw=="
-  "resolved" "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz"
-  "version" "1.1.2"
+  version "1.1.2"
+  resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz"
+  integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
 
 "@jridgewell/source-map@^0.3.2":
-  "integrity" "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg=="
-  "resolved" "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz"
-  "version" "0.3.3"
+  version "0.3.3"
+  resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz"
+  integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==
   dependencies:
     "@jridgewell/gen-mapping" "^0.3.0"
     "@jridgewell/trace-mapping" "^0.3.9"
 
-"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
-  "integrity" "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
-  "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
-  "version" "1.4.15"
-
 "@jridgewell/sourcemap-codec@1.4.14":
-  "integrity" "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw=="
-  "resolved" "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
-  "version" "1.4.14"
+  version "1.4.14"
+  resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
+  integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
+  version "1.4.15"
+  resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz"
+  integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
 
 "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
-  "integrity" "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA=="
-  "resolved" "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz"
-  "version" "0.3.18"
+  version "0.3.18"
+  resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz"
+  integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
   dependencies:
     "@jridgewell/resolve-uri" "3.1.0"
     "@jridgewell/sourcemap-codec" "1.4.14"
 
 "@nodelib/fs.scandir@2.1.5":
-  "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="
-  "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
-  "version" "2.1.5"
+  version "2.1.5"
+  resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
+  integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
   dependencies:
     "@nodelib/fs.stat" "2.0.5"
-    "run-parallel" "^1.1.9"
+    run-parallel "^1.1.9"
 
-"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
-  "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
-  "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
-  "version" "2.0.5"
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+  version "2.0.5"
+  resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
+  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
 
 "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
-  "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="
-  "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
-  "version" "1.2.8"
+  version "1.2.8"
+  resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
+  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
   dependencies:
     "@nodelib/fs.scandir" "2.1.5"
-    "fastq" "^1.6.0"
+    fastq "^1.6.0"
 
 "@rollup/pluginutils@^5.0.2":
-  "integrity" "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA=="
-  "resolved" "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz"
-  "version" "5.0.2"
+  version "5.0.2"
+  resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz"
+  integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
   dependencies:
     "@types/estree" "^1.0.0"
-    "estree-walker" "^2.0.2"
-    "picomatch" "^2.3.1"
+    estree-walker "^2.0.2"
+    picomatch "^2.3.1"
 
 "@types/estree@^1.0.0":
-  "integrity" "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA=="
-  "resolved" "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz"
-  "version" "1.0.1"
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz"
+  integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
 
 "@types/parse-json@^4.0.0":
-  "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
-  "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz"
-  "version" "4.0.0"
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz"
+  integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==
 
 "@types/web-bluetooth@^0.0.16":
-  "integrity" "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
-  "resolved" "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz"
-  "version" "0.0.16"
+  version "0.0.16"
+  resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz"
+  integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
 
 "@vant/popperjs@^1.3.0":
-  "integrity" "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
-  "resolved" "https://registry.npmjs.org/@vant/popperjs/-/popperjs-1.3.0.tgz"
-  "version" "1.3.0"
+  version "1.3.0"
+  resolved "https://registry.npmjs.org/@vant/popperjs/-/popperjs-1.3.0.tgz"
+  integrity sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==
 
 "@vant/use@^1.5.1":
-  "integrity" "sha512-Zxd7lDz/LliVYEQi3PR9a8CQa/kGCVzF0u9hqDMaTlgXlbG0wHMFPllrcG0ThR6bfs8xrYVuSFM9pJn6HSoUGQ=="
-  "resolved" "https://registry.npmjs.org/@vant/use/-/use-1.5.1.tgz"
-  "version" "1.5.1"
+  version "1.5.1"
+  resolved "https://registry.npmjs.org/@vant/use/-/use-1.5.1.tgz"
+  integrity sha512-Zxd7lDz/LliVYEQi3PR9a8CQa/kGCVzF0u9hqDMaTlgXlbG0wHMFPllrcG0ThR6bfs8xrYVuSFM9pJn6HSoUGQ==
 
 "@vitejs/plugin-legacy@^3.0.1":
-  "integrity" "sha512-9BT2mXunC7kQGKHP70BIbNZ/85P/KUMGKBS9CiV+XKNDZGNBjUnyrh3ofgtqgObmxKaEP2xJsEIRNIFJ+hjI8w=="
-  "resolved" "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-3.0.2.tgz"
-  "version" "3.0.2"
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-3.0.2.tgz"
+  integrity sha512-9BT2mXunC7kQGKHP70BIbNZ/85P/KUMGKBS9CiV+XKNDZGNBjUnyrh3ofgtqgObmxKaEP2xJsEIRNIFJ+hjI8w==
   dependencies:
     "@babel/standalone" "^7.20.13"
-    "core-js" "^3.27.2"
-    "magic-string" "^0.27.0"
-    "regenerator-runtime" "^0.13.11"
-    "systemjs" "^6.13.0"
+    core-js "^3.27.2"
+    magic-string "^0.27.0"
+    regenerator-runtime "^0.13.11"
+    systemjs "^6.13.0"
 
 "@vitejs/plugin-vue@^3.2.0":
-  "integrity" "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw=="
-  "resolved" "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz"
-  "version" "3.2.0"
+  version "3.2.0"
+  resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz"
+  integrity sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==
 
 "@vue-macros/common@~1.3.3":
-  "integrity" "sha512-bjHomaf3mu+ARMD4DX22C/lLVVocbmwgcLH7bg1rK4kB5ghesgShZTQIrNR6ZjifQmdGc/2jjZ/25kSb364uEA=="
-  "resolved" "https://registry.npmjs.org/@vue-macros/common/-/common-1.3.3.tgz"
-  "version" "1.3.3"
+  version "1.3.3"
+  resolved "https://registry.npmjs.org/@vue-macros/common/-/common-1.3.3.tgz"
+  integrity sha512-bjHomaf3mu+ARMD4DX22C/lLVVocbmwgcLH7bg1rK4kB5ghesgShZTQIrNR6ZjifQmdGc/2jjZ/25kSb364uEA==
   dependencies:
     "@babel/types" "^7.21.5"
     "@rollup/pluginutils" "^5.0.2"
     "@vue/compiler-sfc" "^3.3.4"
-    "local-pkg" "^0.4.3"
-    "magic-string-ast" "^0.1.2"
+    local-pkg "^0.4.3"
+    magic-string-ast "^0.1.2"
 
 "@vue/compiler-core@3.3.4":
-  "integrity" "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g=="
-  "resolved" "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz"
+  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"
+    estree-walker "^2.0.2"
+    source-map-js "^1.0.2"
 
 "@vue/compiler-dom@3.3.4":
-  "integrity" "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w=="
-  "resolved" "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz"
+  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", "@vue/compiler-sfc@3.3.4":
-  "integrity" "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ=="
-  "resolved" "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz"
-  "version" "3.3.4"
+"@vue/compiler-sfc@3.3.4", "@vue/compiler-sfc@^3.3.4":
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz"
+  integrity sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==
   dependencies:
     "@babel/parser" "^7.20.15"
     "@vue/compiler-core" "3.3.4"
@@ -446,788 +456,859 @@
     "@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"
+    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":
-  "integrity" "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ=="
-  "resolved" "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz"
+  integrity sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==
   dependencies:
     "@vue/compiler-dom" "3.3.4"
     "@vue/shared" "3.3.4"
 
 "@vue/devtools-api@^6.0.0-beta.11", "@vue/devtools-api@^6.2.1", "@vue/devtools-api@^6.4.4", "@vue/devtools-api@^6.5.0":
-  "integrity" "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q=="
-  "resolved" "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz"
-  "version" "6.5.0"
+  version "6.5.0"
+  resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz"
+  integrity sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==
 
 "@vue/reactivity-transform@3.3.4":
-  "integrity" "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw=="
-  "resolved" "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz"
+  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"
+    estree-walker "^2.0.2"
+    magic-string "^0.30.0"
 
 "@vue/reactivity@3.3.4":
-  "integrity" "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ=="
-  "resolved" "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz"
+  integrity sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==
   dependencies:
     "@vue/shared" "3.3.4"
 
 "@vue/runtime-core@3.3.4":
-  "integrity" "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA=="
-  "resolved" "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz"
+  integrity sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==
   dependencies:
     "@vue/reactivity" "3.3.4"
     "@vue/shared" "3.3.4"
 
 "@vue/runtime-dom@3.3.4":
-  "integrity" "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ=="
-  "resolved" "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz"
+  integrity sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==
   dependencies:
     "@vue/runtime-core" "3.3.4"
     "@vue/shared" "3.3.4"
-    "csstype" "^3.1.1"
+    csstype "^3.1.1"
 
 "@vue/server-renderer@3.3.4":
-  "integrity" "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ=="
-  "resolved" "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz"
-  "version" "3.3.4"
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz"
+  integrity sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==
   dependencies:
     "@vue/compiler-ssr" "3.3.4"
     "@vue/shared" "3.3.4"
 
-"@vue/shared@^3.0.0", "@vue/shared@3.3.4":
-  "integrity" "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ=="
-  "resolved" "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz"
-  "version" "3.3.4"
+"@vue/shared@3.3.4", "@vue/shared@^3.0.0":
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz"
+  integrity sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==
 
 "@vueuse/components@9.4.0":
-  "integrity" "sha512-FDaZsosPoSFYGg+AUpUyf1Kb/tLr2ATXcD0LNRg6H8QPOzrY6j5WnUf1fEADur0W82cnZWaoziPPgjKZOLzAYw=="
-  "resolved" "https://registry.npmjs.org/@vueuse/components/-/components-9.4.0.tgz"
-  "version" "9.4.0"
+  version "9.4.0"
+  resolved "https://registry.npmjs.org/@vueuse/components/-/components-9.4.0.tgz"
+  integrity sha512-FDaZsosPoSFYGg+AUpUyf1Kb/tLr2ATXcD0LNRg6H8QPOzrY6j5WnUf1fEADur0W82cnZWaoziPPgjKZOLzAYw==
   dependencies:
     "@vueuse/core" "9.4.0"
     "@vueuse/shared" "9.4.0"
-    "vue-demi" "*"
+    vue-demi "*"
 
 "@vueuse/core@9.4.0":
-  "integrity" "sha512-JzgenGj1ZF2BHOen5rsFiAyyI9sXAv7aKhNLlm9b7SwYQeKTcxTWdhudonURCSP3Egl9NQaRBzes2lv/1JUt/Q=="
-  "resolved" "https://registry.npmjs.org/@vueuse/core/-/core-9.4.0.tgz"
-  "version" "9.4.0"
+  version "9.4.0"
+  resolved "https://registry.npmjs.org/@vueuse/core/-/core-9.4.0.tgz"
+  integrity sha512-JzgenGj1ZF2BHOen5rsFiAyyI9sXAv7aKhNLlm9b7SwYQeKTcxTWdhudonURCSP3Egl9NQaRBzes2lv/1JUt/Q==
   dependencies:
     "@types/web-bluetooth" "^0.0.16"
     "@vueuse/metadata" "9.4.0"
     "@vueuse/shared" "9.4.0"
-    "vue-demi" "*"
+    vue-demi "*"
 
 "@vueuse/metadata@9.4.0":
-  "integrity" "sha512-7GKMdGAsJyQJl35MYOz/RDpP0FxuiZBRDSN79QIPbdqYx4Sd0sVTnIC68KJ6Oln0t0SouvSUMvRHuno216Ud2Q=="
-  "resolved" "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.4.0.tgz"
-  "version" "9.4.0"
+  version "9.4.0"
+  resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.4.0.tgz"
+  integrity sha512-7GKMdGAsJyQJl35MYOz/RDpP0FxuiZBRDSN79QIPbdqYx4Sd0sVTnIC68KJ6Oln0t0SouvSUMvRHuno216Ud2Q==
 
 "@vueuse/shared@9.4.0":
-  "integrity" "sha512-fTuem51KwMCnqUKkI8B57qAIMcFovtGgsCtAeqxIzH3i6nE9VYge+gVfneNHAAy7lj8twbkNfqQSygOPJTm4tQ=="
-  "resolved" "https://registry.npmjs.org/@vueuse/shared/-/shared-9.4.0.tgz"
-  "version" "9.4.0"
+  version "9.4.0"
+  resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-9.4.0.tgz"
+  integrity sha512-fTuem51KwMCnqUKkI8B57qAIMcFovtGgsCtAeqxIzH3i6nE9VYge+gVfneNHAAy7lj8twbkNfqQSygOPJTm4tQ==
   dependencies:
-    "vue-demi" "*"
+    vue-demi "*"
 
-"acorn-jsx@^5.3.2":
-  "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="
-  "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
-  "version" "5.3.2"
+acorn-jsx@^5.3.2:
+  version "5.3.2"
+  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
+  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
 
-"acorn-node@^1.8.2":
-  "integrity" "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A=="
-  "resolved" "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz"
-  "version" "1.8.2"
+acorn-node@^1.8.2:
+  version "1.8.2"
+  resolved "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz"
+  integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
   dependencies:
-    "acorn" "^7.0.0"
-    "acorn-walk" "^7.0.0"
-    "xtend" "^4.0.2"
+    acorn "^7.0.0"
+    acorn-walk "^7.0.0"
+    xtend "^4.0.2"
 
-"acorn-walk@^7.0.0":
-  "integrity" "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
-  "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz"
-  "version" "7.2.0"
+acorn-walk@^7.0.0:
+  version "7.2.0"
+  resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz"
+  integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
 
-"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.0.0", "acorn@^7.1.1":
-  "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A=="
-  "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
-  "version" "7.4.1"
+acorn@^7.0.0, acorn@^7.1.1:
+  version "7.4.1"
+  resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
+  integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
 
-"acorn@^8.5.0":
-  "integrity" "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
-  "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
-  "version" "8.8.2"
+acorn@^8.5.0, acorn@^8.8.0, acorn@^8.8.2:
+  version "8.8.2"
+  resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
+  integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
 
-"acorn@^8.8.0":
-  "integrity" "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
-  "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
-  "version" "8.8.2"
-
-"acorn@^8.8.2":
-  "integrity" "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
-  "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz"
-  "version" "8.8.2"
-
-"ajv@^6.10.0", "ajv@^6.12.4":
-  "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="
-  "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
-  "version" "6.12.6"
+ajv@^6.10.0, ajv@^6.12.4:
+  version "6.12.6"
+  resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
+  integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
   dependencies:
-    "fast-deep-equal" "^3.1.1"
-    "fast-json-stable-stringify" "^2.0.0"
-    "json-schema-traverse" "^0.4.1"
-    "uri-js" "^4.2.2"
+    fast-deep-equal "^3.1.1"
+    fast-json-stable-stringify "^2.0.0"
+    json-schema-traverse "^0.4.1"
+    uri-js "^4.2.2"
 
-"amfe-flexible@^2.2.1":
-  "integrity" "sha512-L2VfvDzoETBjhRptg5u/IUuzHSuxm22JpSRb404p/TBGeRfwWmmNEbB+TFPIP/sS/+pbM18bCFH9QnMojLuPNw=="
-  "resolved" "https://registry.npmjs.org/amfe-flexible/-/amfe-flexible-2.2.1.tgz"
-  "version" "2.2.1"
+amfe-flexible@^2.2.1:
+  version "2.2.1"
+  resolved "https://registry.npmjs.org/amfe-flexible/-/amfe-flexible-2.2.1.tgz"
+  integrity sha512-L2VfvDzoETBjhRptg5u/IUuzHSuxm22JpSRb404p/TBGeRfwWmmNEbB+TFPIP/sS/+pbM18bCFH9QnMojLuPNw==
 
-"ansi-regex@^5.0.1":
-  "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
-  "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
-  "version" "5.0.1"
+ansi-regex@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
+  integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
 
-"ansi-styles@^3.2.1":
-  "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
-  "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
-  "version" "3.2.1"
+ansi-styles@^3.2.1:
+  version "3.2.1"
+  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
+  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
   dependencies:
-    "color-convert" "^1.9.0"
+    color-convert "^1.9.0"
 
-"ansi-styles@^4.0.0", "ansi-styles@^4.1.0":
-  "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
-  "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
-  "version" "4.3.0"
+ansi-styles@^4.0.0, ansi-styles@^4.1.0:
+  version "4.3.0"
+  resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
+  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
   dependencies:
-    "color-convert" "^2.0.1"
+    color-convert "^2.0.1"
 
-"anymatch@~3.1.2":
-  "integrity" "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="
-  "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
-  "version" "3.1.3"
+anymatch@~3.1.2:
+  version "3.1.3"
+  resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
+  integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
   dependencies:
-    "normalize-path" "^3.0.0"
-    "picomatch" "^2.0.4"
+    normalize-path "^3.0.0"
+    picomatch "^2.0.4"
 
-"arg@^5.0.1":
-  "integrity" "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
-  "resolved" "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz"
-  "version" "5.0.2"
+arg@^5.0.1:
+  version "5.0.2"
+  resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz"
+  integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
 
-"argparse@^2.0.1":
-  "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
-  "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
-  "version" "2.0.1"
+argparse@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
+  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
 
-"asap@~2.0.3":
-  "integrity" "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA=="
-  "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"
-  "version" "2.0.6"
+asap@~2.0.3:
+  version "2.0.6"
+  resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"
+  integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==
 
-"assert-never@^1.2.1":
-  "integrity" "sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw=="
-  "resolved" "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz"
-  "version" "1.2.1"
+assert-never@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.npmjs.org/assert-never/-/assert-never-1.2.1.tgz"
+  integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw==
 
-"ast-walker-scope@^0.4.1":
-  "integrity" "sha512-Ro3nmapMxi/remlJdzFH0tiA7A59KDbxVoLlKWaLDrPELiftb9b8w+CCyWRM+sXZH5KHRAgv8feedW6mihvCHA=="
-  "resolved" "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.4.1.tgz"
-  "version" "0.4.1"
+ast-walker-scope@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.npmjs.org/ast-walker-scope/-/ast-walker-scope-0.4.1.tgz"
+  integrity sha512-Ro3nmapMxi/remlJdzFH0tiA7A59KDbxVoLlKWaLDrPELiftb9b8w+CCyWRM+sXZH5KHRAgv8feedW6mihvCHA==
   dependencies:
     "@babel/parser" "^7.21.3"
     "@babel/types" "^7.21.3"
 
-"asynckit@^0.4.0":
-  "integrity" "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
-  "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
-  "version" "0.4.0"
+asynckit@^0.4.0:
+  version "0.4.0"
+  resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
+  integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
 
-"autoprefixer@^10.4.13":
-  "integrity" "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ=="
-  "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz"
-  "version" "10.4.14"
+autoprefixer@^10.4.13:
+  version "10.4.14"
+  resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz"
+  integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==
   dependencies:
-    "browserslist" "^4.21.5"
-    "caniuse-lite" "^1.0.30001464"
-    "fraction.js" "^4.2.0"
-    "normalize-range" "^0.1.2"
-    "picocolors" "^1.0.0"
-    "postcss-value-parser" "^4.2.0"
+    browserslist "^4.21.5"
+    caniuse-lite "^1.0.30001464"
+    fraction.js "^4.2.0"
+    normalize-range "^0.1.2"
+    picocolors "^1.0.0"
+    postcss-value-parser "^4.2.0"
 
-"autoprefixer@^9":
-  "integrity" "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA=="
-  "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz"
-  "version" "9.8.8"
+autoprefixer@^9:
+  version "9.8.8"
+  resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz"
+  integrity sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==
   dependencies:
-    "browserslist" "^4.12.0"
-    "caniuse-lite" "^1.0.30001109"
-    "normalize-range" "^0.1.2"
-    "num2fraction" "^1.2.2"
-    "picocolors" "^0.2.1"
-    "postcss" "^7.0.32"
-    "postcss-value-parser" "^4.1.0"
+    browserslist "^4.12.0"
+    caniuse-lite "^1.0.30001109"
+    normalize-range "^0.1.2"
+    num2fraction "^1.2.2"
+    picocolors "^0.2.1"
+    postcss "^7.0.32"
+    postcss-value-parser "^4.1.0"
 
-"axios@^1.1.3":
-  "integrity" "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA=="
-  "resolved" "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz"
-  "version" "1.4.0"
+axios@^1.1.3:
+  version "1.4.0"
+  resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz"
+  integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==
   dependencies:
-    "follow-redirects" "^1.15.0"
-    "form-data" "^4.0.0"
-    "proxy-from-env" "^1.1.0"
+    follow-redirects "^1.15.0"
+    form-data "^4.0.0"
+    proxy-from-env "^1.1.0"
 
-"babel-eslint@^10.1.0":
-  "integrity" "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg=="
-  "resolved" "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz"
-  "version" "10.1.0"
+babel-eslint@^10.1.0:
+  version "10.1.0"
+  resolved "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz"
+  integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==
   dependencies:
     "@babel/code-frame" "^7.0.0"
     "@babel/parser" "^7.7.0"
     "@babel/traverse" "^7.7.0"
     "@babel/types" "^7.7.0"
-    "eslint-visitor-keys" "^1.0.0"
-    "resolve" "^1.12.0"
+    eslint-visitor-keys "^1.0.0"
+    resolve "^1.12.0"
 
-"babel-walk@3.0.0-canary-5":
-  "integrity" "sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw=="
-  "resolved" "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz"
-  "version" "3.0.0-canary-5"
+babel-walk@3.0.0-canary-5:
+  version "3.0.0-canary-5"
+  resolved "https://registry.npmjs.org/babel-walk/-/babel-walk-3.0.0-canary-5.tgz"
+  integrity sha512-GAwkz0AihzY5bkwIY5QDR+LvsRQgB/B+1foMPvi0FZPMl5fjD7ICiznUiBdLYMH1QYe6vqu4gWYytZOccLouFw==
   dependencies:
     "@babel/types" "^7.9.6"
 
-"balanced-match@^1.0.0":
-  "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
-  "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
-  "version" "1.0.2"
+balanced-match@^1.0.0:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
+  integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 
-"base64-arraybuffer@^1.0.2":
-  "integrity" "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
-  "resolved" "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz"
-  "version" "1.0.2"
+base64-arraybuffer@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz"
+  integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==
 
-"binary-extensions@^2.0.0":
-  "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
-  "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
-  "version" "2.2.0"
+binary-extensions@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz"
+  integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
 
-"boolbase@^1.0.0":
-  "integrity" "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
-  "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
-  "version" "1.0.0"
+boolbase@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
+  integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
 
-"brace-expansion@^1.1.7":
-  "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="
-  "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
-  "version" "1.1.11"
+brace-expansion@^1.1.7:
+  version "1.1.11"
+  resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
+  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
   dependencies:
-    "balanced-match" "^1.0.0"
-    "concat-map" "0.0.1"
+    balanced-match "^1.0.0"
+    concat-map "0.0.1"
 
-"brace-expansion@^2.0.1":
-  "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="
-  "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
-  "version" "2.0.1"
+brace-expansion@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
+  integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
   dependencies:
-    "balanced-match" "^1.0.0"
+    balanced-match "^1.0.0"
 
-"braces@^3.0.2", "braces@~3.0.2":
-  "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A=="
-  "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
-  "version" "3.0.2"
+braces@^3.0.2, braces@~3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz"
+  integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
   dependencies:
-    "fill-range" "^7.0.1"
+    fill-range "^7.0.1"
 
-"browserslist@^4.12.0", "browserslist@^4.21.3", "browserslist@^4.21.5", "browserslist@>= 4.21.0":
-  "integrity" "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA=="
-  "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz"
-  "version" "4.21.7"
+browserslist@^4.12.0, browserslist@^4.21.3, browserslist@^4.21.5:
+  version "4.21.7"
+  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz"
+  integrity sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==
   dependencies:
-    "caniuse-lite" "^1.0.30001489"
-    "electron-to-chromium" "^1.4.411"
-    "node-releases" "^2.0.12"
-    "update-browserslist-db" "^1.0.11"
+    caniuse-lite "^1.0.30001489"
+    electron-to-chromium "^1.4.411"
+    node-releases "^2.0.12"
+    update-browserslist-db "^1.0.11"
 
-"buffer-from@^1.0.0":
-  "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
-  "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
-  "version" "1.1.2"
+buffer-from@^1.0.0:
+  version "1.1.2"
+  resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
+  integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
 
-"bytes@^3.0.0":
-  "integrity" "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
-  "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
-  "version" "3.1.2"
+bytes@^3.0.0:
+  version "3.1.2"
+  resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
+  integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
 
-"call-bind@^1.0.0", "call-bind@^1.0.2":
-  "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA=="
-  "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
-  "version" "1.0.2"
+call-bind@^1.0.0, call-bind@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz"
+  integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
   dependencies:
-    "function-bind" "^1.1.1"
-    "get-intrinsic" "^1.0.2"
+    function-bind "^1.1.1"
+    get-intrinsic "^1.0.2"
 
-"callsites@^3.0.0":
-  "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
-  "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
-  "version" "3.1.0"
+callsites@^3.0.0:
+  version "3.1.0"
+  resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
+  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
 
-"camelcase-css@^2.0.1":
-  "integrity" "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="
-  "resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz"
-  "version" "2.0.1"
+camelcase-css@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz"
+  integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
 
-"camelcase@^5.0.0":
-  "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
-  "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
-  "version" "5.3.1"
+camelcase@^5.0.0:
+  version "5.3.1"
+  resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
+  integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
 
-"caniuse-lite@^1.0.30001109", "caniuse-lite@^1.0.30001464", "caniuse-lite@^1.0.30001489":
-  "integrity" "sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ=="
-  "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz"
-  "version" "1.0.30001489"
+caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001489:
+  version "1.0.30001489"
+  resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001489.tgz"
+  integrity sha512-x1mgZEXK8jHIfAxm+xgdpHpk50IN3z3q3zP261/WS+uvePxW8izXuCu6AHz0lkuYTlATDehiZ/tNyYBdSQsOUQ==
 
-"chalk@^2.0.0":
-  "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
-  "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
-  "version" "2.4.2"
+chalk@^2.0.0, chalk@^2.4.1:
+  version "2.4.2"
+  resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
+  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
   dependencies:
-    "ansi-styles" "^3.2.1"
-    "escape-string-regexp" "^1.0.5"
-    "supports-color" "^5.3.0"
+    ansi-styles "^3.2.1"
+    escape-string-regexp "^1.0.5"
+    supports-color "^5.3.0"
 
-"chalk@^2.4.1":
-  "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ=="
-  "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
-  "version" "2.4.2"
+chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2:
+  version "4.1.2"
+  resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
   dependencies:
-    "ansi-styles" "^3.2.1"
-    "escape-string-regexp" "^1.0.5"
-    "supports-color" "^5.3.0"
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
 
-"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.2":
-  "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
-  "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
-  "version" "4.1.2"
+character-parser@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz"
+  integrity sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==
   dependencies:
-    "ansi-styles" "^4.1.0"
-    "supports-color" "^7.1.0"
+    is-regex "^1.0.3"
 
-"character-parser@^2.2.0":
-  "integrity" "sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw=="
-  "resolved" "https://registry.npmjs.org/character-parser/-/character-parser-2.2.0.tgz"
-  "version" "2.2.0"
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.2, chokidar@^3.5.3:
+  version "3.5.3"
+  resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
+  integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
   dependencies:
-    "is-regex" "^1.0.3"
-
-"chokidar@^3.5.2", "chokidar@^3.5.3", "chokidar@>=3.0.0 <4.0.0":
-  "integrity" "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw=="
-  "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz"
-  "version" "3.5.3"
-  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"
+    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"
+    fsevents "~2.3.2"
 
-"clipboard@^2.0.6":
-  "integrity" "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw=="
-  "resolved" "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz"
-  "version" "2.0.11"
+clipboard@^2.0.6:
+  version "2.0.11"
+  resolved "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz"
+  integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==
   dependencies:
-    "good-listener" "^1.2.2"
-    "select" "^1.1.2"
-    "tiny-emitter" "^2.0.0"
+    good-listener "^1.2.2"
+    select "^1.1.2"
+    tiny-emitter "^2.0.0"
 
-"cliui@^6.0.0":
-  "integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="
-  "resolved" "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz"
-  "version" "6.0.0"
+cliui@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz"
+  integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
   dependencies:
-    "string-width" "^4.2.0"
-    "strip-ansi" "^6.0.0"
-    "wrap-ansi" "^6.2.0"
+    string-width "^4.2.0"
+    strip-ansi "^6.0.0"
+    wrap-ansi "^6.2.0"
 
-"cliui@^8.0.1":
-  "integrity" "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="
-  "resolved" "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
-  "version" "8.0.1"
+cliui@^8.0.1:
+  version "8.0.1"
+  resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
+  integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
   dependencies:
-    "string-width" "^4.2.0"
-    "strip-ansi" "^6.0.1"
-    "wrap-ansi" "^7.0.0"
+    string-width "^4.2.0"
+    strip-ansi "^6.0.1"
+    wrap-ansi "^7.0.0"
 
-"color-convert@^1.9.0":
-  "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
-  "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
-  "version" "1.9.3"
+color-convert@^1.9.0:
+  version "1.9.3"
+  resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
+  integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
   dependencies:
-    "color-name" "1.1.3"
+    color-name "1.1.3"
 
-"color-convert@^2.0.1":
-  "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
-  "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
-  "version" "2.0.1"
+color-convert@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
+  integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
   dependencies:
-    "color-name" "~1.1.4"
+    color-name "~1.1.4"
 
-"color-name@^1.0.0", "color-name@~1.1.4":
-  "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
-  "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
-  "version" "1.1.4"
+color-name@1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+  integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
 
-"color-name@1.1.3":
-  "integrity" "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
-  "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
-  "version" "1.1.3"
+color-name@^1.0.0, color-name@~1.1.4:
+  version "1.1.4"
+  resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
+  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
 
-"color-string@^1.9.0":
-  "integrity" "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="
-  "resolved" "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz"
-  "version" "1.9.1"
+color-string@^1.9.0:
+  version "1.9.1"
+  resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz"
+  integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
   dependencies:
-    "color-name" "^1.0.0"
-    "simple-swizzle" "^0.2.2"
+    color-name "^1.0.0"
+    simple-swizzle "^0.2.2"
 
-"color@^4.0.1":
-  "integrity" "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="
-  "resolved" "https://registry.npmjs.org/color/-/color-4.2.3.tgz"
-  "version" "4.2.3"
+color@^4.0.1:
+  version "4.2.3"
+  resolved "https://registry.npmjs.org/color/-/color-4.2.3.tgz"
+  integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==
   dependencies:
-    "color-convert" "^2.0.1"
-    "color-string" "^1.9.0"
+    color-convert "^2.0.1"
+    color-string "^1.9.0"
 
-"combined-stream@^1.0.8":
-  "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="
-  "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
-  "version" "1.0.8"
+combined-stream@^1.0.8:
+  version "1.0.8"
+  resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
+  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
   dependencies:
-    "delayed-stream" "~1.0.0"
+    delayed-stream "~1.0.0"
 
-"commander@^2.20.0":
-  "integrity" "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
-  "resolved" "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
-  "version" "2.20.3"
+commander@^2.20.0:
+  version "2.20.3"
+  resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
+  integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
 
-"commander@^8.0.0":
-  "integrity" "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="
-  "resolved" "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
-  "version" "8.3.0"
+commander@^8.0.0:
+  version "8.3.0"
+  resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
+  integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
 
-"concat-map@0.0.1":
-  "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
-  "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
-  "version" "0.0.1"
+concat-map@0.0.1:
+  version "0.0.1"
+  resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
+  integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
 
-"constantinople@^4.0.1":
-  "integrity" "sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw=="
-  "resolved" "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz"
-  "version" "4.0.1"
+constantinople@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.npmjs.org/constantinople/-/constantinople-4.0.1.tgz"
+  integrity sha512-vCrqcSIq4//Gx74TXXCGnHpulY1dskqLTFGDmhrGxzeXL8lF8kvXv6mpNWlJj1uD4DW23D4ljAqbY4RRaaUZIw==
   dependencies:
     "@babel/parser" "^7.6.0"
     "@babel/types" "^7.6.1"
 
-"convert-source-map@^1.7.0":
-  "integrity" "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
-  "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
-  "version" "1.9.0"
+convert-source-map@^1.7.0:
+  version "1.9.0"
+  resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz"
+  integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
 
-"core-js@^3.27.2", "core-js@^3.6.5":
-  "integrity" "sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg=="
-  "resolved" "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz"
-  "version" "3.30.2"
+core-js@^3.27.2, core-js@^3.6.5:
+  version "3.30.2"
+  resolved "https://registry.npmjs.org/core-js/-/core-js-3.30.2.tgz"
+  integrity sha512-uBJiDmwqsbJCWHAwjrx3cvjbMXP7xD72Dmsn5LOJpiRmE3WbBbN5rCqQ2Qh6Ek6/eOrjlWngEynBWo4VxerQhg==
 
-"cosmiconfig@^7.0.1":
-  "integrity" "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA=="
-  "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz"
-  "version" "7.1.0"
+cosmiconfig@^7.0.1:
+  version "7.1.0"
+  resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz"
+  integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
   dependencies:
     "@types/parse-json" "^4.0.0"
-    "import-fresh" "^3.2.1"
-    "parse-json" "^5.0.0"
-    "path-type" "^4.0.0"
-    "yaml" "^1.10.0"
+    import-fresh "^3.2.1"
+    parse-json "^5.0.0"
+    path-type "^4.0.0"
+    yaml "^1.10.0"
 
-"cross-spawn@^7.0.2":
-  "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w=="
-  "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
-  "version" "7.0.3"
+cross-spawn@^7.0.2:
+  version "7.0.3"
+  resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
+  integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
   dependencies:
-    "path-key" "^3.1.0"
-    "shebang-command" "^2.0.0"
-    "which" "^2.0.1"
+    path-key "^3.1.0"
+    shebang-command "^2.0.0"
+    which "^2.0.1"
 
-"css-color-names@^0.0.4":
-  "integrity" "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q=="
-  "resolved" "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz"
-  "version" "0.0.4"
+css-color-names@^0.0.4:
+  version "0.0.4"
+  resolved "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz"
+  integrity sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==
 
-"css-line-break@^2.1.0":
-  "integrity" "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w=="
-  "resolved" "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz"
-  "version" "2.1.0"
+css-line-break@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz"
+  integrity sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==
   dependencies:
-    "utrie" "^1.0.2"
+    utrie "^1.0.2"
 
-"css-unit-converter@^1.1.1":
-  "integrity" "sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA=="
-  "resolved" "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz"
-  "version" "1.1.2"
+css-unit-converter@^1.1.1:
+  version "1.1.2"
+  resolved "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.2.tgz"
+  integrity sha512-IiJwMC8rdZE0+xiEZHeru6YoONC4rfPMqGm2W85jMIbkFvv5nFTwJVFHam2eFrN6txmoUYFAFXiv8ICVeTO0MA==
 
-"cssesc@^3.0.0":
-  "integrity" "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="
-  "resolved" "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
-  "version" "3.0.0"
+cssesc@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
+  integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
 
-"csstype@^3.1.1":
-  "integrity" "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
-  "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz"
-  "version" "3.1.2"
+csstype@^3.1.1:
+  version "3.1.2"
+  resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz"
+  integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
 
-"dayjs@^1.11.7":
-  "integrity" "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
-  "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz"
-  "version" "1.11.7"
+dayjs@^1.11.7:
+  version "1.11.7"
+  resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz"
+  integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==
 
-"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.2", "debug@^4.3.4":
-  "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ=="
-  "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
-  "version" "4.3.4"
+debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
+  version "4.3.4"
+  resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz"
+  integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
   dependencies:
-    "ms" "2.1.2"
+    ms "2.1.2"
 
-"decamelize@^1.2.0":
-  "integrity" "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
-  "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
-  "version" "1.2.0"
+decamelize@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
+  integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
 
-"deep-is@^0.1.3":
-  "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
-  "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
-  "version" "0.1.4"
+deep-is@^0.1.3:
+  version "0.1.4"
+  resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
+  integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
 
-"deepmerge@^4.2.2":
-  "integrity" "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A=="
-  "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz"
-  "version" "4.3.1"
+deepmerge@^4.2.2:
+  version "4.3.1"
+  resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz"
+  integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
 
-"default-passive-events@^2.0.0":
-  "integrity" "sha512-eMtt76GpDVngZQ3ocgvRcNCklUMwID1PaNbCNxfpDXuiOXttSh0HzBbda1HU9SIUsDc02vb7g9+3I5tlqe/qMQ=="
-  "resolved" "https://registry.npmjs.org/default-passive-events/-/default-passive-events-2.0.0.tgz"
-  "version" "2.0.0"
+default-passive-events@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/default-passive-events/-/default-passive-events-2.0.0.tgz"
+  integrity sha512-eMtt76GpDVngZQ3ocgvRcNCklUMwID1PaNbCNxfpDXuiOXttSh0HzBbda1HU9SIUsDc02vb7g9+3I5tlqe/qMQ==
 
-"define-lazy-prop@^2.0.0":
-  "integrity" "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
-  "resolved" "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz"
-  "version" "2.0.0"
+define-lazy-prop@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz"
+  integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
 
-"defined@^1.0.0":
-  "integrity" "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q=="
-  "resolved" "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz"
-  "version" "1.0.1"
+defined@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz"
+  integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==
 
-"delayed-stream@~1.0.0":
-  "integrity" "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
-  "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
-  "version" "1.0.0"
+delayed-stream@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
+  integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
 
-"delegate@^3.1.2":
-  "integrity" "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
-  "resolved" "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz"
-  "version" "3.2.0"
+delegate@^3.1.2:
+  version "3.2.0"
+  resolved "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz"
+  integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
 
-"detective@^5.2.0":
-  "integrity" "sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw=="
-  "resolved" "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz"
-  "version" "5.2.1"
+detective@^5.2.0:
+  version "5.2.1"
+  resolved "https://registry.npmjs.org/detective/-/detective-5.2.1.tgz"
+  integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==
   dependencies:
-    "acorn-node" "^1.8.2"
-    "defined" "^1.0.0"
-    "minimist" "^1.2.6"
+    acorn-node "^1.8.2"
+    defined "^1.0.0"
+    minimist "^1.2.6"
 
-"didyoumean@^1.2.2":
-  "integrity" "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
-  "resolved" "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz"
-  "version" "1.2.2"
+didyoumean@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz"
+  integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
 
-"dijkstrajs@^1.0.1":
-  "integrity" "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
-  "resolved" "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz"
-  "version" "1.0.3"
+dijkstrajs@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz"
+  integrity sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==
 
-"dlv@^1.1.3":
-  "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
-  "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz"
-  "version" "1.1.3"
+dlv@^1.1.3:
+  version "1.1.3"
+  resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz"
+  integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
 
-"doctrine@^3.0.0":
-  "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w=="
-  "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
-  "version" "3.0.0"
+doctrine@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
+  integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
   dependencies:
-    "esutils" "^2.0.2"
+    esutils "^2.0.2"
 
-"doctypes@^1.1.0":
-  "integrity" "sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ=="
-  "resolved" "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz"
-  "version" "1.1.0"
+doctypes@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/doctypes/-/doctypes-1.1.0.tgz"
+  integrity sha512-LLBi6pEqS6Do3EKQ3J0NqHWV5hhb78Pi8vvESYwyOy2c31ZEZVdtitdzsQsKb7878PEERhzUk0ftqGhG6Mz+pQ==
 
-"dot-case@^3.0.4":
-  "integrity" "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w=="
-  "resolved" "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
-  "version" "3.0.4"
+dot-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
+  integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
   dependencies:
-    "no-case" "^3.0.4"
-    "tslib" "^2.0.3"
+    no-case "^3.0.4"
+    tslib "^2.0.3"
 
-"echarts@^5.4.2":
-  "integrity" "sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA=="
-  "resolved" "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz"
-  "version" "5.4.3"
+echarts@^5.4.2:
+  version "5.4.3"
+  resolved "https://registry.npmjs.org/echarts/-/echarts-5.4.3.tgz"
+  integrity sha512-mYKxLxhzy6zyTi/FaEbJMOZU1ULGEQHaeIeuMR5L+JnJTpz+YR03mnnpBhbR4+UYJAgiXgpyTVLffPAjOTLkZA==
   dependencies:
-    "tslib" "2.3.0"
-    "zrender" "5.4.4"
+    tslib "2.3.0"
+    zrender "5.4.4"
 
-"electron-to-chromium@^1.4.411":
-  "integrity" "sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg=="
-  "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.411.tgz"
-  "version" "1.4.411"
+electron-to-chromium@^1.4.411:
+  version "1.4.411"
+  resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.411.tgz"
+  integrity sha512-5VXLW4Qw89vM2WTICHua/y8v7fKGDRVa2VPOtBB9IpLvW316B+xd8yD1wTmLPY2ot/00P/qt87xdolj4aG/Lzg==
 
-"emoji-regex@^8.0.0":
-  "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
-  "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
-  "version" "8.0.0"
+emoji-regex@^8.0.0:
+  version "8.0.0"
+  resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
+  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
 
-"encode-utf8@^1.0.3":
-  "integrity" "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
-  "resolved" "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz"
-  "version" "1.0.3"
+encode-utf8@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz"
+  integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==
 
-"error-ex@^1.3.1":
-  "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g=="
-  "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
-  "version" "1.3.2"
+error-ex@^1.3.1:
+  version "1.3.2"
+  resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
+  integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
   dependencies:
-    "is-arrayish" "^0.2.1"
+    is-arrayish "^0.2.1"
 
-"esbuild-darwin-64@0.15.18":
-  "integrity" "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg=="
-  "resolved" "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz"
-  "version" "0.15.18"
+esbuild-android-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz#20a7ae1416c8eaade917fb2453c1259302c637a5"
+  integrity sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==
 
-"esbuild@^0.15.9":
-  "integrity" "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q=="
-  "resolved" "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz"
-  "version" "0.15.18"
+esbuild-android-arm64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz#9cc0ec60581d6ad267568f29cf4895ffdd9f2f04"
+  integrity sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==
+
+esbuild-darwin-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz"
+  integrity sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==
+
+esbuild-darwin-arm64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz#b6dfc7799115a2917f35970bfbc93ae50256b337"
+  integrity sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==
+
+esbuild-freebsd-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz#4e190d9c2d1e67164619ae30a438be87d5eedaf2"
+  integrity sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==
+
+esbuild-freebsd-arm64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz#18a4c0344ee23bd5a6d06d18c76e2fd6d3f91635"
+  integrity sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==
+
+esbuild-linux-32@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz#9a329731ee079b12262b793fb84eea762e82e0ce"
+  integrity sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==
+
+esbuild-linux-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz#532738075397b994467b514e524aeb520c191b6c"
+  integrity sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==
+
+esbuild-linux-arm64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz#5372e7993ac2da8f06b2ba313710d722b7a86e5d"
+  integrity sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==
+
+esbuild-linux-arm@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz#e734aaf259a2e3d109d4886c9e81ec0f2fd9a9cc"
+  integrity sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==
+
+esbuild-linux-mips64le@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz#c0487c14a9371a84eb08fab0e1d7b045a77105eb"
+  integrity sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==
+
+esbuild-linux-ppc64le@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz#af048ad94eed0ce32f6d5a873f7abe9115012507"
+  integrity sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==
+
+esbuild-linux-riscv64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz#423ed4e5927bd77f842bd566972178f424d455e6"
+  integrity sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==
+
+esbuild-linux-s390x@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz#21d21eaa962a183bfb76312e5a01cc5ae48ce8eb"
+  integrity sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==
+
+esbuild-netbsd-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz#ae75682f60d08560b1fe9482bfe0173e5110b998"
+  integrity sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==
+
+esbuild-openbsd-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz#79591a90aa3b03e4863f93beec0d2bab2853d0a8"
+  integrity sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==
+
+esbuild-sunos-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz#fd528aa5da5374b7e1e93d36ef9b07c3dfed2971"
+  integrity sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==
+
+esbuild-windows-32@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz#0e92b66ecdf5435a76813c4bc5ccda0696f4efc3"
+  integrity sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==
+
+esbuild-windows-64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz#0fc761d785414284fc408e7914226d33f82420d0"
+  integrity sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==
+
+esbuild-windows-arm64@0.15.18:
+  version "0.15.18"
+  resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz#5b5bdc56d341d0922ee94965c89ee120a6a86eb7"
+  integrity sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==
+
+esbuild@^0.15.9:
+  version "0.15.18"
+  resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz"
+  integrity sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==
   optionalDependencies:
     "@esbuild/android-arm" "0.15.18"
     "@esbuild/linux-loong64" "0.15.18"
-    "esbuild-android-64" "0.15.18"
-    "esbuild-android-arm64" "0.15.18"
-    "esbuild-darwin-64" "0.15.18"
-    "esbuild-darwin-arm64" "0.15.18"
-    "esbuild-freebsd-64" "0.15.18"
-    "esbuild-freebsd-arm64" "0.15.18"
-    "esbuild-linux-32" "0.15.18"
-    "esbuild-linux-64" "0.15.18"
-    "esbuild-linux-arm" "0.15.18"
-    "esbuild-linux-arm64" "0.15.18"
-    "esbuild-linux-mips64le" "0.15.18"
-    "esbuild-linux-ppc64le" "0.15.18"
-    "esbuild-linux-riscv64" "0.15.18"
-    "esbuild-linux-s390x" "0.15.18"
-    "esbuild-netbsd-64" "0.15.18"
-    "esbuild-openbsd-64" "0.15.18"
-    "esbuild-sunos-64" "0.15.18"
-    "esbuild-windows-32" "0.15.18"
-    "esbuild-windows-64" "0.15.18"
-    "esbuild-windows-arm64" "0.15.18"
+    esbuild-android-64 "0.15.18"
+    esbuild-android-arm64 "0.15.18"
+    esbuild-darwin-64 "0.15.18"
+    esbuild-darwin-arm64 "0.15.18"
+    esbuild-freebsd-64 "0.15.18"
+    esbuild-freebsd-arm64 "0.15.18"
+    esbuild-linux-32 "0.15.18"
+    esbuild-linux-64 "0.15.18"
+    esbuild-linux-arm "0.15.18"
+    esbuild-linux-arm64 "0.15.18"
+    esbuild-linux-mips64le "0.15.18"
+    esbuild-linux-ppc64le "0.15.18"
+    esbuild-linux-riscv64 "0.15.18"
+    esbuild-linux-s390x "0.15.18"
+    esbuild-netbsd-64 "0.15.18"
+    esbuild-openbsd-64 "0.15.18"
+    esbuild-sunos-64 "0.15.18"
+    esbuild-windows-32 "0.15.18"
+    esbuild-windows-64 "0.15.18"
+    esbuild-windows-arm64 "0.15.18"
 
-"escalade@^3.1.1":
-  "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
-  "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
-  "version" "3.1.1"
+escalade@^3.1.1:
+  version "3.1.1"
+  resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz"
+  integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
 
-"escape-string-regexp@^1.0.5":
-  "integrity" "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
-  "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
-  "version" "1.0.5"
+escape-string-regexp@^1.0.5:
+  version "1.0.5"
+  resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
+  integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
 
-"escape-string-regexp@^4.0.0":
-  "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
-  "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
-  "version" "4.0.0"
+escape-string-regexp@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
+  integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
 
-"eslint-config-prettier@^8.5.0":
-  "integrity" "sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA=="
-  "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz"
-  "version" "8.8.0"
+eslint-config-prettier@^8.5.0:
+  version "8.8.0"
+  resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.8.0.tgz"
+  integrity sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==
 
-"eslint-plugin-prettier@^4.2.1":
-  "integrity" "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ=="
-  "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz"
-  "version" "4.2.1"
+eslint-plugin-prettier@^4.2.1:
+  version "4.2.1"
+  resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz"
+  integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==
   dependencies:
-    "prettier-linter-helpers" "^1.0.0"
+    prettier-linter-helpers "^1.0.0"
 
-"eslint-plugin-vue@^9.6.0":
-  "integrity" "sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw=="
-  "resolved" "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.14.1.tgz"
-  "version" "9.14.1"
+eslint-plugin-vue@^9.6.0:
+  version "9.14.1"
+  resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.14.1.tgz"
+  integrity sha512-LQazDB1qkNEKejLe/b5a9VfEbtbczcOaui5lQ4Qw0tbRBbQYREyxxOV5BQgNDTqGPs9pxqiEpbMi9ywuIaF7vw==
   dependencies:
     "@eslint-community/eslint-utils" "^4.3.0"
-    "natural-compare" "^1.4.0"
-    "nth-check" "^2.0.1"
-    "postcss-selector-parser" "^6.0.9"
-    "semver" "^7.3.5"
-    "vue-eslint-parser" "^9.3.0"
-    "xml-name-validator" "^4.0.0"
+    natural-compare "^1.4.0"
+    nth-check "^2.0.1"
+    postcss-selector-parser "^6.0.9"
+    semver "^7.3.5"
+    vue-eslint-parser "^9.3.0"
+    xml-name-validator "^4.0.0"
 
-"eslint-scope@^7.1.1", "eslint-scope@^7.2.0":
-  "integrity" "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw=="
-  "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz"
-  "version" "7.2.0"
+eslint-scope@^7.1.1, eslint-scope@^7.2.0:
+  version "7.2.0"
+  resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz"
+  integrity sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==
   dependencies:
-    "esrecurse" "^4.3.0"
-    "estraverse" "^5.2.0"
+    esrecurse "^4.3.0"
+    estraverse "^5.2.0"
 
-"eslint-visitor-keys@^1.0.0":
-  "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ=="
-  "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz"
-  "version" "1.3.0"
+eslint-visitor-keys@^1.0.0:
+  version "1.3.0"
+  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz"
+  integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
 
-"eslint-visitor-keys@^3.3.0":
-  "integrity" "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA=="
-  "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz"
-  "version" "3.4.1"
+eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1:
+  version "3.4.1"
+  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz"
+  integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
 
-"eslint-visitor-keys@^3.4.1":
-  "integrity" "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA=="
-  "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz"
-  "version" "3.4.1"
-
-"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^6.2.0 || ^7.0.0 || ^8.0.0", "eslint@^8.26.0", "eslint@>= 4.12.1", "eslint@>=6.0.0", "eslint@>=7.0.0", "eslint@>=7.28.0":
-  "integrity" "sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q=="
-  "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz"
-  "version" "8.41.0"
+eslint@^8.26.0:
+  version "8.41.0"
+  resolved "https://registry.npmjs.org/eslint/-/eslint-8.41.0.tgz"
+  integrity sha512-WQDQpzGBOP5IrXPo4Hc0814r4/v2rrIsB0rhT7jtunIalgg6gYXWhRMOejVO8yH21T/FGaxjmFjBMNqcIlmH1Q==
   dependencies:
     "@eslint-community/eslint-utils" "^4.2.0"
     "@eslint-community/regexpp" "^4.4.0"
@@ -1236,1709 +1317,1705 @@
     "@humanwhocodes/config-array" "^0.11.8"
     "@humanwhocodes/module-importer" "^1.0.1"
     "@nodelib/fs.walk" "^1.2.8"
-    "ajv" "^6.10.0"
-    "chalk" "^4.0.0"
-    "cross-spawn" "^7.0.2"
-    "debug" "^4.3.2"
-    "doctrine" "^3.0.0"
-    "escape-string-regexp" "^4.0.0"
-    "eslint-scope" "^7.2.0"
-    "eslint-visitor-keys" "^3.4.1"
-    "espree" "^9.5.2"
-    "esquery" "^1.4.2"
-    "esutils" "^2.0.2"
-    "fast-deep-equal" "^3.1.3"
-    "file-entry-cache" "^6.0.1"
-    "find-up" "^5.0.0"
-    "glob-parent" "^6.0.2"
-    "globals" "^13.19.0"
-    "graphemer" "^1.4.0"
-    "ignore" "^5.2.0"
-    "import-fresh" "^3.0.0"
-    "imurmurhash" "^0.1.4"
-    "is-glob" "^4.0.0"
-    "is-path-inside" "^3.0.3"
-    "js-yaml" "^4.1.0"
-    "json-stable-stringify-without-jsonify" "^1.0.1"
-    "levn" "^0.4.1"
-    "lodash.merge" "^4.6.2"
-    "minimatch" "^3.1.2"
-    "natural-compare" "^1.4.0"
-    "optionator" "^0.9.1"
-    "strip-ansi" "^6.0.1"
-    "strip-json-comments" "^3.1.0"
-    "text-table" "^0.2.0"
+    ajv "^6.10.0"
+    chalk "^4.0.0"
+    cross-spawn "^7.0.2"
+    debug "^4.3.2"
+    doctrine "^3.0.0"
+    escape-string-regexp "^4.0.0"
+    eslint-scope "^7.2.0"
+    eslint-visitor-keys "^3.4.1"
+    espree "^9.5.2"
+    esquery "^1.4.2"
+    esutils "^2.0.2"
+    fast-deep-equal "^3.1.3"
+    file-entry-cache "^6.0.1"
+    find-up "^5.0.0"
+    glob-parent "^6.0.2"
+    globals "^13.19.0"
+    graphemer "^1.4.0"
+    ignore "^5.2.0"
+    import-fresh "^3.0.0"
+    imurmurhash "^0.1.4"
+    is-glob "^4.0.0"
+    is-path-inside "^3.0.3"
+    js-yaml "^4.1.0"
+    json-stable-stringify-without-jsonify "^1.0.1"
+    levn "^0.4.1"
+    lodash.merge "^4.6.2"
+    minimatch "^3.1.2"
+    natural-compare "^1.4.0"
+    optionator "^0.9.1"
+    strip-ansi "^6.0.1"
+    strip-json-comments "^3.1.0"
+    text-table "^0.2.0"
 
-"espree@^9.3.1", "espree@^9.5.2":
-  "integrity" "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw=="
-  "resolved" "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz"
-  "version" "9.5.2"
+espree@^9.3.1, espree@^9.5.2:
+  version "9.5.2"
+  resolved "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz"
+  integrity sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==
   dependencies:
-    "acorn" "^8.8.0"
-    "acorn-jsx" "^5.3.2"
-    "eslint-visitor-keys" "^3.4.1"
+    acorn "^8.8.0"
+    acorn-jsx "^5.3.2"
+    eslint-visitor-keys "^3.4.1"
 
-"esquery@^1.4.0", "esquery@^1.4.2":
-  "integrity" "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg=="
-  "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
-  "version" "1.5.0"
+esquery@^1.4.0, esquery@^1.4.2:
+  version "1.5.0"
+  resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
+  integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
   dependencies:
-    "estraverse" "^5.1.0"
+    estraverse "^5.1.0"
 
-"esrecurse@^4.3.0":
-  "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="
-  "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
-  "version" "4.3.0"
+esrecurse@^4.3.0:
+  version "4.3.0"
+  resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
+  integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
   dependencies:
-    "estraverse" "^5.2.0"
+    estraverse "^5.2.0"
 
-"estraverse@^5.1.0", "estraverse@^5.2.0":
-  "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="
-  "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
-  "version" "5.3.0"
+estraverse@^5.1.0, estraverse@^5.2.0:
+  version "5.3.0"
+  resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
+  integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
 
-"estree-walker@^2.0.2":
-  "integrity" "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
-  "resolved" "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
-  "version" "2.0.2"
+estree-walker@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
+  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
 
-"esutils@^2.0.2":
-  "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
-  "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
-  "version" "2.0.3"
+esutils@^2.0.2:
+  version "2.0.3"
+  resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
+  integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
 
-"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3":
-  "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
-  "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
-  "version" "3.1.3"
+fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
+  version "3.1.3"
+  resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
+  integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
 
-"fast-diff@^1.1.2":
-  "integrity" "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw=="
-  "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz"
-  "version" "1.3.0"
+fast-diff@^1.1.2:
+  version "1.3.0"
+  resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz"
+  integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
 
-"fast-glob@^3.2.12", "fast-glob@^3.2.7":
-  "integrity" "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w=="
-  "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz"
-  "version" "3.2.12"
+fast-glob@^3.2.12, fast-glob@^3.2.7:
+  version "3.2.12"
+  resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz"
+  integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
   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"
+    glob-parent "^5.1.2"
+    merge2 "^1.3.0"
+    micromatch "^4.0.4"
 
-"fast-json-stable-stringify@^2.0.0":
-  "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
-  "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
-  "version" "2.1.0"
+fast-json-stable-stringify@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
+  integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
 
-"fast-levenshtein@^2.0.6":
-  "integrity" "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="
-  "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
-  "version" "2.0.6"
+fast-levenshtein@^2.0.6:
+  version "2.0.6"
+  resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
+  integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
 
-"fastq@^1.6.0":
-  "integrity" "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw=="
-  "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz"
-  "version" "1.15.0"
+fastq@^1.6.0:
+  version "1.15.0"
+  resolved "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz"
+  integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
   dependencies:
-    "reusify" "^1.0.4"
+    reusify "^1.0.4"
 
-"file-entry-cache@^6.0.1":
-  "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg=="
-  "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
-  "version" "6.0.1"
+file-entry-cache@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
+  integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
   dependencies:
-    "flat-cache" "^3.0.4"
+    flat-cache "^3.0.4"
 
-"fill-range@^7.0.1":
-  "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ=="
-  "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
-  "version" "7.0.1"
+fill-range@^7.0.1:
+  version "7.0.1"
+  resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz"
+  integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
   dependencies:
-    "to-regex-range" "^5.0.1"
+    to-regex-range "^5.0.1"
 
-"find-up@^4.1.0":
-  "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="
-  "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
-  "version" "4.1.0"
+find-up@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
+  integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
   dependencies:
-    "locate-path" "^5.0.0"
-    "path-exists" "^4.0.0"
+    locate-path "^5.0.0"
+    path-exists "^4.0.0"
 
-"find-up@^5.0.0":
-  "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="
-  "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
-  "version" "5.0.0"
+find-up@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
+  integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
   dependencies:
-    "locate-path" "^6.0.0"
-    "path-exists" "^4.0.0"
+    locate-path "^6.0.0"
+    path-exists "^4.0.0"
 
-"flat-cache@^3.0.4":
-  "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg=="
-  "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz"
-  "version" "3.0.4"
+flat-cache@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz"
+  integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
   dependencies:
-    "flatted" "^3.1.0"
-    "rimraf" "^3.0.2"
+    flatted "^3.1.0"
+    rimraf "^3.0.2"
 
-"flatted@^3.1.0":
-  "integrity" "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ=="
-  "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz"
-  "version" "3.2.7"
+flatted@^3.1.0:
+  version "3.2.7"
+  resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz"
+  integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
 
-"follow-redirects@^1.15.0":
-  "integrity" "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
-  "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz"
-  "version" "1.15.2"
+follow-redirects@^1.15.0:
+  version "1.15.2"
+  resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz"
+  integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
 
-"form-data@^4.0.0":
-  "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww=="
-  "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
-  "version" "4.0.0"
+form-data@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
+  integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
   dependencies:
-    "asynckit" "^0.4.0"
-    "combined-stream" "^1.0.8"
-    "mime-types" "^2.1.12"
+    asynckit "^0.4.0"
+    combined-stream "^1.0.8"
+    mime-types "^2.1.12"
 
-"fraction.js@^4.2.0":
-  "integrity" "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA=="
-  "resolved" "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz"
-  "version" "4.2.0"
+fraction.js@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz"
+  integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
 
-"fs-extra@^10.0.0":
-  "integrity" "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="
-  "resolved" "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
-  "version" "10.1.0"
+fs-extra@^10.0.0:
+  version "10.1.0"
+  resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
+  integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
   dependencies:
-    "graceful-fs" "^4.2.0"
-    "jsonfile" "^6.0.1"
-    "universalify" "^2.0.0"
+    graceful-fs "^4.2.0"
+    jsonfile "^6.0.1"
+    universalify "^2.0.0"
 
-"fs.realpath@^1.0.0":
-  "integrity" "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
-  "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
-  "version" "1.0.0"
+fs.realpath@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
+  integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 
-"fsevents@~2.3.2":
-  "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="
-  "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
-  "version" "2.3.2"
+fsevents@~2.3.2:
+  version "2.3.2"
+  resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
+  integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
 
-"function-bind@^1.1.1":
-  "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
-  "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
-  "version" "1.1.1"
+function-bind@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
+  integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
 
-"gensync@^1.0.0-beta.2":
-  "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
-  "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
-  "version" "1.0.0-beta.2"
+gensync@^1.0.0-beta.2:
+  version "1.0.0-beta.2"
+  resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
+  integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
 
-"get-caller-file@^2.0.1", "get-caller-file@^2.0.5":
-  "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
-  "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
-  "version" "2.0.5"
+get-caller-file@^2.0.1, get-caller-file@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
+  integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
 
-"get-intrinsic@^1.0.2":
-  "integrity" "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw=="
-  "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz"
-  "version" "1.2.1"
+get-intrinsic@^1.0.2:
+  version "1.2.1"
+  resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz"
+  integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
   dependencies:
-    "function-bind" "^1.1.1"
-    "has" "^1.0.3"
-    "has-proto" "^1.0.1"
-    "has-symbols" "^1.0.3"
+    function-bind "^1.1.1"
+    has "^1.0.3"
+    has-proto "^1.0.1"
+    has-symbols "^1.0.3"
 
-"glob-parent@^5.1.2":
-  "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
-  "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
-  "version" "5.1.2"
+glob-parent@^5.1.2, glob-parent@~5.1.2:
+  version "5.1.2"
+  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
+  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
   dependencies:
-    "is-glob" "^4.0.1"
+    is-glob "^4.0.1"
 
-"glob-parent@^6.0.1", "glob-parent@^6.0.2":
-  "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="
-  "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
-  "version" "6.0.2"
+glob-parent@^6.0.1, glob-parent@^6.0.2:
+  version "6.0.2"
+  resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
+  integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
   dependencies:
-    "is-glob" "^4.0.3"
+    is-glob "^4.0.3"
 
-"glob-parent@~5.1.2":
-  "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="
-  "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
-  "version" "5.1.2"
+glob@^7.1.2, glob@^7.1.3, glob@^7.1.7:
+  version "7.2.3"
+  resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
   dependencies:
-    "is-glob" "^4.0.1"
+    fs.realpath "^1.0.0"
+    inflight "^1.0.4"
+    inherits "2"
+    minimatch "^3.1.1"
+    once "^1.3.0"
+    path-is-absolute "^1.0.0"
 
-"glob@^7.1.2", "glob@^7.1.3", "glob@^7.1.7":
-  "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="
-  "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
-  "version" "7.2.3"
+globals@^11.1.0:
+  version "11.12.0"
+  resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
+  integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
+
+globals@^13.19.0:
+  version "13.20.0"
+  resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz"
+  integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
   dependencies:
-    "fs.realpath" "^1.0.0"
-    "inflight" "^1.0.4"
-    "inherits" "2"
-    "minimatch" "^3.1.1"
-    "once" "^1.3.0"
-    "path-is-absolute" "^1.0.0"
+    type-fest "^0.20.2"
 
-"globals@^11.1.0":
-  "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="
-  "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
-  "version" "11.12.0"
-
-"globals@^13.19.0":
-  "integrity" "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ=="
-  "resolved" "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz"
-  "version" "13.20.0"
+good-listener@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz"
+  integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==
   dependencies:
-    "type-fest" "^0.20.2"
+    delegate "^3.1.2"
 
-"good-listener@^1.2.2":
-  "integrity" "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw=="
-  "resolved" "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz"
-  "version" "1.2.2"
+graceful-fs@^4.1.6, graceful-fs@^4.2.0:
+  version "4.2.11"
+  resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
+  integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
+
+graphemer@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
+  integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
+
+has-flag@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
+  integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
+
+has-flag@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
+  integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
+
+has-proto@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz"
+  integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
+has-symbols@^1.0.2, has-symbols@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
+  integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
+has-tostringtag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
+  integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==
   dependencies:
-    "delegate" "^3.1.2"
+    has-symbols "^1.0.2"
 
-"graceful-fs@^4.1.6", "graceful-fs@^4.2.0":
-  "integrity" "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
-  "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
-  "version" "4.2.11"
-
-"graphemer@^1.4.0":
-  "integrity" "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="
-  "resolved" "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
-  "version" "1.4.0"
-
-"has-flag@^3.0.0":
-  "integrity" "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
-  "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
-  "version" "3.0.0"
-
-"has-flag@^4.0.0":
-  "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
-  "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
-  "version" "4.0.0"
-
-"has-proto@^1.0.1":
-  "integrity" "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
-  "resolved" "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz"
-  "version" "1.0.1"
-
-"has-symbols@^1.0.2", "has-symbols@^1.0.3":
-  "integrity" "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
-  "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
-  "version" "1.0.3"
-
-"has-tostringtag@^1.0.0":
-  "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ=="
-  "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz"
-  "version" "1.0.0"
+has@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
+  integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
   dependencies:
-    "has-symbols" "^1.0.2"
+    function-bind "^1.1.1"
 
-"has@^1.0.3":
-  "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw=="
-  "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
-  "version" "1.0.3"
+hex-color-regex@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz"
+  integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==
+
+hsl-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz"
+  integrity sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==
+
+hsla-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz"
+  integrity sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==
+
+html-tags@^3.1.0:
+  version "3.3.1"
+  resolved "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz"
+  integrity sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==
+
+html2canvas@^1.4.1:
+  version "1.4.1"
+  resolved "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz"
+  integrity sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==
   dependencies:
-    "function-bind" "^1.1.1"
+    css-line-break "^2.1.0"
+    text-segmentation "^1.0.3"
 
-"hex-color-regex@^1.1.0":
-  "integrity" "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
-  "resolved" "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz"
-  "version" "1.1.0"
+ignore@^5.2.0:
+  version "5.2.4"
+  resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
+  integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
 
-"hsl-regex@^1.0.0":
-  "integrity" "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A=="
-  "resolved" "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz"
-  "version" "1.0.0"
+image-conversion@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.npmjs.org/image-conversion/-/image-conversion-2.1.1.tgz"
+  integrity sha512-hnMOmP7q2jxA+52FZ+wHNhg3fdFRlgfngsQH2JQHEQkafY7tj/8F15e6Rv/RxDegc872jvyaRHwMbkTZK1Cjbg==
 
-"hsla-regex@^1.0.0":
-  "integrity" "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA=="
-  "resolved" "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz"
-  "version" "1.0.0"
+immutable@^4.0.0:
+  version "4.3.0"
+  resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz"
+  integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==
 
-"html-tags@^3.1.0":
-  "integrity" "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ=="
-  "resolved" "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz"
-  "version" "3.3.1"
-
-"html2canvas@^1.4.1":
-  "integrity" "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA=="
-  "resolved" "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz"
-  "version" "1.4.1"
+import-fresh@^3.0.0, import-fresh@^3.2.1:
+  version "3.3.0"
+  resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
+  integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
   dependencies:
-    "css-line-break" "^2.1.0"
-    "text-segmentation" "^1.0.3"
+    parent-module "^1.0.0"
+    resolve-from "^4.0.0"
 
-"ignore@^5.2.0":
-  "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
-  "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz"
-  "version" "5.2.4"
+imurmurhash@^0.1.4:
+  version "0.1.4"
+  resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
+  integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
 
-"image-conversion@^2.1.1":
-  "integrity" "sha512-hnMOmP7q2jxA+52FZ+wHNhg3fdFRlgfngsQH2JQHEQkafY7tj/8F15e6Rv/RxDegc872jvyaRHwMbkTZK1Cjbg=="
-  "resolved" "https://registry.npmjs.org/image-conversion/-/image-conversion-2.1.1.tgz"
-  "version" "2.1.1"
-
-"immutable@^4.0.0":
-  "integrity" "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg=="
-  "resolved" "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz"
-  "version" "4.3.0"
-
-"import-fresh@^3.0.0", "import-fresh@^3.2.1":
-  "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="
-  "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
-  "version" "3.3.0"
+inflight@^1.0.4:
+  version "1.0.6"
+  resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
+  integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
   dependencies:
-    "parent-module" "^1.0.0"
-    "resolve-from" "^4.0.0"
+    once "^1.3.0"
+    wrappy "1"
 
-"imurmurhash@^0.1.4":
-  "integrity" "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
-  "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
-  "version" "0.1.4"
+inherits@2:
+  version "2.0.4"
+  resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
+  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
 
-"inflight@^1.0.4":
-  "integrity" "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA=="
-  "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
-  "version" "1.0.6"
+is-arrayish@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
+  integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
+
+is-arrayish@^0.3.1:
+  version "0.3.2"
+  resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz"
+  integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
+
+is-binary-path@~2.1.0:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
+  integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
   dependencies:
-    "once" "^1.3.0"
-    "wrappy" "1"
+    binary-extensions "^2.0.0"
 
-"inherits@2":
-  "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
-  "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
-  "version" "2.0.4"
-
-"is-arrayish@^0.2.1":
-  "integrity" "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
-  "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
-  "version" "0.2.1"
-
-"is-arrayish@^0.3.1":
-  "integrity" "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
-  "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz"
-  "version" "0.3.2"
-
-"is-binary-path@~2.1.0":
-  "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="
-  "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
-  "version" "2.1.0"
+is-color-stop@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz"
+  integrity sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==
   dependencies:
-    "binary-extensions" "^2.0.0"
+    css-color-names "^0.0.4"
+    hex-color-regex "^1.1.0"
+    hsl-regex "^1.0.0"
+    hsla-regex "^1.0.0"
+    rgb-regex "^1.0.1"
+    rgba-regex "^1.0.0"
 
-"is-color-stop@^1.1.0":
-  "integrity" "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA=="
-  "resolved" "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz"
-  "version" "1.1.0"
+is-core-module@^2.11.0:
+  version "2.12.1"
+  resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz"
+  integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
   dependencies:
-    "css-color-names" "^0.0.4"
-    "hex-color-regex" "^1.1.0"
-    "hsl-regex" "^1.0.0"
-    "hsla-regex" "^1.0.0"
-    "rgb-regex" "^1.0.1"
-    "rgba-regex" "^1.0.0"
+    has "^1.0.3"
 
-"is-core-module@^2.11.0":
-  "integrity" "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg=="
-  "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz"
-  "version" "2.12.1"
+is-docker@^2.0.0, is-docker@^2.1.1:
+  version "2.2.1"
+  resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz"
+  integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
+
+is-expression@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz"
+  integrity sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==
   dependencies:
-    "has" "^1.0.3"
+    acorn "^7.1.1"
+    object-assign "^4.1.1"
 
-"is-docker@^2.0.0", "is-docker@^2.1.1":
-  "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
-  "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz"
-  "version" "2.2.1"
+is-extglob@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
+  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
 
-"is-expression@^4.0.0":
-  "integrity" "sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A=="
-  "resolved" "https://registry.npmjs.org/is-expression/-/is-expression-4.0.0.tgz"
-  "version" "4.0.0"
+is-fullwidth-code-point@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
+  integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
+
+is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
+  version "4.0.3"
+  resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
+  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
   dependencies:
-    "acorn" "^7.1.1"
-    "object-assign" "^4.1.1"
+    is-extglob "^2.1.1"
 
-"is-extglob@^2.1.1":
-  "integrity" "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
-  "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
-  "version" "2.1.1"
+is-number@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
+  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
 
-"is-fullwidth-code-point@^3.0.0":
-  "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
-  "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
-  "version" "3.0.0"
+is-path-inside@^3.0.3:
+  version "3.0.3"
+  resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
+  integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
 
-"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1":
-  "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="
-  "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
-  "version" "4.0.3"
+is-promise@^2.0.0:
+  version "2.2.2"
+  resolved "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz"
+  integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==
+
+is-regex@^1.0.3:
+  version "1.1.4"
+  resolved "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz"
+  integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
   dependencies:
-    "is-extglob" "^2.1.1"
+    call-bind "^1.0.2"
+    has-tostringtag "^1.0.0"
 
-"is-number@^7.0.0":
-  "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
-  "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
-  "version" "7.0.0"
-
-"is-path-inside@^3.0.3":
-  "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ=="
-  "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
-  "version" "3.0.3"
-
-"is-promise@^2.0.0":
-  "integrity" "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
-  "resolved" "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz"
-  "version" "2.2.2"
-
-"is-regex@^1.0.3":
-  "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg=="
-  "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz"
-  "version" "1.1.4"
+is-wsl@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz"
+  integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
   dependencies:
-    "call-bind" "^1.0.2"
-    "has-tostringtag" "^1.0.0"
+    is-docker "^2.0.0"
 
-"is-wsl@^2.2.0":
-  "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="
-  "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz"
-  "version" "2.2.0"
+isexe@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
+  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
+
+js-md5@^0.7.3:
+  version "0.7.3"
+  resolved "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz"
+  integrity sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==
+
+js-stringify@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz"
+  integrity sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g==
+
+js-tokens@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
+  integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
+
+js-yaml@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
+  integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
   dependencies:
-    "is-docker" "^2.0.0"
+    argparse "^2.0.1"
 
-"isexe@^2.0.0":
-  "integrity" "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
-  "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
-  "version" "2.0.0"
+jsesc@^2.5.1:
+  version "2.5.2"
+  resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
+  integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
 
-"js-md5@^0.7.3":
-  "integrity" "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
-  "resolved" "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz"
-  "version" "0.7.3"
+json-parse-even-better-errors@^2.3.0:
+  version "2.3.1"
+  resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
+  integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
 
-"js-stringify@^1.0.2":
-  "integrity" "sha512-rtS5ATOo2Q5k1G+DADISilDA6lv79zIiwFd6CcjuIxGKLFm5C+RLImRscVap9k55i+MOZwgliw+NejvkLuGD5g=="
-  "resolved" "https://registry.npmjs.org/js-stringify/-/js-stringify-1.0.2.tgz"
-  "version" "1.0.2"
+json-schema-traverse@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
+  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
 
-"js-tokens@^4.0.0":
-  "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
-  "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
-  "version" "4.0.0"
+json-stable-stringify-without-jsonify@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
+  integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
 
-"js-yaml@^4.1.0":
-  "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="
-  "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
-  "version" "4.1.0"
+json5@^2.2.2:
+  version "2.2.3"
+  resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
+  integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonfile@^6.0.1:
+  version "6.1.0"
+  resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
+  integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
   dependencies:
-    "argparse" "^2.0.1"
-
-"jsesc@^2.5.1":
-  "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA=="
-  "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
-  "version" "2.5.2"
-
-"json-parse-even-better-errors@^2.3.0":
-  "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
-  "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
-  "version" "2.3.1"
-
-"json-schema-traverse@^0.4.1":
-  "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
-  "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
-  "version" "0.4.1"
-
-"json-stable-stringify-without-jsonify@^1.0.1":
-  "integrity" "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="
-  "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
-  "version" "1.0.1"
-
-"json5@^2.2.2":
-  "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
-  "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
-  "version" "2.2.3"
-
-"jsonfile@^6.0.1":
-  "integrity" "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ=="
-  "resolved" "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
-  "version" "6.1.0"
-  dependencies:
-    "universalify" "^2.0.0"
+    universalify "^2.0.0"
   optionalDependencies:
-    "graceful-fs" "^4.1.6"
+    graceful-fs "^4.1.6"
 
-"jsqr@^1.4.0":
-  "integrity" "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A=="
-  "resolved" "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz"
-  "version" "1.4.0"
+jsqr@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz"
+  integrity sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==
 
-"jstransformer@1.0.0":
-  "integrity" "sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A=="
-  "resolved" "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz"
-  "version" "1.0.0"
+jstransformer@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz"
+  integrity sha512-C9YK3Rf8q6VAPDCCU9fnqo3mAfOH6vUGnMcP4AQAYIEpWtfGLpwOTmZ+igtdK5y+VvI2n3CyYSzy4Qh34eq24A==
   dependencies:
-    "is-promise" "^2.0.0"
-    "promise" "^7.0.1"
+    is-promise "^2.0.0"
+    promise "^7.0.1"
 
-"klinecharts@^8.6.3":
-  "integrity" "sha512-hGDtWiMNywEDneZFmt+vZ6tOYutCDWV5FPBcXcn7L8kGwe73Q5yJayk8UzP9pIQSBWyxswWIySKh/BVFA6GhuQ=="
-  "resolved" "https://registry.npmjs.org/klinecharts/-/klinecharts-8.6.3.tgz"
-  "version" "8.6.3"
+klinecharts@^8.6.3:
+  version "8.6.3"
+  resolved "https://registry.npmjs.org/klinecharts/-/klinecharts-8.6.3.tgz"
+  integrity sha512-hGDtWiMNywEDneZFmt+vZ6tOYutCDWV5FPBcXcn7L8kGwe73Q5yJayk8UzP9pIQSBWyxswWIySKh/BVFA6GhuQ==
 
-"levn@^0.4.1":
-  "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="
-  "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
-  "version" "0.4.1"
+levn@^0.4.1:
+  version "0.4.1"
+  resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
+  integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
   dependencies:
-    "prelude-ls" "^1.2.1"
-    "type-check" "~0.4.0"
+    prelude-ls "^1.2.1"
+    type-check "~0.4.0"
 
-"lilconfig@^2.0.5":
-  "integrity" "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="
-  "resolved" "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz"
-  "version" "2.1.0"
+lilconfig@^2.0.5:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz"
+  integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
 
-"lines-and-columns@^1.1.6":
-  "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
-  "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
-  "version" "1.2.4"
+lines-and-columns@^1.1.6:
+  version "1.2.4"
+  resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
+  integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
 
-"local-pkg@^0.4.2", "local-pkg@^0.4.3":
-  "integrity" "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g=="
-  "resolved" "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz"
-  "version" "0.4.3"
+local-pkg@^0.4.2, local-pkg@^0.4.3:
+  version "0.4.3"
+  resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz"
+  integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
 
-"locate-path@^5.0.0":
-  "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="
-  "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
-  "version" "5.0.0"
+locate-path@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
+  integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
   dependencies:
-    "p-locate" "^4.1.0"
+    p-locate "^4.1.0"
 
-"locate-path@^6.0.0":
-  "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="
-  "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
-  "version" "6.0.0"
+locate-path@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
+  integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
   dependencies:
-    "p-locate" "^5.0.0"
+    p-locate "^5.0.0"
 
-"lodash.merge@^4.6.2":
-  "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
-  "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
-  "version" "4.6.2"
+lodash.merge@^4.6.2:
+  version "4.6.2"
+  resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
+  integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
 
-"lodash.topath@^4.5.2":
-  "integrity" "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg=="
-  "resolved" "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz"
-  "version" "4.5.2"
+lodash.topath@^4.5.2:
+  version "4.5.2"
+  resolved "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz"
+  integrity sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==
 
-"lodash@^4.17.21":
-  "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
-  "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
-  "version" "4.17.21"
+lodash@^4.17.21:
+  version "4.17.21"
+  resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
+  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
 
-"lower-case@^2.0.2":
-  "integrity" "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg=="
-  "resolved" "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz"
-  "version" "2.0.2"
+lower-case@^2.0.2:
+  version "2.0.2"
+  resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz"
+  integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
   dependencies:
-    "tslib" "^2.0.3"
+    tslib "^2.0.3"
 
-"lru-cache@^5.1.1":
-  "integrity" "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="
-  "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
-  "version" "5.1.1"
+lru-cache@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
+  integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
   dependencies:
-    "yallist" "^3.0.2"
+    yallist "^3.0.2"
 
-"lru-cache@^6.0.0":
-  "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="
-  "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
-  "version" "6.0.0"
+lru-cache@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
+  integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
   dependencies:
-    "yallist" "^4.0.0"
+    yallist "^4.0.0"
 
-"magic-string-ast@^0.1.2":
-  "integrity" "sha512-P53AZrzq7hclCU6HWj88xNZHmP15DKjMmK/vBytO1qnpYP3ul4IEZlyCE0aU3JRnmgWmZPmoTKj4Bls7v0pMyA=="
-  "resolved" "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.1.2.tgz"
-  "version" "0.1.2"
+magic-string-ast@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.npmjs.org/magic-string-ast/-/magic-string-ast-0.1.2.tgz"
+  integrity sha512-P53AZrzq7hclCU6HWj88xNZHmP15DKjMmK/vBytO1qnpYP3ul4IEZlyCE0aU3JRnmgWmZPmoTKj4Bls7v0pMyA==
   dependencies:
-    "magic-string" "^0.30.0"
+    magic-string "^0.30.0"
 
-"magic-string@^0.27.0":
-  "integrity" "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA=="
-  "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz"
-  "version" "0.27.0"
+magic-string@^0.27.0:
+  version "0.27.0"
+  resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz"
+  integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
   dependencies:
     "@jridgewell/sourcemap-codec" "^1.4.13"
 
-"magic-string@^0.30.0":
-  "integrity" "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ=="
-  "resolved" "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz"
-  "version" "0.30.0"
+magic-string@^0.30.0:
+  version "0.30.0"
+  resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz"
+  integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==
   dependencies:
     "@jridgewell/sourcemap-codec" "^1.4.13"
 
-"merge2@^1.3.0":
-  "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
-  "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
-  "version" "1.4.1"
+merge2@^1.3.0:
+  version "1.4.1"
+  resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
+  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
 
-"micromatch@^4.0.4":
-  "integrity" "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA=="
-  "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
-  "version" "4.0.5"
+micromatch@^4.0.4:
+  version "4.0.5"
+  resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz"
+  integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
   dependencies:
-    "braces" "^3.0.2"
-    "picomatch" "^2.3.1"
+    braces "^3.0.2"
+    picomatch "^2.3.1"
 
-"mime-db@1.52.0":
-  "integrity" "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
-  "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
-  "version" "1.52.0"
+mime-db@1.52.0:
+  version "1.52.0"
+  resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
+  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
 
-"mime-types@^2.1.12":
-  "integrity" "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="
-  "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
-  "version" "2.1.35"
+mime-types@^2.1.12:
+  version "2.1.35"
+  resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
+  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
   dependencies:
-    "mime-db" "1.52.0"
+    mime-db "1.52.0"
 
-"minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2":
-  "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="
-  "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
-  "version" "3.1.2"
+minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+  integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
   dependencies:
-    "brace-expansion" "^1.1.7"
+    brace-expansion "^1.1.7"
 
-"minimatch@^5.1.1":
-  "integrity" "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="
-  "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz"
-  "version" "5.1.6"
+minimatch@^5.1.1:
+  version "5.1.6"
+  resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz"
+  integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
   dependencies:
-    "brace-expansion" "^2.0.1"
+    brace-expansion "^2.0.1"
 
-"minimist@^1.2.6":
-  "integrity" "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
-  "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
-  "version" "1.2.8"
+minimist@^1.2.6:
+  version "1.2.8"
+  resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
+  integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
 
-"modern-normalize@^1.1.0":
-  "integrity" "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA=="
-  "resolved" "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz"
-  "version" "1.1.0"
+modern-normalize@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz"
+  integrity sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==
 
-"ms@2.1.2":
-  "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
-  "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
-  "version" "2.1.2"
+ms@2.1.2:
+  version "2.1.2"
+  resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
+  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
 
-"nanoid@^3.3.6":
-  "integrity" "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
-  "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz"
-  "version" "3.3.6"
+nanoid@^3.3.6:
+  version "3.3.6"
+  resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz"
+  integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
 
-"natural-compare@^1.4.0":
-  "integrity" "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="
-  "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
-  "version" "1.4.0"
+natural-compare@^1.4.0:
+  version "1.4.0"
+  resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
+  integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
 
-"no-case@^3.0.4":
-  "integrity" "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="
-  "resolved" "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz"
-  "version" "3.0.4"
+no-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz"
+  integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
   dependencies:
-    "lower-case" "^2.0.2"
-    "tslib" "^2.0.3"
+    lower-case "^2.0.2"
+    tslib "^2.0.3"
 
-"node-emoji@^1.11.0":
-  "integrity" "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A=="
-  "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz"
-  "version" "1.11.0"
+node-emoji@^1.11.0:
+  version "1.11.0"
+  resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz"
+  integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==
   dependencies:
-    "lodash" "^4.17.21"
+    lodash "^4.17.21"
 
-"node-releases@^2.0.12":
-  "integrity" "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ=="
-  "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz"
-  "version" "2.0.12"
+node-releases@^2.0.12:
+  version "2.0.12"
+  resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz"
+  integrity sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==
 
-"normalize-path@^3.0.0", "normalize-path@~3.0.0":
-  "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
-  "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
-  "version" "3.0.0"
+normalize-path@^3.0.0, normalize-path@~3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
+  integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
 
-"normalize-range@^0.1.2":
-  "integrity" "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="
-  "resolved" "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
-  "version" "0.1.2"
+normalize-range@^0.1.2:
+  version "0.1.2"
+  resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
+  integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
 
-"nth-check@^2.0.1":
-  "integrity" "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="
-  "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
-  "version" "2.1.1"
+nth-check@^2.0.1:
+  version "2.1.1"
+  resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
+  integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
   dependencies:
-    "boolbase" "^1.0.0"
+    boolbase "^1.0.0"
 
-"num2fraction@^1.2.2":
-  "integrity" "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg=="
-  "resolved" "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz"
-  "version" "1.2.2"
+num2fraction@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz"
+  integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==
 
-"object-assign@^4.1.1":
-  "integrity" "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
-  "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
-  "version" "4.1.1"
+object-assign@^4.1.1:
+  version "4.1.1"
+  resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
+  integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
 
-"object-hash@^2.2.0":
-  "integrity" "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="
-  "resolved" "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz"
-  "version" "2.2.0"
+object-hash@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz"
+  integrity sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==
 
-"object-inspect@^1.9.0":
-  "integrity" "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
-  "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz"
-  "version" "1.12.3"
+object-inspect@^1.9.0:
+  version "1.12.3"
+  resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz"
+  integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
 
-"once@^1.3.0":
-  "integrity" "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="
-  "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
-  "version" "1.4.0"
+once@^1.3.0:
+  version "1.4.0"
+  resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
+  integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
   dependencies:
-    "wrappy" "1"
+    wrappy "1"
 
-"open@^8.4.0":
-  "integrity" "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="
-  "resolved" "https://registry.npmjs.org/open/-/open-8.4.2.tgz"
-  "version" "8.4.2"
+open@^8.4.0:
+  version "8.4.2"
+  resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz"
+  integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
   dependencies:
-    "define-lazy-prop" "^2.0.0"
-    "is-docker" "^2.1.1"
-    "is-wsl" "^2.2.0"
+    define-lazy-prop "^2.0.0"
+    is-docker "^2.1.1"
+    is-wsl "^2.2.0"
 
-"optionator@^0.9.1":
-  "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw=="
-  "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz"
-  "version" "0.9.1"
+optionator@^0.9.1:
+  version "0.9.1"
+  resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz"
+  integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
   dependencies:
-    "deep-is" "^0.1.3"
-    "fast-levenshtein" "^2.0.6"
-    "levn" "^0.4.1"
-    "prelude-ls" "^1.2.1"
-    "type-check" "^0.4.0"
-    "word-wrap" "^1.2.3"
+    deep-is "^0.1.3"
+    fast-levenshtein "^2.0.6"
+    levn "^0.4.1"
+    prelude-ls "^1.2.1"
+    type-check "^0.4.0"
+    word-wrap "^1.2.3"
 
-"p-limit@^2.2.0":
-  "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
-  "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
-  "version" "2.3.0"
+p-limit@^2.2.0:
+  version "2.3.0"
+  resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
+  integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
   dependencies:
-    "p-try" "^2.0.0"
+    p-try "^2.0.0"
 
-"p-limit@^3.0.2":
-  "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="
-  "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
-  "version" "3.1.0"
+p-limit@^3.0.2:
+  version "3.1.0"
+  resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
+  integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
   dependencies:
-    "yocto-queue" "^0.1.0"
+    yocto-queue "^0.1.0"
 
-"p-locate@^4.1.0":
-  "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="
-  "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
-  "version" "4.1.0"
+p-locate@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
+  integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
   dependencies:
-    "p-limit" "^2.2.0"
+    p-limit "^2.2.0"
 
-"p-locate@^5.0.0":
-  "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="
-  "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
-  "version" "5.0.0"
+p-locate@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
+  integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
   dependencies:
-    "p-limit" "^3.0.2"
+    p-limit "^3.0.2"
 
-"p-try@^2.0.0":
-  "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
-  "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
-  "version" "2.2.0"
+p-try@^2.0.0:
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
+  integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
 
-"param-case@^3.0.4":
-  "integrity" "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A=="
-  "resolved" "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz"
-  "version" "3.0.4"
+param-case@^3.0.4:
+  version "3.0.4"
+  resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz"
+  integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
   dependencies:
-    "dot-case" "^3.0.4"
-    "tslib" "^2.0.3"
+    dot-case "^3.0.4"
+    tslib "^2.0.3"
 
-"parent-module@^1.0.0":
-  "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="
-  "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
-  "version" "1.0.1"
+parent-module@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
+  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
   dependencies:
-    "callsites" "^3.0.0"
+    callsites "^3.0.0"
 
-"parse-json@^5.0.0":
-  "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg=="
-  "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
-  "version" "5.2.0"
+parse-json@^5.0.0:
+  version "5.2.0"
+  resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
+  integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
   dependencies:
     "@babel/code-frame" "^7.0.0"
-    "error-ex" "^1.3.1"
-    "json-parse-even-better-errors" "^2.3.0"
-    "lines-and-columns" "^1.1.6"
+    error-ex "^1.3.1"
+    json-parse-even-better-errors "^2.3.0"
+    lines-and-columns "^1.1.6"
 
-"pascal-case@^3.1.2":
-  "integrity" "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g=="
-  "resolved" "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz"
-  "version" "3.1.2"
+pascal-case@^3.1.2:
+  version "3.1.2"
+  resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz"
+  integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
   dependencies:
-    "no-case" "^3.0.4"
-    "tslib" "^2.0.3"
+    no-case "^3.0.4"
+    tslib "^2.0.3"
 
-"path-exists@^4.0.0":
-  "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
-  "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
-  "version" "4.0.0"
+path-exists@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
+  integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
 
-"path-is-absolute@^1.0.0":
-  "integrity" "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
-  "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
-  "version" "1.0.1"
+path-is-absolute@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
+  integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
 
-"path-key@^3.1.0":
-  "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
-  "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
-  "version" "3.1.1"
+path-key@^3.1.0:
+  version "3.1.1"
+  resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
+  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
 
-"path-parse@^1.0.7":
-  "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
-  "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
-  "version" "1.0.7"
+path-parse@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
+  integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 
-"path-type@^4.0.0":
-  "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
-  "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
-  "version" "4.0.0"
+path-type@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
+  integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
 
-"picocolors@^0.2.1":
-  "integrity" "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA=="
-  "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz"
-  "version" "0.2.1"
+picocolors@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz"
+  integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
 
-"picocolors@^1.0.0":
-  "integrity" "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
-  "resolved" "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
-  "version" "1.0.0"
+picocolors@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz"
+  integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
 
-"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.3.1":
-  "integrity" "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
-  "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
-  "version" "2.3.1"
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
+  version "2.3.1"
+  resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
+  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 
-"pinia-plugin-persistedstate@^3.0.2":
-  "integrity" "sha512-8UN+vYMEPBdgNLwceY08mi5olI0wkYaEb8b6hD6xW7SnBRuPydWHlEhZvUWgNb/ibuf4PvufpvtS+dmhYjJQOw=="
-  "resolved" "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.1.0.tgz"
-  "version" "3.1.0"
+pinia-plugin-persistedstate@^3.0.2:
+  version "3.1.0"
+  resolved "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.1.0.tgz"
+  integrity sha512-8UN+vYMEPBdgNLwceY08mi5olI0wkYaEb8b6hD6xW7SnBRuPydWHlEhZvUWgNb/ibuf4PvufpvtS+dmhYjJQOw==
 
-"pinia@^2.0.0", "pinia@2.0.23":
-  "integrity" "sha512-N15hFf4o5STrxpNrib1IEb1GOArvPYf1zPvQVRGOO1G1d74Ak0J0lVyalX/SmrzdT4Q0nlEFjbURsmBmIGUR5Q=="
-  "resolved" "https://registry.npmjs.org/pinia/-/pinia-2.0.23.tgz"
-  "version" "2.0.23"
+pinia@2.0.23:
+  version "2.0.23"
+  resolved "https://registry.npmjs.org/pinia/-/pinia-2.0.23.tgz"
+  integrity sha512-N15hFf4o5STrxpNrib1IEb1GOArvPYf1zPvQVRGOO1G1d74Ak0J0lVyalX/SmrzdT4Q0nlEFjbURsmBmIGUR5Q==
   dependencies:
     "@vue/devtools-api" "^6.4.4"
-    "vue-demi" "*"
+    vue-demi "*"
 
-"pngjs@^5.0.0":
-  "integrity" "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
-  "resolved" "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz"
-  "version" "5.0.0"
+pngjs@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz"
+  integrity sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==
 
-"postcss-functions@^3":
-  "integrity" "sha512-N5yWXWKA+uhpLQ9ZhBRl2bIAdM6oVJYpDojuI1nF2SzXBimJcdjFwiAouBVbO5VuOF3qA6BSFWFc3wXbbj72XQ=="
-  "resolved" "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz"
-  "version" "3.0.0"
+postcss-functions@^3:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/postcss-functions/-/postcss-functions-3.0.0.tgz"
+  integrity sha512-N5yWXWKA+uhpLQ9ZhBRl2bIAdM6oVJYpDojuI1nF2SzXBimJcdjFwiAouBVbO5VuOF3qA6BSFWFc3wXbbj72XQ==
   dependencies:
-    "glob" "^7.1.2"
-    "object-assign" "^4.1.1"
-    "postcss" "^6.0.9"
-    "postcss-value-parser" "^3.3.0"
+    glob "^7.1.2"
+    object-assign "^4.1.1"
+    postcss "^6.0.9"
+    postcss-value-parser "^3.3.0"
 
-"postcss-js@^2":
-  "integrity" "sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w=="
-  "resolved" "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz"
-  "version" "2.0.3"
+postcss-js@^2:
+  version "2.0.3"
+  resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-2.0.3.tgz"
+  integrity sha512-zS59pAk3deu6dVHyrGqmC3oDXBdNdajk4k1RyxeVXCrcEDBUBHoIhE4QTsmhxgzXxsaqFDAkUZfmMa5f/N/79w==
   dependencies:
-    "camelcase-css" "^2.0.1"
-    "postcss" "^7.0.18"
+    camelcase-css "^2.0.1"
+    postcss "^7.0.18"
 
-"postcss-load-config@^3.1.0":
-  "integrity" "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg=="
-  "resolved" "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz"
-  "version" "3.1.4"
+postcss-load-config@^3.1.0:
+  version "3.1.4"
+  resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz"
+  integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
   dependencies:
-    "lilconfig" "^2.0.5"
-    "yaml" "^1.10.2"
+    lilconfig "^2.0.5"
+    yaml "^1.10.2"
 
-"postcss-nested@^4":
-  "integrity" "sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw=="
-  "resolved" "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz"
-  "version" "4.2.3"
+postcss-nested@^4:
+  version "4.2.3"
+  resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-4.2.3.tgz"
+  integrity sha512-rOv0W1HquRCamWy2kFl3QazJMMe1ku6rCFoAAH+9AcxdbpDeBr6k968MLWuLjvjMcGEip01ak09hKOEgpK9hvw==
   dependencies:
-    "postcss" "^7.0.32"
-    "postcss-selector-parser" "^6.0.2"
+    postcss "^7.0.32"
+    postcss-selector-parser "^6.0.2"
 
-"postcss-pxtorem@^5.1.1":
-  "integrity" "sha512-uvgIujL/pn0GbZ+rczESD2orHsbXrrCqi+q9wJO8PCk3ZGCoVVtu5hZTbtk+tbZHZP5UkTfCvqOrTZs9Ncqfsg=="
-  "resolved" "https://registry.npmjs.org/postcss-pxtorem/-/postcss-pxtorem-5.1.1.tgz"
-  "version" "5.1.1"
+postcss-pxtorem@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmjs.org/postcss-pxtorem/-/postcss-pxtorem-5.1.1.tgz"
+  integrity sha512-uvgIujL/pn0GbZ+rczESD2orHsbXrrCqi+q9wJO8PCk3ZGCoVVtu5hZTbtk+tbZHZP5UkTfCvqOrTZs9Ncqfsg==
   dependencies:
-    "postcss" "^7.0.27"
+    postcss "^7.0.27"
 
-"postcss-selector-parser@^6.0.2", "postcss-selector-parser@^6.0.6", "postcss-selector-parser@^6.0.9":
-  "integrity" "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ=="
-  "resolved" "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz"
-  "version" "6.0.13"
+postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.6, postcss-selector-parser@^6.0.9:
+  version "6.0.13"
+  resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz"
+  integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==
   dependencies:
-    "cssesc" "^3.0.0"
-    "util-deprecate" "^1.0.2"
+    cssesc "^3.0.0"
+    util-deprecate "^1.0.2"
 
-"postcss-value-parser@^3.3.0":
-  "integrity" "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ=="
-  "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz"
-  "version" "3.3.1"
+postcss-value-parser@^3.3.0:
+  version "3.3.1"
+  resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz"
+  integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==
 
-"postcss-value-parser@^4.1.0", "postcss-value-parser@^4.2.0":
-  "integrity" "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
-  "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
-  "version" "4.2.0"
+postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+  version "4.2.0"
+  resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
+  integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
 
-"postcss@^6.0.9":
-  "integrity" "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag=="
-  "resolved" "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz"
-  "version" "6.0.23"
+postcss@^6.0.9:
+  version "6.0.23"
+  resolved "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz"
+  integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==
   dependencies:
-    "chalk" "^2.4.1"
-    "source-map" "^0.6.1"
-    "supports-color" "^5.4.0"
+    chalk "^2.4.1"
+    source-map "^0.6.1"
+    supports-color "^5.4.0"
 
-"postcss@^7.0.18":
-  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
-  "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
-  "version" "7.0.39"
+postcss@^7, postcss@^7.0.18, postcss@^7.0.27, postcss@^7.0.32:
+  version "7.0.39"
+  resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
+  integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
   dependencies:
-    "picocolors" "^0.2.1"
-    "source-map" "^0.6.1"
+    picocolors "^0.2.1"
+    source-map "^0.6.1"
 
-"postcss@^7.0.27":
-  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
-  "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
-  "version" "7.0.39"
+postcss@^8.1.10, postcss@^8.3.5, postcss@^8.4.18, postcss@^8.4.19:
+  version "8.4.24"
+  resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz"
+  integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==
   dependencies:
-    "picocolors" "^0.2.1"
-    "source-map" "^0.6.1"
+    nanoid "^3.3.6"
+    picocolors "^1.0.0"
+    source-map-js "^1.0.2"
 
-"postcss@^7", "postcss@^7.0.32":
-  "integrity" "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA=="
-  "resolved" "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
-  "version" "7.0.39"
+prelude-ls@^1.2.1:
+  version "1.2.1"
+  resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
+  integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+
+prettier-linter-helpers@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz"
+  integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==
   dependencies:
-    "picocolors" "^0.2.1"
-    "source-map" "^0.6.1"
+    fast-diff "^1.1.2"
 
-"postcss@^8.1.0", "postcss@^8.1.10", "postcss@^8.3.5", "postcss@^8.4.18", "postcss@^8.4.19", "postcss@>=8.0.9":
-  "integrity" "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg=="
-  "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz"
-  "version" "8.4.24"
+prettier@^2.7.1:
+  version "2.8.8"
+  resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz"
+  integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
+
+pretty-hrtime@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz"
+  integrity sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==
+
+promise@^7.0.1:
+  version "7.3.1"
+  resolved "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz"
+  integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==
   dependencies:
-    "nanoid" "^3.3.6"
-    "picocolors" "^1.0.0"
-    "source-map-js" "^1.0.2"
+    asap "~2.0.3"
 
-"prelude-ls@^1.2.1":
-  "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="
-  "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
-  "version" "1.2.1"
+proxy-from-env@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
+  integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
 
-"prettier-linter-helpers@^1.0.0":
-  "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w=="
-  "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz"
-  "version" "1.0.0"
+pug-attrs@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz"
+  integrity sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA==
   dependencies:
-    "fast-diff" "^1.1.2"
+    constantinople "^4.0.1"
+    js-stringify "^1.0.2"
+    pug-runtime "^3.0.0"
 
-"prettier@^2.7.1", "prettier@>=2.0.0":
-  "integrity" "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q=="
-  "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz"
-  "version" "2.8.8"
-
-"pretty-hrtime@^1.0.3":
-  "integrity" "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A=="
-  "resolved" "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz"
-  "version" "1.0.3"
-
-"promise@^7.0.1":
-  "integrity" "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg=="
-  "resolved" "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz"
-  "version" "7.3.1"
+pug-code-gen@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz"
+  integrity sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg==
   dependencies:
-    "asap" "~2.0.3"
+    constantinople "^4.0.1"
+    doctypes "^1.1.0"
+    js-stringify "^1.0.2"
+    pug-attrs "^3.0.0"
+    pug-error "^2.0.0"
+    pug-runtime "^3.0.0"
+    void-elements "^3.1.0"
+    with "^7.0.0"
 
-"proxy-from-env@^1.1.0":
-  "integrity" "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
-  "resolved" "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
-  "version" "1.1.0"
+pug-error@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz"
+  integrity sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ==
 
-"pug-attrs@^3.0.0":
-  "integrity" "sha512-azINV9dUtzPMFQktvTXciNAfAuVh/L/JCl0vtPCwvOA21uZrC08K/UnmrL+SXGEVc1FwzjW62+xw5S/uaLj6cA=="
-  "resolved" "https://registry.npmjs.org/pug-attrs/-/pug-attrs-3.0.0.tgz"
-  "version" "3.0.0"
+pug-filters@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz"
+  integrity sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A==
   dependencies:
-    "constantinople" "^4.0.1"
-    "js-stringify" "^1.0.2"
-    "pug-runtime" "^3.0.0"
+    constantinople "^4.0.1"
+    jstransformer "1.0.0"
+    pug-error "^2.0.0"
+    pug-walk "^2.0.0"
+    resolve "^1.15.1"
 
-"pug-code-gen@^3.0.2":
-  "integrity" "sha512-nJMhW16MbiGRiyR4miDTQMRWDgKplnHyeLvioEJYbk1RsPI3FuA3saEP8uwnTb2nTJEKBU90NFVWJBk4OU5qyg=="
-  "resolved" "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-3.0.2.tgz"
-  "version" "3.0.2"
+pug-lexer@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz"
+  integrity sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==
   dependencies:
-    "constantinople" "^4.0.1"
-    "doctypes" "^1.1.0"
-    "js-stringify" "^1.0.2"
-    "pug-attrs" "^3.0.0"
-    "pug-error" "^2.0.0"
-    "pug-runtime" "^3.0.0"
-    "void-elements" "^3.1.0"
-    "with" "^7.0.0"
+    character-parser "^2.2.0"
+    is-expression "^4.0.0"
+    pug-error "^2.0.0"
 
-"pug-error@^2.0.0":
-  "integrity" "sha512-sjiUsi9M4RAGHktC1drQfCr5C5eriu24Lfbt4s+7SykztEOwVZtbFk1RRq0tzLxcMxMYTBR+zMQaG07J/btayQ=="
-  "resolved" "https://registry.npmjs.org/pug-error/-/pug-error-2.0.0.tgz"
-  "version" "2.0.0"
-
-"pug-filters@^4.0.0":
-  "integrity" "sha512-yeNFtq5Yxmfz0f9z2rMXGw/8/4i1cCFecw/Q7+D0V2DdtII5UvqE12VaZ2AY7ri6o5RNXiweGH79OCq+2RQU4A=="
-  "resolved" "https://registry.npmjs.org/pug-filters/-/pug-filters-4.0.0.tgz"
-  "version" "4.0.0"
+pug-linker@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz"
+  integrity sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw==
   dependencies:
-    "constantinople" "^4.0.1"
-    "jstransformer" "1.0.0"
-    "pug-error" "^2.0.0"
-    "pug-walk" "^2.0.0"
-    "resolve" "^1.15.1"
+    pug-error "^2.0.0"
+    pug-walk "^2.0.0"
 
-"pug-lexer@^5.0.1":
-  "integrity" "sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w=="
-  "resolved" "https://registry.npmjs.org/pug-lexer/-/pug-lexer-5.0.1.tgz"
-  "version" "5.0.1"
+pug-load@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz"
+  integrity sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ==
   dependencies:
-    "character-parser" "^2.2.0"
-    "is-expression" "^4.0.0"
-    "pug-error" "^2.0.0"
+    object-assign "^4.1.1"
+    pug-walk "^2.0.0"
 
-"pug-linker@^4.0.0":
-  "integrity" "sha512-gjD1yzp0yxbQqnzBAdlhbgoJL5qIFJw78juN1NpTLt/mfPJ5VgC4BvkoD3G23qKzJtIIXBbcCt6FioLSFLOHdw=="
-  "resolved" "https://registry.npmjs.org/pug-linker/-/pug-linker-4.0.0.tgz"
-  "version" "4.0.0"
+pug-parser@^6.0.0:
+  version "6.0.0"
+  resolved "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz"
+  integrity sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==
   dependencies:
-    "pug-error" "^2.0.0"
-    "pug-walk" "^2.0.0"
+    pug-error "^2.0.0"
+    token-stream "1.0.0"
 
-"pug-load@^3.0.0":
-  "integrity" "sha512-OCjTEnhLWZBvS4zni/WUMjH2YSUosnsmjGBB1An7CsKQarYSWQ0GCVyd4eQPMFJqZ8w9xgs01QdiZXKVjk92EQ=="
-  "resolved" "https://registry.npmjs.org/pug-load/-/pug-load-3.0.0.tgz"
-  "version" "3.0.0"
+pug-runtime@^3.0.0, pug-runtime@^3.0.1:
+  version "3.0.1"
+  resolved "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz"
+  integrity sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg==
+
+pug-strip-comments@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz"
+  integrity sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ==
   dependencies:
-    "object-assign" "^4.1.1"
-    "pug-walk" "^2.0.0"
+    pug-error "^2.0.0"
 
-"pug-parser@^6.0.0":
-  "integrity" "sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw=="
-  "resolved" "https://registry.npmjs.org/pug-parser/-/pug-parser-6.0.0.tgz"
-  "version" "6.0.0"
+pug-walk@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz"
+  integrity sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ==
+
+pug@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz"
+  integrity sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw==
   dependencies:
-    "pug-error" "^2.0.0"
-    "token-stream" "1.0.0"
+    pug-code-gen "^3.0.2"
+    pug-filters "^4.0.0"
+    pug-lexer "^5.0.1"
+    pug-linker "^4.0.0"
+    pug-load "^3.0.0"
+    pug-parser "^6.0.0"
+    pug-runtime "^3.0.1"
+    pug-strip-comments "^2.0.0"
 
-"pug-runtime@^3.0.0", "pug-runtime@^3.0.1":
-  "integrity" "sha512-L50zbvrQ35TkpHwv0G6aLSuueDRwc/97XdY8kL3tOT0FmhgG7UypU3VztfV/LATAvmUfYi4wNxSajhSAeNN+Kg=="
-  "resolved" "https://registry.npmjs.org/pug-runtime/-/pug-runtime-3.0.1.tgz"
-  "version" "3.0.1"
+punycode@^2.1.0:
+  version "2.3.0"
+  resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
+  integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
 
-"pug-strip-comments@^2.0.0":
-  "integrity" "sha512-zo8DsDpH7eTkPHCXFeAk1xZXJbyoTfdPlNR0bK7rpOMuhBYb0f5qUVCO1xlsitYd3w5FQTK7zpNVKb3rZoUrrQ=="
-  "resolved" "https://registry.npmjs.org/pug-strip-comments/-/pug-strip-comments-2.0.0.tgz"
-  "version" "2.0.0"
+purgecss@^4.0.3:
+  version "4.1.3"
+  resolved "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz"
+  integrity sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw==
   dependencies:
-    "pug-error" "^2.0.0"
+    commander "^8.0.0"
+    glob "^7.1.7"
+    postcss "^8.3.5"
+    postcss-selector-parser "^6.0.6"
 
-"pug-walk@^2.0.0":
-  "integrity" "sha512-yYELe9Q5q9IQhuvqsZNwA5hfPkMJ8u92bQLIMcsMxf/VADjNtEYptU+inlufAFYcWdHlwNfZOEnOOQrZrcyJCQ=="
-  "resolved" "https://registry.npmjs.org/pug-walk/-/pug-walk-2.0.0.tgz"
-  "version" "2.0.0"
-
-"pug@^3.0.2":
-  "integrity" "sha512-bp0I/hiK1D1vChHh6EfDxtndHji55XP/ZJKwsRqrz6lRia6ZC2OZbdAymlxdVFwd1L70ebrVJw4/eZ79skrIaw=="
-  "resolved" "https://registry.npmjs.org/pug/-/pug-3.0.2.tgz"
-  "version" "3.0.2"
+qrcode@^1.5.1:
+  version "1.5.3"
+  resolved "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz"
+  integrity sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==
   dependencies:
-    "pug-code-gen" "^3.0.2"
-    "pug-filters" "^4.0.0"
-    "pug-lexer" "^5.0.1"
-    "pug-linker" "^4.0.0"
-    "pug-load" "^3.0.0"
-    "pug-parser" "^6.0.0"
-    "pug-runtime" "^3.0.1"
-    "pug-strip-comments" "^2.0.0"
+    dijkstrajs "^1.0.1"
+    encode-utf8 "^1.0.3"
+    pngjs "^5.0.0"
+    yargs "^15.3.1"
 
-"punycode@^2.1.0":
-  "integrity" "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
-  "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
-  "version" "2.3.0"
-
-"purgecss@^4.0.3":
-  "integrity" "sha512-99cKy4s+VZoXnPxaoM23e5ABcP851nC2y2GROkkjS8eJaJtlciGavd7iYAw2V84WeBqggZ12l8ef44G99HmTaw=="
-  "resolved" "https://registry.npmjs.org/purgecss/-/purgecss-4.1.3.tgz"
-  "version" "4.1.3"
+qs@^6.11.1:
+  version "6.11.2"
+  resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz"
+  integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
   dependencies:
-    "commander" "^8.0.0"
-    "glob" "^7.1.7"
-    "postcss" "^8.3.5"
-    "postcss-selector-parser" "^6.0.6"
+    side-channel "^1.0.4"
 
-"qrcode@^1.5.1":
-  "integrity" "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg=="
-  "resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz"
-  "version" "1.5.3"
+queue-microtask@^1.2.2:
+  version "1.2.3"
+  resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
+  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
+quick-lru@^5.1.1:
+  version "5.1.1"
+  resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz"
+  integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
+
+readdirp@~3.6.0:
+  version "3.6.0"
+  resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
+  integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
   dependencies:
-    "dijkstrajs" "^1.0.1"
-    "encode-utf8" "^1.0.3"
-    "pngjs" "^5.0.0"
-    "yargs" "^15.3.1"
+    picomatch "^2.2.1"
 
-"qs@^6.11.1":
-  "integrity" "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA=="
-  "resolved" "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz"
-  "version" "6.11.2"
+reduce-css-calc@^2.1.8:
+  version "2.1.8"
+  resolved "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz"
+  integrity sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg==
   dependencies:
-    "side-channel" "^1.0.4"
+    css-unit-converter "^1.1.1"
+    postcss-value-parser "^3.3.0"
 
-"queue-microtask@^1.2.2":
-  "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
-  "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
-  "version" "1.2.3"
+regenerator-runtime@^0.13.11:
+  version "0.13.11"
+  resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
+  integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
 
-"quick-lru@^5.1.1":
-  "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
-  "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz"
-  "version" "5.1.1"
+require-directory@^2.1.1:
+  version "2.1.1"
+  resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
+  integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
 
-"readdirp@~3.6.0":
-  "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="
-  "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
-  "version" "3.6.0"
+require-main-filename@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz"
+  integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
+
+resolve-from@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
+  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
+
+resolve@^1.12.0, resolve@^1.15.1, resolve@^1.20.0, resolve@^1.22.1:
+  version "1.22.2"
+  resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz"
+  integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
   dependencies:
-    "picomatch" "^2.2.1"
+    is-core-module "^2.11.0"
+    path-parse "^1.0.7"
+    supports-preserve-symlinks-flag "^1.0.0"
 
-"reduce-css-calc@^2.1.8":
-  "integrity" "sha512-8liAVezDmUcH+tdzoEGrhfbGcP7nOV4NkGE3a74+qqvE7nt9i4sKLGBuZNOnpI4WiGksiNPklZxva80061QiPg=="
-  "resolved" "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-2.1.8.tgz"
-  "version" "2.1.8"
+reusify@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
+  integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rgb-regex@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz"
+  integrity sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==
+
+rgba-regex@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz"
+  integrity sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==
+
+rimraf@^3.0.0, rimraf@^3.0.2:
+  version "3.0.2"
+  resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
+  integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
   dependencies:
-    "css-unit-converter" "^1.1.1"
-    "postcss-value-parser" "^3.3.0"
+    glob "^7.1.3"
 
-"regenerator-runtime@^0.13.11":
-  "integrity" "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
-  "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
-  "version" "0.13.11"
-
-"require-directory@^2.1.1":
-  "integrity" "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
-  "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
-  "version" "2.1.1"
-
-"require-main-filename@^2.0.0":
-  "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
-  "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz"
-  "version" "2.0.0"
-
-"resolve-from@^4.0.0":
-  "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
-  "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
-  "version" "4.0.0"
-
-"resolve@^1.12.0", "resolve@^1.15.1", "resolve@^1.20.0", "resolve@^1.22.1":
-  "integrity" "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g=="
-  "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz"
-  "version" "1.22.2"
+rollup-plugin-visualizer@^5.9.0:
+  version "5.9.0"
+  resolved "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz"
+  integrity sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg==
   dependencies:
-    "is-core-module" "^2.11.0"
-    "path-parse" "^1.0.7"
-    "supports-preserve-symlinks-flag" "^1.0.0"
+    open "^8.4.0"
+    picomatch "^2.3.1"
+    source-map "^0.7.4"
+    yargs "^17.5.1"
 
-"reusify@^1.0.4":
-  "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
-  "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
-  "version" "1.0.4"
-
-"rgb-regex@^1.0.1":
-  "integrity" "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w=="
-  "resolved" "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz"
-  "version" "1.0.1"
-
-"rgba-regex@^1.0.0":
-  "integrity" "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg=="
-  "resolved" "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz"
-  "version" "1.0.0"
-
-"rimraf@^3.0.0", "rimraf@^3.0.2":
-  "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA=="
-  "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
-  "version" "3.0.2"
-  dependencies:
-    "glob" "^7.1.3"
-
-"rollup-plugin-visualizer@^5.9.0":
-  "integrity" "sha512-bbDOv47+Bw4C/cgs0czZqfm8L82xOZssk4ayZjG40y9zbXclNk7YikrZTDao6p7+HDiGxrN0b65SgZiVm9k1Cg=="
-  "resolved" "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.9.0.tgz"
-  "version" "5.9.0"
-  dependencies:
-    "open" "^8.4.0"
-    "picomatch" "^2.3.1"
-    "source-map" "^0.7.4"
-    "yargs" "^17.5.1"
-
-"rollup@^1.20.0||^2.0.0||^3.0.0", "rollup@^2.79.1", "rollup@2.x || 3.x":
-  "integrity" "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw=="
-  "resolved" "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
-  "version" "2.79.1"
+rollup@^2.79.1:
+  version "2.79.1"
+  resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
+  integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
   optionalDependencies:
-    "fsevents" "~2.3.2"
+    fsevents "~2.3.2"
 
-"run-parallel@^1.1.9":
-  "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="
-  "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
-  "version" "1.2.0"
+run-parallel@^1.1.9:
+  version "1.2.0"
+  resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
+  integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
   dependencies:
-    "queue-microtask" "^1.2.2"
+    queue-microtask "^1.2.2"
 
-"sass@*", "sass@^1.55.0":
-  "integrity" "sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A=="
-  "resolved" "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz"
-  "version" "1.62.1"
+sass@^1.55.0:
+  version "1.62.1"
+  resolved "https://registry.npmjs.org/sass/-/sass-1.62.1.tgz"
+  integrity sha512-NHpxIzN29MXvWiuswfc1W3I0N8SXBd8UR26WntmDlRYf0bSADnwnOjsyMZ3lMezSlArD33Vs3YFhp7dWvL770A==
   dependencies:
-    "chokidar" ">=3.0.0 <4.0.0"
-    "immutable" "^4.0.0"
-    "source-map-js" ">=0.6.2 <2.0.0"
+    chokidar ">=3.0.0 <4.0.0"
+    immutable "^4.0.0"
+    source-map-js ">=0.6.2 <2.0.0"
 
-"select@^1.1.2":
-  "integrity" "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
-  "resolved" "https://registry.npmjs.org/select/-/select-1.1.2.tgz"
-  "version" "1.1.2"
+select@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmjs.org/select/-/select-1.1.2.tgz"
+  integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==
 
-"semver@^6.3.0":
-  "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
-  "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
-  "version" "6.3.0"
+semver@^6.3.0:
+  version "6.3.0"
+  resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
+  integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
 
-"semver@^7.3.5", "semver@^7.3.6":
-  "integrity" "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw=="
-  "resolved" "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz"
-  "version" "7.5.1"
+semver@^7.3.5, semver@^7.3.6:
+  version "7.5.1"
+  resolved "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz"
+  integrity sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==
   dependencies:
-    "lru-cache" "^6.0.0"
+    lru-cache "^6.0.0"
 
-"set-blocking@^2.0.0":
-  "integrity" "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
-  "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
-  "version" "2.0.0"
+set-blocking@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
+  integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
 
-"shebang-command@^2.0.0":
-  "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="
-  "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
-  "version" "2.0.0"
+shebang-command@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
+  integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
   dependencies:
-    "shebang-regex" "^3.0.0"
+    shebang-regex "^3.0.0"
 
-"shebang-regex@^3.0.0":
-  "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
-  "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
-  "version" "3.0.0"
+shebang-regex@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
+  integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
 
-"shvl@^2.0.3":
-  "integrity" "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw=="
-  "resolved" "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz"
-  "version" "2.0.3"
+shvl@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.npmjs.org/shvl/-/shvl-2.0.3.tgz"
+  integrity sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw==
 
-"side-channel@^1.0.4":
-  "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw=="
-  "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
-  "version" "1.0.4"
+side-channel@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz"
+  integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
   dependencies:
-    "call-bind" "^1.0.0"
-    "get-intrinsic" "^1.0.2"
-    "object-inspect" "^1.9.0"
+    call-bind "^1.0.0"
+    get-intrinsic "^1.0.2"
+    object-inspect "^1.9.0"
 
-"simple-swizzle@^0.2.2":
-  "integrity" "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="
-  "resolved" "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
-  "version" "0.2.2"
+simple-swizzle@^0.2.2:
+  version "0.2.2"
+  resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
+  integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
   dependencies:
-    "is-arrayish" "^0.3.1"
+    is-arrayish "^0.3.1"
 
-"sortablejs@1.14.0":
-  "integrity" "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w=="
-  "resolved" "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz"
-  "version" "1.14.0"
+sortablejs@1.14.0:
+  version "1.14.0"
+  resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz"
+  integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==
 
-"source-map-js@^1.0.2", "source-map-js@>=0.6.2 <2.0.0":
-  "integrity" "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
-  "resolved" "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
-  "version" "1.0.2"
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz"
+  integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
 
-"source-map-support@~0.5.20":
-  "integrity" "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="
-  "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
-  "version" "0.5.21"
+source-map-support@~0.5.20:
+  version "0.5.21"
+  resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
+  integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
   dependencies:
-    "buffer-from" "^1.0.0"
-    "source-map" "^0.6.0"
+    buffer-from "^1.0.0"
+    source-map "^0.6.0"
 
-"source-map@^0.6.0", "source-map@^0.6.1", "source-map@0.6.1":
-  "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
-  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
-  "version" "0.6.1"
+source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1:
+  version "0.6.1"
+  resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
 
-"source-map@^0.7.4":
-  "integrity" "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="
-  "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
-  "version" "0.7.4"
+source-map@^0.7.4:
+  version "0.7.4"
+  resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
+  integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
 
-"string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.3":
-  "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="
-  "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
-  "version" "4.2.3"
+string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+  version "4.2.3"
+  resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
   dependencies:
-    "emoji-regex" "^8.0.0"
-    "is-fullwidth-code-point" "^3.0.0"
-    "strip-ansi" "^6.0.1"
+    emoji-regex "^8.0.0"
+    is-fullwidth-code-point "^3.0.0"
+    strip-ansi "^6.0.1"
 
-"strip-ansi@^6.0.0", "strip-ansi@^6.0.1":
-  "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="
-  "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
-  "version" "6.0.1"
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+  version "6.0.1"
+  resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
   dependencies:
-    "ansi-regex" "^5.0.1"
+    ansi-regex "^5.0.1"
 
-"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1":
-  "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
-  "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
-  "version" "3.1.1"
+strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
+  version "3.1.1"
+  resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
+  integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
 
-"supports-color@^5.3.0", "supports-color@^5.4.0":
-  "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="
-  "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
-  "version" "5.5.0"
+supports-color@^5.3.0, supports-color@^5.4.0:
+  version "5.5.0"
+  resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
+  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
   dependencies:
-    "has-flag" "^3.0.0"
+    has-flag "^3.0.0"
 
-"supports-color@^7.1.0":
-  "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
-  "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
-  "version" "7.2.0"
+supports-color@^7.1.0:
+  version "7.2.0"
+  resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+  integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
   dependencies:
-    "has-flag" "^4.0.0"
+    has-flag "^4.0.0"
 
-"supports-preserve-symlinks-flag@^1.0.0":
-  "integrity" "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
-  "resolved" "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
-  "version" "1.0.0"
+supports-preserve-symlinks-flag@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
+  integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
 
-"systemjs@^6.13.0":
-  "integrity" "sha512-8ftwWd+XnQtZ/aGbatrN4QFNGrKJzmbtixW+ODpci7pyoTajg4sonPP8aFLESAcuVxaC1FyDESt+SpfFCH9rZQ=="
-  "resolved" "https://registry.npmjs.org/systemjs/-/systemjs-6.14.1.tgz"
-  "version" "6.14.1"
+systemjs@^6.13.0:
+  version "6.14.1"
+  resolved "https://registry.npmjs.org/systemjs/-/systemjs-6.14.1.tgz"
+  integrity sha512-8ftwWd+XnQtZ/aGbatrN4QFNGrKJzmbtixW+ODpci7pyoTajg4sonPP8aFLESAcuVxaC1FyDESt+SpfFCH9rZQ==
 
 "tailwindcss@npm:@tailwindcss/postcss7-compat@^2.2.17":
-  "integrity" "sha512-3h2svqQAqYHxRZ1KjsJjZOVTQ04m29LjfrLjXyZZEJuvUuJN+BCIF9GI8vhE1s0plS0mogd6E6YLg6mu4Wv/Vw=="
-  "resolved" "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.2.17.tgz"
-  "version" "2.2.17"
+  version "2.2.17"
+  resolved "https://registry.npmjs.org/@tailwindcss/postcss7-compat/-/postcss7-compat-2.2.17.tgz"
+  integrity sha512-3h2svqQAqYHxRZ1KjsJjZOVTQ04m29LjfrLjXyZZEJuvUuJN+BCIF9GI8vhE1s0plS0mogd6E6YLg6mu4Wv/Vw==
   dependencies:
-    "arg" "^5.0.1"
-    "autoprefixer" "^9"
-    "bytes" "^3.0.0"
-    "chalk" "^4.1.2"
-    "chokidar" "^3.5.2"
-    "color" "^4.0.1"
-    "cosmiconfig" "^7.0.1"
-    "detective" "^5.2.0"
-    "didyoumean" "^1.2.2"
-    "dlv" "^1.1.3"
-    "fast-glob" "^3.2.7"
-    "fs-extra" "^10.0.0"
-    "glob-parent" "^6.0.1"
-    "html-tags" "^3.1.0"
-    "is-color-stop" "^1.1.0"
-    "is-glob" "^4.0.1"
-    "lodash" "^4.17.21"
-    "lodash.topath" "^4.5.2"
-    "modern-normalize" "^1.1.0"
-    "node-emoji" "^1.11.0"
-    "normalize-path" "^3.0.0"
-    "object-hash" "^2.2.0"
-    "postcss" "^7"
-    "postcss-functions" "^3"
-    "postcss-js" "^2"
-    "postcss-load-config" "^3.1.0"
-    "postcss-nested" "^4"
-    "postcss-selector-parser" "^6.0.6"
-    "postcss-value-parser" "^4.1.0"
-    "pretty-hrtime" "^1.0.3"
-    "purgecss" "^4.0.3"
-    "quick-lru" "^5.1.1"
-    "reduce-css-calc" "^2.1.8"
-    "resolve" "^1.20.0"
-    "tmp" "^0.2.1"
+    arg "^5.0.1"
+    autoprefixer "^9"
+    bytes "^3.0.0"
+    chalk "^4.1.2"
+    chokidar "^3.5.2"
+    color "^4.0.1"
+    cosmiconfig "^7.0.1"
+    detective "^5.2.0"
+    didyoumean "^1.2.2"
+    dlv "^1.1.3"
+    fast-glob "^3.2.7"
+    fs-extra "^10.0.0"
+    glob-parent "^6.0.1"
+    html-tags "^3.1.0"
+    is-color-stop "^1.1.0"
+    is-glob "^4.0.1"
+    lodash "^4.17.21"
+    lodash.topath "^4.5.2"
+    modern-normalize "^1.1.0"
+    node-emoji "^1.11.0"
+    normalize-path "^3.0.0"
+    object-hash "^2.2.0"
+    postcss "^7"
+    postcss-functions "^3"
+    postcss-js "^2"
+    postcss-load-config "^3.1.0"
+    postcss-nested "^4"
+    postcss-selector-parser "^6.0.6"
+    postcss-value-parser "^4.1.0"
+    pretty-hrtime "^1.0.3"
+    purgecss "^4.0.3"
+    quick-lru "^5.1.1"
+    reduce-css-calc "^2.1.8"
+    resolve "^1.20.0"
+    tmp "^0.2.1"
 
-"terser@^5.16.1", "terser@^5.4.0":
-  "integrity" "sha512-V8QHcs8YuyLkLHsJO5ucyff1ykrLVsR4dNnS//L5Y3NiSXpbK1J+WMVUs67eI0KTxs9JtHhgEQpXQVHlHI92DQ=="
-  "resolved" "https://registry.npmjs.org/terser/-/terser-5.17.6.tgz"
-  "version" "5.17.6"
+terser@^5.16.1:
+  version "5.17.6"
+  resolved "https://registry.npmjs.org/terser/-/terser-5.17.6.tgz"
+  integrity sha512-V8QHcs8YuyLkLHsJO5ucyff1ykrLVsR4dNnS//L5Y3NiSXpbK1J+WMVUs67eI0KTxs9JtHhgEQpXQVHlHI92DQ==
   dependencies:
     "@jridgewell/source-map" "^0.3.2"
-    "acorn" "^8.5.0"
-    "commander" "^2.20.0"
-    "source-map-support" "~0.5.20"
+    acorn "^8.5.0"
+    commander "^2.20.0"
+    source-map-support "~0.5.20"
 
-"text-segmentation@^1.0.3":
-  "integrity" "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw=="
-  "resolved" "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz"
-  "version" "1.0.3"
+text-segmentation@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz"
+  integrity sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==
   dependencies:
-    "utrie" "^1.0.2"
+    utrie "^1.0.2"
 
-"text-table@^0.2.0":
-  "integrity" "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw=="
-  "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
-  "version" "0.2.0"
+text-table@^0.2.0:
+  version "0.2.0"
+  resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
+  integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
 
-"tiny-emitter@^2.0.0":
-  "integrity" "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
-  "resolved" "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz"
-  "version" "2.1.0"
+tiny-emitter@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz"
+  integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
 
-"tmp@^0.2.1":
-  "integrity" "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ=="
-  "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz"
-  "version" "0.2.1"
+tmp@^0.2.1:
+  version "0.2.1"
+  resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz"
+  integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
   dependencies:
-    "rimraf" "^3.0.0"
+    rimraf "^3.0.0"
 
-"to-fast-properties@^2.0.0":
-  "integrity" "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
-  "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
-  "version" "2.0.0"
+to-fast-properties@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
+  integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
 
-"to-regex-range@^5.0.1":
-  "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="
-  "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
-  "version" "5.0.1"
+to-regex-range@^5.0.1:
+  version "5.0.1"
+  resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
+  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
   dependencies:
-    "is-number" "^7.0.0"
+    is-number "^7.0.0"
 
-"token-stream@1.0.0":
-  "integrity" "sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg=="
-  "resolved" "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz"
-  "version" "1.0.0"
+token-stream@1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/token-stream/-/token-stream-1.0.0.tgz"
+  integrity sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==
 
-"tslib@^2.0.3", "tslib@2.3.0":
-  "integrity" "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
-  "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz"
-  "version" "2.3.0"
+tslib@2.3.0, tslib@^2.0.3:
+  version "2.3.0"
+  resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz"
+  integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
 
-"type-check@^0.4.0", "type-check@~0.4.0":
-  "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="
-  "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
-  "version" "0.4.0"
+type-check@^0.4.0, type-check@~0.4.0:
+  version "0.4.0"
+  resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
+  integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
   dependencies:
-    "prelude-ls" "^1.2.1"
+    prelude-ls "^1.2.1"
 
-"type-fest@^0.20.2":
-  "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ=="
-  "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
-  "version" "0.20.2"
+type-fest@^0.20.2:
+  version "0.20.2"
+  resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
+  integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
 
-"universalify@^2.0.0":
-  "integrity" "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ=="
-  "resolved" "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
-  "version" "2.0.0"
+universalify@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz"
+  integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
 
-"unplugin-vue-components@^0.22.9":
-  "integrity" "sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA=="
-  "resolved" "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.22.12.tgz"
-  "version" "0.22.12"
+unplugin-vue-components@^0.22.9:
+  version "0.22.12"
+  resolved "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.22.12.tgz"
+  integrity sha512-FxyzsuBvMCYPIk+8cgscGBQ345tvwVu+qY5IhE++eorkyvA4Z1TiD/HCiim+Kbqozl10i4K+z+NCa2WO2jexRA==
   dependencies:
     "@antfu/utils" "^0.7.2"
     "@rollup/pluginutils" "^5.0.2"
-    "chokidar" "^3.5.3"
-    "debug" "^4.3.4"
-    "fast-glob" "^3.2.12"
-    "local-pkg" "^0.4.2"
-    "magic-string" "^0.27.0"
-    "minimatch" "^5.1.1"
-    "resolve" "^1.22.1"
-    "unplugin" "^1.0.1"
+    chokidar "^3.5.3"
+    debug "^4.3.4"
+    fast-glob "^3.2.12"
+    local-pkg "^0.4.2"
+    magic-string "^0.27.0"
+    minimatch "^5.1.1"
+    resolve "^1.22.1"
+    unplugin "^1.0.1"
 
-"unplugin-vue-define-options@^1.1.3":
-  "integrity" "sha512-DIZtzJ5bJOVSPH4D8uNSJdCFE5vQwUSVUoSFqJjIJqMZ+X1bp5ydMdmB4vlAOnKhdCQszvU+mP+Fu0A64tnvcw=="
-  "resolved" "https://registry.npmjs.org/unplugin-vue-define-options/-/unplugin-vue-define-options-1.3.7.tgz"
-  "version" "1.3.7"
+unplugin-vue-define-options@^1.1.3:
+  version "1.3.7"
+  resolved "https://registry.npmjs.org/unplugin-vue-define-options/-/unplugin-vue-define-options-1.3.7.tgz"
+  integrity sha512-DIZtzJ5bJOVSPH4D8uNSJdCFE5vQwUSVUoSFqJjIJqMZ+X1bp5ydMdmB4vlAOnKhdCQszvU+mP+Fu0A64tnvcw==
   dependencies:
     "@vue-macros/common" "~1.3.3"
-    "ast-walker-scope" "^0.4.1"
-    "unplugin" "^1.3.1"
+    ast-walker-scope "^0.4.1"
+    unplugin "^1.3.1"
 
-"unplugin@^1.0.1", "unplugin@^1.3.1":
-  "integrity" "sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw=="
-  "resolved" "https://registry.npmjs.org/unplugin/-/unplugin-1.3.1.tgz"
-  "version" "1.3.1"
+unplugin@^1.0.1, unplugin@^1.3.1:
+  version "1.3.1"
+  resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.3.1.tgz"
+  integrity sha512-h4uUTIvFBQRxUKS2Wjys6ivoeofGhxzTe2sRWlooyjHXVttcVfV/JiavNd3d4+jty0SVV0dxGw9AkY9MwiaCEw==
   dependencies:
-    "acorn" "^8.8.2"
-    "chokidar" "^3.5.3"
-    "webpack-sources" "^3.2.3"
-    "webpack-virtual-modules" "^0.5.0"
+    acorn "^8.8.2"
+    chokidar "^3.5.3"
+    webpack-sources "^3.2.3"
+    webpack-virtual-modules "^0.5.0"
 
-"update-browserslist-db@^1.0.11":
-  "integrity" "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA=="
-  "resolved" "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz"
-  "version" "1.0.11"
+update-browserslist-db@^1.0.11:
+  version "1.0.11"
+  resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz"
+  integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
   dependencies:
-    "escalade" "^3.1.1"
-    "picocolors" "^1.0.0"
+    escalade "^3.1.1"
+    picocolors "^1.0.0"
 
-"uri-js@^4.2.2":
-  "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="
-  "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
-  "version" "4.4.1"
+uri-js@^4.2.2:
+  version "4.4.1"
+  resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
+  integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
   dependencies:
-    "punycode" "^2.1.0"
+    punycode "^2.1.0"
 
-"util-deprecate@^1.0.2":
-  "integrity" "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
-  "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
-  "version" "1.0.2"
+util-deprecate@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
+  integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
 
-"utrie@^1.0.2":
-  "integrity" "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw=="
-  "resolved" "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz"
-  "version" "1.0.2"
+utrie@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz"
+  integrity sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==
   dependencies:
-    "base64-arraybuffer" "^1.0.2"
+    base64-arraybuffer "^1.0.2"
 
-"vant@^4.0.9":
-  "integrity" "sha512-sHCyuXo6djVcR8H14tF/kF8FWAdk/ynrMGQt3F3adgNZ5vQR4MZrGJHKzfrY8y4EXU+vPbNTCPyaV5EBm67JAQ=="
-  "resolved" "https://registry.npmjs.org/vant/-/vant-4.4.1.tgz"
-  "version" "4.4.1"
+vant@^4.0.9:
+  version "4.4.1"
+  resolved "https://registry.npmjs.org/vant/-/vant-4.4.1.tgz"
+  integrity sha512-sHCyuXo6djVcR8H14tF/kF8FWAdk/ynrMGQt3F3adgNZ5vQR4MZrGJHKzfrY8y4EXU+vPbNTCPyaV5EBm67JAQ==
   dependencies:
     "@vant/popperjs" "^1.3.0"
     "@vant/use" "^1.5.1"
     "@vue/shared" "^3.0.0"
 
-"vite-plugin-imp@^2.3.1":
-  "integrity" "sha512-L/6/nvOw+MyNh4UxAlCZHsmKd5MitmHamqqAWB15sbUgVIEz/OQ8jpKr6kkQU0eA/AIe8fkCVbQBlP81ajrqWg=="
-  "resolved" "https://registry.npmjs.org/vite-plugin-imp/-/vite-plugin-imp-2.4.0.tgz"
-  "version" "2.4.0"
+vite-plugin-imp@^2.3.1:
+  version "2.4.0"
+  resolved "https://registry.npmjs.org/vite-plugin-imp/-/vite-plugin-imp-2.4.0.tgz"
+  integrity sha512-L/6/nvOw+MyNh4UxAlCZHsmKd5MitmHamqqAWB15sbUgVIEz/OQ8jpKr6kkQU0eA/AIe8fkCVbQBlP81ajrqWg==
   dependencies:
     "@babel/core" "^7.12.10"
     "@babel/generator" "^7.12.11"
     "@babel/parser" "^7.12.11"
     "@babel/traverse" "^7.12.12"
-    "chalk" "^4.1.0"
-    "param-case" "^3.0.4"
-    "pascal-case" "^3.1.2"
+    chalk "^4.1.0"
+    param-case "^3.0.4"
+    pascal-case "^3.1.2"
 
-"vite@^3.0.0", "vite@^3.2.0", "vite@^4.0.0", "vite@>= 2.0.0-beta.5":
-  "integrity" "sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g=="
-  "resolved" "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz"
-  "version" "3.2.7"
+vite@^3.2.0:
+  version "3.2.7"
+  resolved "https://registry.npmjs.org/vite/-/vite-3.2.7.tgz"
+  integrity sha512-29pdXjk49xAP0QBr0xXqu2s5jiQIXNvE/xwd0vUizYT2Hzqe4BksNNoWllFVXJf4eLZ+UlVQmXfB4lWrc+t18g==
   dependencies:
-    "esbuild" "^0.15.9"
-    "postcss" "^8.4.18"
-    "resolve" "^1.22.1"
-    "rollup" "^2.79.1"
+    esbuild "^0.15.9"
+    postcss "^8.4.18"
+    resolve "^1.22.1"
+    rollup "^2.79.1"
   optionalDependencies:
-    "fsevents" "~2.3.2"
+    fsevents "~2.3.2"
 
-"void-elements@^3.1.0":
-  "integrity" "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w=="
-  "resolved" "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz"
-  "version" "3.1.0"
+void-elements@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz"
+  integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==
 
-"vue-clipboard3@^2.0.0":
-  "integrity" "sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A=="
-  "resolved" "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz"
-  "version" "2.0.0"
+vue-clipboard3@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.npmjs.org/vue-clipboard3/-/vue-clipboard3-2.0.0.tgz"
+  integrity sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==
   dependencies:
-    "clipboard" "^2.0.6"
+    clipboard "^2.0.6"
 
-"vue-demi@*":
-  "integrity" "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA=="
-  "resolved" "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz"
-  "version" "0.14.5"
+vue-demi@*:
+  version "0.14.5"
+  resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz"
+  integrity sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==
 
-"vue-eslint-parser@^9.3.0":
-  "integrity" "sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ=="
-  "resolved" "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz"
-  "version" "9.3.0"
+vue-eslint-parser@^9.3.0:
+  version "9.3.0"
+  resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.3.0.tgz"
+  integrity sha512-48IxT9d0+wArT1+3wNIy0tascRoywqSUe2E1YalIC1L8jsUGe5aJQItWfRok7DVFGz3UYvzEI7n5wiTXsCMAcQ==
   dependencies:
-    "debug" "^4.3.4"
-    "eslint-scope" "^7.1.1"
-    "eslint-visitor-keys" "^3.3.0"
-    "espree" "^9.3.1"
-    "esquery" "^1.4.0"
-    "lodash" "^4.17.21"
-    "semver" "^7.3.6"
+    debug "^4.3.4"
+    eslint-scope "^7.1.1"
+    eslint-visitor-keys "^3.3.0"
+    espree "^9.3.1"
+    esquery "^1.4.0"
+    lodash "^4.17.21"
+    semver "^7.3.6"
 
-"vue-i18n@^9.2.2":
-  "integrity" "sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ=="
-  "resolved" "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz"
-  "version" "9.2.2"
+vue-i18n@^9.2.2:
+  version "9.2.2"
+  resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.2.2.tgz"
+  integrity sha512-yswpwtj89rTBhegUAv9Mu37LNznyu3NpyLQmozF3i1hYOhwpG8RjcjIFIIfnu+2MDZJGSZPXaKWvnQA71Yv9TQ==
   dependencies:
     "@intlify/core-base" "9.2.2"
     "@intlify/shared" "9.2.2"
     "@intlify/vue-devtools" "9.2.2"
     "@vue/devtools-api" "^6.2.1"
 
-"vue-property-decorator@^9.0.2":
-  "integrity" "sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ=="
-  "resolved" "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz"
-  "version" "9.1.2"
+vue-property-decorator@^9.0.2:
+  version "9.1.2"
+  resolved "https://registry.npmjs.org/vue-property-decorator/-/vue-property-decorator-9.1.2.tgz"
+  integrity sha512-xYA8MkZynPBGd/w5QFJ2d/NM0z/YeegMqYTphy7NJQXbZcuU6FC6AOdUAcy4SXP+YnkerC6AfH+ldg7PDk9ESQ==
 
-"vue-router@^4.1.6":
-  "integrity" "sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ=="
-  "resolved" "https://registry.npmjs.org/vue-router/-/vue-router-4.2.2.tgz"
-  "version" "4.2.2"
+vue-router@^4.1.6:
+  version "4.2.2"
+  resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.2.2.tgz"
+  integrity sha512-cChBPPmAflgBGmy3tBsjeoe3f3VOSG6naKyY5pjtrqLGbNEXdzCigFUHgBvp9e3ysAtFtEx7OLqcSDh/1Cq2TQ==
   dependencies:
     "@vue/devtools-api" "^6.5.0"
 
-"vue-slider-component@^4.0.0-beta.5":
-  "integrity" "sha512-dvaquYv85coVmQQqjWs+aaXFSCbTeNr7rpjXgSFo1E+XscErSXZkf0LF7MHX9rP/aeMpAVMMzm6Y//gS0ELiTw=="
-  "resolved" "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-4.0.0-beta.5.tgz"
-  "version" "4.0.0-beta.5"
+vue-slider-component@^4.0.0-beta.5:
+  version "4.0.0-beta.5"
+  resolved "https://registry.npmjs.org/vue-slider-component/-/vue-slider-component-4.0.0-beta.5.tgz"
+  integrity sha512-dvaquYv85coVmQQqjWs+aaXFSCbTeNr7rpjXgSFo1E+XscErSXZkf0LF7MHX9rP/aeMpAVMMzm6Y//gS0ELiTw==
   dependencies:
-    "core-js" "^3.6.5"
-    "vue-property-decorator" "^9.0.2"
+    core-js "^3.6.5"
+    vue-property-decorator "^9.0.2"
 
-"vue@*", "vue@^2.6.14 || ^3.2.0", "vue@^2.7.0 || ^3.2.25", "vue@^3.0.0", "vue@^3.0.0-0 || ^2.6.0", "vue@^3.0.1", "vue@^3.2.0", "vue@^3.2.25", "vue@^3.2.38", "vue@^3.2.41", "vue@2 || 3", "vue@3.3.4":
-  "integrity" "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw=="
-  "resolved" "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz"
-  "version" "3.3.4"
+vue3-carousel-3d@^1.0.4:
+  version "1.0.4"
+  resolved "https://registry.npmjs.org/vue3-carousel-3d/-/vue3-carousel-3d-1.0.4.tgz"
+  integrity sha512-MqoaEYo94hfnHrs8UJzzeJX+30fbcHyn1qiSIzCdKefYcmSNmsssk8ahw/zL9D6zdrRySHTD5+vN+zGENPwlJw==
+  dependencies:
+    vue "^3.2.38"
+
+vue3-puzzle-vcode@^1.0.6:
+  version "1.0.12"
+  resolved "https://registry.npmjs.org/vue3-puzzle-vcode/-/vue3-puzzle-vcode-1.0.12.tgz"
+  integrity sha512-49BRLFQfvG0tt/gCrcMvncOkbcLWZrFxhAkjwbzmS/dQsXlWGz7qjta5b2/5q2q7UTVKTweyfHYwf7SRL+QehQ==
+
+vue3-qr-reader@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.npmjs.org/vue3-qr-reader/-/vue3-qr-reader-1.0.0.tgz"
+  integrity sha512-BRgmR+lDPkNwgL6skSaEOGFg4Aup/FLYnOGFCV0knYHxfbAnliJN/+wr//iqD2G3EOBrXw4TPGNfj/5Wxl7wwQ==
+  dependencies:
+    jsqr "^1.4.0"
+
+vue@^3.2.38, vue@^3.2.41:
+  version "3.3.4"
+  resolved "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz"
+  integrity sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==
   dependencies:
     "@vue/compiler-dom" "3.3.4"
     "@vue/compiler-sfc" "3.3.4"
@@ -2946,193 +3023,174 @@
     "@vue/server-renderer" "3.3.4"
     "@vue/shared" "3.3.4"
 
-"vue3-carousel-3d@^1.0.4":
-  "integrity" "sha512-MqoaEYo94hfnHrs8UJzzeJX+30fbcHyn1qiSIzCdKefYcmSNmsssk8ahw/zL9D6zdrRySHTD5+vN+zGENPwlJw=="
-  "resolved" "https://registry.npmjs.org/vue3-carousel-3d/-/vue3-carousel-3d-1.0.4.tgz"
-  "version" "1.0.4"
+vuedraggable@next:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz"
+  integrity sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==
   dependencies:
-    "vue" "^3.2.38"
+    sortablejs "1.14.0"
 
-"vue3-puzzle-vcode@^1.0.6":
-  "integrity" "sha512-49BRLFQfvG0tt/gCrcMvncOkbcLWZrFxhAkjwbzmS/dQsXlWGz7qjta5b2/5q2q7UTVKTweyfHYwf7SRL+QehQ=="
-  "resolved" "https://registry.npmjs.org/vue3-puzzle-vcode/-/vue3-puzzle-vcode-1.0.12.tgz"
-  "version" "1.0.12"
-
-"vue3-qr-reader@^1.0.0":
-  "integrity" "sha512-BRgmR+lDPkNwgL6skSaEOGFg4Aup/FLYnOGFCV0knYHxfbAnliJN/+wr//iqD2G3EOBrXw4TPGNfj/5Wxl7wwQ=="
-  "resolved" "https://registry.npmjs.org/vue3-qr-reader/-/vue3-qr-reader-1.0.0.tgz"
-  "version" "1.0.0"
+vuex-persistedstate@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz"
+  integrity sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ==
   dependencies:
-    "jsqr" "^1.4.0"
+    deepmerge "^4.2.2"
+    shvl "^2.0.3"
 
-"vuedraggable@next":
-  "integrity" "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww=="
-  "resolved" "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz"
-  "version" "4.1.0"
-  dependencies:
-    "sortablejs" "1.14.0"
-
-"vuex-persistedstate@^4.1.0":
-  "integrity" "sha512-3SkEj4NqwM69ikJdFVw6gObeB0NHyspRYMYkR/EbhR0hbvAKyR5gksVhtAfY1UYuWUOCCA0QNGwv9pOwdj+XUQ=="
-  "resolved" "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-4.1.0.tgz"
-  "version" "4.1.0"
-  dependencies:
-    "deepmerge" "^4.2.2"
-    "shvl" "^2.0.3"
-
-"vuex@^3.0 || ^4.0.0-rc", "vuex@^4.1.0":
-  "integrity" "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ=="
-  "resolved" "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz"
-  "version" "4.1.0"
+vuex@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz"
+  integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==
   dependencies:
     "@vue/devtools-api" "^6.0.0-beta.11"
 
-"webpack-sources@^3.2.3":
-  "integrity" "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="
-  "resolved" "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
-  "version" "3.2.3"
+webpack-sources@^3.2.3:
+  version "3.2.3"
+  resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
+  integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
 
-"webpack-virtual-modules@^0.5.0":
-  "integrity" "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw=="
-  "resolved" "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz"
-  "version" "0.5.0"
+webpack-virtual-modules@^0.5.0:
+  version "0.5.0"
+  resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.5.0.tgz"
+  integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==
 
-"which-module@^2.0.0":
-  "integrity" "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
-  "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz"
-  "version" "2.0.1"
+which-module@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz"
+  integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==
 
-"which@^2.0.1":
-  "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="
-  "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
-  "version" "2.0.2"
+which@^2.0.1:
+  version "2.0.2"
+  resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
+  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
   dependencies:
-    "isexe" "^2.0.0"
+    isexe "^2.0.0"
 
-"with@^7.0.0":
-  "integrity" "sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w=="
-  "resolved" "https://registry.npmjs.org/with/-/with-7.0.2.tgz"
-  "version" "7.0.2"
+with@^7.0.0:
+  version "7.0.2"
+  resolved "https://registry.npmjs.org/with/-/with-7.0.2.tgz"
+  integrity sha512-RNGKj82nUPg3g5ygxkQl0R937xLyho1J24ItRCBTr/m1YnZkzJy1hUiHUJrc/VlsDQzsCnInEGSg3bci0Lmd4w==
   dependencies:
     "@babel/parser" "^7.9.6"
     "@babel/types" "^7.9.6"
-    "assert-never" "^1.2.1"
-    "babel-walk" "3.0.0-canary-5"
+    assert-never "^1.2.1"
+    babel-walk "3.0.0-canary-5"
 
-"word-wrap@^1.2.3":
-  "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ=="
-  "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
-  "version" "1.2.3"
+word-wrap@^1.2.3:
+  version "1.2.3"
+  resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz"
+  integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
 
-"wrap-ansi@^6.2.0":
-  "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="
-  "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
-  "version" "6.2.0"
+wrap-ansi@^6.2.0:
+  version "6.2.0"
+  resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
+  integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
   dependencies:
-    "ansi-styles" "^4.0.0"
-    "string-width" "^4.1.0"
-    "strip-ansi" "^6.0.0"
+    ansi-styles "^4.0.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
 
-"wrap-ansi@^7.0.0":
-  "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="
-  "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
-  "version" "7.0.0"
+wrap-ansi@^7.0.0:
+  version "7.0.0"
+  resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
   dependencies:
-    "ansi-styles" "^4.0.0"
-    "string-width" "^4.1.0"
-    "strip-ansi" "^6.0.0"
+    ansi-styles "^4.0.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
 
-"wrappy@1":
-  "integrity" "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
-  "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
-  "version" "1.0.2"
+wrappy@1:
+  version "1.0.2"
+  resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
+  integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
 
-"xml-name-validator@^4.0.0":
-  "integrity" "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="
-  "resolved" "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
-  "version" "4.0.0"
+xml-name-validator@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
+  integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
 
-"xtend@^4.0.2":
-  "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
-  "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
-  "version" "4.0.2"
+xtend@^4.0.2:
+  version "4.0.2"
+  resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
+  integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
 
-"y18n@^4.0.0":
-  "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
-  "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz"
-  "version" "4.0.3"
+y18n@^4.0.0:
+  version "4.0.3"
+  resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz"
+  integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
 
-"y18n@^5.0.5":
-  "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="
-  "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
-  "version" "5.0.8"
+y18n@^5.0.5:
+  version "5.0.8"
+  resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
+  integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
 
-"yallist@^3.0.2":
-  "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
-  "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
-  "version" "3.1.1"
+yallist@^3.0.2:
+  version "3.1.1"
+  resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
+  integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
 
-"yallist@^4.0.0":
-  "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
-  "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
-  "version" "4.0.0"
+yallist@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
+  integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
 
-"yaml@^1.10.0", "yaml@^1.10.2":
-  "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
-  "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
-  "version" "1.10.2"
+yaml@^1.10.0, yaml@^1.10.2:
+  version "1.10.2"
+  resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
+  integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
 
-"yargs-parser@^18.1.2":
-  "integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="
-  "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz"
-  "version" "18.1.3"
+yargs-parser@^18.1.2:
+  version "18.1.3"
+  resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz"
+  integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
   dependencies:
-    "camelcase" "^5.0.0"
-    "decamelize" "^1.2.0"
+    camelcase "^5.0.0"
+    decamelize "^1.2.0"
 
-"yargs-parser@^21.1.1":
-  "integrity" "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="
-  "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
-  "version" "21.1.1"
+yargs-parser@^21.1.1:
+  version "21.1.1"
+  resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
+  integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
 
-"yargs@^15.3.1":
-  "integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A=="
-  "resolved" "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz"
-  "version" "15.4.1"
+yargs@^15.3.1:
+  version "15.4.1"
+  resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz"
+  integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
   dependencies:
-    "cliui" "^6.0.0"
-    "decamelize" "^1.2.0"
-    "find-up" "^4.1.0"
-    "get-caller-file" "^2.0.1"
-    "require-directory" "^2.1.1"
-    "require-main-filename" "^2.0.0"
-    "set-blocking" "^2.0.0"
-    "string-width" "^4.2.0"
-    "which-module" "^2.0.0"
-    "y18n" "^4.0.0"
-    "yargs-parser" "^18.1.2"
+    cliui "^6.0.0"
+    decamelize "^1.2.0"
+    find-up "^4.1.0"
+    get-caller-file "^2.0.1"
+    require-directory "^2.1.1"
+    require-main-filename "^2.0.0"
+    set-blocking "^2.0.0"
+    string-width "^4.2.0"
+    which-module "^2.0.0"
+    y18n "^4.0.0"
+    yargs-parser "^18.1.2"
 
-"yargs@^17.5.1":
-  "integrity" "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="
-  "resolved" "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
-  "version" "17.7.2"
+yargs@^17.5.1:
+  version "17.7.2"
+  resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
+  integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
   dependencies:
-    "cliui" "^8.0.1"
-    "escalade" "^3.1.1"
-    "get-caller-file" "^2.0.5"
-    "require-directory" "^2.1.1"
-    "string-width" "^4.2.3"
-    "y18n" "^5.0.5"
-    "yargs-parser" "^21.1.1"
+    cliui "^8.0.1"
+    escalade "^3.1.1"
+    get-caller-file "^2.0.5"
+    require-directory "^2.1.1"
+    string-width "^4.2.3"
+    y18n "^5.0.5"
+    yargs-parser "^21.1.1"
 
-"yocto-queue@^0.1.0":
-  "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
-  "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
-  "version" "0.1.0"
+yocto-queue@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
+  integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
 
-"zrender@5.4.4":
-  "integrity" "sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw=="
-  "resolved" "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz"
-  "version" "5.4.4"
+zrender@5.4.4:
+  version "5.4.4"
+  resolved "https://registry.npmjs.org/zrender/-/zrender-5.4.4.tgz"
+  integrity sha512-0VxCNJ7AGOMCWeHVyTrGzUgrK4asT4ml9PEkeGirAkKNYXYzoPJCLvmyfdoOXcjTHPs10OZVMfD1Rwg16AZyYw==
   dependencies:
-    "tslib" "2.3.0"
+    tslib "2.3.0"

--
Gitblit v1.9.3