diff --git a/app/Http/Controllers/Api/SystemController.php b/app/Http/Controllers/Api/SystemController.php index 1306a115a..ff19c9ae2 100755 --- a/app/Http/Controllers/Api/SystemController.php +++ b/app/Http/Controllers/Api/SystemController.php @@ -40,7 +40,7 @@ class SystemController extends AbstractController * @apiParam {String} type * - get: 获取(默认) * - all: 获取所有(需要管理员权限) - * - save: 保存设置(参数:['reg', 'reg_identity', 'reg_invite', 'temp_account_alias', 'login_code', 'password_policy', 'project_invite', 'chat_information', 'anon_message', 'voice2text', 'translation', 'convert_video', 'compress_video', 'e2e_message', 'auto_archived', 'archived_day', 'task_visible', 'task_default_time', 'all_group_mute', 'all_group_autoin', 'user_private_chat_mute', 'user_group_chat_mute', 'system_alias', 'system_welcome', 'image_compress', 'image_quality', 'image_save_local', 'start_home']) + * - save: 保存设置(参数:['reg', 'reg_identity', 'reg_invite', 'temp_account_alias', 'login_code', 'password_policy', 'project_invite', 'chat_information', 'anon_message', 'voice2text', 'translation', 'convert_video', 'compress_video', 'e2e_message', 'auto_archived', 'archived_day', 'task_visible', 'task_default_time', 'all_group_mute', 'all_group_autoin', 'user_private_chat_mute', 'user_group_chat_mute', 'system_alias', 'system_welcome', 'image_compress', 'image_quality', 'image_save_local']) * @apiSuccess {Number} ret 返回状态码(1正确、0错误) * @apiSuccess {String} msg 返回信息(错误描述) @@ -87,7 +87,6 @@ class SystemController extends AbstractController 'image_compress', 'image_quality', 'image_save_local', - 'start_home', 'file_upload_limit', 'unclaimed_task_reminder', 'unclaimed_task_reminder_time', @@ -149,7 +148,6 @@ class SystemController extends AbstractController $setting['all_group_autoin'] = $setting['all_group_autoin'] ?: 'yes'; $setting['user_private_chat_mute'] = $setting['user_private_chat_mute'] ?: 'open'; $setting['user_group_chat_mute'] = $setting['user_group_chat_mute'] ?: 'open'; - $setting['start_home'] = $setting['start_home'] ?: 'close'; $setting['file_upload_limit'] = $setting['file_upload_limit'] ?: ''; $setting['unclaimed_task_reminder'] = $setting['unclaimed_task_reminder'] ?: 'close'; $setting['unclaimed_task_reminder_time'] = $setting['unclaimed_task_reminder_time'] ?: ''; diff --git a/app/Module/Apps/Apps.php b/app/Module/Apps/Apps.php index 37c6cea41..229979022 100644 --- a/app/Module/Apps/Apps.php +++ b/app/Module/Apps/Apps.php @@ -516,6 +516,17 @@ class Apps return $output; } + /** + * 判断应用是否已安装 + * @param string $appName 应用名称 + * @return bool 如果应用已安装返回 true,否则返回 false + */ + public static function isInstalled(string $appName): bool + { + $appConfig = self::getAppConfig($appName); + return $appConfig['status'] === 'installed'; + } + /** * 获取应用的文档(README) * diff --git a/docker-compose.yml b/docker-compose.yml index 418c94e8a..a561caece 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -214,7 +214,6 @@ services: - /var/run/docker.sock:/var/run/docker.sock - ./:/var/www environment: - DOO_ENV: "/var/www" HOST_PWD: "${PWD}" networks: - extnetwork diff --git a/public/site/css/about.css b/public/site/css/about.css deleted file mode 100644 index 6a9cfe1df..000000000 --- a/public/site/css/about.css +++ /dev/null @@ -1,206 +0,0 @@ -/* 头部样式 */ -.about_green_bg { - background: var(--bg-11-url) top right no-repeat; -} -.head { - background-color: transparent !important; -} -.company-ul { - padding: 32px 0; - margin-top: 32px; - width: 100%; - max-width: 1280px; - background: var(--bg-fa-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; - display: flex; - align-items: center; - justify-content: space-around; - z-index: 2; -} -.company-ul-item { - text-align: center; - padding: 0 32px; - width: 362px; -} -.company-ul-item:nth-of-type(1), -.company-ul-item:nth-of-type(2) { - border-right: 1px solid var(--border-color); -} -.company-h2 { - color: var(--text-color); - opacity: 0.5; -} -.company-h6 { - color: var(--txt-gray-color); -} -.company-sup { - font-weight: 400; - font-size: 14px; - margin-left: 5px; - color: var(--txt-gray-color); - vertical-align: super; -} -.company-profile { - padding-top: 120px; -} -.company-profile-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; -} -.company-profile-layout { - display: flex; - align-items: flex-start; - justify-content: space-between; - padding-bottom: 120px; -} -.company-profile-l { - display: inline-block; - height: auto; - width: 580px; -} -.company-profile-r { - width: 620px; -} -.company-profile-h1 { - position: relative; - color: var(--text-color); - width: fit-content; -} -.company-profile-arcs { - display: block; - width: 100%; - position: absolute; - bottom: -28px; - left: 0; -} -.company-profile-h6 { - color: var(--txt-gray-color); -} -.company-year, -.company-area, -.company-size { -} -@keyframes randomize { - from { - content: attr(data-value); /* 使用 data-value 属性作为初始值 */ - } - to { - content: attr(data-random); /* 使用 data-random 属性作为随机值 */ - } -} -.scenario-app { - position: relative; - padding: 120px 0px; - background-color: var(--bg-fa-color); -} -.scenario-app-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; -} -.scenario-app-h1 { - text-align: center; - color: var(--text-color); -} -.scenario-app-h6 { - color: var(--txt-gray-color); -} -.scenario-app-ul { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; -} -.scenario-app-ul-item { - padding: 24px; - background: var(--choose-bg-hover-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; - width: 576px; - height: 225px; - position: relative; - transition: all 0.3s ease-in-out; -} -.scenario-app-ul-item:hover { - transform: translateY(-16px); -} -.scenario-app-ul-item-svg { - position: absolute; - top: 0; - right: 0; -} -.scenario-app-icon-bg { - display: flex; - justify-content: center; - align-items: center; - width: 32px; - height: 32px; - padding: 16px; - border-radius: 50%; - background-color: var(--txt-theme-color); -} -.scenario-app-icon { - display: inline-block; -} -.scenario-app-h5 { - font-weight: 600; - font-size: 20px; - line-height: 25px; - color: var(--txt-191a15-color); -} -.from-submit { - display: inline-block; - width: 100%; -} -/* 底部样式 */ -.footer-layout { - border-top: var(--border-color) solid 1px; -} -/* 弹框样式 */ -.BulletBox { - position: fixed; - display: none; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - padding: 8px; - background-color: var(--txt-theme-color); - line-height: 20px; - text-align: center; - z-index: 9999; - border: 1px solid transparent; - border-radius: 8px; - color: #fff; -} -#desc_wrap { - position: relative; -} -#characterCount { - position: absolute; - right: 20px; - bottom: 7px; - z-index: 999; - color: #ccc; -} -#loadingWrap { - position: relative; -} -#submitLoading { - position: absolute; - display: none; - left: 42%; - width: 18px; - height: 18px; - border-radius: 50%; - animation: spin 3s infinite linear; -} -@keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} diff --git a/public/site/css/ad.css b/public/site/css/ad.css deleted file mode 100644 index cf5b82109..000000000 --- a/public/site/css/ad.css +++ /dev/null @@ -1,592 +0,0 @@ -.ad-wrapper { - color: #441726; -} - -.ad-wrapper #ad-banner { - background-image: url(../img/ad/banner.png); - background-size: cover; - background-position: center; - background-repeat: no-repeat; -} - -header .ad { - width: 100vw; - height: 0; - background-color: #fff; - position: fixed; - top: 0; - left: 0; - right: 0; - z-index: 999; - background-size: cover; - background-position: center; - background-repeat: no-repeat; -} - -header .ad .ad-content { - display: flex; - justify-content: center; - align-items: center; - height: 100%; - padding: 0 20px; - position: relative; -} - -header .ad .ad-content .ad-content-left { - flex-grow: 1; - display: flex; - justify-content: center; - align-items: center; - padding-right: 32px; -} - -header .ad .ad-content .ad-close { - position: absolute; - right: 24px; - top: 50%; - transform: translateY(-50%); - cursor: pointer; - width: 28px; - height: 28px; - display: flex; - justify-content: center; - align-items: center; - border-radius: 50%; - background: rgba(0, 0, 0, 0.2); - transition: all 0.3s; -} - -header .ad .ad-content .ad-close:hover { - background: rgba(0, 0, 0, 0.15); -} - -header .ad .ad-content .ad-close img { - width: 16px; - height: 16px; -} - -header .ad .ad-content .ad-content-left .ad-text { - font-size: 28px; - font-weight: 600; - color: #441726; - font-family: Lexend; - margin-right: 16px; - line-height: 35px; -} - -header .ad .ad-content .ad-content-left .ad-btn { - height: 36px; - min-width: 72px; - background: linear-gradient( - 104.43deg, - #fc8c80 1.18%, - #f3596e 46.98%, - #ee61d4 93.24% - ); - padding: 8px 16px 8px 16px; - border-radius: 8px; - border: none; - font-family: Lexend; - font-size: 16px; - font-weight: 500; - line-height: 20px; - text-align: left; - color: #fff; - cursor: pointer; -} - -footer.ad-footer { - background-color: #1d0f14; - color: #fff; -} - -footer.ad-footer .dootask { - color: #fff; -} - -footer.ad-footer .footer-layout { - border-top-color: transparent; - border-bottom: rgba(231, 233, 228, 0.12) solid 1px; -} - -.ad-wrapper .arcs { - display: inline-block; - position: absolute; - width: 100%; - height: 60px; - left: 0; - top: 60px; - z-index: -1; - background-color: transparent; -} - -.ad-wrapper .topics .topics-h1-green { - color: #f3474c; - position: relative; - text-align: center; -} - -.ad-wrapper .topics .btn-primary { - background: linear-gradient( - 104.43deg, - #ff7155 1.18%, - #ef3e56 46.98%, - #ee61d4 93.24% - ); - box-shadow: 0px 3px 6px 0px #ff010133; - transition: all 0.3s ease-in-out; - border: 1px solid transparent; -} - -.ad-wrapper .topics .topics-btn { - gap: 16px; - - margin-bottom: 240px; -} - -.ad-wrapper .topics .topics-btn .btn { - min-width: 120px; -} - -.ad-wrapper .topics .btn-primary:hover { - background: linear-gradient( - -104.43deg, - #ff7155 1.18%, - #ef3e56 46.98%, - #ee61d4 93.24% - ); - border: 1px solid #f3474c; -} - -.ad-wrapper .topics .btn-default { - color: #f3474c; - background-color: #fff; - border: 1px solid #f3474c; - box-shadow: 0px 3px 6px 0px #ff010133; - transition: all 0.3s ease-in-out; -} - -.ad-wrapper .topics .btn-default:hover { - background-color: #f3474c; - color: #fff; -} - -.ad-wrapper main { - /* background-image: url(../img/ad/plan.png); - background-size: cover; - background-position: center; - background-repeat: no-repeat; */ - position: relative; -} - -.ad-plan { - margin-top: -240px; -} - -.ad-plan, -.ad-intro { - background: transparent; -} - -.section-wrapper { - max-width: 1280px; - margin: 0 auto; - padding: 0 0 96px 64px; - - display: flex; - - flex-direction: column; - align-items: center; - gap: 16px; -} - -.section-wrapper .section-title { - font-size: 28px; - font-weight: 600; - color: #441726; -} - -.section-wrapper .section-description { - font-size: 16px; - color: #441726; -} - -.section-wrapper .section-content { - margin-top: 48px; -} - -.ad-plan .section-content { - width: 100%; - display: grid; - grid-template-columns: repeat(3, 1fr); - gap: 32px; -} - -.ad-plan .section-content .plan-item { - box-shadow: 0px 4px 16px 8px #0000001f; - border-radius: 16px; - background-color: #fff; - - min-height: 360px; - padding: 32px 24px; - border: 2px solid transparent; - - position: relative; -} - -.ad-plan .section-content .plan-item:hover, -.ad-plan .section-content .plan-item.active { - border-color: #f3474c; - box-shadow: 0px 24px 32px 16px #0000001f; -} - -.ad-plan .section-content .plan-item .plan-item-tag { - position: absolute; - top: -12px; - right: -12px; - width: 88px; - height: 32px; - background-image: url(../img/ad/tag.png); - background-size: cover; - background-position: center; - background-repeat: no-repeat; - display: flex; - justify-content: center; - align-items: center; - font-size: 14px; - font-weight: 500; - color: #fff; -} - -.ad-plan .section-content .plan-item .plan-item-title { - font-size: 18px; - font-weight: 600; -} - -.ad-plan .section-content .plan-item .plan-item-price { - font-family: Lexend; - margin-top: 32px; - display: flex; - flex-direction: column; - align-items: flex-start; - gap: 16px; -} - -.ad-plan .section-content .plan-item .plan-item-price .plan-item-price-current { - font-size: 32px; - font-weight: 900; -} - -.ad-plan - .section-content - .plan-item - .plan-item-price - .plan-item-price-current.price { - color: #f3474c; -} - -.ad-plan .section-content .plan-item .plan-item-price .plan-item-price-payment { - font-size: 14px; - font-weight: 500; - color: #727570; -} - -.ad-plan - .section-content - .plan-item - .plan-item-price - .plan-item-price-original { - font-size: 14px; - color: #727570; -} - -.ad-plan - .section-content - .plan-item - .plan-item-price - .plan-item-price-original.price { - text-decoration: line-through; -} - -.ad-plan .section-content .plan-item .plan-item-button { - margin-top: 24px; -} - -.ad-plan .section-content .plan-item .plan-item-button .btn-primary { - width: 100%; - - height: 40px; - padding: 10px 16px 10px 16px; - border-radius: 8px; - background: linear-gradient( - 104.43deg, - #ff7155 1.18%, - #ef3e56 46.98%, - #ee61d4 93.24% - ); - border: none; - font-size: 16px; - font-weight: 500; - line-height: 20px; - text-align: center; - color: #fff; - cursor: pointer; -} - -.ad-plan .section-content .plan-item .plan-item-description { - margin-top: 24px; -} - -.ad-plan - .section-content - .plan-item - .plan-item-description - .plan-item-description-list { - display: flex; - flex-direction: column; - gap: 12px; -} - -.ad-plan - .section-content - .plan-item - .plan-item-description - .plan-item-description-item { - display: flex; - align-items: flex-start; - gap: 8px; - font-size: 14px; -} - -.ad-plan - .section-content - .plan-item - .plan-item-description - .plan-item-description-item - .plan-item-description-item-icon { - width: 18px; - height: 18px; - display: flex; - justify-content: flex-start; - align-items: flex-end; - flex-shrink: 0; -} - -.ad-plan - .section-content - .plan-item - .plan-item-description - .plan-item-description-item - .plan-item-description-item-content { - color: #727570; -} - -.ad-intro .section-content { - width: 100%; - display: grid; - grid-template-columns: repeat(2, 1fr); - gap: 24px; -} - -.ad-intro .section-content .ad-intro-item { - display: flex; - flex-direction: column; - align-items: center; - gap: 16px; - background-color: #fff; - border-radius: 16px; - padding: 24px; - position: relative; - - box-shadow: 0px 4px 16px 8px #0000001f; -} - -.ad-intro .section-content .ad-intro-item .ad-intro-item-header { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 20px; -} - -.ad-intro .section-content .ad-intro-item .ad-intro-item-header img { - border-top-left-radius: 16px; - border-top-right-radius: 16px; - width: 100%; - height: 100%; -} - -.ad-intro .section-content .ad-intro-item .ad-intro-item-image { - width: 100%; - height: 260px; -} - -.ad-intro .section-content .ad-intro-item .ad-intro-item-image img { - width: 100%; - height: 100%; -} - -.ad-intro .section-content .ad-intro-item .ad-intro-item-title { - margin-top: 12px; - font-size: 18px; - font-weight: 600; - align-self: flex-start; -} - -.ad-intro .section-content .ad-intro-item .ad-intro-item-description { - font-size: 14px; - align-self: flex-start; - color: #727570; - line-height: 24px; -} - -@media screen and (max-width: 1200px) { - .ad-plan .section-content { - grid-template-columns: repeat(3, 1fr); - } - - .section-wrapper { - padding: 96px 24px 64px; - } -} - -@media screen and (max-width: 900px) { - .ad-plan .section-content { - grid-template-columns: repeat(2, 1fr); - } - - .ad-intro .section-content { - grid-template-columns: repeat(1, 1fr); - } -} - -@media screen and (max-width: 768px) { - header .ad .ad-content .ad-content-left .ad-text { - font-size: 20px; - } - - header .ad .ad-content .ad-content-left .ad-btn { - font-size: 14px; - height: 28px; - line-height: 14px; - } - - .ad-plan .section-content { - grid-template-columns: repeat(1, 1fr); - } -} - -.ad-dialog { - position: fixed; - z-index: 10000; - top: 0; - left: 0; - width: 100%; - height: 100%; - display: none; -} - -.ad-dialog.show { - display: flex; - justify-content: center; - align-items: center; -} - -.ad-dialog .ad-dialog-backdrop { - position: absolute; - z-index: 10010; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: #0000001f; -} - -.ad-dialog .ad-dialog-wrapper { - z-index: 10020; - min-height: 200px; - min-width: 200px; - max-width: 320px; - max-height: 480px; - - background-color: #fff; - border-radius: 16px; - padding: 24px; - - box-shadow: 0px 4px 16px 8px #00000014; - - display: flex; - flex-direction: column; -} - -.ad-dialog .ad-dialog-wrapper .ad-dialog-header { - display: flex; - justify-content: center; - align-items: center; - - flex-grow: 0; - flex-shrink: 0; - padding: 8px 12px; -} - -.ad-dialog .ad-dialog-wrapper .ad-dialog-header .ad-dialog-header-img { - height: 240px; - width: 240px; - background-image: url(../img/side_nav_wechat.png); - background-size: cover; - background-position: center; - background-repeat: no-repeat; -} - -.ad-dialog .ad-dialog-wrapper .ad-dialog-content { - display: flex; - justify-content: center; - align-items: center; - - flex-grow: 1; - flex-shrink: 0; - padding: 8px 12px; - - font-size: 14px; - color: #727570; -} - -.ad-dialog .ad-dialog-wrapper .ad-dialog-footer { - display: flex; - justify-content: center; - align-items: center; - - flex-grow: 0; - flex-shrink: 0; - padding: 8px 12px; -} - -.ad-dialog .ad-dialog-wrapper .ad-dialog-footer .ad-dialog-footer-btn { - width: 100%; - - height: 40px; - padding: 10px 16px 10px 16px; - border-radius: 8px; - background: linear-gradient( - 104.43deg, - #ff7155 1.18%, - #ef3e56 46.98%, - #ee61d4 93.24% - ); - border: none; - font-size: 16px; - font-weight: 500; - line-height: 20px; - text-align: center; - color: #fff; - cursor: pointer; -} - -.ad-dialog .ad-dialog-wrapper .ad-dialog-footer .ad-dialog-footer-btn:hover { - background: linear-gradient( - -104.43deg, - #ff7155 1.18%, - #ef3e56 46.98%, - #ee61d4 93.24% - ); -} diff --git a/public/site/css/animate.min.css b/public/site/css/animate.min.css deleted file mode 100644 index 76d2fe1a8..000000000 --- a/public/site/css/animate.min.css +++ /dev/null @@ -1,7 +0,0 @@ -@charset "UTF-8";/*! - * animate.css - https://animate.style/ - * Version - 4.1.1 - * Licensed under the MIT license - http://opensource.org/licenses/MIT - * - * Copyright (c) 2020 Animate.css - */:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*0.8);animation-duration:calc(var(--animate-duration)*0.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} \ No newline at end of file diff --git a/public/site/css/common.css b/public/site/css/common.css deleted file mode 100644 index 2fefce168..000000000 --- a/public/site/css/common.css +++ /dev/null @@ -1,1249 +0,0 @@ -/* 全局 CSS 文件 */ -body { - background-color: var(--bg-color); - color: var(--text-color); - font-family: "Lexend"; - font-style: normal; - font-size: 16px; -} - -* { - margin: 0; - padding: 0; -} - -ul, -ol { - list-style: none; -} - -i { - font-style: normal; -} - -a { - color: var(--text-color); - text-decoration: none; - cursor: pointer; -} - -img { - max-width: 100%; - height: auto; - display: block; -} - -.theme_dark { - display: none; -} - -.theme_light { - display: block; -} - -/* 字体样式 */ -.txt-4001416 { - font-weight: 400; - font-size: 14px; - line-height: 16px; -} - -.txt-4001418 { - font-weight: 400; - font-size: 14px; - line-height: 18px; -} - -.txt-4001516 { - font-weight: 400; - font-size: 15px; - line-height: 16px; -} - -.txt-4001520 { - font-weight: 400; - font-size: 15px; - line-height: 20px; -} - -.txt-4001524 { - font-weight: 400; - font-size: 15px; - line-height: 24px; -} - -.txt-4001616 { - font-weight: 400; - font-size: 16px; - line-height: 16px; -} - -.txt-4001620 { - font-weight: 400; - font-size: 16px; - line-height: 20px; -} - -.txt-4001624 { - font-weight: 400; - font-size: 16px; - line-height: 24px; -} - -.txt-4001630 { - font-weight: 400; - font-size: 16px; - line-height: 30px; -} - -.txt-4001822 { - font-weight: 400; - font-size: 18px; - line-height: 22px; -} - -.txt-4001824 { - font-weight: 400; - font-size: 18px; - line-height: 24px; -} - -.txt-4001830 { - font-weight: 400; - font-size: 18px; - line-height: 30px; -} - -.txt-4002025 { - font-weight: 400; - font-size: 20px; - line-height: 25px; -} - -.txt-4003645 { - font-weight: 400; - font-size: 36px; - line-height: 45px; -} - -.txt-5001616 { - font-weight: 500; - font-size: 16px; - line-height: 16px; -} - -.txt-5001624 { - font-weight: 500; - font-size: 16px; - line-height: 24px; -} - -.txt-5001528 { - font-weight: 500; - font-size: 15px; - line-height: 28px; -} - -.txt-5001628 { - font-weight: 500; - font-size: 16px; - line-height: 28px; -} - -.txt-5001822 { - font-weight: 500; - font-size: 18px; - line-height: 22px; -} - -.txt-5002016 { - font-weight: 500; - font-size: 20px; - line-height: 16px; -} - -.txt-5002024 { - font-weight: 500; - font-size: 20px; - line-height: 24px; -} - -.txt-5002025 { - font-weight: 500; - font-size: 20px; - line-height: 25px; -} - -.txt-5002228 { - font-weight: 500; - font-size: 22px; - line-height: 28px; -} - -.txt-5002835 { - font-weight: 500; - font-size: 28px; - line-height: 35px; -} - -.txt-5002430 { - font-weight: 500; - font-size: 24px; - line-height: 30px; -} - -.txt-5003636 { - font-weight: 500; - font-size: 36px; - line-height: 36px; -} - -.txt-5003645 { - font-weight: 500; - font-size: 36px; - line-height: 45px; -} - -.txt-5004455 { - font-weight: 500; - font-size: 44px; - line-height: 55px; -} - -.txt-6002025 { - font-weight: 600; - font-size: 20px; - line-height: 25px; -} - -.txt-6002430 { - font-weight: 600; - font-size: 24px; - line-height: 30px; -} - -.txt-6002835 { - font-weight: 600; - font-size: 28px; - line-height: 35px; -} - -.txt-6003645 { - font-weight: 600; - font-size: 36px; - line-height: 45px; -} - -.txt-6003652 { - font-weight: 600; - font-size: 36px; - line-height: 52px; -} - -.txt-6005670 { - font-weight: 600; - font-size: 56px; - line-height: 70px; -} - -.txt-6007290 { - font-weight: 600; - font-size: 72px; - line-height: 90px; -} - -.txt-7002027 { - font-weight: 700; - font-size: 20px; - line-height: 27px; -} - -.txt-7003240 { - font-weight: 700; - font-size: 32px; - line-height: 40px; -} - -.txt-7003645 { - font-weight: 700; - font-size: 36px; - line-height: 45px; -} - -/* button样式 */ -.btn { - padding: 10px 16px; - border-radius: 8px; - border: 1px solid transparent; - cursor: pointer; - outline: none; - position: relative; - display: inline-block; - white-space: nowrap; - text-align: center; - transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1); - user-select: none; - touch-action: manipulation; - width: 100%; - font-size: 16px; - line-height: 18px; -} - -.btn-primary { - background-color: var(--txt-theme-color); - color: #fff; -} - -.btn-primary:hover { - background-color: var(--btn-hover-color); -} - -.btn-green { - color: var(--txt-theme-color); - border-color: var(--txt-theme-color); - background-color: transparent; -} - -.btn-green:hover { - color: #fff; - border-color: var(--txt-theme-color); - background-color: var(--txt-theme-color); -} - -.btn-wwg { - color: #fff; - border-color: #fff; - background-color: var(--txt-theme-color); -} - -.btn-default { - color: var(--txt-gray-color); - border-color: var(--border-color); - background-color: transparent; -} - -.btn-default:hover { - color: var(--txt-theme-color); - border-color: var(--txt-theme-color); -} - -.btn-gw { - color: var(--txt-theme-color); - background-color: #fff; -} - -/* input样式 */ -.input { - box-sizing: border-box; - padding: 9px 13px; - height: 44px; - color: var(--text-color); - background-color: var(--bg-fa-color); - border: 1px solid var(--border-color); - border-radius: 4px; - transition: all 0.2s; - font-size: 15px; -} - -.input::placeholder { - color: var(--txt-gray-color) !important; - opacity: 0.5; -} - -.input:focus { - outline: none; - border: 1px solid var(--txt-theme-color); -} - -.textarea { - box-sizing: border-box; - padding: 9px 13px; - color: var(--text-color); - background-color: var(--bg-fa-color); - border: 1px solid var(--border-color); - border-radius: 4px; - transition: all 0.2s; - font-size: 15px; -} - -.textarea::placeholder { - color: var(--txt-gray-color) !important; - opacity: 0.5; -} - -.textarea:focus { - outline: none; - border: 1px solid var(--txt-theme-color); -} - -.search-form { - display: none; - position: relative; -} - -.search-input { - box-sizing: border-box; - display: flex; - flex-direction: row; - align-items: center; - padding: 9px 13px 9px 38px; - width: 240px; - height: 40px; - color: var(--text-color); - background-color: var(--choose-bg-hover-color); - border: 1px solid var(--border-color); - border-radius: 8px; - transition: all 0.2s; - font-size: 15px; -} - -.search-input::placeholder { - color: var(--txt-gray-color) !important; - opacity: 0.5; -} - -.search-input:focus { - outline: none; - border: 1px solid var(--txt-theme-color); -} - -.search-icon { - display: inline-block; - background: url(../img/search-icon.svg) no-repeat; - width: 20px; - height: 20px; - position: absolute; - top: 10px; - left: 10px; - z-index: 2; -} - -.from-ul { - width: 543px; -} - -.from-ul-item { - display: flex; - flex-direction: column; -} - -.from-ul-tags { - font-family: "Lexend"; - font-style: normal; - font-weight: 400; - font-size: 14px; - line-height: 16px; - color: var(--txt-gray-color); -} - -.input-txt { - padding: 10px 16px; - background: var(--bg-fa-color); - border: 1px solid var(--border-color); - border-radius: 4px; -} - -.input-textArea { - padding: 10px 16px; - height: 120px; - background: var(--bg-fa-color); - border: 1px solid var(--border-color); - border-radius: 4px; -} - -/* flex样式 */ -.flex-cc { - display: flex; - align-items: center; - justify-content: center; -} - -.flex-sc { - display: flex; - align-items: flex-start; - justify-content: center; -} - -/* grid样式 */ -.grid-4 { - display: grid !important; - grid-template-columns: 480px 266px 266px 266px; -} - -.grid-5 { - display: grid !important; - grid-template-columns: 336px 236px 236px 236px 236px; -} - -/* padding样式 */ -.pl-26 { - padding-left: 26px; -} - -/* margin样式 */ -.mb-4 { - margin-bottom: 4px; -} - -.mb-8 { - margin-bottom: 8px; -} - -.mb-12 { - margin-bottom: 12px; -} - -.mb-16 { - margin-bottom: 16px; -} - -.mb-24 { - margin-bottom: 24px; -} - -.mb-32 { - margin-bottom: 32px; -} - -.mb-36 { - margin-bottom: 36px; -} - -.mb-40 { - margin-bottom: 40px; -} - -.mb-48 { - margin-bottom: 48px; -} - -.mb-56 { - margin-bottom: 56px; -} - -.mb-64 { - margin-bottom: 64px; -} - -.mb-80 { - margin-bottom: 80px; -} - -.mr-12 { - margin-right: 12px; -} - -.mr-16 { - margin-right: 16px; -} - -.mr-20 { - margin-right: 20px; -} - -.mr-24 { - margin-right: 24px; -} - -.mr-48 { - margin-right: 48px; -} - -.mt-16 { - margin-top: 16px; -} - -.mt-40 { - margin-top: 40px; -} - -.mt-80 { - margin-top: 80px; -} - -/* header布局 */ -.head { - position: relative; - background-color: var(--bg-color); -} - -.head-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; -} - -/* 导航栏样式 */ -.nav { - display: block; - background-color: transparent; - width: 100%; - position: relative; - z-index: 999; - height: 80px; - position: fixed; - top: 0; -} - -.nav-layout { - width: 100%; - max-width: 1280px; - margin: 0 auto; - height: 80px; - display: flex; - align-items: center; - justify-content: space-between; -} - -.navbar-white { - background-color: var(--pop-bg-color); - box-shadow: 0px 4px 9px var(--box-shadow-color); -} - -.topics { - position: relative; - width: 100%; -} - -.topics-con { - padding-top: 200px; - max-width: 1280px; - width: 100%; - margin: 0 auto; -} - -.topics-layout { - display: flex; - justify-content: center; - flex-direction: column; - align-items: center; -} - -.topics-tit, -.topics-btn { - opacity: 0; - transform: translateY(100px); - animation: fadeSlideIn1 0.7s ease-in-out forwards; - /* 应用动画效果 */ -} - -.topics-h4 { - width: 680px; - color: var(--txt-gray-color); - text-align: center; - opacity: 0; - transform: translateY(100px); - animation: fadeSlideIn1 0.7s ease-in-out forwards; - /* 应用动画效果 */ -} - -/* 定义动画 */ -@keyframes fadeSlideIn1 { - from { - opacity: 0; - transform: translateY(100px); - } - - to { - opacity: 1; - transform: translateY(0); - } -} - -.topics-h1-green { - color: var(--txt-theme-color); - position: relative; - text-align: center; -} - -.topics-h1 { - color: var(--text-color); - text-align: center; -} - -.topics-btn { - margin-bottom: 64px; -} - -.topics-tit-en { - width: 896px; - text-align: center; -} - -.topics-h4-en { - width: 660px; - text-align: center; -} - -.arcs { - display: inline-block; - position: absolute; - width: 95%; - height: 25px; - left: 0; - top: 83px; -} - -.home-pic { - display: block; - width: 100%; - max-width: 1280px; - /* height: 580px; */ -} - -/* 抽屉菜单 */ -.menuBtn { - display: none; - cursor: pointer; -} - -.drawer { - position: fixed; - top: 0; - left: -90vw; - width: 75vw; - height: 100%; - padding: 22px 24px; - background-color: var(--pop-bg-color); - border: 1px solid var(--box-shadow-color); - box-shadow: var(--pop-box-shadow); - transition: all 0.5s ease-in-out; - z-index: 999; -} - -.drawer-t { - display: flex; - justify-content: space-between; - align-items: center; -} - -.close-drawer { - display: inline-block; - margin-bottom: 10px; - cursor: pointer; - color: var(--txt-gray-color); - font-size: 20px; -} - -.open-drawer { - left: 0; -} - -.drawer-item-t { - border-bottom: 1px solid var(--border-color); -} - -.drawer .drawer-item { - cursor: pointer; - position: relative; -} - -.drawer .drawer-item > a { - padding: 16px; - display: inline-block; - width: calc(100% - 36px); -} - -.drawer .drawer-item > i { - padding: 16px; - display: flex; - width: calc(100% - 36px); -} - -.drawer .drawer-active .drawer-item { - padding: 0 36px; -} - -.drawer .drawer-item .txt { - color: var(--txt-gray-color); -} - -.drawer .drawer-item:hover { - background-color: var(--bg-hover-color); - border-radius: 4px; -} - -.drawer .drawer-item:hover .txt { - color: var(--text-color); -} - -.logo { - display: flex; - align-items: center; -} - -.dootask { - margin-left: 16px; - color: var(--text-color); -} - -.nav-ul { - display: flex; - align-items: center; - justify-content: space-between; - width: 545px; -} - -.nav-ul-item { - display: inline-block; - position: relative; -} - -.nav-vector { - margin-left: 5px; -} - -.nav-ul-item .txt { - padding: 7px 8px; - color: var(--txt-gray-color); -} - -.nav-ul-item .txt:hover { - background-color: var(--bg-hover-color); - border-radius: 6px; - color: var(--text-color); -} - -.nav-ul-item .support-active { - background-color: var(--bg-hover-color); - border-radius: 6px; - color: var(--text-color); -} - -.submenu-pop { - position: absolute; - top: 40px; - left: -38px; - display: none; - background-color: var(--pop-bg-color); - border: 1px solid var(--box-shadow-color); - box-shadow: var(--pop-box-shadow); - border-radius: 4px; - padding: 8px 0; - z-index: 99; - width: 150px; - text-align: start; -} - -.submenu-pop .submenu-pop-item { - cursor: pointer; -} - -.submenu-pop .submenu-pop-item .txt-sub { - display: inline-block; - padding: 9px 16px; - color: var(--txt-gray-color); -} - -.submenu-pop .submenu-pop-item:hover { - background-color: var(--bg-hover-color); -} - -.submenu-pop .submenu-pop-item:hover .txt-sub { - color: var(--text-color); -} - -.nav-r { - width: 355px; - display: flex; - justify-content: space-between; - align-items: center; - position: relative; -} - -.nav-support { - display: flex; - align-items: center; - cursor: pointer; -} - -.line-1 { - height: 24px; - border: 1px solid var(--border-color); -} - -.nav-r a { - font-style: normal; - font-weight: 400; - font-size: 16px; - line-height: 20px; - color: var(--txt-gray-color); -} - -.nav-r-icon { - height: 20px; - cursor: pointer; -} - -.lang { - display: inline-block; - height: 20px; - cursor: pointer; -} - -.lang-pop { - position: absolute; - top: 40px; - left: -38px; - display: none; - background-color: var(--pop-bg-color); - border: 1px solid var(--box-shadow-color); - box-shadow: var(--pop-box-shadow); - border-radius: 4px; - padding: 8px 0; - z-index: 99; - text-align: start; -} - -.lang-pop .show { - display: inline-block; -} - -.lang-pop .lang-pop-item { - padding: 9px 16px; - cursor: pointer; -} - -.lang-pop .lang-pop-item .lang-txt { - font-weight: 400; - font-size: 14px; - line-height: 18px; - color: var(--txt-gray-color); - display: inline-block; -} - -.lang-pop .lang-pop-item:hover { - background-color: var(--bg-hover-color); -} - -.lang-pop .lang-pop-item:hover .lang-txt { - color: var(--text-color); -} - -.get-started { - display: inline-block; -} - -.login-btn { - width: 84px; - display: inline-block; -} - -/* 底部样式 */ -footer { - width: 100%; - z-index: 2; - position: relative; -} - -.footer-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; -} - -.footer-layout { - display: flex; - justify-content: space-between; - align-items: flex-start; - padding-top: 46px; - border-bottom: var(--border-color) solid 1px; -} - -#qq_group { - position: relative; - width: 164px; -} - -#qq_group:hover .group_code { - display: flex; -} - -.group_code { - display: none; - position: absolute; - bottom: 25px; - left: -35px; - background-color: var(--code-bg-color); - padding: 12px; - border-radius: 4px; - justify-content: center; - flex-direction: column; -} - -.group_num { - display: inline-block; - color: #fff; - font-weight: 400; - font-size: 14px; - line-height: 16px; - margin-top: 10px; -} - -.lower_triangle { - position: absolute; - bottom: -4px; - left: 70px; - width: 0; - height: 0; - border-left: 5px solid transparent; - border-right: 5px solid transparent; - border-top: 4px solid var(--code-bg-color); -} - -.footer-l { - display: flex; - flex-direction: column; - align-items: flex-start; - width: 405px; -} - -.footer-l .logo { - height: 36px; - display: flex; - align-items: center; - margin-bottom: 24px; -} - -.footer-l .txt { - color: var(--txt-gray-color); -} - -.footer-r { - width: 625px; -} - -.footer-r-ul { - display: flex; - justify-content: space-between; - padding-bottom: 48px; -} - -.footer-ol-item { - cursor: pointer; -} - -.footer-ol-item .txt { - color: var(--txt-gray-color); -} - -.footer-ol-item .code-svg { - display: block; - height: 125px; -} - -.filings { - text-align: center; - color: var(--txt-gray-color); - padding: 24px 0; -} - -.footer-t { - position: relative; - padding: 120px 0; -} - -.footer-t-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; -} - -.footer-t-layout { - display: flex; - justify-content: space-between; - align-items: flex-start; -} - -.footer-t-l { - width: 657px; -} - -.footer-t-h1 { - font-weight: 500; - font-size: 44px; - line-height: 55px; - color: var(--text-color); -} - -.footer-t-h6 { - font-weight: 400; - font-size: 18px; - line-height: 30px; - color: var(--txt-gray-color); -} - -.footer-t-contact { - display: flex; - justify-content: flex-start; - align-items: center; -} - -.footer-t-contact-icon { - display: inline-block; - width: 24px; - height: 24px; -} - -.footer-t-contact-h6 { - font-weight: 400; - font-size: 16px; - line-height: 24px; - color: var(--text-color); -} - -/* 序号公共样式 */ -.serial-number { - color: var(--txt-theme-color); -} - -.choose-con-item-h5 { - color: var(--text-color); -} - -.choose-con-item-h6 { - color: var(--txt-gray-color); -} - -.support .support-item { - padding-bottom: 8px; -} - -.support .support-item .txt { - font-family: "Lexend"; - font-style: normal; - font-weight: 400; - font-size: 16px; - line-height: 24px; - color: var(--txt-gray-color); -} - -.support .support-item:first-of-type { - padding-bottom: 16px; -} - -.support .support-item:first-of-type .txt { - color: var(--text-color); - font-weight: 500; -} - -.group .group-item { - padding-bottom: 24px; -} - -.group .group-item .txt { - color: var(--text-color); - font-weight: 500; - font-size: 16px; - line-height: 24px; -} - -.group .group-item .logo { - display: block; - height: auto; -} - -/* 动画 style="--delay: 0s;" */ -.about-animate-box, -.solutions-animate-box, -.home-animate-box, -.dow-animate-box { - opacity: 0; - transform: translateY(30%); -} - -.about-animate-box.animate, -.price-animate-box.animate, -.solutions-animate-box.animate, -.home-animate-box.animate, -.dow-animate-box.animate { - animation: fadeIn 0.7s cubic-bezier(0.61, -0.01, 0.57, 0.96) forwards - var(--delay); - /* 应用动画效果 */ -} - -/* 定义动画 */ -@keyframes fadeIn { - from { - opacity: 0; - transform: translateY(30%); - } - - to { - opacity: 1; - transform: translateY(0); - } -} - -#arc { - animation: arcsFadeIn 2s ease-in-out; -} - -.arc-animate { - animation: arcsFadeIn 2s ease-in-out; -} - -@keyframes arcsFadeIn { - from { - stroke-dashoffset: 600; - } - - to { - stroke-dashoffset: 0; - } -} - -.start_a { - width: 100%; -} - -.hide { - display: none; -} - -#cookieConsent { - display: none; - width: 100%; - height: 180px; - background-color: rgba(0, 0, 0, 0.8); - position: fixed; - bottom: 0; - z-index: 9999; - color: #dfe4e8; - padding: 40px 50px; - box-sizing: border-box; - text-align: center; -} - -#agreeButton { - width: 130px; - position: absolute; - right: 80px; - bottom: 50px; -} - -#cookie_a { - color: #dfe4e8; - text-decoration-line: underline; -} - -.footer_beian { - line-height: 20px; - margin-left: 5px; - color: #939393; -} - -.footer_beian_a { - line-height: 20px; - margin-left: 5px; - color: #939393; - text-decoration: underline; - display: inline-block; -} - -.footer_copyright { - display: flex; - margin: 0 auto; - align-items: center; - justify-content: center; -} diff --git a/public/site/css/distribution.css b/public/site/css/distribution.css deleted file mode 100644 index 7e1150427..000000000 --- a/public/site/css/distribution.css +++ /dev/null @@ -1,223 +0,0 @@ -main{ - position: relative; -} -.bg_fpic1{ - display: block; - position: absolute; - top: 0; - left: 0; - width: 34vw; - max-width: 300px; -} -.bg_fpic2{ - display: block; - position: absolute; - top: 0; - right: 0; - width: 34vw; - max-width: 300px; -} -section{ - width: 100%; - height: 100vh; - max-width: 768px; - margin: 0 auto; -} -.content{ - display: flex; - justify-content: center; - align-items: center; - height: 100%; -} -.layout{ - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - min-width: 240px; -} -.icon1{ - display: none; - height: 88px; - margin-bottom: 18px; -} -.name{ - width: 100%; - display: flex; - align-items: center; - justify-content: center; - padding-bottom: 20px; - -} -.name >i{ - color: #000; - font-weight: 500; - font-size: 28px; - line-height: 39px; -} -.icon2{ - display: block; - height: 32px; - margin-right: 8px; -} -.info{ - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} -.info-t{ - display: inline-block; - margin-bottom: 2px; -} -.info-t >i{ - color: #727570; - font-weight: 400; - font-size: 12px; - line-height: 17px; -} -.info-b{ - display: inline-block; - color: #727570; - font-weight: 400; - font-size: 12px; - line-height: 17px; - margin-bottom: 36px; -} -.info-btn{ - margin-bottom: 16px; -} -.info-btn >button{ - min-width: 200px; - padding: 10px 24px; - border: 1px solid transparent; - cursor: pointer; - outline: none; - position: relative; - display: inline-block; - white-space: nowrap; - text-align: center; - user-select: none; - touch-action: manipulation; - width: 100%; - font-weight: 400; - font-size: 16px; - line-height: 22px; - background: #8BCF70; - border-radius: 22px; - color: #fff; -} -.info-dow{ - display: block; -} -.info-tip{ - display: none; - font-weight: 500; - font-size: 16px; - line-height: 22px; - color: #8BCF70; - opacity: 0.7; -} -.line-con{ - width: 100%; - height: auto; - margin-bottom: 32px; - text-align: center; -} -.line1{ - display: inline-block; - width: 100%; - height: 1px; - background-color: #E7E9E4; -} -.line2{ - display: none; - font-weight: 500; - font-size: 16px; - line-height: 22px; - color: #8BCF70; - opacity: 0.7; -} -.operat-tips{ - position: absolute; - top: 0; - right: 10px; - display: none; -} -.operat-con{ - position: relative; - max-width: 152px; -} -.operat-con .lower_triangle{ - position: absolute; - top: 6px; - left: 120px; - width: 0; - height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; - border-bottom: 4px solid #8BCF70; -} -.operat-con .group_num{ - background-color: #8BCF70; - - padding: 6px 12px;; - border-radius: 6px; -} -.operat-con .group_num >p{ - font-weight: 400; - font-size: 14px; - line-height: 20px; - color: #fff; -} -.qr_code{ - width: 160px; - height: 160px; - background-color: #F2F3F1; - border-radius: 12px; - margin-bottom: 36px; - display: flex; - justify-content: center; - align-items: center; -} -.scan{ - text-align: center; - display: flex; - flex-direction: column; -} -.scan-txt{ - display: inline-block; - color: #727570; - font-weight: 400; - font-size: 14px; - line-height: 20px; - opacity: 0.7; -} -.scan-txt-b{ - display: inline-block; - color: #000000; -} -@media screen and (max-width: 768px){ - .qr_code,.scan{ - display: none !important; - } - .icon1{ - display: block !important; - } - .name >i{ - color: #000; - font-weight: 500; - font-size: 18px; - line-height: 25px; - } - .icon2{ - display: block; - height: 24px; - margin-right: 8px; - } -} -.qrcode_box{ - width: 130px; - height: 130px; - display: inline-block; -} diff --git a/public/site/css/download.css b/public/site/css/download.css deleted file mode 100644 index e8e5d0ea7..000000000 --- a/public/site/css/download.css +++ /dev/null @@ -1,182 +0,0 @@ -/* 头部样式 */ -.head { - text-align: center; - background: var(--bg-8-url) top left no-repeat; - background-size: contain; -} -.nav { - background-color: var(--pop-bg-color); - box-shadow: 0px 4px 9px var(--box-shadow-color); -} - -.download-ul { - display: flex; - justify-content: space-between; - align-items: center; - width: 70%; -} -.download-ul-item { - cursor: pointer; -} -.download-ul-item .normal { - display: flex; - background-color: var(--bg-fa-color); - border-radius: 80px; - width: 160px; - height: 160px; - justify-content: center; - align-items: center; - flex-direction: column; -} -.download-ul-item .icon { - display: block; - height: 48px; -} -.download-ul-item .hover { - display: none; - width: 160px; - height: 160px; - justify-content: center; - align-items: center; - flex-direction: column; -} -.download-ul-item .hover.radius { - background-color: var(--bg-fa-color); - border-radius: 80px; - width: 160px; - height: 160px; -} -.download-ul-item .qr-code { - display: block; - height: 100px; -} -.download-ul-item .txt { - color: var(--txt-gray-color); -} -.download-ul-item .hover.radius .txt { - color: var(--txt-theme-color); -} -.chips-txt { - color: var(--txt-theme-color); -} -.download-ul-item .btn:hover .chips-txt { - color: #fff; -} -.update { - position: relative; - background-color: var(--bg-fa-color); -} -.update-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; - padding: 120px 0px; - z-index: 2; - position: relative; -} -.update-layout { - display: flex; - justify-content: space-between; - align-items: center; - position: relative; -} -.update-h1 { - color: var(--text-color); -} -.update-ul { - width: 465px; -} -.update-item { - display: flex; - justify-content: space-between; - align-items: center; - border-bottom: 1px solid var(--border-color); - padding: 16px 0; - cursor: pointer; -} -.update-item:hover .update-h5 { - color: var(--txt-theme-color); -} -.update-item:hover .time { - color: var(--txt-theme-color); -} -.update-h5 { - color: var(--txt-gray-color); -} -.update-item .time { - color: var(--txt-gray-color); -} -.update-ul .more-item { - display: flex; - align-items: center; -} -.more-item .more { - color: var(--txt-theme-color); - margin-right: 8px; - cursor: pointer; - padding: 16px 0; -} -.more-item .icon { - display: inline-block; - width: 8px; - height: 12px; - line-height: 24px; -} -.update-bg-svg { - background: var(--bg-9-url) no-repeat top right; - background-size: contain; -} -.update-r { - max-width: 672px; - margin-left: 123px; - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 45px; -} -.update-r-svg { - display: block; - background: var(--bg-pic1-url) no-repeat; - background-size: cover; - width: 100%; - height: 100%; -} -/* 底部布局 */ -.footer-layout { - padding-top: 120px; -} -.btn-padding { - padding: 0 !important; -} -.btn-padding a { - display: block; - padding: 10px 16px; -} -/* 弹框样式 */ -.BulletBox { - position: fixed; - display: none; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - padding: 8px; - background-color: var(--txt-theme-color); - line-height: 20px; - text-align: center; - z-index: 9999; - border: 1px solid transparent; - border-radius: 8px; - color: #fff; -} -.download-other-btn { - padding: 10px 16px; - border-radius: 8px; - margin-top: 64px; - margin-bottom: 100px; -} -.download-other-btn span { - opacity: 0.7; - color: var(--txt-gray-color); -} -.download-other-btn:hover span { - color: var(--txt-theme-color); - opacity: 1; -} diff --git a/public/site/css/help.css b/public/site/css/help.css deleted file mode 100644 index d9158dd64..000000000 --- a/public/site/css/help.css +++ /dev/null @@ -1,195 +0,0 @@ -/* 头部样式 */ -.nav { - background-color: var(--pop-bg-color); - box-shadow: 0px 4px 9px var(--box-shadow-color); -} - -.help { - position: relative; - margin: 56px 0 96px 0; - padding-top: 80px; -} - -.help-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; -} - -.help-layout { - display: flex; - align-items: flex-start; -} - -.help-l { - display: block; - padding: 24px; - background: var(--bg-fa-color); - border-radius: 8px; - margin-right: 32px; - height: 95%; -} - -.help-h5 { - color: var(--text-color); -} - -.help-l-ul { - width: 240px; - overflow: auto; - height: 82vh; -} - -.l-ul-item.active .txt { - color: var(--txt-theme-color); -} - -.l-ul-item.active { - background-color: var(--bg-hover-color); - border-radius: 8px; -} - -.l-ul-item:hover { - background: var(--bg-hover-color); - border-radius: 8px; -} - -.txt { - /* display: inline-block; */ - color: var(--txt-gray-color); -} - -.help-r { - padding-left: 32px; - position: relative; -} - -.help-r::-webkit-scrollbar { - width: 0 !important -} - -.help-pic1 { - position: relative; - padding-left: 34px; - width: auto; - height: 240px; - background: var(--txt-theme-color); - border-radius: 8px; - display: flex; - align-items: center; - overflow: hidden; -} - -#help-pic1-svg { - height: 100%; - position: absolute; - top: 0; - right: 0; -} - -.help-pic1-tips { - max-width: 360px; -} - -.help-pic1-tips-h2 { - color: #fff; - margin-bottom: 16px; -} - -.help-pic1-tips-h6 { - color: #fff; -} - -.help-h4 { - color: var(--text-color) !important; -} - -.help-h6 { - color: var(--txt-gray-color); -} - -.help-h6-bold { - color: var(--text-color) !important; -} - -.r-ul-item-pic1 { - display: block; - max-width: 90%; - margin: 12px 0; -} - -.r-ul-item-pic2 { - display: block; - height: 418px; -} - -.dots { - background: url(../img/dots.svg) no-repeat; - width: 4px; - height: 4px; - display: block; - position: absolute; - left: 10px; - top: 10px; -} - -.help-t-768 { - display: flex; - align-items: center; - padding: 14px 16px; - background: var(--bg-fa-color); - border-radius: 8px; - margin-top: 16px; - cursor: pointer; - margin-bottom: 40px; -} - -.help-t-prev { - display: inline-block; - width: 14px; - margin-right: 8px; -} - -.help-t-tit { - font-weight: 400; - font-size: 16px; - line-height: 20px; - color: var(--txt-theme-color); -} - -.help-drawer { - position: fixed; - top: 0; - left: -90vw; - width: 75vw; - height: 100%; - padding: 22px 24px; - background-color: var(--pop-bg-color); - border: 1px solid var(--box-shadow-color); - box-shadow: var(--pop-box-shadow); - transition: all 0.5s ease-in-out; - z-index: 999; -} - -.open-help-drawer { - left: 0; -} - -.help-t-768 { - display: none; -} - -.filings { - border-top: 1px solid var(--border-color); -} -.help-fiexd{ - position: sticky; - top: 80px; -} -.help-a{ - display: block; - width: 100%; - height: 100%; - padding: 9px 16px; - line-height: normal; -} diff --git a/public/site/css/home.css b/public/site/css/home.css deleted file mode 100644 index c7cc77943..000000000 --- a/public/site/css/home.css +++ /dev/null @@ -1,318 +0,0 @@ -/* 头部样式 */ -.head { - text-align: center; - background: var(--bg-1-url) top left no-repeat; - background-size: cover; -} -section { - background: var(--bg-2-url) bottom left no-repeat; -} -/* 底部样式 */ -.footer-layout { - border-top: var(--border-color) solid 1px; -} -.collaboration { - width: 100%; - max-width: 1280px; - max-height: 243px; - margin: 0 auto; - position: relative; - margin-bottom: 120px; -} -.collaboration-content { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: 5; -} -/* .collaboration-content-zh{ - top: 27.7%; - left: 36.7%; -} -.collaboration-content-en{ - top: 27.7%; - left: 28.6%; -} */ -.collaboration-txt { - color: #fff; - text-align: center; -} -/* 合作公司 */ -.companies { - height: 100%; - background: var(--bg-fa-color); -} -.companies-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; - padding: 88px 0; -} -.companies-h1 { - text-align: center; - color: var(--text-color); -} -.companies-ul { - display: flex; - align-items: center; - justify-content: space-around; - margin-top: 56px; -} -.companies-ul .companies-ul-item { - height: 64px; -} -.companies-ul .companies-ul-item img { - height: 100%; - display: inline-block; -} -.ten_img { - opacity: 0; - animation-name: fadeSlideIn2; - animation-duration: 2s; - animation-delay: 0.6s; - transition-timing-function: ease; - animation-fill-mode: forwards; -} -/* 定义动画 */ -@keyframes fadeSlideIn2 { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -/* 功能卡片 */ -.card { - height: auto; - width: 100%; - max-width: 1280px; - margin: 0 auto; -} -.card-pic { - max-width: 717px; -} -.card-con { - padding-top: 120px; -} -.card-con-768 { - padding-top: 56px; - display: none; -} -.card-con-layout { - display: flex; - align-items: flex-start; - margin-top: 56px; -} -.card-h1 { - text-align: center; - color: var(--text-color); -} -.card-ul { - width: 483px; - margin-right: 48px; - padding-right: 32px; -} -.card-768-ul .icon { - flex: 1; - display: inline-block; - padding: 10px; - background-color: var(--bg-292c2f-color); - box-shadow: 0px 4px 9px rgba(0, 0, 0, 0.05); - border-radius: 8px; - margin-bottom: 16px; -} -.card-ul .card-ul-item { - display: flex; - align-items: center; - padding: 24px 16px; - border-bottom: 1px solid var(--border-color); - cursor: pointer; - max-height: 50px; - transition: max-height 1s ease; -} -@keyframes fadeSlideIn3 { - from { - opacity: 0; - transform: translateY(30px); - } - to { - opacity: 1; - transform: translateY(0); - } -} -.card-ul .card-ul-item:hover { - background-color: var(--bg-hover-color); -} -.card-ul .card-ul-item .icon { - flex: 1; - display: inline-block; - padding: 10px; - background-color: var(--bg-292c2f-color); - box-shadow: 0px 4px 9px rgba(0, 0, 0, 0.05); - border-radius: 8px; - margin-right: 24px; -} -.card-ul .card-ul-item .arrows { - display: inline-block; - height: 18px; - width: 18px; -} -.card-ul-item-h3 { - color: var(--text-color); -} -.card-ul-item-unfolded { - display: flex; - justify-content: space-between; - align-items: center; - flex: 14; -} -.card-ul-item-expand { - display: none; -} -.card-ul-item-expand-tit { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 16px; -} -.card-ul-item-txt { - display: inline-block; - color: var(--txt-gray-color); - opacity: 0; - animation: fadeSlideIn3 0.5s cubic-bezier(0.61, -0.01, 0.57, 0.96) forwards - var(--delay); -} -@keyframes fadeSlideIn3 { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -.card-ul-item.active { - align-items: flex-start !important; - max-height: 138px; -} -.card-ul-item.active .arrows { - transform: rotate(180deg); -} -.card-ul-item.active .card-ul-item-unfolded { - display: none; -} -.card-ul-item.active .card-ul-item-expand { - display: inline-block; -} - -/* 为什么选择我们 */ -.choose { - position: relative; - height: auto; - width: 100%; - max-width: 1280px; - margin: 0 auto; - z-index: 10; -} -.choose-con { - padding: 240px 0 120px 0; -} -.choose-con-768 { - display: none; - justify-content: center; - align-items: center; - flex-direction: column; - padding-bottom: 88px; -} -.choose-con-768-box { - position: relative; - width: calc(100vw); - overflow-x: hidden; -} -.zh_choose_768, -.en_choose_768 { - /* min-height: 257px; */ -} -.choose-con-768-ul { - z-index: 99; - display: flex; - position: absolute; - left: 0; - top: 10px; - transition: all cubic-bezier(0, -0.26, 0.13, 1.04) 0.8s; -} -.choose-con-768-ul::-webkit-scrollbar { - display: none; -} -.choose-con-768-item { - padding: 30px 24px; - width: calc(100vw - 88px); - min-height: 177px; - height: 100%; - background: var(--choose-bg-hover-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; - margin: 0 20px; -} -#card-indicators { - position: absolute; - bottom: 54px; - left: 50%; - transform: translateX(-50%); - display: flex; - justify-content: center; - align-items: center; - z-index: 99; -} -.card-indicators-item { - list-style: none; - margin: 0 5px; - width: 10px; - height: 10px; - border-radius: 50%; - background-color: var(--border-color); - cursor: pointer; - transition: background-color 0.3s ease-in-out; -} -.card-indicators-item.active { - background-color: var(--txt-theme-color); -} -.arcs2 { - display: inline-block; - position: absolute; - width: 100%; - left: 0; - bottom: -28px; -} -.choose-con-ul { - display: flex; - justify-content: space-between; -} -.choose-con-item { - width: calc(18vw + 12px); - padding: 24px; -} -.choose-con-ul .hover { - cursor: pointer; - transition: all 0.3s ease-in-out; -} -.choose-con-ul .hover:hover { - background-color: var(--choose-bg-hover-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; - transform: translateY(-16px); -} -.choose-con-tit { - color: var(--text-color); - padding-top: 80px; - position: relative; - width: fit-content; -} -.home_pic7_768 { - display: none; -} diff --git a/public/site/css/log.css b/public/site/css/log.css deleted file mode 100644 index ebaf79e5d..000000000 --- a/public/site/css/log.css +++ /dev/null @@ -1,146 +0,0 @@ -/* 头部样式 */ -.nav { - background-color: var(--pop-bg-color); - box-shadow: 0px 4px 9px var(--box-shadow-color); -} -.logs { - position: relative; - margin: 136px 0 96px 0; -} -.logs-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; -} -.logs-layout { - display: flex; - align-items: flex-start; - /* height: 929px; */ -} -.logs-l { - padding: 24px; - background-color: var(--bg-fa-color); - border-radius: 8px; - margin-right: 32px; - height: 95%; -} -.logs-h5 { - font-weight: 400; - font-size: 16px; - line-height: 20px; - color: var(--text-color); -} -.logs-l-ul { - width: 240px; -} -.l-ul-item.active .txt { - color: var(--txt-theme-color); -} -.l-ul-item.active { - background-color: var(--bg-hover-color); - border-radius: 8px; -} -.l-ul-item:hover { - background-color: var(--bg-hover-color); - border-radius: 8px; -} -.txt { - /* display: inline-block; */ - color: var(--txt-gray-color); -} -.logs-r { - border-left: 1px solid var(--border-color); - padding-left: 32px; - /* height: 929px; */ - /* overflow-y:scroll; */ -} -.logs-r::-webkit-scrollbar { - width: 0 !important; -} -.logs-h1 { - color: var(--text-color); -} -.logs-h4 { - font-weight: 500; - font-size: 24px; - line-height: 30px; - color: var(--text-color); - padding-top: 15px; - box-sizing: border-box; -} -.r-ol-item { - color: var(--txt-gray-color); - position: relative; -} -.r-ul-item:last-child { - margin-bottom: 0 !important; -} -.dots { - background: url(../img/dots.svg) no-repeat; - width: 4px; - height: 4px; - display: inline-block; - position: absolute; - left: 10px; - top: 10px; -} -.logs-t-768 { - display: flex; - align-items: center; - padding: 14px 16px; - background: var(--bg-fa-color); - border-radius: 8px; - margin-top: 16px; - cursor: pointer; - margin-bottom: 40px; -} -.logs-t-prev { - display: inline-block; - width: 14px; - margin-right: 8px; -} -.logs-t-tit { - font-weight: 400; - font-size: 16px; - line-height: 20px; - color: var(--txt-theme-color); -} -.logs-drawer { - position: fixed; - top: 0; - left: -90vw; - width: 75vw; - height: 100%; - padding: 22px 24px; - background-color: var(--pop-bg-color); - border: 1px solid var(--box-shadow-color); - box-shadow: var(--pop-box-shadow); - transition: all 0.5s ease-in-out; - z-index: 999; -} -.open-logs-drawer { - left: 0; -} -.logs-t-768 { - display: none; -} - -.log-a { - display: block; - width: 100%; - height: 100%; - padding: 9px 16px; - line-height: normal; -} -.logs-sticky { - position: sticky; - top: 80px; - height: calc(100vh - 136px); -} -#help-l-ul { - overflow-y: auto; - height: calc(100% - 36px); -} -.footer-layout { - border-top: var(--border-color) solid 1px; -} diff --git a/public/site/css/price.css b/public/site/css/price.css deleted file mode 100644 index 972ed38f5..000000000 --- a/public/site/css/price.css +++ /dev/null @@ -1,268 +0,0 @@ -/* 头部样式 */ -.head { - background: var(--bg-10-url) top left no-repeat; - background-size: contain; -} -.price-card { - width: 100%; - display: flex; - justify-content: space-between; - z-index: 2; -} -.price-card-item { - box-sizing: border-box; - display: flex; - flex-direction: column; - align-items: flex-start; - padding: 24px; - width: 298px; - transition: all 0.3s ease-in-out; - background: var(--choose-bg-hover-color); - border: 1px solid var(--border-color); - border-radius: 12px; - cursor: pointer; -} -.price-card-item:hover { - border: 1px solid var(--txt-theme-color); - transform: translateY(-16px); -} -.price-animate-box { - opacity: 0; - transform: translateY(50%); - animation: fadeIn 1s ease-in-out forwards var(--delay); /* 应用动画效果 */ -} -.price-card-item:hover .btn-green { - background-color: var(--txt-theme-color); - color: #fff; -} -.price-card-h4 { - color: var(--text-color); - display: flex; -} -.price-card-item.active { - border: 2px solid var(--txt-theme-color); - box-shadow: 0px 4px 8px 4px rgba(0, 0, 0, 0.05); -} -.price-card-item.active .btn-green { - background-color: var(--txt-theme-color); - color: #fff; -} -.price-card-item.active .btn-green:hover { - background-color: var(--btn-hover-color); - border-color: var(--btn-hover-color); -} -.price-card-item.active .price-card-h4 { - display: flex; - align-items: center; - color: var(--txt-theme-color); -} -.rec-icon { - display: flex; - flex-direction: row; - align-items: center; - padding: 2px 6px; - height: 20px; - background-color: var(--bg-rec-color); - border-radius: 4px; - color: #fff; - font-size: 14px; - line-height: 16px; - margin-left: 8px; -} -.price-card-money { - display: flex; - align-items: flex-end; -} -.price-card-h2 { - color: var(--text-color); - text-align: left; - margin-right: 4px; -} -.price-card-unit { - color: var(--txt-gray-color); -} -.price-card-h6 { - color: var(--txt-gray-color); - text-align: left; -} -.price-card-ol-item { - display: flex; - align-items: flex-start; -} -.price-card-ol-item .icon { - display: inline-block; - height: 20px; -} -.plans-ul-t .plans-ul-t-item:last-child, -.plans-ol-item:last-child { - border-bottom: none !important; -} -.plans-ol .plans-ol-item:first-child { - background-color: var(--bg-fa-color); - padding: 20px 24px !important; -} -.plans { - position: relative; -} -.plans-tit-h2 { - text-align: center; - color: var(--text-color); -} -.plans-tit-h5 { - text-align: center; - color: var(--txt-gray-color); -} -.plans-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; - z-index: 2; - position: relative; -} -.plans-layout { - padding: 120px 0; -} -.plans-ul-t-item { - border-bottom: 1px solid var(--border-color); -} -.plans-ul-t-item-h4 { - color: var(--text-color); -} -.plans-ol-item { - display: flex; - align-items: center; - padding: 24px; - border-bottom: 1px solid var(--border-color); -} -.plans-ol-item .plans-ol-item-h6:first-child { - color: var(--txt-gray-color) !important; -} -.plans-ol-item-h6 { - color: var(--txt-4ca5); - line-height: normal; -} -.plans-ol-item-icon { - display: block; - height: 24px; -} - -.plans-ol-item-icon2 { - display: block; - height: 24px; - opacity: 0.5; -} - -.plans-ul-b { - display: grid; - grid-template-columns: 506px 266px 266px 266px; -} -.plans-ul-b-item-btn { - display: inline-block; - width: 160px; -} -.flex-s-c { - display: flex; - justify-content: flex-start; - align-items: center; -} -.plans-ul-768 { - display: none; -} -.plans-ul-768-item:nth-of-type(1), -.plans-ul-768-item:nth-of-type(2) { - border-bottom: 1px solid var(--border-color); - padding-bottom: 36px; -} -.plans-ol-768-item { - border: 1px solid var(--border-color); - border-radius: 12px; - margin-bottom: 24px; - background-color: var(--bg-color); -} -.plans-ol-768-item .plans-ol-768-content { - display: flex; - align-items: center; - justify-content: space-between; - padding: 20px 24px; -} -.plans-ol-768-item .plans-ol-768-content:nth-child(2n) { - background-color: var(--bg-fa-color); -} -.plans-ol-768-item .plans-ol-768-content:last-child { - border-radius: 0 0 12px 12px; -} - -/* 底部样式 */ -.footer-layout { - border-top: var(--border-color) solid 1px; -} -.BulletBox1 { - position: fixed; - display: none; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - background-color: #fff; - width: 430px; - text-align: center; - z-index: 9999; - border: 1px solid transparent; - border-radius: 18px; - box-sizing: border-box; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); -} - -@media screen and (max-width: 600px) { - .BulletBox1 { - width: 80%; - } -} - -.BulletBox1 .top { - width: 382px; - line-height: 20px; - padding: 22px 24px 20px 24px; - font-size: 18px; - color: #303133; - font-weight: 500; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - display: flex; - justify-content: space-between; -} -.BulletBox1 .content { - width: 100%; - box-sizing: border-box; - line-height: 1.5; - font-size: 14px; - padding: 16px 32px 2px 32px; - text-align: left; - color: rgb(96, 98, 102); -} -.BulletBox1 .bottom { - display: flex; - justify-content: end; - padding: 20px 30px 22px 30px; - position: relative; -} -.BulletBox1 .bottom .BulletBox1Btn { - min-width: 100px; - right: 20px; - height: 34px; - line-height: 32px; - color: #fff; - background-color: #8bcf70; - border-color: #8bcf70; - cursor: pointer; - border-radius: 8px; - padding: 5px; -} - -.price-ceiling { - position: sticky; - top: 80px; - background-color: var(--bg-color); - border-bottom: 1px solid var(--border-color); - z-index: 9999; -} diff --git a/public/site/css/privacy.css b/public/site/css/privacy.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/public/site/css/product.css b/public/site/css/product.css deleted file mode 100644 index 4d62168e0..000000000 --- a/public/site/css/product.css +++ /dev/null @@ -1,312 +0,0 @@ -/* 头部样式 */ -.head.product { - position: relative; - background: var(--bg-3-url) top right no-repeat; -} -.prooduct-con { - width: 100%; - max-width: 1280px; - margin: 0 auto; - position: relative; -} -.prooduct-list { - display: flex; - flex-wrap: wrap; -} -.prooduct-list .prooduct-list-item { - padding: 24px; - background-color: var(--bg-fa-color); - border: 1px solid var(--border-color); - border-radius: 12px; - cursor: pointer; - margin-right: 32px; - width: 100%; - margin-bottom: 24px; - opacity: 0; - animation: fadeIn 0.5s ease-in-out forwards var(--delay); /* 应用动画效果 */ -} -/* 定义动画 */ -@keyframes fadeIn { - from { - opacity: 0; - transform: translateY(50%); - } - to { - opacity: 1; - transform: translateY(0); - } -} -.prooduct-list .prooduct-list-item.top { - max-width: 180px; -} -.prooduct-list .prooduct-list-item:nth-of-type(6), -.prooduct-list .prooduct-list-item:nth-of-type(10) { - margin-right: 0 !important; -} -.prooduct-list .prooduct-list-item.bot { - max-width: 246px; -} -.prooduct-list .prooduct-list-item:hover { - background-color: var(--choose-bg-hover-color); - border: 1px solid var(--txt-theme-color); - box-shadow: 0px 1px 6px 2px rgba(0, 0, 0, 0.12); -} -.prooduct-list .prooduct-list-item .icon { - width: 48px; - display: block; - margin-bottom: 16px; -} -.prooduct-list .prooduct-list-item .txt { - color: var(--txt-gray-color); -} -.prooduct-list .active { - background-color: var(--choose-bg-hover-color) !important; - border: 1px solid var(--txt-theme-color) !important; - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05) !important; -} -.prooduct-list .prev, -.prooduct-list .next { - padding: 14px; - background: var(--choose-bg-hover-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 8px; - cursor: pointer; - display: none; -} -.prooduct-list .prev { - margin-right: 16px; -} -.prooduct-list .next { - margin-left: 16px; -} -.active .txt { - color: var(--text-color) !important; -} -.details { - display: none; - width: 100%; - max-width: 1280px; - opacity: 0; - transform: translateY(20%); /* 将元素向下移动 50 像素 */ - animation-name: fadeIn2; /* 指定动画名称 */ - animation-duration: 1s; /* 动画持续时间为 1 秒 */ - transition-delay: 1s; - transition-timing-function: ease; - animation-fill-mode: forwards; /* 元素保持动画结束状态 */ -} -.details.active { - display: block; -} -.details-ul-1280 { - display: none; - flex-wrap: wrap; - justify-content: space-between; - padding: 56px 48px; - background-color: var(--choose-bg-hover-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; -} -.details-ul-1280 .details-ul-item { - width: 48%; -} -.prooduct-ul { - margin: 12px 0 125px 0; -} -.details-con { - display: flex; - align-items: flex-start; - padding: 56px 48px; - background-color: var(--choose-bg-hover-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; -} -/* 定义动画 */ -@keyframes fadeIn2 { - from { - opacity: 0; - transform: translateY(20%); - } - to { - opacity: 1; - transform: translateY(0); - } -} -.details-con .pic { - display: block; -} -.details-con .details-ul { - margin-left: 56px; -} -.details-con .details-ul.item4 { - width: 764px; - display: flex; - flex-wrap: wrap; - justify-content: space-between; -} -.details-con .details-ul.item4 .details-ul-item { - width: 364px; -} - -main { - width: 100%; - z-index: 2; - position: relative; -} -.manage { - background-color: var(--bg-fa-color); -} -.manage-con { - padding: 120px 0px; - width: 100%; - max-width: 1280px; - margin: 0 auto; - position: relative; -} -.manage-t { - display: flex; - align-items: center; - flex-direction: column; -} -.manage-b { - display: flex; - justify-content: space-between; - position: relative; -} -.manage-h1 { - color: var(--text-color); -} -.manage-h3 { - font-weight: 500; - font-size: 20px; - line-height: 25px; - color: var(--txt-191a15-color); -} -.manage-h5 { - color: var(--txt-gray-color); -} -.manage-h6 { - color: var(--txt-gray-color); -} -.manage-h5-768 { - display: none; -} -.manage-tit { - width: 341px; -} -.manage-icon { - height: 24px; - display: block; -} -.manage-bg { - display: block; - max-width: 100%; - width: 100%; - height: 100%; -} -.manage-svg { - position: relative; - box-shadow: 0px 4px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 30px; - width: 405px; -} -.manage-tips { - padding: 18px 20px; - background: var(--choose-bg-hover-color); - box-shadow: 0px 4px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; - display: flex; - align-items: center; - position: absolute; - top: 42px; - left: 100px; - width: 76%; -} -.manage-tips-txt { - margin-left: 12px; - color: var(--text-color); -} -.manage-svg-h2 { - display: inline-block; - position: absolute; - bottom: 52px; - left: 120px; - text-align: end; - color: #fff; - width: 60%; -} -.manage-ul-item { - display: flex; - align-items: flex-start; -} -.performance { - position: relative; - background: var(--bg-4-url) top left no-repeat; -} -.performance-con { - padding: 120px 0px; - width: 100%; - max-width: 1280px; - margin: 0 auto; -} -.performance-con .pic { - display: block; - height: auto; -} -.performance-h1 { - color: var(--text-color); - text-align: center; -} -.performance-ul { - display: flex; - align-items: flex-start; - justify-content: space-between; - margin-top: 48px; -} -.performance-ul-item { - width: 248px; -} -.performance-ul-item .icon { - display: inline-block; - width: 24px; - height: 24px; - background-color: var(--txt-theme-color); - border-radius: 4px; - transform: rotate(45deg); -} -.performance-h5 { - color: var(--txt-191a15-color); -} -.performance-h6 { - font-weight: 400; - font-size: 16px; - line-height: 24px; - color: var(--txt-gray-color); -} -.product-animate-box, -.product-animate-box2 { - opacity: 0; - transform: translateY(25%); -} -.product-animate-box.animate { - animation: fadeIn5 0.8s cubic-bezier(0.61, -0.01, 0.57, 0.96) forwards - var(--delay); /* 应用动画效果 */ -} -.product-animate-box2.animate { - animation: fadeIn5 0.7s cubic-bezier(0.61, -0.01, 0.57, 0.96) forwards - var(--delay); /* 应用动画效果 */ -} -/* 定义动画 */ -@keyframes fadeIn5 { - from { - opacity: 0; - transform: translateY(30%); - } - to { - opacity: 1; - transform: translateY(0); - } -} -/* 底部样式 */ -.footer-layout { - border-top: var(--border-color) solid 1px; -} diff --git a/public/site/css/rem.css b/public/site/css/rem.css deleted file mode 100644 index f132d000e..000000000 --- a/public/site/css/rem.css +++ /dev/null @@ -1,950 +0,0 @@ -@media screen and (max-width: 1280px) { - .head-con, - .companies-con, - .card, - .choose, - .footer-con, - .prooduct-con, - .manage-con, - .performance-con, - .app-con, - .nav-layout, - .update-con, - .logs-con, - .help-con, - .plans-con, - .company-profile-con, - .scenario-app-con, - .footer-t-con, - .topics-con, - .collaboration { - width: calc(100vw - 72px) !important; - padding-left: 36px !important; - padding-right: 36px !important; - } - .nav-r { - width: 27%; - } - .nav-ul { - width: 42%; - } - .card-pic { - max-width: 50% !important; - margin-bottom: 36px !important; - } - .manage-b, - .scenario-app-ul { - flex-wrap: wrap; - justify-content: center !important; - } - .update-layout { - justify-content: center !important; - } - .update-l { - margin-right: 36px; - } - .manage-b { - display: block !important; - } - .details, - .manage-tit, - .company-profile-l { - width: calc(100vw - 72px) !important; - } - .topics-tit { - width: calc(100vw - 72px) !important; - text-align: center; - } - .prooduct-list .prooduct-list-item { - width: auto !important; - max-width: 100% !important; - margin-right: 0 !important; - margin-bottom: 0 !important; - } - .prooduct-ul { - margin-top: 36px !important; - } - .manage-ul-item { - margin-bottom: 32px !important; - } - .details-con-item4 { - display: none !important; - } - .details-ul-1280 { - display: flex !important; - } - .app-ul { - justify-content: center !important; - } - .team-ul, - .price-card { - flex-wrap: wrap !important; - justify-content: space-between !important; - } - .plans-ul-b { - flex-wrap: wrap !important; - justify-content: flex-start !important; - } - .team-ul-item, - .price-card-item, - .plans-ul-b-item { - margin-bottom: 32px; - } - .team-con { - width: calc(100vw - 72px) !important; - padding: 120px 20px 88px 20px !important; - } - .download-ul { - width: 100% !important; - } - .update-r { - margin-left: 0 !important; - } - .grid-4 { - grid-template-columns: 32vw 18vw 18vw 18vw !important; - } - .grid-5 { - grid-template-columns: 26vw 18.5vw 18.5vw 18.5vw 18.5vw !important; - } - .plans-ul-b { - grid-template-columns: calc(34vw + 4px) 18vw 18vw 18vw !important; - } - .scenario-app-ul-item:nth-of-type(3), - .app-ul-item:nth-of-type(3) { - margin-bottom: 32px !important; - } - .company-profile-layout { - flex-wrap: wrap; - justify-content: center !important; - } - .company-profile-r { - margin-top: 48px !important; - width: auto !important; - } - .team-ul-item { - width: auto !important; - height: auto !important; - } - .help-pic1 { - height: auto !important; - } - .help-pic1-tips-h2 { - margin-bottom: 0 !important; - } - .help-pic1-tips { - position: relative; - padding: 12px 0 !important; - z-index: 10; - max-width: calc(100% - 123px) !important; - } - .help-pic1-tips-h2 { - font-weight: 500 !important; - font-size: 16px !important; - line-height: 24px !important; - margin-bottom: 8px !important; - } - .help-pic1-tips-h6 { - font-weight: 400 !important; - font-size: 12px !important; - line-height: 16px !important; - } - .choose-con-ul { - justify-content: flex-start !important; - } - .choose-con-item, - .app-ul-item, - .scenario-app-ul-item { - width: 100% !important; - } - .choose-con { - padding: 120px 0 56px 0 !important; - } - .collaboration { - /* padding-bottom: 56px !important; */ - } - .price-card-item { - width: 22% !important; - min-width: 200px !important; - } - .performance-ul-item { - margin-right: 24px !important; - width: 100% !important; - } - .performance-ul-item:last-child { - margin-right: 0 !important; - } - .prooduct-list { - display: grid !important; - grid-template-columns: repeat(3, 1fr) !important; - grid-gap: 24px 32px; - } - .plans-ul-b-item-btn { - width: auto !important; - } - .app-bg-box { - max-height: 100% !important; - } -} - -@media screen and (max-width: 1050px) { - .nav-ul, - .nav-r { - display: none; - } - .menuBtn { - display: block; - } - .footer-t-layout { - flex-direction: column !important; - } - .footer-t-l { - margin-bottom: 32px; - } - .price-card-item { - width: 358px !important; - } - .price-card-h2 { - font-size: 24px !important; - } - .plans-ul-t-item-h4 { - font-size: 16px !important; - } - .price-card-unit { - font-size: 14px !important; - } - .update-layout { - flex-wrap: wrap; - justify-content: center !important; - } - .update-l { - margin-right: 0 !important; - } - .from-ul { - width: calc(100vw - 72px) !important; - margin-top: 40px !important; - } - .update-ul { - width: calc(100vw - 72px) !important; - } - .update-r { - max-width: 100% !important; - } - .topics-h1-green, - .topics-h1 { - font-size: 56px !important; - } - .collaboration-txt { - font-size: 24px !important; - margin-bottom: 8px !important; - } - .logs-l-ul, - .help-l-ul, - .search-input { - width: 220px !important; - } - .update-bg-svg { - background-size: 62% !important; - } - .card-ul-item.active { - max-height: 307px !important; - } - .footer_copyright { - flex-direction: column; - } -} -@media screen and (max-width: 768px) and (min-width: 768px) { - .download-ul-item:nth-of-type(2) { - margin-right: 24px; - } -} -@media screen and (max-width: 768px) { - img { - max-width: 100% !important; - } - .filings { - font-size: 14px !important; - } - .nav-layout { - height: 64px !important; - } - section { - background: transparent !important; - } - #logo { - height: 28px !important; - } - .btn { - font-size: 15px !important; - line-height: 18px !important; - } - .companies-ul .companies-ul-item { - height: 36px !important; - } - .topics-con { - width: calc(100vw - 40px) !important; - padding-top: 100px !important; - padding-left: 20px !important; - padding-right: 20px !important; - } - .details, - .manage-tit, - .company-profile-l { - width: calc(100vw - 40px) !important; - } - .nav { - height: 60px !important; - } - .head-con, - .card, - .choose, - .footer-con, - .companies-con, - .manage-con, - .performance-con, - .app-con, - .team-con, - .update-con, - .logs-con, - .help-con, - .plans-con, - .prooduct-con, - .scenario-app-con, - .footer-t-con, - .nav-layout, - .company-profile-con, - .collaboration { - width: calc(100vw - 40px) !important; - padding: 0 20px !important; - } - .company-profile-r { - width: 100% !important; - margin-top: 0 !important; - } - .details, - .manage-b, - .performance-con .pic { - width: calc(100vw - 40px) !important; - } - .manage-b { - justify-content: center !important; - padding-bottom: 56px; - } - .topics-h1, - .topics-h1-green { - font-weight: 600; - font-size: 28px !important; - line-height: 35px !important; - text-align: center; - } - .topics-tit, - .topics-h4 { - width: 340px !important; - margin-bottom: 20px !important; - text-align: center; - } - .solutions .topics-btn { - margin-bottom: 56px !important; - } - .topics-btn { - margin-bottom: 32px !important; - } - .arcs { - top: 26px !important; - width: 120px !important; - } - .companies-h1 { - font-weight: 400; - font-size: 18px; - line-height: 22px; - } - .companies-con { - padding: 32px 0 !important; - } - .companies-ul { - margin-top: 24px !important; - display: grid !important; - grid-template-columns: repeat(2, 50%) !important; - grid-template-rows: repeat(2, 50%) !important; - justify-items: center !important; - } - .companies-ul .companies-ul-item:nth-of-type(1), - .companies-ul .companies-ul-item:nth-of-type(2) { - margin-bottom: 20px !important; - } - .card-con, - .collaboration-bg, - .choose-con, - .footer-l, - .footer-r, - .manage-h5-1920, - .download-ul-item .hover, - .home_pic7 { - display: none !important; - } - .card-con-768, - .performance-ul, - .help-t-768, - .prooduct-list .prev, - .prooduct-list .next, - .manage-ul-item, - .logs-t-768, - .plans-ul-768, - .manage-h5-768, - .home_pic7_768 { - display: block !important; - } - .choose-con-768 { - display: flex !important; - } - .manage-h5-768 { - width: 320px !important; - } - .card-pic { - max-width: 100% !important; - } - .choose-con-768-item, - .r-ul-item-pic1 { - height: auto !important; - } - .choose-con-tit { - padding-top: 20px !important; - font-weight: 500; - font-size: 22px; - line-height: 30px; - text-align: center; - margin-bottom: 48px; - } - .manage-h1, - .performance-h1, - .app-h1, - .team-tit, - .update-h1 { - padding-top: 56px !important; - font-weight: 500; - font-size: 22px; - line-height: 28px; - text-align: center; - margin-bottom: 12px !important; - } - .manage-b, - .app-ul, - .team-ul { - margin-top: 40px !important; - } - .manage-icon { - margin-bottom: 16px; - } - .manage-h5, - .app-h5, - .topics-h4, - .scenario-app-h6, - .footer-t-h6 { - font-weight: 400; - font-size: 16px; - line-height: 24px; - text-align: center; - } - .app-h5 { - width: 320px !important; - } - .footer-t-h6 { - text-align: start !important; - margin-bottom: 32px !important; - } - .plans-tit-h5 { - font-weight: 400; - font-size: 16px; - line-height: 24px; - text-align: center; - margin-bottom: 48px !important; - } - .manage-h3 { - margin-bottom: 12px !important; - font-size: 18px !important; - } - .performance-h5, - .help-h4, - .price-card-h4 { - font-size: 18px !important; - } - .price-card-h4 { - margin-bottom: 20px !important; - } - .price-card-h2 { - font-size: 24px !important; - } - .price-card-h2 { - margin-right: 4px; - } - .manage-ul-item { - margin-bottom: 36px !important; - } - .performance-ul { - margin-top: 36px !important; - } - .arcs2 { - width: 170px !important; - left: 4px !important; - bottom: -12px !important; - } - .collaboration-txt { - font-size: 20px !important; - max-width: 280px !important; - } - .collaboration { - margin-bottom: 56px !important; - max-height: inherit !important; - } - .footer-layout { - border-bottom: none !important; - padding: 0 !important; - } - .prooduct-list { - display: flex !important; - flex-wrap: nowrap !important; - margin-bottom: 24px !important; - justify-content: space-between !important; - align-items: center !important; - grid-gap: 0 !important; - } - .prooduct-list .active { - display: flex !important; - align-items: center; - } - .prooduct-list .prooduct-list-item.top { - width: 100% !important; - } - .prooduct-list .prooduct-list-item { - display: none; - padding: 16px !important; - margin: 0 !important; - } - .prooduct-list .prooduct-list-item .icon { - width: 28px !important; - margin-bottom: 0 !important; - margin-right: 12px !important; - } - .prooduct-list .prooduct-list-item .txt { - font-weight: 500; - font-size: 16px; - line-height: 20px; - } - .prooduct-ul { - margin: 0 0 56px 0 !important; - } - .performance { - background: var(--bg-768-4-url) top left no-repeat !important; - } - .about_green_bg { - background: var(--bg-768-9-url) top right no-repeat !important; - } - .head.product { - background: var(--bg-768-3-url) top left no-repeat !important; - } - .head.price { - background: var(--bg-768-8-url) top left no-repeat !important; - } - .head.dow { - background: var(--bg-768-7-url) top left no-repeat !important; - } - .head.solutions { - background: var(--bg-768-5-url) top right no-repeat !important; - } - .team.solutions { - background: var(--bg-768-6-url) top right no-repeat !important; - } - .details-con .pic { - margin-bottom: 36px; - } - .choose-con-item-h5, - .app-h4, - .scenario-app-h5 { - font-size: 18px !important; - } - .choose-con-item-h6, - .app-h6, - .company-profile-h6, - .scenario-app-h6, - .footer-t-contact-h6, - .update-h5, - .performance-h6, - .manage-h6, - .download-ul-item .txt, - .update-item .time, - .price-card-unit, - .price-card-h6 { - font-size: 15px !important; - } - .details-ul-item { - margin-bottom: 32px !important; - } - .details-ul-item:last-child { - margin-bottom: 0 !important; - } - .serial-number { - font-size: 32px !important; - } - .details-ul-1280, - .details-con { - flex-direction: column; - justify-content: center; - align-items: center; - padding: 30px 24px !important; - } - .details-ul-1280 .details-ul-item, - .update-ul, - .update-l { - width: 100% !important; - } - .details-con .details-ul { - margin-left: 0 !important; - } - .performance-con .pic { - margin-top: 40px !important; - } - .performance-ul-item { - width: auto !important; - margin-bottom: 40px; - } - .app-bg { - margin-bottom: 16px !important; - } - .app-h4 { - margin-bottom: 12px !important; - } - .app-ul-item { - width: auto !important; - margin-bottom: 36px !important; - } - .team-ul-item { - padding: 30px 24px !important; - } - .download-ul { - flex-wrap: wrap !important; - justify-content: center !important; - padding-bottom: 32px !important; - padding-top: 12px !important; - } - .download-ul-item { - margin-bottom: 24px; - } - .download-ul-item .normal, - .download-ul-item .hover.radius, - .download-ul-item .hover { - width: 120px !important; - height: 120px !important; - } - .download-ul-item .icon { - height: 36px !important; - } - .download-ul-item:nth-of-type(odd) { - margin-right: 24px; - } - .update-bg-svg { - background: none !important; - } - .update-r { - margin-bottom: 56px; - margin-top: 28px; - } - .logs-l, - .help-l, - .plans-ul-t, - .plans-ul-b { - display: none !important; - } - .logs-r, - .help-r { - border: none !important; - padding-left: 0 !important; - } - .logs-h1, - .plans-tit-h2 { - font-weight: 600; - font-size: 22px !important; - line-height: 28px !important; - } - .company-profile-h1 { - margin-bottom: 34px !important; - margin-top: 40px !important; - font-weight: 500 !important; - font-size: 22px !important; - line-height: 28px !important; - } - .logs-h4 { - font-size: 18px !important; - line-height: 22px !important; - } - .r-ol-item, - .help-h6, - .l-ul-item .txt { - font-weight: 400; - font-size: 15px !important; - line-height: 24px !important; - } - .logs { - margin: 0 !important; - padding-bottom: 56px !important; - } - .help { - margin: 0 !important; - padding-bottom: 20px !important; - } - .l-ul-item { - padding: 12px 0 !important; - } - .logs-h5 { - margin-top: 10px; - font-weight: 400 !important; - font-size: 18px !important; - line-height: 20px !important; - } - .help-pic1 { - height: calc(50vw / 2 + 10px) !important; - padding-left: 14px !important; - } - .help-pic1-tips-h2 { - font-weight: 500 !important; - font-size: 16px !important; - line-height: 24px !important; - margin-bottom: 8px !important; - } - .help-pic1-tips-h6 { - font-weight: 400 !important; - font-size: 12px !important; - line-height: 16px !important; - } - .help-pic1-tips { - max-width: 160px !important; - } - #help_pic2 { - height: calc(60vw - 40px) !important; - } - #help_pic3 { - height: calc(80vw - 60px) !important; - } - .price-card { - flex-direction: column !important; - } - .price-card-item { - width: 100% !important; - height: 100% !important; - } - .price-card-item:last-of-type { - margin-bottom: 0 !important; - } - .plans-layout { - padding: 56px 0 !important; - } - .company-profile { - width: 100% !important; - margin-top: 56px; - padding-top: 0 !important; - } - .company-profile-layout, - .footer-t-layout { - flex-direction: column !important; - } - .company-profile-arcs { - bottom: -20px !important; - left: 0 !important; - } - .company-h2 { - font-weight: 500 !important; - font-size: 20px !important; - line-height: 30px !important; - } - .company-h6 { - font-weight: 400 !important; - font-size: 12px !important; - line-height: 15px !important; - } - .company-ul { - width: 100% !important; - padding: 24px 0 !important; - margin-top: 12px !important; - } - .company-ul-item { - padding: 0 24px !important; - } - .scenario-app, - .footer-t { - padding: 56px 0 !important ; - } - .scenario-app-h1, - .footer-t-h1 { - font-weight: 500 !important; - font-size: 22px !important; - line-height: 28px !important; - } - .scenario-app-ul-item .scenario-app-h6 { - text-align: start !important; - } - .scenario-app-ul-item, - .footer-t-l { - width: 100% !important; - } - .from-ul { - width: calc(100vw - 40px) !important; - margin-top: 8px !important; - } - .app-con, - .team-con { - padding-top: 0 !important; - padding-bottom: 24px !important; - } - .card-ul-item-txt, - .prooduct-list .prooduct-list-item, - .details-con { - opacity: 1 !important; - animation: normal !important; - } - .details-con { - transform: translateY(0) !important; - } - .company-profile-layout { - padding-bottom: 56px !important; - } - .footer-t-h1 { - margin-bottom: 32px !important; - } - .logs-layout, - .team-ul-item, - .scenario-app-ul-item { - height: auto !important; - } - .logs-r { - height: auto !important; - overflow: auto !important; - } - .manage-svg { - width: 100% !important; - } - .manage-bg { - width: 100% !important; - margin-top: 0 !important; - } - .manage-tips { - top: 42px !important; - right: 0 !important; - width: auto !important; - } - .manage-tips-txt { - font-size: 16px !important; - line-height: 20px !important; - } - .manage-svg-h2 { - bottom: 52px; - right: 22px; - width: 45% !important; - font-size: 28px !important; - line-height: 40px !important; - } - .prooduct-list .prooduct-list-item.bot { - width: auto !important; - } - .head.product { - background-size: contain !important; - } - .details-ul-item:nth-of-type(4) { - margin-bottom: 32px !important; - } - .card-h1 { - margin-bottom: 40px !important; - } - .card-con-layout { - margin-top: 0 !important; - } - .bg-style { - background: transparent !important; - } - .logo { - width: 32px !important; - } - .dootask { - margin-left: 12px !important; - } - .price-card-item > .price-card-h6 { - height: auto !important; - margin-bottom: 20px !important; - } - .scenario-app-layout > .scenario-app-h6 { - margin-bottom: 48px !important; - } - .update-h1 { - margin-bottom: 28px !important; - } - .logs-t-768 { - margin-top: 96px !important; - } - #help-pic1-svg { - width: 44%; - } - .en_choose_768 { - min-height: 378px !important; - } - .plans-ol-768-content .plans-ol-item-h6:first-child { - color: var(--txt-gray-color) !important; - } - .plans-ol-768-content .plans-ol-item-h6:last-child { - color: var(--txt-4ca5) !important; - } - .scenario-app-ul-item-svg { - width: 140px !important; - } - .scenario-app-ul-item:hover, - .price-card-item:hover, - .team-ul-item:hover { - transform: none !important; - } - .topics-tit, - .topics-btn, - .topics-h4, - .ten_img, - .details, - .price-animate-box { - opacity: 1 !important; - animation: normal !important; - transform: none !important; - } - .about-animate-box, - .solutions-animate-box, - .home-animate-box, - .dow-animate-box, - .product-animate-box, - .product-animate-box2 { - opacity: 1 !important; - transform: none !important; - } - .about-animate-box.animate, - .price-animate-box.animate, - .solutions-animate-box.animate, - .home-animate-box.animate, - .dow-animate-box.animate, - #arc { - animation: normal !important; - } - .drawer-ul { - overflow: auto; - height: 82vh; - } - .home_pic7_768 { - width: 100%; - } - .help-l-ul { - width: auto !important; - } - .footer_copyright { - flex-direction: column; - } - #cookieConsent { - width: 90% !important; - right: 0 !important; - left: 0; - margin: 0 auto; - } - .download-other-btn { - margin-top: 0px !important; - margin-bottom: 56px !important; - } -} diff --git a/public/site/css/side_nav.css b/public/site/css/side_nav.css deleted file mode 100644 index 8cdac9cbe..000000000 --- a/public/site/css/side_nav.css +++ /dev/null @@ -1,140 +0,0 @@ -@font-face { - font-family: "official.iconfont"; - src: url("../font/side_nav_font.woff"); - font-weight: normal; - font-style: normal -} - -.side_nav{ - position: fixed; - right: 20px; - bottom: 135px; - z-index: 100; -} -.side_nav .side_toolbars{ - width: 48px; - padding: 4px; - box-sizing: border-box; - border-radius: 60px; - background-color: var(--pop-bg-color); - color: var(--text-color); - box-shadow: var(--pop-box-shadow); -} -.side_nav .side_toolbars .side_toolbar_item{ - display: flex; - width: 40px; - height: 40px; - justify-content: center; - align-items: center; - border-radius: 50%; - cursor: pointer; - position: relative; -} -.side_nav .side_toolbars .side_toolbar_item .toolbar_font{ - font-size: 24px; - height: 24px; - color: var(--text-color); -} -.side_nav .side_toolbars .side_toolbar_item .toolbar_font::after{ - display: inline-block; - font-family: "official.iconfont"; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; -} -.side_nav .side_toolbars .side_toolbar_item .font_phone::after{ - content: "\EA25"; -} -.side_nav .side_toolbars .side_toolbar_item .font_qrcode::after{ - content: "\EA28"; -} -.side_nav .side_toolbars .side_toolbar_item .toolbar_tooltip{ - position: absolute; - right: 40px; - top: 2px; - transform-origin: right center; - white-space: nowrap; - width: fit-content; - display: none; - background-color: var(--code-bg-color); - color: #fff; - margin-right: 12px; - border-radius: 4px; - padding: 10px; - z-index: 2000; - font-size: 12px; - line-height: 1.2; - min-width: 10px; - word-wrap: break-word; - text-align: center; -} -.side_nav .side_toolbars .side_toolbar_item .toolbar_tooltip .toolbar_whtasapp{ - width: 120px; - height: 120px; - background-image: url('../img/side_nav_whatsapp.png'); - background-repeat: no-repeat; - background-size: cover; -} -.side_nav .side_toolbars .side_toolbar_item .toolbar_tooltip .toolbar_qrcode{ - width: 120px; - height: 120px; - background-image: url('../img/side_nav_wechat.png'); - background-repeat: no-repeat; - background-size: cover; -} -.side_nav .side_toolbars .side_toolbar_item .toolbar_tooltip .tooltip_arrow{ - position: absolute; - display: block; - width: 0; - height: 0; - border-color: transparent; - border-style: solid; - right: -5px; - top: 11px; - border-width: 6px; - border-right-width: 0; - border-left-color: var(--code-bg-color); -} -.side_nav .side_to_top{ - width: 48px; - height: 48px; - background: #fff; - margin-top: 16px; - border-radius: 50%; - cursor: pointer; - position: relative; - display: none; - background-color: var(--pop-bg-color); - color: var(--text-color); - box-shadow: var(--pop-box-shadow); -} -.side_nav .side_to_top .side_to_top_wrapper{ - height: 40px; - width: 40px; - padding: 4px; - display: flex; - box-sizing: border-box; - border-radius: 50%; - align-items: center; - justify-content: center; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); -} -.side_nav .side_to_top .side_to_top_wrapper svg{ - transform: rotate(180deg); - fill: var(--text-color); - height: 24px; - width: 24px; -} -.font_whatsapp svg{ - fill: var(--text-color); -} -.side_nav .side_toolbars .side_toolbar_item:hover,.side_nav .side_to_top .side_to_top_wrapper:hover{ - background-color: var(--bg-hover-color); -} -#toolbar_tooltip_phone,#toolbar_tooltip_whtasapp,#toolbar_tooltip_qrcode{ - display: none; -} \ No newline at end of file diff --git a/public/site/css/solution.css b/public/site/css/solution.css deleted file mode 100644 index 7b6755838..000000000 --- a/public/site/css/solution.css +++ /dev/null @@ -1,116 +0,0 @@ -/* 头部样式 */ -.head { - text-align: center; - background: var(--bg-5-url) top center no-repeat; - background-size: cover; -} -.app { - position: relative; - z-index: 2; - background-color: var(--bg-fa-color); -} -.bg-style { - background: var(--bg-6-url) top left no-repeat; -} -.app-con { - padding: 120px 0px; - width: 100%; - max-width: 1280px; - margin: 0 auto; - position: relative; - z-index: 2; -} -.app-tit { - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; -} -.app-h1 { - color: var(--text-color); -} -.app-h4 { - color: var(--txt-191a15-color); -} -.app-ul { - display: flex; - flex-wrap: wrap; - align-items: flex-start; - justify-content: space-between; -} -.app-ul-item { - width: 624px; -} -.app-bg-box { - max-width: 100%; - max-height: 100%; - overflow: hidden; - border-radius: 16px; - margin-bottom: 32px; -} -.app-bg { - display: block; - height: auto; - transform: scale(1); - transition: all 2s; -} -.app-bg:hover { - transform: scale(1.15); -} -.app-h5 { - color: var(--txt-gray-color); -} -.app-h6 { - color: var(--txt-gray-color); -} -.team { - background: var(--bg-7-url) top right no-repeat; - background-size: contain; -} -.team-con { - padding: 120px 0px; - width: 100%; - max-width: 1280px; - margin: 0 auto; -} -.team-tit { - text-align: center; - color: var(--text-color); -} -.team-ul { - display: flex; - align-items: flex-start; - justify-content: space-between; -} -.team-ul-item { - padding: 24px; - width: 357px; - transition: all 0.3s ease-in-out; - background-color: var(--choose-bg-hover-color); - box-shadow: 0px 2px 8px 4px rgba(0, 0, 0, 0.05); - border-radius: 12px; - z-index: 2; -} -.team-ul-item:hover { - transform: translateY(-16px); -} -.team-ul-item-en { - height: 358px; -} -.team-ul-item-zh { - height: 234px; -} -.team-icon { - display: block; - width: 48px; -} -/* 底部样式 */ -footer { - width: 100%; - z-index: 2; - position: relative; - background-color: var(--bg-color); -} -.footer-layout { - border-top: var(--border-color) solid 1px; -} diff --git a/public/site/en/about.html b/public/site/en/about.html deleted file mode 100644 index d60e7bd6b..000000000 --- a/public/site/en/about.html +++ /dev/null @@ -1,766 +0,0 @@ - - - - - - About Us - DooTask - - - - - - - - - - - - - - - - -
-
-
- -
-
-
-
- About our company -
-

- Focusing on the field of network security, we - are committed to providing users with a full - range of network security solutions. -

-
    -
  • -

    - 2020 -

    -
    - Company founded -
    -
  • -
  • -
    -

    - 10 -

    - + -
    -
    - Team experience -
    -
  • -
  • -
    -

    - 99 -

    - % -
    -
    - Customer staisfaction -
    -
  • -
-
-
-
-
-
-
- 广西海豚有海信息科技公司,HITOSEA,海豚有海,广西海豚有海 -
-

- Company profile - - - -

-
- Since its establishment, Guangxi Hitosea - Information Technology Co., Ltd.(HITOSEA) - has been focusing on the innovation of - cutting-edge technologies in the field of - network security, providing network security - products and services including border - security, cloud security, data security, - intranet security, and is committed to - providing users with comprehensive, smarter, - and zero-disturbance network security - solutions, and is a dynamic technology - company with a young and energetic team. -
-
-
-
-
-
- -
-
- - -
- -
- -
- -
-
-
-
-

- Scenario Application -

-
- The product supports a variety of - application scenarios to help team - collaboration -
-
    -
  • - - Edge Security - -
    - Edge Security -
    -
    - HITOSEA next-generation firewall, - intrusion prevention/intrusion - detection system, cloud sandbox and - other products provide users with - comprehensive intelligent security - protection such as access control to - network boundaries, deep attack - detection and APT attack detection. -
    - -
  • -
  • - - Cloud Security - -
    - Cloud Security -
    -
    - We provide safe and reliable - high-proof cloud servers to solve - the primary network security risks - faced by servers, alleviate the risk - of business interruption due to - flooding attacks, and meet the needs - of regular security operations. -
    - -
  • -
  • - - - Data Security - -
    - Data Security -
    -
    - Database audit and data leakage - protection system can protect - sensitive data and documents, - identify data and monitor - operations, and block data theft by - internal and external personnel - through the network, e-mail and - other channels. -
    - -
  • -
  • - - - Intranet Security - -
    - Intranet Security -
    -
    - Web application firewall and web - anti-tampering system provide - overall security protection for the - application system, effectively - blocking malicious behaviors such as - web tampering and attacks. -
    - -
  • -
-
-
-
- -
-
- - - - -
- - - - - - - \ No newline at end of file diff --git a/public/site/en/ad.html b/public/site/en/ad.html deleted file mode 100644 index 9553b6ea1..000000000 --- a/public/site/en/ad.html +++ /dev/null @@ -1,911 +0,0 @@ - - - - - - - DooTask - The most popular open source project collaboration tool - - - - - - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
- Please scan the QR code to add our WeChat customer service - representative for purchase -
- -
-
- -
- -
-
- We use first party cookies to improve your browsing - experience on our website, to analyze our website traffic - and to understand where our visitors are coming from. If you - choose to opt-out, only strictly necessary cookies will be - used.Our cookie policy -
-
- - -
-
- -
- -
-
-
-
- - DooTask - - - - - - - - - - - - - - - ,Lightweight -
- Task Management Tool -
-
-

- Empower the team to advance projects - efficiently, making work simpler. -

- -
-
-
-
- -
-
- - -
- -
-
-
-
- -
-
-
- Free -
-
- - 0 - - /month - - - - Up to 3 People - -
- -
-
    -
  • - - undefined - - - Support private deployment - -
  • - -
  • - - undefined - - - Technical Advisory Services - -
  • - -
  • - - undefined - - - Dedicated operations customer - service - -
  • - -
  • - - undefined - - - 12-Hour service response - -
  • -
-
-
-
-
Popular
-
- 10-License Pro -
-
- - ¥5,800 - - - - - ¥8,800 - -
- -
-
    -
  • - - undefined - - - Support private deployment - -
  • - -
  • - - undefined - - - Technical Advisory Services - -
  • - -
  • - - undefined - - - Dedicated operations customer - service - -
  • - -
  • - - undefined - - - 12-Hour service response - -
  • - -
  • - - undefined - - - Free 1-Year Technical - Maintenance Included - -
  • -
-
-
-
-
Hot
-
- Unlimited Pro -
-
- - ¥16,800 - - - - - ¥18,888 - -
- -
-
    -
  • - - undefined - - - Support private deployment - -
  • - -
  • - - undefined - - - Technical Advisory Services - -
  • - -
  • - - undefined - - - Custom logo design - -
  • - -
  • - - undefined - - - Dedicated operations customer - service - -
  • - -
  • - - undefined - - - 12-Hour service response - -
  • - -
  • - - undefined - - - Free 1-Year Technical - Maintenance Included - -
  • -
-
-
-
-
-
-
-
-
- - Why Choose DooTask? - -
-
-   -
-
-
-
- head -
-
- img -
-
- Project Management -
-
- Supports various project management - methodologies such as Agile, Crystal, - Kanban, and more, suitable for managing - projects of all sizes and types. Users - can utilize DooTask’s project management - tools, including task assignment, - progress tracking, resource allocation, - and more to manage the entire project. - -
-
-
-
- head -
-
- img -
-
- Team Collaboration -
-
- DooTask’s rich and practical tools - facilitate communication and - collaboration among team members, - enhancing work efficiency. For instance, - team members can use DooTask’s document - collaboration tools, online mind maps, - flowcharts, and more for collaborative - work. - -
-
-
-
- head -
-
- img -
-
- Data Security Protection -
-
- DooTask uses asymmetric encryption for - messaging to maximize user information - security. It also features a powerful - permission system to customize access - and actions in project management based - on user roles and duties. - -
-
-
-
- head -
-
- img -
-
- Customizable Freely -
-
- DooTask is a completely open-source - tool that users can modify and customize - freely, avoiding the additional costs - associated with commercial software - subscriptions. - -
-
-
-
-
-
- - - - -
- - - - - - diff --git a/public/site/en/cookie.html b/public/site/en/cookie.html deleted file mode 100644 index 020c05eca..000000000 --- a/public/site/en/cookie.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Cookie Policy - DooTask - - - - - - - - - - - - - - -
- - - - - diff --git a/public/site/en/cookie.md b/public/site/en/cookie.md deleted file mode 100644 index d86817f98..000000000 --- a/public/site/en/cookie.md +++ /dev/null @@ -1,80 +0,0 @@ -# Cookies Policy - -Last updated: August 10, 2023 - -This Cookies Policy explains what Cookies are and how We use them. You should read this policy so You can understand what type of cookies We use, or the information We collect using Cookies and how that information is used. This Cookies Policy has been created with the help of the [Cookies Policy Generator](https://www.termsfeed.com/cookies-policy-generator/). - -Cookies do not typically contain any information that personally identifies a user, but personal information that we store about You may be linked to the information stored in and obtained from Cookies. For further information on how We use, store and keep your personal data secure, see our Privacy Policy. - -We do not store sensitive personal information, such as mailing addresses, account passwords, etc. in the Cookies We use. - -# Interpretation and Definitions - -## Interpretation - -The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural. - -## Definitions - -For the purposes of this Cookies Policy: - -- __Company__ (referred to as either "the Company", "We", "Us" or "Our" in this Cookies Policy) refers to Guangxi Hitosea Information Technology Co, No. 1411, 14/F, Building 1, Wuxiang Hangyang City, Liangqing District, Nanning City, Guangxi Zhuang Autonomous Region, China. -- __Cookies__ means small files that are placed on Your computer, mobile device or any other device by a website, containing details of your browsing history on that website among its many uses. -- __Website__ refers to DooTask, accessible from [ https://www.dootask.com/]( https://www.dootask.com/) -- __You__ means the individual accessing or using the Website, or a company, or any legal entity on behalf of which such individual is accessing or using the Website, as applicable. - -# The use of the Cookies - -## Type of Cookies We Use - -Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close your web browser. - -We use both session and persistent Cookies for the purposes set out below: - -- __Necessary / Essential Cookies__ - - Type: Session Cookies - - Administered by: Us - - Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services. - -- __Functionality Cookies__ - - Type: Persistent Cookies - - Administered by: Us - - Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website. - - - - -## Your Choices Regarding Cookies - -If You prefer to avoid the use of Cookies on the Website, first You must disable the use of Cookies in your browser and then delete the Cookies saved in your browser associated with this website. You may use this option for preventing the use of Cookies at any time. - -If You do not accept Our Cookies, You may experience some inconvenience in your use of the Website and some features may not function properly. - -If You'd like to delete Cookies or instruct your web browser to delete or refuse Cookies, please visit the help pages of your web browser. - -- For the Chrome web browser, please visit this page from Google: [https://support.google.com/accounts/answer/32050](https://support.google.com/accounts/answer/32050) - -- For the Internet Explorer web browser, please visit this page from Microsoft: [http://support.microsoft.com/kb/278835](http://support.microsoft.com/kb/278835) - -- For the Firefox web browser, please visit this page from Mozilla: [https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored](https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored) - -- For the Safari web browser, please visit this page from Apple: [https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac](https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac) - -For any other web browser, please visit your web browser's official web pages. - -## More Information about Cookies - -You can learn more about cookies here: [All About Cookies by TermsFeed](https://www.termsfeed.com/blog/cookies/). - -## Contact Us - -If you have any questions about this Cookies Policy, You can contact us: - - -- By email: service@hitosea.com \ No newline at end of file diff --git a/public/site/en/download.html b/public/site/en/download.html deleted file mode 100644 index c2cc725c2..000000000 --- a/public/site/en/download.html +++ /dev/null @@ -1,655 +0,0 @@ - - - - - - Download Center - DooTask - - - - - - - - - - - - - - - - - - -
-
- -
- -
-
-
-
- Download DooTask client -
-

- Also supports iOS, Android, macOS, Windows - versions -

- - Other - Versions -
-
-
-
- -
-
- - -
- -
- -
- -
- -
-
- - - - -
- - - - - - - \ No newline at end of file diff --git a/public/site/en/help.html b/public/site/en/help.html deleted file mode 100644 index 8f94431d0..000000000 --- a/public/site/en/help.html +++ /dev/null @@ -1,1793 +0,0 @@ - - - - - - Help Center - DooTask - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
- -
-
-
-
- Help Center - Help Center -
-
-
- - -
-
-
- Just starting out with DooTask? No problem, this primer is for you! - Just starting out with DooTask? No problem, this primer is for you! -
-

- User Manual -

-
- Just starting out with DooTask? - No problem, this primer is for - you! -
-
-
-
    -
  • -

    - What is DooTask? -

    -
    - DooTask is a lightweight open - source online project task - management tool that provides - various document collaboration - tools, online mind mapping, - online flowcharting, project - management, task distribution, - instant IM, file management and - other tools. It helps teams to - advance their projects - efficiently and makes work - easier. -
    -
  • -
  • -

    - What is task management? -

    -
    - Task management is the process - of monitoring your project's - tasks through their various - stages from start to finish. - This involves actively making - decisions for your tasks to - accommodate changes that can - occur real-time, with your end - goal being the successful - completion of your tasks. - Project task management also - means managing all aspects of a - task like budget, time, scope, - resources, recurrence and so on - effectively. -
    - -
  • -
  • -

    - How to manage tasks? -

    -
    - Here are some key steps involved - in task management: -
    -
    - Prioritization: Whatever tool you use to manage - your tasks, whether a simple - to-do list or a comprehensive - project task management tool, - the most important aspect of - task management is - prioritization. This helps in - efficiently completing all the - tasks involved while maintaining - the planned constraints. -
    -
    - Milestone tracking: The findings of this study - also - show that establishing clear - goals is essential to the - successful completion of a - project. Although for task - management an end goal isn't - necessary, defining milestones - helps motivate teams to execute - tasks successfully. -
    -
    - Schedule management: Making sure your task gets - completed on time is something - that has an impact on the - overall project health. - Attributing the right time frame - by estimating the effort - involved is key here. -
    - -
  • -
  • -

    - How to choose the right task - management software? -

    -
    - Depending on your purpose, price - range, existing work environment - and preferred platform, there - are several project and task - management tools available. From - simple checklists which may not - even require an internet - connection to a full-fledged - project task management - software, the capabilities are - varied. There are also software - options that fit specific - industries like construction, IT - or education or specific - functions like crm task - management. -
    -
  • -
  • -

    - Registered Account -

    -
    - (1) Click [Register Account] to - enter the registration page; -
    - Registered Account -
    - (2) In the corresponding input - box on the registration page, - enter your email - address/password/invitation code - respectively to create a DooTask - account, and click [Register] to - complete the account - registration. -
    - Registered Account -
  • -
  • -

    - Login to your account -

    -
    - Account Password Login -
    -
    - (1) Enter your email - address/password in the - corresponding input box on the - login page; -
    -
    - (2) Click [Login] to access your - account. -
    - Account Password Login -
    - Scan Code To Login -
    -
    - (1) Click the green QR code at - the top right corner of the - login page to enter the code - scanning login page; -
    - Scan Code To Login -
    - (2) Use DooTask Mobile to scan - the QR code to log in to your - account. -
    - Scan Code To Login -
  • -
  • -

    - Task Reminder Robot -

    -
    - Open the [Message] button in the - left navigation bar of DooTask, - you can view the "Task - Reminder", the task reminder - robot according to the - associated task change status - real-time update reminder, such - as the new task prompts, task - modification prompts, task - expiration prompts, and so on. -
    - Task Reminder Robot -
  • -
  • -

    - Check-in And Clock-out Robot -

    -
    - Open the [Message] button in the - left navigation bar of DooTask, - you can view the "Check-in and - Punch-in", Check-in and Punch-in - Robot automatically records the - employee's daily check-in and - punch-in data to help users - achieve effective work progress - management and time planning. -
    - Check-in And Clock-out Robot -
  • -
  • -

    - Personal Information Settings -

    -
    - (1) Click [Avatar] in the upper - right corner of the user → click - [Personal Settings] to select - the personal settings page, you - can modify your personal - avatar/telephone/nickname/position - (title) and other information; -
    -
    - (2) Click [Submit] to confirm - the changes and [Reset] to clear - the current settings. -
    - Personal Information Settings -
  • -
  • -

    - Check-in Settings -

    -
    - (1) Click the user's upper-right - corner [avatar] → click - [Personal Settings] → click - [Sign-in Settings], that is, to - display the last five days of - the sign-in record, click the - bottom of the [View more sign-in - data] to view the history of the - sign-in record; -
    - Check-in Settings -
    - (2) In the corresponding input - box under the check-in setting - column, enter the device MAC - address/remarks information, and - associate the device to connect - to the designated router (WiFi) - to achieve automatic check-in, - if you need to add other - devices, you can click [Add - Device] to add new ones; -
    -
    - (3) Click [Submit] to confirm - the changes and [Reset] to clear - the current settings. -
    - Check-in Settings -
  • -
  • -

    - Shortcut Key Setting -

    -
    - (1) Click [Avatar] in the upper - right corner of the user → click - [Personal Settings] → click - [Shortcut Keys], you can - customise the shortcut key - combinations according to your - personal habits; -
    -
    - (2) Click [Save] to confirm the - changes and [Reset] to clear the - current settings. -
    - Shortcut Key Setting -
  • -
  • -

    - Language Settings -

    -
    - (1) Click [Avatar] in the upper - right corner of the user → click - [Personal Settings] → click - [Language Settings], click the - drop-down icon in the box to the - right of the selected language - to switch between different - languages. The system currently - supports Simplified Chinese, - Traditional Chinese, English, - Korean, Japanese, German, French - and Indonesian; -
    -
    - (2) Click [Submit] to confirm - the changes and [Reset] to clear - the current settings. -
    - Language Settings -
  • -
  • -

    - Theme Setting -

    -
    - (1) Click the user's upper-right - corner [avatar] → click - [Personal Settings] → click - [Theme Settings], click to - select the theme of the right - side of the box drop-down icon, - you can switch to the - corresponding theme, the system - currently supports the bright / - dark two themes; -
    -
    - (2) Click [Submit] to confirm - the changes and [Reset] to clear - the current settings. -
    - Theme Setting -
  • -
  • -

    - Password Setting -

    -
    - (1) Click [Avatar] in the upper - right corner of the user → click - [Personal Settings] → click - [Password Settings], enter the - user's old password → enter the - user's new password → enter the - user's new password again to - confirm; -
    -
    - (2) Click [Submit] to confirm - the changes and [Reset] to clear - the current settings. -
    - Password Setting -
  • -
  • -

    - Modify Mailbox -

    -
    - (1) Click [Avatar] in the upper - left corner of the user → click - [Personal Settings] → click - [Modify Mailbox], enter the new - mailbox address and click [Send - Verification Code] and enter the - verification code; -
    -
    - (2) Click [Submit] to confirm - the changes and [Reset] to clear - the current settings. -
    - Modify Mailbox -
  • -
  • -

    - Multi-style project management - templates -

    -
    - DooTask template to meet a - variety of team collaboration - scenarios, while supporting - custom templates to meet the - team's personalised scenario - management needs, you can - intuitively view the progress of - the project, team collaboration - is more convenient. -
    -
  • -
  • -

    - Visualisation Project Office -

    -
    - Use multiple views such as - Kanban, tables, and lists to - keep the overall project at a - glance; members have the - flexibility to filter, sort, and - group tasks to prioritise the - essentials and stay focused. -
    -
  • -
  • -

    - Real-time monitoring of project - management developments -

    -
    - Real-time changes in project - dynamics, specific task changes - record reminders, so that the - team to control the overall - project process, the development - of appropriate plans. -
    -
  • -
  • -

    - Create A Project -

    -
    - (1) Click [New Project] at the - bottom left corner of the - DooTask page; -
    - Create A Project -
    - (2) In the new project pop-up - window that appears, enter the - project name (required and can - not be less than two words) ¡ú - select the project template - (default blank template) ¡ú - select whether to open the - workflow; -
    -
    - (3) Click [Add] to complete the - project creation. -
    - Create A Project -
  • -
  • -

    - Multi-view Task List -

    -
    - (1) Open DooTask page and click - the corresponding project name - button on the left side to - display the list of all tasks - belonging to the project; -
    - Multi-view Task List -
    - (2) Click the corresponding - [Switch View] icon in the upper - left corner to view the task - classification/task - priority/responsible person/due - time information of the - corresponding task. -
    - Multi-view Task List -
  • -
  • -

    - Completed Tasks Display -

    -
    - (1) Under normal circumstances, - "Completed Tasks" will be - automatically hidden in the task - list and will not be displayed; -
    -
    - (2) Check the [Show Completed] - icon in the upper-right corner - of the project task list to view - the "Completed Tasks". -
    - Completed Tasks Display -
  • -
  • -

    - Project Dynamic Display -

    -
    - (1) On the corresponding project - page, click the [Project - Dynamics] icon in the upper-left - corner to view the operation - history of project members - according to the date. -
    - Project Dynamic Display - Project Dynamic Display -
  • -
  • -

    - Creating Tasks -

    -
    - (1) Select the project name to - enter the task list, and click - the [New Task] icon in the upper - left corner of the corresponding - task list; -
    - Creating Tasks -
    - (2) Enter task - description/detailed - description, select task - priority/task time/task - leader/visibility and other - information in the corresponding - input box, and add subtasks as - required; -
    -
    - (3) Click [Add Task] in the - lower right corner of the Create - Task page to complete the - creation of a new task. -
    - Creating Tasks -
  • -
  • -

    - Mission Dashboard -

    -
    - Click [Dashboard] on the left - side of the DooTask page to - display task statistics (showing - tasks due today, overdue tasks, - and pending tasks). -
    - Mission Dashboard -
  • -
  • -

    - Duration Of The Mission -

    -
    - Select the task that needs to be - modified, open the task detail - page, click [Deadline] to modify - the task time according to the - actual situation. -
    - Duration Of The Mission -
  • -
  • -

    - Task visibility -

    -
    - Select the corresponding task, - open the task detail page, and - click [Visibility] to select - project personnel/task - personnel/specified members to - be visible as needed. -
    - Task Visibility -
  • -
  • -

    - Task Priority -

    -
    - In the task creation window and - task details page, you can set - the task priority as needed. The - system currently supports four - major task priorities: important - and urgent, important and not - urgent, urgent and not - important, and not important and - not urgent. (You can change the - priority according to the task - situation) -
    - Task Priority -
  • -
  • -

    - Citing Associated Documents and - Tasks -

    -
    - Select the corresponding task, - open the task detail page, enter - the associated file link/task in - the input box of the chat window - on the right side of the page, - and click the [Send] icon to - quote it. -
    - Citing Associated Documents and Tasks -
  • -
  • -

    - Mission Affiliates -

    -
    - Select the corresponding task, - open the task details page, in - the chat window on the right - side of the page in the input - box @ the task associated with - the personnel account nickname, - click on the [Send] icon, the - members of the task instantly - enter the group chat. -
    - Mission Affiliates -
  • -
  • -

    - Task Force Meeting -

    -
    - Select the corresponding task, - open the task details page, and - click the [Expand] icon at the - bottom right of the chat window - on the right side of the page to - launch a group video/voice - conference for all members in - the task group chat. -
    -
    - Group video/voice conferencing - can be initiated for all members - within a task group chat. -
    - Task Force Meeting -
  • -
  • -

    - Project Dynamic Display -

    -
    - In the corresponding task detail - page, click the [Task Dynamics] - icon in the upper right corner - to view the operation history of - task members according to the - date. -
    - Project Dynamic Display -
  • - -
  • -

    - Corporate Governance -

    -
    - Helping organisations to their - corporate goals, connecting - objectives, key results and - individual work, and working - together to drive strategy to - fruition and goals to be - achieved; -
    -
    - Through collaborative authoring, - the progress, completion status - and schedule of all enterprise - work are shared to facilitate - the flow of information, so that - all staff can access key project - information, follow up in a - timely manner and promote - cross-departmental - collaboration. -
    -
  • -
  • -

    - Product Management -

    -
    - Customise the workflow of the - product development process, - assign tasks to different roles - at different stages to promote - the product development process; - archive the history of each - completed project and task, so - that it is easy to call or - discuss at any time, forming a - closed loop of knowledge - precipitation to reuse. -
    -
  • -
  • -

    - Personnel Administration -

    -
    - Obtain multi-dimensional - corporate data through data - visualisation statistical - reports to gain a comprehensive - understanding of employee - performance and make performance - evaluation more objective and - fair; use announcements to - release notices, arrange company - activities, deliver corporate - decisions, facilitate the - shaping of corporate culture and - make employees more engaged. -
    -
  • -
  • -

    - Working Report -

    -
    - 1 My debriefing: -
    -
    - Report Search -
    -
    - Click on the user's avatar in - the upper-left corner → click on - [Work Reports] → click on [My - Reports], select the type of - report/reporting time that needs - to be queried on the upper-left - side of the page, and click on - [Search] to instantly display - the relevant report data. -
    - Report Search -
    - Reporting Record Display -
    -
    - Click the user's avatar in the - upper-left corner → click [Work - Reports] → click [My Reports], - and you can view the - name/type/reporting - time/reporting object/operation - and other information of the - corresponding report on the Work - Reports page. -
    - Reporting Record Display -
    - Additional Reports -
    -
    - (1) Click on the user's avatar - in the upper-left corner → Click - on [Work Reports] → Click on - [Add Report]; -
    -
    - (2) On the New Report page, - select the report type (select - Weekly/Daily)/reporting object - (you can directly use the object - of the last report), enter the - corresponding report content, - and click [Submit] to complete - the report. -
    - Additional Reports - Additional Reports -
    - 2 Report received: -
    -
    - Report Search -
    -
    - Click on the user's avatar in - the upper-left corner → click on - [Work Reports] → click on - [Received Reports], select the - keywords/reporting - type/reporting time that you - need to query on the upper-left - side of the page, and click on - [Search] to instantly display - the relevant report data. -
    - Report Search -
    - Reporting Record Display -
    -
    - Click the user's avatar in the - upper-left corner → click [Work - Reports] → click [Received - Reports], and you can view the - title/type/receipt - time//operation of the - corresponding report on the Work - Reports page. -
    - Reporting Record Display -
  • -
  • -

    - Data Dxport -

    -
    - Click the user's avatar in the - upper-left corner → click [Team - Management], and select [Export - Task Statistics] / [Export - Overdue Tasks] / [Export - Approval Data] / [Export - Check-In Data] according to your - needs to export the associated - data records. -
    - Data Dxport -
  • -
  • -

    - New Sectors -

    -
    - (1) Click on the user's avatar - in the upper-left corner → Click - on the "Team Management" option - in the [Team Management] list, - and then click on [New - Department] in the lower-left - corner of the page; -
    - New Sectors -
    - (2) Enter the name of the - department in the New Department - pop-up window that appears → - Select the parent department → - Add the department head → Choose - to create a departmental group - chat or use an existing group - chat; -
    -
    - (3) Click [New] to complete the - creation of a new department. -
    - New Sectors -
  • -
  • -

    - Search For Members -

    -
    - Click on the user's avatar in - the upper-left corner → Click on - the "Team Management" option in - the [Team Management] list, - select the - keywords/identity/on-the-job - status/email authentication that - you need to query at the top of - the page, and then click on - [Search] to display the relevant - personnel information. -
    - Search For Members -
  • -
  • -

    - Team Member Operation -

    -
    - Click on the user's avatar in - the upper-left corner → Click on - the "Team Management" option in - the [Team Management] list, - click on the corresponding - personnel information - [Operation] button, you can - choose to carry out the member: - set up as an administrator / set - up as a temporary account / - change the mailbox / change the - password / modify the department - / operation of the operation of - the departure / deletion of the - operation. -
    - Team Member Operation -
  • -
  • -

    - Project Members -

    -
    - (1) Select the corresponding - project and click [Member - Management] on the upper right - to add/delete project members; -
    -
    - (2) Click [Cancel] to cancel the - member management settings and - [Save] to save the member - modification management - operation. -
    - Project Members - Project Members -
  • -
  • -

    - Mandate Holder -

    -
    - Select the corresponding - project, click the [New Task] - icon in the upper right corner - of the task list → click - [Advanced Options] to add/delete - the relevant task leader or - assistants. -
    - Mandate Holder - Mandate Holder -
  • -
  • -

    - File Type -

    -
    - (1) Click [File] on the left - side of the DooTask page to - display and view project-related - files. -
    - File Type -
    - (2) Click the [New File] icon - button in the upper right corner - of the page to create a new - folder/upload files/upload - folders, the current system - supports text, icons, mind maps, - Word documents, Excel - worksheets, PPT presentations a - variety of file types. -
    - File Type -
  • -
  • -

    - File Sharing -

    -
    - Click [File] on the left side of - DooTask page, select the - corresponding folder/file and - click the icon in the upper - right corner, then click [Share] - to share the folder/file to - relevant project members. -
    - File Sharing -
  • -
  • -

    - Access Authority -

    -
    - (1) Click [File] on the left - side of DooTask page, select the - corresponding folder/file and - then click the icon on the upper - right corner, click [Share] to - open the sharing settings; -
    -
    - (2) According to the need to - select all people/specified - members visible, shared file - read/write/read-only, click - [Share] to complete the - operation. -
    - Access Authority -
  • -
  • -

    - Document Display -

    -
    - Click [Files] on the left side - of the DooTask page and tick the - [Show My Only] icon at the top - right corner of the page to view - your personal files. -
    - Document Display -
  • -
-
-
-
-
-
-
- - - - -
- - - - - - \ No newline at end of file diff --git a/public/site/en/index.html b/public/site/en/index.html deleted file mode 100644 index 02a7a9025..000000000 --- a/public/site/en/index.html +++ /dev/null @@ -1,1130 +0,0 @@ - - - - - - - DooTask - The most popular open source project collaboration tool - - - - - - - - - - - - - - - - - -
- -
-
- We use first party cookies to improve your browsing - experience on our website, to analyze our website traffic - and to understand where our visitors are coming from. If you - choose to opt-out, only strictly necessary cookies will be - used.Our cookie policy -
-
- - -
-
- -
- -
-
-
-
- - DooTask - , - - - - - Lightweight task management tool -
-

- Lightweight open source online project task - management tool to help teams efficiently - advance their projects and make work easier. -

- -
-
- DooTask,Lightweight open source online project task management tool to help teams efficiently advance their projects and make work easier. -
-
-
-
- -
-
- - -
- -
- -
- -
- -
-
-

- Trusted by many companies -

-
    -
  • - 陕建集团 -
  • -
  • - 艾特科 -
  • -
  • - 中国联通 -
  • -
  • - 旗雲科技 -
  • -
-
-
- -
-
-

- Our Features you cab get -

-
-
    -
  • - Project Management -
    -

    - Project Management -

    - Project Management -
    -
    -
    -

    - Project Management -

    - Support a variety of project management modes, suitable for all sizes and types of project management, real-time control of project progress, optimize work. -
    - Support a variety - of project - management modes, suitable for - all sizes and types of project - management, real-time control of - project progress, optimize - work. -
    -
  • -
  • - Teamwork -
    -

    - Teamwork -

    - Teamwork -
    -
    -
    -

    - Teamwork -

    - Provide rich and practical online document collaboration tools to facilitate communication and collaboration among team members and improve work efficiency. -
    - Provide rich and - practical - online document collaboration - tools to facilitate - communication and collaboration - among team members and improve - work efficiency. -
    -
  • -
  • - Task Synergy -
    -

    - Task Synergy -

    - Task Synergy -
    -
    -
    -

    - Task Synergy -

    - A task-oriented approach keeps the team's work organized and ensures efficient teamwork and a clear division of tasks. -
    - A task-oriented - approach keeps - the team's work organized and - ensures efficient teamwork and a - clear division of tasks. -
    -
  • -
  • - Performance Measurement -
    -

    - Performance Measurement -

    - Performance Measurement -
    -
    -
    -

    - Performance Measurement -

    - Establishing quantifiable evaluation standards, data presentation of work effectiveness, and cohesion of core talents. -
    - Establishing - quantifiable - evaluation standards, data - presentation of work - effectiveness, and cohesion of - core talents. -
    -
  • -
  • - Communication Report -
    -

    - Communication Report -

    - Communication Report -
    -
    -
    -

    - Communication Report -

    - Instant messaging and sharing based on work scenarios for better team communication. -
    - Instant messaging - and sharing - based on work scenarios for - better team communication. -
    -
  • -
- Support a variety of project management modes, suitable for all sizes and types of project management, real-time control of project progress, optimize work. -
-
-
-

- Our Features you cab get -

-
-
    -
  • - Project Management -

    - Project Management -

    - Support a variety of project - management modes, suitable for all - sizes and types of project - management, real-time control of - project progress, optimize work. - Support a variety of project management modes, suitable for all sizes and types of project management, real-time control of project progress, optimize work. -
  • -
  • - Teamwork -

    - Teamwork -

    - Provide rich and practical online - document collaboration tools to - facilitate communication and - collaboration among team members and - improve work efficiency. - Provide rich and practical online document collaboration tools to facilitate communication and collaboration among team members and improve work efficiency. -
  • -
  • - Task Synergy -

    - Task Synergy -

    - A task-oriented approach keeps the - team's work organized and ensures - efficient teamwork and a clear - division of tasks. - A task-oriented approach keeps the team's work organized and ensures efficient teamwork and a clear division of tasks. -
  • -
  • - Performance Measurement -

    - Performance Measurement -

    - Establishing quantifiable - evaluation standards, data - presentation of work effectiveness, - and cohesion of core talents. - Establishing quantifiable evaluation standards, data presentation of work effectiveness, and cohesion of core talents. -
  • -
  • - Communication Report -

    - Communication Report -

    - Instant messaging and sharing based - on work scenarios for better team - communication. - Instant messaging and sharing based on work scenarios for better team communication. -
  • -
-
-
-
- -
-
-
    -
  • -

    - Why Choose Us - - - -

    -
  • -
  • -

    - 01 -

    -
    - Efficient and convenient team - communication tools -
    -
    - Establish groups for projects and tasks, - work issues can be communicated in a - timely manner to promote rapid teamwork - and improve team efficiency. -
    -
  • -
  • -

    - 02 -

    -
    - Powerful and easy-to-use collaborative - document creation -
    -
    - It brings together a variety of online - tools such as documents, spreadsheets, - thinking notes, etc., bringing together - corporate knowledge resources in one - place and supporting real-time - collaborative editing by multiple - people, making teamwork more convenient. -
    -
  • -
-
    -
  • -

    - 03 -

    -
    - Convenient and diverse project - management templates -
    -
    - Template to meet a variety of team - collaboration scenarios, while - supporting custom templates to meet the - team's personalized scenario management - needs, you can intuitively view the - progress of the project, team - collaboration more convenient. -
    -
  • -
  • -

    - 04 -

    -
    - Clear and intuitive task calendar -
    -
    - Easily schedule each day with a flexible - task calendar that breaks down tasks to - each day, allowing for clearer work - goals and more reasonable time - allocation. -
    -
  • -
  • -

    - 05 -

    -
    - Support for multi-platform applications -
    -
    - With multi-platform application support, - you can track the progress of your - project anytime, anywhere while having a - more efficient and enjoyable experience - at every step of your work. -
    -
  • -
-
-
-

- Why Choose Us -

-
-
    -
  • -

    - 01 -

    -
    - Efficient and convenient team - communication tools -
    -
    - Establish groups for projects and - tasks, work issues can be - communicated in a timely manner to - promote rapid teamwork and improve - team efficiency. -
    -
  • -
  • -

    - 02 -

    -
    - Powerful and easy-to-use - collaborative document creation -
    -
    - It brings together a variety of - online tools such as documents, - spreadsheets, thinking notes, etc., - bringing together corporate - knowledge resources in one place and - supporting real-time collaborative - editing by multiple people, making - teamwork more convenient. -
    -
  • -
  • -

    - 03 -

    -
    - Convenient and diverse project - management templates -
    -
    - Template to meet a variety of team - collaboration scenarios, while - supporting custom templates to meet - the team's personalized scenario - management needs, you can - intuitively view the progress of the - project, team collaboration more - convenient. -
    -
  • -
  • -

    - 04 -

    -
    - Clear and intuitive task calendar -
    -
    - Easily schedule each day with a - flexible task calendar that breaks - down tasks to each day, allowing for - clearer work goals and more - reasonable time allocation. -
    -
  • -
  • -

    - 05 -

    -
    - Support for multi-platform - applications -
    -
    - With multi-platform application - support, you can track the progress - of your project anytime, anywhere - while having a more efficient and - enjoyable experience at every step - of your work. -
    -
  • -
-
-
    -
  • -
  • -
  • -
  • -
  • -
-
-
- -
-
- - - - -
- - - - - - \ No newline at end of file diff --git a/public/site/en/log.html b/public/site/en/log.html deleted file mode 100644 index 44aa6703a..000000000 --- a/public/site/en/log.html +++ /dev/null @@ -1,702 +0,0 @@ - - - - - - Logs - DooTask - - - - - - - - - - - - - - - - -
- -
- -
- -
-
- - -
-
Logs
- -
- -
-
- - -
- -
- -
- -
-
-
- -
-
-
Logs
-
    -
    -
    -

    - DooTask Update Log -

    -
      -
      -
      -
      -
      -
      -
      - - - - -
      - - - - - - - - \ No newline at end of file diff --git a/public/site/en/price.html b/public/site/en/price.html deleted file mode 100644 index dcb52e146..000000000 --- a/public/site/en/price.html +++ /dev/null @@ -1,1990 +0,0 @@ - - - - - - Pricing - DooTask - - - - - - - - - - - - - - - - -
      -
      -
      -
      -
      -
      -

      - If you have any questions, please feel free to contact us - using the following methods. -

      -

      Landline Telephone:0771-3164099

      -

      Email Address:service@hitosea.com

      -
      -
      -
      OK
      -
      -
      -
      - -
      - -
      -
      -
      -
      - Choose your plan -
      -

      - Different versions are available depending on - the size and needs of your business -

      -
        -
      • -

        - Regular version -

        -
        -

        - ¥0 -

        - /month -
        -
        - No limit to the number of people -
        - - - -
          -
        1. - Support for private deployment -
          - Support for private deployment -
          -
        2. -
        -
      • -
      • -

        - Professional Edition -

        -
        -

        - ¥0 -

        - /month -
        -
        - Up to 3 persons -
        - - - -
          -
        1. - Support for private deployment -
          - Support for private deployment -
          -
        2. -
        3. - Technical advisory services -
          - Technical advisory services -
          -
        4. -
        5. - 24-hour service response -
          - 24-hour service response -
          -
        6. -
        -
      • -
      • -

        - Professional EditionRec. -

        -
        -

        - ¥18,888 -

        -
        -
        - No limit to the number of people -
        - -
          -
        1. - Support for private deployment -
          - Support for private deployment -
          -
        2. -
        3. - Technical advisory services -
          - Technical advisory services -
          -
        4. -
        5. - Logo customisation -
          - Logo customisation -
          -
        6. -
        7. - Dedicated Account Manager -
          - Dedicated Account Manager -
          -
        8. -
        9. - 12-hour service response -
          - 12-hour service response -
          -
        10. -
        -
      • -
      • -

        - Customised version -

        -
        -

        - Custom -

        -
        -
        - Number of people can be customized -
        - -
          -
        1. - Support for private deployment -
          - Support for private deployment -
          -
        2. -
        3. - Technical advisory services -
          - Technical advisory services -
          -
        4. -
        5. - Logo customisation -
          - Logo customisation -
          -
        6. -
        7. - Dedicated Account Manager -
          - Dedicated Account Manager -
          -
        8. -
        9. - 12-hour service response -
          - 12-hour service response -
          -
        10. -
        -
      • -
      -
      -
      -
      -
      - -
      -
      - - -
      - -
      - -
      - -
      -
      -
      -
      -

      - Compare all plans -

      -
      - The product supports a variety of - application scenarios to help team - collaboration -
      -
        -
        -
      • -

        - Feature -

        -

        - Regular version -

        -

        - Professional Edition -

        -

        - Professional Edition -

        -

        - Customised version -

        -
      • -
        -
      • -

        - Pricing -

        -
        -
        -

        - ¥0 -

        - /month -
        - - - - -
        -
        -
        -

        - ¥0 -

        - /month -
        - - - - -
        -
        -
        -

        - ¥18,888 -

        -
        - - - -
        -
        -
        -

        - Custom -

        -
        - - - -
        -
      • -
      • -
          -
        1. -
          - System usage -
          -
        2. -
        3. -
          - Number of users -
          -
          - Unlimited -
          -
          - ≤3 -
          -
          - Unlimited -
          -
          - Customizable -
          -
        4. -
        5. -
          - Number of projects -
          -
          - Unlimited -
          -
          - Unlimited -
          -
          - Unlimited -
          -
          - Unlimited -
          -
        6. -
        7. -
          - Number of tasks -
          -
          - Unlimited -
          -
          - Unlimited -
          -
          - Unlimited -
          -
          - Unlimited -
          -
        8. -
        9. -
          - Offline Deployment -
          -
          - Support -
          -
          - Support -
          -
          - Official Support -
          -
          - Official Support -
          -
        10. -
        -
      • -
      • -
          -
        1. -
          - Task Collaboration -
          -
        2. -
        3. -
          - Multi-view presentation -
          - Multi-view presentation - Multi-view presentation - Multi-view presentation - Multi-view presentation -
        4. -
        5. -
          - Custom column -
          - Custom column - Custom column - Custom column - Custom column -
        6. -
        7. -
          - Visibility setting -
          - Visibility setting - Visibility setting - Visibility setting - Visibility setting -
        8. -
        9. -
          - Repetition cycle -
          - Repetition cycle - Repetition cycle - Repetition cycle - Repetition cycle -
        10. -
        -
      • -
      • -
          -
        1. -
          - Project management -
          -
        2. -
        3. -
          - Project progress -
          - Project progress - Project progress - Project progress - Project progress -
        4. -
        5. -
          - Project templates -
          - Project templates - Project templates - Project templates - Project templates -
        6. -
        7. -
          - Gantt chart -
          - Gantt chart - Gantt chart - Gantt chart - Gantt chart -
        8. -
        -
      • -
      • -
          -
        1. -
          - Application -
          -
        2. -
        3. -
          - Approval center -
          - Approval Center - Approval Center - Approval Center - Approval Center -
        4. -
        5. -
          - OKR management -
          - OKR management - OKR management - OKR management - OKR management -
        6. -
        7. -
          - AI robot -
          - AI robot - AI robot - AI robot - AI robot -
        8. -
        9. -
          - Meeting -
          - Meeting - Meeting - Meeting - Meeting -
        10. -
        11. -
          - OKR results analysis -
          - OKR results analysis - OKR results analysis - OKR results analysis - OKR results analysis -
        12. -
        13. -
          - LDAP -
          - LDAP - LDAP - LDAP - LDAP -
        14. -
        15. -
          - Email -
          - Email - Email - Email - Email -
        16. -
        17. -
          - App Push Notifications -
          - App Push Notifications - App Push Notifications - App Push Notifications - App Push Notifications -
        18. -
        19. -
          - Team management -
          - Team management - Team management - Team management - Team management -
        20. -
        -
      • -
      • -
          -
        1. -
          - Chat -
          -
        2. -
        3. -
          - @ Features -
          - @ Features - @ Features - @ Features - @ Features -
        4. -
        5. -
          - Linked Task -
          - Linked Task - Linked Task - Linked Task - Linked Task -
        6. -
        7. -
          - Emoji -
          - Emoji - Emoji - Emoji - Emoji -
        8. -
        9. -
          - Message categorization -
          - Message Categorization - Message Categorization - Message Categorization - Message Categorization -
        10. -
        11. -
          - Message Right-Click - Functionality -
          - Message Right-Click Functionality - Message Right-Click Functionality - Message Right-Click Functionality - Message Right-Click Functionality -
        12. -
        13. -
          - Message Do Not Disturb -
          - Message Do Not Disturb - Message Do Not Disturb - Message Do Not Disturb - Message Do Not Disturb -
        14. -
        15. -
          - Color Coding -
          - Color Coding - Color Coding - Color Coding - Color Coding -
        16. -
        -
      • - -
      -
        -
      • -
        - Regular version -
        -
          -
        1. -
          -
          - System usage -
          -
          -
          -
          - Number of users -
          -
          - Unlimited -
          -
          -
          -
          - Number of projects -
          -
          - Unlimited -
          -
          -
          -
          - Number of tasks -
          -
          - Unlimited -
          -
          -
          -
          - Offline Deployment -
          -
          - Support -
          -
          -
        2. -
        3. -
          -
          - Task Collaboration -
          -
          -
          -
          - Multi-view presentation -
          - Multi-view presentation -
          -
          -
          - Custom column -
          - Custom column -
          -
          -
          - Visibility setting -
          - Visibility setting -
          -
          -
          - Repetition cycle -
          - Repetition cycle -
          -
        4. -
        5. -
          -
          - Project management -
          -
          -
          -
          - Project progress -
          - Project progress -
          -
          -
          - Project templates -
          - Project templates -
          -
          -
          - Gantt chart -
          - Gantt chart -
          -
        6. -
        7. -
          -
          - Application -
          -
          -
          -
          - Approval center -
          - Approval center -
          -
          -
          - OKR management -
          - OKR management -
          -
          -
          - AI robot -
          - AI robot -
          -
          -
          - Meeting -
          - Meeting -
          -
          -
          - OKR results analysis -
          - OKR results analysis -
          -
          -
          - LDAP -
          - LDAP -
          -
          -
          - Email -
          - Email -
          -
          -
          - App Push Notifications -
          - App Push Notifications -
          -
          -
          - Team management -
          - Team management -
          -
        8. -
        9. -
          -
          - Chat -
          -
          -
          -
          - @ Features -
          - @ Features -
          -
          -
          - Linked Task -
          - Linked Task -
          -
          -
          - Emoji -
          - Emoji -
          -
          -
          - Message categorization -
          - Message categorization -
          -
          -
          - Message Right-Click - Functionality -
          - Message Right-Click Functionality -
          -
          -
          - Message Do Not Disturb -
          - Message Do Not Disturb -
          -
          -
          - Color Coding -
          - Color Coding -
          -
        10. -
        11. -

          - ¥0 -

          - /month -
        12. -
        13. - - - - - -
        14. -
        -
      • -
      • -
        - Professional Edition -
        -
          -
        1. -
          -
          - System usage -
          -
          -
          -
          - Number of users -
          -
          - ≤3 -
          -
          -
          -
          - Number of projects -
          -
          - Unlimited -
          -
          -
          -
          - Number of tasks -
          -
          - Unlimited -
          -
          -
          -
          - Offline Deployment -
          -
          - Support -
          -
          -
        2. -
        3. -
          -
          - Task Collaboration -
          -
          -
          -
          - Multi-view presentation -
          - Multi-view presentation -
          -
          -
          - Custom column -
          - Custom column -
          -
          -
          - Visibility setting -
          - Visibility setting -
          -
          -
          - Repetition cycle -
          - Repetition cycle -
          -
        4. -
        5. -
          -
          - Project management -
          -
          -
          -
          - Project progress -
          - Project progress -
          -
          -
          - Project templates -
          - Project templates -
          -
          -
          - Gantt chart -
          - Gantt chart -
          -
        6. -
        7. -
          -
          - Application -
          -
          -
          -
          - Approval center -
          - Approval center -
          -
          -
          - OKR management -
          - OKR management -
          -
          -
          - AI robot -
          - AI robot -
          -
          -
          - Meeting -
          - Meeting -
          -
          -
          - OKR results analysis -
          - OKR results analysis -
          -
          -
          - LDAP -
          - LDAP -
          -
          -
          - Email -
          - Email -
          -
          -
          - App Push Notifications -
          - App Push Notifications -
          -
          -
          - Team management -
          - Team management -
          -
        8. -
        9. -
          -
          - Chat -
          -
          -
          -
          - @ Features -
          - @ Features -
          -
          -
          - Linked Task -
          - Linked Task -
          -
          -
          - Emoji -
          - Emoji -
          -
          -
          - Message categorization -
          - Message categorization -
          -
          -
          - Message Right-Click - Functionality -
          - Message Right-Click Functionality -
          -
          -
          - Message Do Not Disturb -
          - Message Do Not Disturb -
          -
          -
          - Color Coding -
          - Color Coding -
          -
        10. -
        11. -

          - ¥0 -

          - /month -
        12. -
        13. - - - - - -
        14. -
        -
      • -
      • -
        - Regular version -
        -
          -
        1. -
          -
          - System usage -
          -
          -
          -
          - Number of users -
          -
          - Unlimited -
          -
          -
          -
          - Number of projects -
          -
          - Unlimited -
          -
          -
          -
          - Number of tasks -
          -
          - Unlimited -
          -
          -
          -
          - Offline Deployment -
          -
          - Official Support -
          -
          -
        2. -
        3. -
          -
          - Task Collaboration -
          -
          -
          -
          - Multi-view presentation -
          - Multi-view presentation -
          -
          -
          - Custom column -
          - Custom column -
          -
          -
          - Visibility setting -
          - Visibility setting -
          -
          -
          - Repetition cycle -
          - Repetition cycle -
          -
        4. -
        5. -
          -
          - Project management -
          -
          -
          -
          - Project progress -
          - Project progress -
          -
          -
          - Project templates -
          - Project templates -
          -
          -
          - Gantt chart -
          - Gantt chart -
          -
        6. -
        7. -
          -
          - Application -
          -
          -
          -
          - Approval center -
          - Approval center -
          -
          -
          - OKR management -
          - OKR management -
          -
          -
          - AI robot -
          - AI robot -
          -
          -
          - Meeting -
          - Meeting -
          -
          -
          - OKR results analysis -
          - OKR results analysis -
          -
          -
          - LDAP -
          - LDAP -
          -
          -
          - Email -
          - Email -
          -
          -
          - App Push Notifications -
          - App Push Notifications -
          -
          -
          - Team management -
          - Team management -
          -
        8. -
        9. -
          -
          - Chat -
          -
          -
          -
          - @ Features -
          - @ Features -
          -
          -
          - Linked Task -
          - Linked Task -
          -
          -
          - Emoji -
          - Emoji -
          -
          -
          - Message categorization -
          - Message categorization -
          -
          -
          - Message Right-Click - Functionality -
          - Message Right-Click Functionality -
          -
          -
          - Message Do Not Disturb -
          - Message Do Not Disturb -
          -
          -
          - Color Coding -
          - Color Coding -
          -
        10. -
        11. -

          - ¥18,888 -

          - /perpetual -
        12. -
        13. - - - -
        14. -
        -
      • -
      • -
        - Customised version -
        -
          -
        1. -
          -
          - System usage -
          -
          -
          -
          - Number of users -
          -
          - Unlimited -
          -
          -
          -
          - Number of projects -
          -
          - Unlimited -
          -
          -
          -
          - Number of tasks -
          -
          - Unlimited -
          -
          -
          -
          - Offline Deployment -
          -
          - Official Support -
          -
          -
        2. -
        3. -
          -
          - Task Collaboration -
          -
          -
          -
          - Multi-view presentation -
          - Multi-view presentation -
          -
          -
          - Custom column -
          - Custom column -
          -
          -
          - Visibility setting -
          - Visibility setting -
          -
          -
          - Repetition cycle -
          - Repetition cycle -
          -
        4. -
        5. -
          -
          - Project management -
          -
          -
          -
          - Project progress -
          - Project progress -
          -
          -
          - Project templates -
          - Project templates -
          -
          -
          - Gantt chart -
          - Gantt chart -
          -
        6. -
        7. -
          -
          - Application -
          -
          -
          -
          - Approval center -
          - Approval center -
          -
          -
          - OKR management -
          - OKR management -
          -
          -
          - AI robot -
          - AI robot -
          -
          -
          - Meeting -
          - Meeting -
          -
          -
          - OKR results analysis -
          - OKR results analysis -
          -
          -
          - LDAP -
          - LDAP -
          -
          -
          - Email -
          - Email -
          -
          -
          - App Push Notifications -
          - App Push Notifications -
          -
          -
          - Team management -
          - Team management -
          -
        8. -
        9. -
          -
          - Chat -
          -
          -
          -
          - @ Features -
          - @ Features -
          -
          -
          - Linked Task -
          - Linked Task -
          -
          -
          - Emoji -
          - Emoji -
          -
          -
          - Message categorization -
          - Message categorization -
          -
          -
          - Message Right-Click - Functionality -
          - Message Right-Click Functionality -
          -
          -
          - Message Do Not Disturb -
          - Message Do Not Disturb -
          -
          -
          - Color Coding -
          - Color Coding -
          -
        10. -
        11. -

          - Consult -

          -
        12. -
        13. - - - -
        14. -
        -
      • -
      -
      -
      -
      -
      -
      - - - - -
      - - - - - - \ No newline at end of file diff --git a/public/site/en/privacy.html b/public/site/en/privacy.html deleted file mode 100644 index df1de923a..000000000 --- a/public/site/en/privacy.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Privacy - DooTask - - - - - - - - - - - - - - -
      - - - - - diff --git a/public/site/en/privacy.md b/public/site/en/privacy.md deleted file mode 100644 index 5e962b6a1..000000000 --- a/public/site/en/privacy.md +++ /dev/null @@ -1,242 +0,0 @@ -# Privacy Policy - -Last updated: July 21, 2023 - -This Privacy Policy describes Our policies and procedures on the collection, use and disclosure of Your information when You use the Service and tells You about Your privacy rights and how the law protects You. - -We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. This Privacy Policy has been created with the help of the [Privacy Policy Generator](https://www.termsfeed.com/privacy-policy-generator/). - -# Interpretation and Definitions - -## Interpretation - -The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural. - -## Definitions - -For the purposes of this Privacy Policy: - -- Account: means a unique account created for You to access our Service or parts of our Service. -- Affiliate: means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority. - - - -- Company: (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to Guangxi Hitosea Information Technology Co., No. 1411, 14/F, Building 1, Wuxiang Hangyang City, Liangqing District, Nanning City, Guangxi Zhuang Autonomous Region, China. - - - -- __Cookies__ are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses. - -- __Country__ refers to: China - -- __Device__ means any device that can access the Service such as a computer, a cellphone or a digital tablet. - - - -- __Personal Data__ is any information that relates to an identified or identifiable individual. - - - - -- __Service__ refers to the Website. - -- __Service Provider__ means any natural or legal person who processes the data on behalf of the Company. It refers to third-party companies or individuals employed by the Company to facilitate the Service, to provide the Service on behalf of the Company, to perform services related to the Service or to assist the Company in analyzing how the Service is used. - - -- __Usage Data__ refers to data collected automatically, either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit). - - -- __Website__ refers to DooTask, accessible from [https://www.dootask.com/](https://www.dootask.com/) - -- __You__ means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable. - - - -# Collecting and Using Your Personal Data - -## Types of Data Collected - -### Personal Data - -While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to: - - - -- Phone number - - - -- Usage Data - - - -### Usage Data - -Usage Data is collected automatically when using the Service. - -Usage Data may include information such as Your Device's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that You visit, the time and date of Your visit, the time spent on those pages, unique device identifiers and other diagnostic data. - -When You access the Service by or through a mobile device, We may collect certain information automatically, including, but not limited to, the type of mobile device You use, Your mobile device unique ID, the IP address of Your mobile device, Your mobile operating system, the type of mobile Internet browser You use, unique device identifiers and other diagnostic data. - -We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device. - - - - - - -### Tracking Technologies and Cookies - -We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include: - -- __Cookies or Browser Cookies.__ A cookie is a small file placed on Your Device. You can instruct Your browser to refuse all Cookies or to indicate when a Cookie is being sent. However, if You do not accept Cookies, You may not be able to use some parts of our Service. Unless you have adjusted Your browser setting so that it will refuse Cookies, our Service may use Cookies. -- __Web Beacons.__ Certain sections of our Service and our emails may contain small electronic files known as web beacons (also referred to as clear gifs, pixel tags, and single-pixel gifs) that permit the Company, for example, to count users who have visited those pages or opened an email and for other related website statistics (for example, recording the popularity of a certain section and verifying system and server integrity). - -Cookies can be "Persistent" or "Session" Cookies. Persistent Cookies remain on Your personal computer or mobile device when You go offline, while Session Cookies are deleted as soon as You close Your web browser. You can learn more about cookies on [TermsFeed website](https://www.termsfeed.com/blog/cookies/#What_Are_Cookies) article. - -We use both Session and Persistent Cookies for the purposes set out below: - -- __Necessary / Essential Cookies__ - - Type: Session Cookies - - Administered by: Us - - Purpose: These Cookies are essential to provide You with services available through the Website and to enable You to use some of its features. They help to authenticate users and prevent fraudulent use of user accounts. Without these Cookies, the services that You have asked for cannot be provided, and We only use these Cookies to provide You with those services. -- __Cookies Policy / Notice Acceptance Cookies__ - - Type: Persistent Cookies - - Administered by: Us - - Purpose: These Cookies identify if users have accepted the use of cookies on the Website. -- __Functionality Cookies__ - - Type: Persistent Cookies - - Administered by: Us - - Purpose: These Cookies allow us to remember choices You make when You use the Website, such as remembering your login details or language preference. The purpose of these Cookies is to provide You with a more personal experience and to avoid You having to re-enter your preferences every time You use the Website. - - - -For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy. - - -## Use of Your Personal Data - -The Company may use Personal Data for the following purposes: - -- __To provide and maintain our Service__, including to monitor the usage of our Service. -- __To manage Your Account:__ to manage Your registration as a user of the Service. The Personal Data You provide can give You access to different functionalities of the Service that are available to You as a registered user. -- __For the performance of a contract:__ the development, compliance and undertaking of the purchase contract for the products, items or services You have purchased or of any other contract with Us through the Service. -- __To contact You:__ To contact You by email, telephone calls, SMS, or other equivalent forms of electronic communication, such as a mobile application's push notifications regarding updates or informative communications related to the functionalities, products or contracted services, including the security updates, when necessary or reasonable for their implementation. -- __To provide You__ with news, special offers and general information about other goods, services and events which we offer that are similar to those that you have already purchased or enquired about unless You have opted not to receive such information. -- __To manage Your requests:__ To attend and manage Your requests to Us. - -- __For business transfers:__ We may use Your information to evaluate or conduct a merger, divestiture, restructuring, reorganization, dissolution, or other sale or transfer of some or all of Our assets, whether as a going concern or as part of bankruptcy, liquidation, or similar proceeding, in which Personal Data held by Us about our Service users is among the assets transferred. -- __For other purposes__: We may use Your information for other purposes, such as data analysis, identifying usage trends, determining the effectiveness of our promotional campaigns and to evaluate and improve our Service, products, services, marketing and your experience. - -We may share Your personal information in the following situations: - -- __With Service Providers:__ We may share Your personal information with Service Providers to monitor and analyze the use of our Service, to contact You. -- __For business transfers:__ We may share or transfer Your personal information in connection with, or during negotiations of, any merger, sale of Company assets, financing, or acquisition of all or a portion of Our business to another company. -- __With Affiliates:__ We may share Your information with Our affiliates, in which case we will require those affiliates to honor this Privacy Policy. Affiliates include Our parent company and any other subsidiaries, joint venture partners or other companies that We control or that are under common control with Us. -- __With business partners:__ We may share Your information with Our business partners to offer You certain products, services or promotions. -- __With other users:__ when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside. -- __With Your consent__: We may disclose Your personal information for any other purpose with Your consent. - -## Retention of Your Personal Data - -The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies. - -The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods. - -## Transfer of Your Personal Data - -Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to — and maintained on — computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction. - -Your consent to this Privacy Policy followed by Your submission of such information represents Your agreement to that transfer. - -The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information. - -## Delete Your Personal Data - -You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You. - -Our Service may give You the ability to delete certain information about You from within the Service. - -You may update, amend, or delete Your information at any time by signing in to Your Account, if you have one, and visiting the account settings section that allows you to manage Your personal information. You may also contact Us to request access to, correct, or delete any personal information that You have provided to Us. - -Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so. - -## Disclosure of Your Personal Data - -### Business Transactions - -If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy. - -### Law enforcement - -Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency). - -### Other legal requirements - -The Company may disclose Your Personal Data in the good faith belief that such action is necessary to: - -- Comply with a legal obligation -- Protect and defend the rights or property of the Company -- Prevent or investigate possible wrongdoing in connection with the Service -- Protect the personal safety of Users of the Service or the public -- Protect against legal liability - -## Security of Your Personal Data - -The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security. - - - - - - - - - - - - - - - - - - -# Children's Privacy - -Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers. - -If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information. - - -# Links to Other Websites - -Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit. - -We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services. - -# Changes to this Privacy Policy - -We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page. - -We will let You know via email and/or a prominent notice on Our Service, prior to the change becoming effective and update the "Last updated" date at the top of this Privacy Policy. - -You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page. - -# Contact Us - -If you have any questions about this Privacy Policy, You can contact us: - - - - -- By phone number: 0771-3164099 diff --git a/public/site/en/product.html b/public/site/en/product.html deleted file mode 100644 index f6e8a5c92..000000000 --- a/public/site/en/product.html +++ /dev/null @@ -1,1332 +0,0 @@ - - - - - - Product - DooTask - - - - - - - - - - - - - - - - -
      - -
      - -
      -
      -
      -
      - One product, multiple powerful tools -
      -

      - The product brings together various document - collaboration, online mind mapping, online - flowcharting, project management, task - distribution, instant IM, document management - and other functions -

      - -
      -
      -
      -
      -
        -
      • - - One product, many powerful tools - -
      • - -
      • - Co-creation -

        - Co-creation -

        -
      • - -
      • - Instant Messaging -

        Instant Messaging

        -
      • - -
      • - Project Mgmt -

        Project Mgmt

        -
      • - -
      • - Task Dashboard -

        Task Dashboard

        -
      • - -
      • - Task Calendar -

        Task Calendar

        -
      • - -
      • - Bot Assistant -

        Bot Assistant

        -
      • - -
      • - Team Mgmt -

        Team Mgmt

        -
      • - -
      • - End-to-End Encryption -

        - End-to-End Encryption -

        -
      • - -
      • - Multi-platform -

        Multi-platform

        -
      • -
      • - - One product, many powerful tools - -
      • -
      -
        -
      • -
        - Teamwork without boundaries,No more document silos - Teamwork without boundaries,No more document silos -
          -
        • -

          - 01 -

          -
          - Teamwork without boundaries -
          -
          - Bring together a variety of online - tools such as documents, - spreadsheets, thinking notes, etc., - bringing together enterprise - knowledge resources in one place and - supporting real-time collaborative - editing by multiple people, making - teamwork more convenient. -
          -
        • -
        • -

          - 02 -

          -
          - No more document silos -
          -
          - Multiple file formats support, - internal team file sharing, - controllable file permissions, - historical version tracking, etc. to - facilitate file collaboration and - discussion among team members and - improve work efficiency. -
          -
        • -
        -
        -
      • -
      • -
        - Focused communication, efficient communication,Messages must reach communication without hindrance - Cloud synchronization for unrestricted access to historical information,Attend meetings anytime, anywhere -
          -
        • -

          - 01 -

          -
          - Focused communication, efficient - communication -
          -
          - Establishing groups for projects and - tasks, the instant IM function can - help team members communicate with - each other in real time, add - comments, attachments, reminders, - etc. in task cards to promote fast - team collaboration and improve team - work efficiency. -
          -
        • -
        • -

          - 02 -

          -
          - Messages must reach communication - without hindrance -
          -
          - Messages support checking read and - unread, and unread messages are - notified to each other through - official emails for efficient - communication. -
          -
        • -
        • -

          - 03 -

          -
          - Cloud synchronization for - unrestricted access to historical - information -
          -
          - Information is synchronized at - multiple ends without loss. New - employees join the organization, - support to view chat history - messages, seamless integration into - the team. -
          -
        • -
        • -

          - 04 -

          -
          - Attend meetings anytime, anywhere -
          -
          - Using communication group video - conferencing, project staff can - participate in meetings anytime and - anywhere to enhance the convenience - of online meetings and ensure that - the entire meeting is secure and - controlled and orderly. -
          -
        • -
        -
        -
          -
        • - Focused communication, efficient communication,Messages must reach communication without hindrance - Cloud synchronization for unrestricted access to historical information,Attend meetings anytime, anywhere -
        • -
        • -

          - 01 -

          -
          - Focused communication, efficient - communication -
          -
          - Establishing groups for projects and - tasks, the instant IM function can help - team members communicate with each other - in real time, add comments, attachments, - reminders, etc. in task cards to promote - fast team collaboration and improve team - work efficiency. -
          -
        • -
        • -

          - 02 -

          -
          - Messages must reach communication - without hindrance -
          -
          - Messages support checking read and - unread, and unread messages are notified - to each other through official emails - for efficient communication. -
          -
        • -
        • -

          - 03 -

          -
          - Cloud synchronization for unrestricted - access to historical information -
          -
          - Information is synchronized at multiple - ends without loss. New employees join - the organization, support to view chat - history messages, seamless integration - into the team. -
          -
        • -
        • -

          - 04 -

          -
          - Attend meetings anytime, anywhere -
          -
          - Using communication group video - conferencing, project staff can - participate in meetings anytime and - anywhere to enhance the convenience of - online meetings and ensure that the - entire meeting is secure and controlled - and orderly. -
          -
        • -
        -
      • -
      • -
        - Multi-style management templates,Project-based office, action visualization - Dynamic management, real-time monitoring,One-click archiving of associated documents -
          -
        • -

          - 01 -

          -
          - Multi-style management templates -
          -
          - Templates to meet a variety of team - collaboration scenarios, while - supporting custom templates to meet - the team's personalized scenario - management needs, you can - intuitively view the progress of the - project, team collaboration more - convenient. -
          -
        • -
        • -

          - 02 -

          -
          - Project-based office, action - visualization -
          -
          - Use multiple views such as Kanban - boards, tables, and lists to make - the overall project visible at a - glance; members can filter, sort, - and group tasks flexibly to give - priority to what's important and - stay focused. -
          -
        • -
        • -

          - 03 -

          -
          - Dynamic management, real-time - monitoring -
          -
          - Real-time changes to project - dynamics, specific task changes are - recorded and reminded so that the - team can control the overall project - process and make corresponding - plans. -
          -
        • -
        • -

          - 04 -

          -
          - One-click archiving of associated - documents -
          -
          - Project and related task files are - automatically archived and stored - for easy access later. -
          -
        • -
        -
        -
          -
        • - Multi-style management templates,Project-based office, action visualization - Dynamic management, real-time monitoring,One-click archiving of associated documents -
        • -
        • -

          - 01 -

          -
          - Multi-style management templates -
          -
          - Templates to meet a variety of team - collaboration scenarios, while - supporting custom templates to meet the - team's personalized scenario management - needs, you can intuitively view the - progress of the project, team - collaboration more convenient. -
          -
        • -
        • -

          - 02 -

          -
          - Project-based office, action - visualization -
          -
          - Use multiple views such as Kanban - boards, tables, and lists to make the - overall project visible at a glance; - members can filter, sort, and group - tasks flexibly to give priority to - what's important and stay focused. -
          -
        • -
        • -

          - 03 -

          -
          - Dynamic management, real-time monitoring -
          -
          - Real-time changes to project dynamics, - specific task changes are recorded and - reminded so that the team can control - the overall project process and make - corresponding plans. -
          -
        • -
        • -

          - 04 -

          -
          - One-click archiving of associated - documents -
          -
          - Project and related task files are - automatically archived and stored for - easy access later. -
          -
        • -
        -
      • -
      • -
        - Comprehensive insight into task data - Comprehensive insight into task data -
          -
        • -

          - 01 -

          -
          - Comprehensive insight into task data -
          -
          - The task dashboard shows task status - classification statistics, which - makes it easy for individuals to - grasp task progress, rationalize and - plan work, and improve work - efficiency. -
          -
        • -
        -
        -
      • -
      • -
        - Accurate Timeline,Multiple calendar views - Accurate Timeline,Multiple calendar views -
          -
        • -

          - 01 -

          -
          - Accurate Timeline -
          -
          - Show the schedule scheduling of each - task, so that you can see the work - tasks at a glance and better balance - work and life. -
          -
        • -
        • -

          - 02 -

          -
          - Multiple calendar views -
          -
          - Provide multiple calendar views such - as month/week/day, easy to switch; - support to create multiple calendars - by purpose of use, customize the - visible range and color markers, let - the schedule classified display. -
          -
        • -
        -
        -
      • -
      • -
        - Smart tips to bring technology closer to life - Artificial intelligence, realizing real-time communication with AI -
          -
        • -

          - 01 -

          -
          - Smart tips to bring technology - closer to life -
          -
          - Intelligent robots can serve - employees' daily check-in and - clock-in, task reminders, and - pushing the latest consultation - messages, helping users achieve - effective work progress management - and time planning. -
          -
        • -
        • -

          - 02 -

          -
          - Artificial intelligence, realizing - real-time communication with AI -
          -
          - The smart little dolphin, a language - processing tool based on artificial - intelligence technology, is able to - carry out dialogues and real-time - communication by learning and - understanding human language, and - comprehensively grasp all kinds of - text information, greatly improving - the convenience of work. -
          -
        • -
        -
        -
      • -
      • -
        - Fully enhance hierarchical organizational effectiveness - Multi-functional assistance for enterprise management teams -
          -
        • -

          - 01 -

          -
          - Fully enhance hierarchical - organizational effectiveness -
          -
          - Managers can set the company - personnel structure in the - background to form a complete team - form, which facilitates hierarchical - and collaborative management of - projects and related tasks. -
          -
        • -
        • -

          - 02 -

          -
          - Multi-functional assistance for - enterprise management teams -
          -
          - Provide daily work report editing - summary, project and task data - summary statistics, a variety of - functions to assist enterprises to - manage teams and projects, improve - the company's management efficiency - and management level. -
          -
        • -
        -
        -
      • -
      • -
        - Control encryption keys for security and safety - Data classification encryption for secure synchronization -
          -
        • -

          - 01 -

          -
          - Control encryption keys for security - and safety -
          -
          - Using end-to-end encryption ensures - that users' data can only be - decrypted by them. This means that - even if hackers break into DooTask's - servers, they cannot access users' - data. -
          -
        • -
        • -

          - 02 -

          -
          - Data classification encryption for - secure synchronization -
          -
          - Using categorical encryption, users - can synchronize their tasks and - files across multiple devices - without fear of data theft or - tampering. -
          -
        • -
        -
        -
      • -
      • -
        - Multi-Platform Applications - Multi-Platform Applications -
          -
        • -

          - 01 -

          -
          - Multi-Platform Applications -
          -
          - Multi-platform application support - allows you to track project progress - anytime, anywhere, while making - every step of your work a more - efficient and enjoyable experience. -
          -
        • -
        -
        -
      • -
      -
      -
      - -
      -
      - - -
      - -
      - -
      - -
      -
      -
      -
      -

      - Organizational Management -

      -
      - Unified management of internal and external - work, real-time view statistics, -
      -
      - transparent goals, visible progress, - controllable performance -
      -
      - Unified management of internal and external - work, real-time view statistics, transparent - goals, visible progress, controllable - performance -
      -
      -
      -
        -
      • - Real-time view of attendance statistics -
        -

        - Real-time view of attendance - statistics -

        -
        - View attendance data anytime and - anywhere, record the working - hours of each team member, - including starting time, - finishing time, overtime, etc., - to achieve goal management and - performance management within - the enterprise -
        -
        -
      • -
      • - The ultimate experience in speed clocking -
        -

        - The ultimate experience in speed - clocking -

        -
        - The system recognizes and - connects to the company's wifi - to automatically punch in and - out, saying goodbye to queuing - and opening cell phone - operations, employees no longer - forget to punch in and out -
        -
        -
      • -
      -
      - Attendance data visualization and analysis -
      -

      - Attendance data visualization and - analysis -

      -
      - Statistics on attendance, tardiness, - early departure, overtime hours and - other related data of each team - member are generated and visualized - in statistical charts. Through these - data and charts, enterprise - management can gain an in-depth - understanding of team members' - working conditions and efficiency, - and provide a reference basis for - subsequent personnel arrangement and - performance assessment. -
      -
      -
      -
      - Clocking in to work successfully - Clocking in to work successfully -
      - Attendance Check-in - Clocking in to work successfully -
      -

      - Attendance Check-in -

      -
      -
      -
      -
      -
      -
      -

      - Digital Performance -

      - Digital Performance - Digital Performance -
        -
      • - -
        - Goal setting and tracking, more focused - team -
        -
        - Help team members set work goals and - KPIs, and track and manage them to keep - an eye on the progress of tasks in a - timely manner. -
        -
      • -
      • - -
        - Performance evaluation and feedback for - more effortless management -
        -
        - Support evaluation and feedback of team - members' performance, and automatically - generate performance reports and - statistical charts according to task - completion, providing reference basis - for subsequent personnel management and - performance assessment. -
        -
      • -
      • - -
        - Visual analysis of data, more intuitive - results -
        -
        - Data such as task completion, teamwork - efficiency and individual performance - are transformed into intuitive and - easy-to-understand charts and data - analysis to better understand team - members' performance and performance - status, and to provide targeted training - and guidance. -
        -
      • -
      • - -
        - Personalized service -
        -
        - Users can customize performance - appraisal indicators and report content - and analysis according to their own - needs and business processes to better - match the actual work needs of team - members and the specific business - situation of the company. -
        -
      • -
      -
      -
      -
      -
      - - - - -
      - - - - - - \ No newline at end of file diff --git a/public/site/en/sideNav.html b/public/site/en/sideNav.html deleted file mode 100644 index b3f05121a..000000000 --- a/public/site/en/sideNav.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - Solutions - DooTask - - - - - - - - - - - - - diff --git a/public/site/en/solutions.html b/public/site/en/solutions.html deleted file mode 100644 index 093919ae1..000000000 --- a/public/site/en/solutions.html +++ /dev/null @@ -1,608 +0,0 @@ - - - - - - Solutions - DooTask - - - - - - - - - - - - - - - - -
      - -
      - -
      -
      -
      -
      - Helping you collaborate better -
      -

      - DooTask offers a range of solutions based on - different scenarios so that you can quickly - start collaborating with your team or department -

      - -
      -
      -
      -
      - -
      -
      - - -
      - -
      - -
      - -
      -
      -
      -
      -
      -

      - Scenario Application -

      -
      -
      - The product supports a variety of - application scenarios to help team - collaboration -
      -
      -
      -
        -
      • -
        - Project Management -
        -

        - Project Management -

        -
        - Support a variety of project - management models, such as Agile - Development, Crystal Planning, - Kanban, etc., for all sizes and - types of project management. Users - can use the project management tools - in DooTask, such as task assignment, - progress tracking, resource - allocation, etc. to manage the whole - project. -
        -
      • -
      • -
        - Team Collaboration -
        -

        - Team Collaboration -

        -
        - DooTask's rich and useful tools can - facilitate communication and - collaboration among team members and - improve work efficiency. For - example, team members can use the - document collaboration tools, online - mind maps, flowcharts and other - tools in DooTask to collaborate. -
        -
      • -
      • -
        - Data Security Protection -
        -

        - Data Security Protection -

        -
        - DooTask uses asymmetric encryption - technology in its messaging function - to ensure maximum protection of - users' information. In addition, it - also provides a powerful permission - management system that enables - flexible setting of permissions and - scope of operations for different - users in project management - according to their roles and - responsibilities. -
        -
      • -
      • -
        - Free Customization -
        -

        - Free Customization -

        -
        - DooTask is a completely open source - tool that allows users to freely - modify and customize it, avoiding - the extra costs associated with - commercial software subscription - fees. -
        -
      • -
      -
      -
      -
      -
      -
      -

      - Team Operations -

      -
        -
      • - Corporate Management -

        - Corporate Management -

        -
        - Helping enterprises to their corporate - goals, connecting goals, key results and - individual work, and jointly promoting - strategy implementation and goal - achievement;Through co-creation, share - the progress, completion status, and - schedule of all corporate work, promote - information flow, allow all staff to - access key information of projects, - follow up in time, and promote - cross-departmental - collaboration.Translated with DeepL -
        -
      • -
      • - Product Management -

        - Product Management -

        -
        - Customize the workflow of the product - development process, assign tasks to - different roles at different stages, and - promote the product development process; - Uniform archiving of each completed - project and task history data, which is - convenient to recall or discuss at any - time, forming a closed loop of knowledge - precipitation to reuse. -
        -
      • -
      • - Corporate Management -

        - Corporate Management -

        -
        - Get multi-dimensional corporate data - through data visualization statistical - reports to get a comprehensive - understanding of employee performance - and make performance evaluation more - objective and fair; use announcements to - release notices, arrange company - activities, convey corporate decisions, - facilitate the shaping of corporate - culture, and make employees more - engaged. -
        -
      • -
      -
      -
      -
      -
      - - - - -
      - - - - - - \ No newline at end of file diff --git a/public/site/font/side_nav_font.woff b/public/site/font/side_nav_font.woff deleted file mode 100644 index 297c262f1..000000000 Binary files a/public/site/font/side_nav_font.woff and /dev/null differ diff --git a/public/site/img/01.svg b/public/site/img/01.svg deleted file mode 100644 index 387daf4bd..000000000 --- a/public/site/img/01.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/02.svg b/public/site/img/02.svg deleted file mode 100644 index 984d298b3..000000000 --- a/public/site/img/02.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/03.svg b/public/site/img/03.svg deleted file mode 100644 index 9e96664b6..000000000 --- a/public/site/img/03.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/04.svg b/public/site/img/04.svg deleted file mode 100644 index ebd3b8677..000000000 --- a/public/site/img/04.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/about_icon1.svg b/public/site/img/about_icon1.svg deleted file mode 100644 index 13e28392a..000000000 --- a/public/site/img/about_icon1.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/public/site/img/about_icon10.svg b/public/site/img/about_icon10.svg deleted file mode 100644 index 85a9ac1f8..000000000 --- a/public/site/img/about_icon10.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/site/img/about_icon2.svg b/public/site/img/about_icon2.svg deleted file mode 100644 index 6dd123ba5..000000000 --- a/public/site/img/about_icon2.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/public/site/img/about_icon3.svg b/public/site/img/about_icon3.svg deleted file mode 100644 index 88c3cc70c..000000000 --- a/public/site/img/about_icon3.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/site/img/about_icon4.svg b/public/site/img/about_icon4.svg deleted file mode 100644 index bff4cc780..000000000 --- a/public/site/img/about_icon4.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/site/img/about_icon5.svg b/public/site/img/about_icon5.svg deleted file mode 100644 index 91dfea2e1..000000000 --- a/public/site/img/about_icon5.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/about_icon6.svg b/public/site/img/about_icon6.svg deleted file mode 100644 index 2288bf64b..000000000 --- a/public/site/img/about_icon6.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/about_icon7.svg b/public/site/img/about_icon7.svg deleted file mode 100644 index 8ecc7aea7..000000000 --- a/public/site/img/about_icon7.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/public/site/img/about_icon8.svg b/public/site/img/about_icon8.svg deleted file mode 100644 index 0dcd9a043..000000000 --- a/public/site/img/about_icon8.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/about_icon9.svg b/public/site/img/about_icon9.svg deleted file mode 100644 index b6ba84216..000000000 --- a/public/site/img/about_icon9.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/site/img/ad/banner.png b/public/site/img/ad/banner.png deleted file mode 100644 index d1abe8f40..000000000 Binary files a/public/site/img/ad/banner.png and /dev/null differ diff --git a/public/site/img/ad/checked.svg b/public/site/img/ad/checked.svg deleted file mode 100644 index a9211bb43..000000000 --- a/public/site/img/ad/checked.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/public/site/img/ad/intro-card-head.png b/public/site/img/ad/intro-card-head.png deleted file mode 100644 index 6305e2f7d..000000000 Binary files a/public/site/img/ad/intro-card-head.png and /dev/null differ diff --git a/public/site/img/ad/intro-card-img01.svg b/public/site/img/ad/intro-card-img01.svg deleted file mode 100644 index 70e28cfe5..000000000 --- a/public/site/img/ad/intro-card-img01.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/ad/intro-card-img02.svg b/public/site/img/ad/intro-card-img02.svg deleted file mode 100644 index d6fc325a6..000000000 --- a/public/site/img/ad/intro-card-img02.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/ad/intro-card-img03.svg b/public/site/img/ad/intro-card-img03.svg deleted file mode 100644 index 5fc9eb2e5..000000000 --- a/public/site/img/ad/intro-card-img03.svg +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/ad/intro-card-img04.svg b/public/site/img/ad/intro-card-img04.svg deleted file mode 100644 index cb460200d..000000000 --- a/public/site/img/ad/intro-card-img04.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/ad/intro.png b/public/site/img/ad/intro.png deleted file mode 100644 index 25fc96a44..000000000 Binary files a/public/site/img/ad/intro.png and /dev/null differ diff --git a/public/site/img/ad/plan.png b/public/site/img/ad/plan.png deleted file mode 100644 index 1a0dbbe03..000000000 Binary files a/public/site/img/ad/plan.png and /dev/null differ diff --git a/public/site/img/ad/tag.png b/public/site/img/ad/tag.png deleted file mode 100644 index e6c0cb619..000000000 Binary files a/public/site/img/ad/tag.png and /dev/null differ diff --git a/public/site/img/android_code.png b/public/site/img/android_code.png deleted file mode 100644 index abff5046d..000000000 Binary files a/public/site/img/android_code.png and /dev/null differ diff --git a/public/site/img/android_y.svg b/public/site/img/android_y.svg deleted file mode 100644 index 302b922f9..000000000 --- a/public/site/img/android_y.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/arcs.svg b/public/site/img/arcs.svg deleted file mode 100644 index 3b72ab43c..000000000 --- a/public/site/img/arcs.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/beian.png b/public/site/img/beian.png deleted file mode 100644 index 27882dc6c..000000000 Binary files a/public/site/img/beian.png and /dev/null differ diff --git a/public/site/img/bg_fpic1.svg b/public/site/img/bg_fpic1.svg deleted file mode 100644 index 9eba7523a..000000000 --- a/public/site/img/bg_fpic1.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/bg_fpic2.svg b/public/site/img/bg_fpic2.svg deleted file mode 100644 index 04db16ec5..000000000 --- a/public/site/img/bg_fpic2.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/about_pic1.png b/public/site/img/dark/about_pic1.png deleted file mode 100644 index 53d811f6b..000000000 Binary files a/public/site/img/dark/about_pic1.png and /dev/null differ diff --git a/public/site/img/dark/bg1.png b/public/site/img/dark/bg1.png deleted file mode 100644 index affc4b919..000000000 Binary files a/public/site/img/dark/bg1.png and /dev/null differ diff --git a/public/site/img/dark/bg10.png b/public/site/img/dark/bg10.png deleted file mode 100644 index bd2fcc963..000000000 Binary files a/public/site/img/dark/bg10.png and /dev/null differ diff --git a/public/site/img/dark/bg11.png b/public/site/img/dark/bg11.png deleted file mode 100644 index 71835c316..000000000 Binary files a/public/site/img/dark/bg11.png and /dev/null differ diff --git a/public/site/img/dark/bg1_768.png b/public/site/img/dark/bg1_768.png deleted file mode 100644 index 983294b2e..000000000 Binary files a/public/site/img/dark/bg1_768.png and /dev/null differ diff --git a/public/site/img/dark/bg2.png b/public/site/img/dark/bg2.png deleted file mode 100644 index 7ab6496b7..000000000 Binary files a/public/site/img/dark/bg2.png and /dev/null differ diff --git a/public/site/img/dark/bg2_768.png b/public/site/img/dark/bg2_768.png deleted file mode 100644 index 7ab6496b7..000000000 Binary files a/public/site/img/dark/bg2_768.png and /dev/null differ diff --git a/public/site/img/dark/bg3.png b/public/site/img/dark/bg3.png deleted file mode 100644 index 1acc4a7d7..000000000 Binary files a/public/site/img/dark/bg3.png and /dev/null differ diff --git a/public/site/img/dark/bg3_768.png b/public/site/img/dark/bg3_768.png deleted file mode 100644 index 21b451ceb..000000000 Binary files a/public/site/img/dark/bg3_768.png and /dev/null differ diff --git a/public/site/img/dark/bg4.png b/public/site/img/dark/bg4.png deleted file mode 100644 index 703fa5cb8..000000000 Binary files a/public/site/img/dark/bg4.png and /dev/null differ diff --git a/public/site/img/dark/bg4_768.png b/public/site/img/dark/bg4_768.png deleted file mode 100644 index d56a6f09a..000000000 Binary files a/public/site/img/dark/bg4_768.png and /dev/null differ diff --git a/public/site/img/dark/bg5.png b/public/site/img/dark/bg5.png deleted file mode 100644 index 6d7fcddfe..000000000 Binary files a/public/site/img/dark/bg5.png and /dev/null differ diff --git a/public/site/img/dark/bg5_768.png b/public/site/img/dark/bg5_768.png deleted file mode 100644 index 9241e9b91..000000000 Binary files a/public/site/img/dark/bg5_768.png and /dev/null differ diff --git a/public/site/img/dark/bg6.png b/public/site/img/dark/bg6.png deleted file mode 100644 index 7255f9cd2..000000000 Binary files a/public/site/img/dark/bg6.png and /dev/null differ diff --git a/public/site/img/dark/bg6_768.png b/public/site/img/dark/bg6_768.png deleted file mode 100644 index 6815fe807..000000000 Binary files a/public/site/img/dark/bg6_768.png and /dev/null differ diff --git a/public/site/img/dark/bg7.png b/public/site/img/dark/bg7.png deleted file mode 100644 index b0bfa9965..000000000 Binary files a/public/site/img/dark/bg7.png and /dev/null differ diff --git a/public/site/img/dark/bg7_768.png b/public/site/img/dark/bg7_768.png deleted file mode 100644 index 71cf4457d..000000000 Binary files a/public/site/img/dark/bg7_768.png and /dev/null differ diff --git a/public/site/img/dark/bg8.png b/public/site/img/dark/bg8.png deleted file mode 100644 index 85072452e..000000000 Binary files a/public/site/img/dark/bg8.png and /dev/null differ diff --git a/public/site/img/dark/bg8_768.png b/public/site/img/dark/bg8_768.png deleted file mode 100644 index 5930140a1..000000000 Binary files a/public/site/img/dark/bg8_768.png and /dev/null differ diff --git a/public/site/img/dark/bg9.png b/public/site/img/dark/bg9.png deleted file mode 100644 index b0b54779a..000000000 Binary files a/public/site/img/dark/bg9.png and /dev/null differ diff --git a/public/site/img/dark/bg9_768.png b/public/site/img/dark/bg9_768.png deleted file mode 100644 index aaa6c7126..000000000 Binary files a/public/site/img/dark/bg9_768.png and /dev/null differ diff --git a/public/site/img/dark/en_dow_pic1.png b/public/site/img/dark/en_dow_pic1.png deleted file mode 100644 index 4ec9861c0..000000000 Binary files a/public/site/img/dark/en_dow_pic1.png and /dev/null differ diff --git a/public/site/img/dark/en_home_pic1.png b/public/site/img/dark/en_home_pic1.png deleted file mode 100644 index 7c6db7c13..000000000 Binary files a/public/site/img/dark/en_home_pic1.png and /dev/null differ diff --git a/public/site/img/dark/en_home_pic2.png b/public/site/img/dark/en_home_pic2.png deleted file mode 100644 index f7dbcefb0..000000000 Binary files a/public/site/img/dark/en_home_pic2.png and /dev/null differ diff --git a/public/site/img/dark/en_home_pic3.png b/public/site/img/dark/en_home_pic3.png deleted file mode 100644 index a5f89b1b1..000000000 Binary files a/public/site/img/dark/en_home_pic3.png and /dev/null differ diff --git a/public/site/img/dark/en_home_pic4.png b/public/site/img/dark/en_home_pic4.png deleted file mode 100644 index 83f4f6ae3..000000000 Binary files a/public/site/img/dark/en_home_pic4.png and /dev/null differ diff --git a/public/site/img/dark/en_home_pic5.png b/public/site/img/dark/en_home_pic5.png deleted file mode 100644 index 97ec3cd30..000000000 Binary files a/public/site/img/dark/en_home_pic5.png and /dev/null differ diff --git a/public/site/img/dark/en_home_pic6.png b/public/site/img/dark/en_home_pic6.png deleted file mode 100644 index 804e08980..000000000 Binary files a/public/site/img/dark/en_home_pic6.png and /dev/null differ diff --git a/public/site/img/dark/en_product_pic11.png b/public/site/img/dark/en_product_pic11.png deleted file mode 100644 index 36ca584f8..000000000 Binary files a/public/site/img/dark/en_product_pic11.png and /dev/null differ diff --git a/public/site/img/dark/en_solution_pic1.png b/public/site/img/dark/en_solution_pic1.png deleted file mode 100644 index e40963201..000000000 Binary files a/public/site/img/dark/en_solution_pic1.png and /dev/null differ diff --git a/public/site/img/dark/en_solution_pic2.png b/public/site/img/dark/en_solution_pic2.png deleted file mode 100644 index 388b16e6e..000000000 Binary files a/public/site/img/dark/en_solution_pic2.png and /dev/null differ diff --git a/public/site/img/dark/en_solution_pic3.png b/public/site/img/dark/en_solution_pic3.png deleted file mode 100644 index c704cd59e..000000000 Binary files a/public/site/img/dark/en_solution_pic3.png and /dev/null differ diff --git a/public/site/img/dark/help_pic11.svg b/public/site/img/dark/help_pic11.svg deleted file mode 100644 index 21cdd6d67..000000000 --- a/public/site/img/dark/help_pic11.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/site/img/dark/help_pic2.png b/public/site/img/dark/help_pic2.png deleted file mode 100644 index 35d75dcb0..000000000 Binary files a/public/site/img/dark/help_pic2.png and /dev/null differ diff --git a/public/site/img/dark/help_pic3.png b/public/site/img/dark/help_pic3.png deleted file mode 100644 index a6f1e1a06..000000000 Binary files a/public/site/img/dark/help_pic3.png and /dev/null differ diff --git a/public/site/img/dark/home_code.svg b/public/site/img/dark/home_code.svg deleted file mode 100644 index 8c6bec5bf..000000000 --- a/public/site/img/dark/home_code.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/site/img/dark/home_icon1.png b/public/site/img/dark/home_icon1.png deleted file mode 100644 index f3b1726d9..000000000 Binary files a/public/site/img/dark/home_icon1.png and /dev/null differ diff --git a/public/site/img/dark/home_icon2.png b/public/site/img/dark/home_icon2.png deleted file mode 100644 index dc6efd31c..000000000 Binary files a/public/site/img/dark/home_icon2.png and /dev/null differ diff --git a/public/site/img/dark/home_icon3.png b/public/site/img/dark/home_icon3.png deleted file mode 100644 index 8b209cd1d..000000000 Binary files a/public/site/img/dark/home_icon3.png and /dev/null differ diff --git a/public/site/img/dark/home_icon4.png b/public/site/img/dark/home_icon4.png deleted file mode 100644 index 94fa7536f..000000000 Binary files a/public/site/img/dark/home_icon4.png and /dev/null differ diff --git a/public/site/img/dark/home_pic7.svg b/public/site/img/dark/home_pic7.svg deleted file mode 100644 index f59630bd1..000000000 --- a/public/site/img/dark/home_pic7.svg +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/home_pic7_768.svg b/public/site/img/dark/home_pic7_768.svg deleted file mode 100644 index 0bf3d21c2..000000000 --- a/public/site/img/dark/home_pic7_768.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/logo.svg b/public/site/img/dark/logo.svg deleted file mode 100644 index 40fab0ba5..000000000 --- a/public/site/img/dark/logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic1.svg b/public/site/img/dark/product_pic1.svg deleted file mode 100644 index d03ccae18..000000000 --- a/public/site/img/dark/product_pic1.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic10.svg b/public/site/img/dark/product_pic10.svg deleted file mode 100644 index c193d9ccf..000000000 --- a/public/site/img/dark/product_pic10.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/site/img/dark/product_pic2.svg b/public/site/img/dark/product_pic2.svg deleted file mode 100644 index 24064724f..000000000 --- a/public/site/img/dark/product_pic2.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic3.svg b/public/site/img/dark/product_pic3.svg deleted file mode 100644 index 0ca6574ba..000000000 --- a/public/site/img/dark/product_pic3.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic4.svg b/public/site/img/dark/product_pic4.svg deleted file mode 100644 index 7c89fff0a..000000000 --- a/public/site/img/dark/product_pic4.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic5.svg b/public/site/img/dark/product_pic5.svg deleted file mode 100644 index bf26e57a4..000000000 --- a/public/site/img/dark/product_pic5.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic6.svg b/public/site/img/dark/product_pic6.svg deleted file mode 100644 index 96767ce0d..000000000 --- a/public/site/img/dark/product_pic6.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic7.svg b/public/site/img/dark/product_pic7.svg deleted file mode 100644 index 62c2e648a..000000000 --- a/public/site/img/dark/product_pic7.svg +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic8.svg b/public/site/img/dark/product_pic8.svg deleted file mode 100644 index c38ff9c80..000000000 --- a/public/site/img/dark/product_pic8.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/product_pic9.svg b/public/site/img/dark/product_pic9.svg deleted file mode 100644 index 3ea14c117..000000000 --- a/public/site/img/dark/product_pic9.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/dark/solution_pic4.png b/public/site/img/dark/solution_pic4.png deleted file mode 100644 index 7bd7b4b7b..000000000 Binary files a/public/site/img/dark/solution_pic4.png and /dev/null differ diff --git a/public/site/img/dark/zh_dow_pic1.png b/public/site/img/dark/zh_dow_pic1.png deleted file mode 100644 index fcea1f1ea..000000000 Binary files a/public/site/img/dark/zh_dow_pic1.png and /dev/null differ diff --git a/public/site/img/dark/zh_home_pic1.png b/public/site/img/dark/zh_home_pic1.png deleted file mode 100644 index e21656f86..000000000 Binary files a/public/site/img/dark/zh_home_pic1.png and /dev/null differ diff --git a/public/site/img/dark/zh_home_pic2.png b/public/site/img/dark/zh_home_pic2.png deleted file mode 100644 index 5311f6b3f..000000000 Binary files a/public/site/img/dark/zh_home_pic2.png and /dev/null differ diff --git a/public/site/img/dark/zh_home_pic3.png b/public/site/img/dark/zh_home_pic3.png deleted file mode 100644 index ff16cc452..000000000 Binary files a/public/site/img/dark/zh_home_pic3.png and /dev/null differ diff --git a/public/site/img/dark/zh_home_pic4.png b/public/site/img/dark/zh_home_pic4.png deleted file mode 100644 index e6a35a83c..000000000 Binary files a/public/site/img/dark/zh_home_pic4.png and /dev/null differ diff --git a/public/site/img/dark/zh_home_pic5.png b/public/site/img/dark/zh_home_pic5.png deleted file mode 100644 index 76e968c9e..000000000 Binary files a/public/site/img/dark/zh_home_pic5.png and /dev/null differ diff --git a/public/site/img/dark/zh_home_pic6.png b/public/site/img/dark/zh_home_pic6.png deleted file mode 100644 index e57027f17..000000000 Binary files a/public/site/img/dark/zh_home_pic6.png and /dev/null differ diff --git a/public/site/img/dark/zh_product_pic11.png b/public/site/img/dark/zh_product_pic11.png deleted file mode 100644 index 77f903c55..000000000 Binary files a/public/site/img/dark/zh_product_pic11.png and /dev/null differ diff --git a/public/site/img/dark/zh_solution_pic1.png b/public/site/img/dark/zh_solution_pic1.png deleted file mode 100644 index 1de318850..000000000 Binary files a/public/site/img/dark/zh_solution_pic1.png and /dev/null differ diff --git a/public/site/img/dark/zh_solution_pic2.png b/public/site/img/dark/zh_solution_pic2.png deleted file mode 100644 index b27a801f0..000000000 Binary files a/public/site/img/dark/zh_solution_pic2.png and /dev/null differ diff --git a/public/site/img/dark/zh_solution_pic3.png b/public/site/img/dark/zh_solution_pic3.png deleted file mode 100644 index 6f9f80b9a..000000000 Binary files a/public/site/img/dark/zh_solution_pic3.png and /dev/null differ diff --git a/public/site/img/dots.svg b/public/site/img/dots.svg deleted file mode 100644 index 3df09b613..000000000 --- a/public/site/img/dots.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/dow_android.svg b/public/site/img/dow_android.svg deleted file mode 100644 index 2d43d23d2..000000000 --- a/public/site/img/dow_android.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/dow_arrow.svg b/public/site/img/dow_arrow.svg deleted file mode 100644 index 6e05e6dde..000000000 --- a/public/site/img/dow_arrow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/dow_code.svg b/public/site/img/dow_code.svg deleted file mode 100644 index 14c9a36d0..000000000 --- a/public/site/img/dow_code.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/site/img/dow_icon.svg b/public/site/img/dow_icon.svg deleted file mode 100644 index 94b7b2a7a..000000000 --- a/public/site/img/dow_icon.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/dow_ios.svg b/public/site/img/dow_ios.svg deleted file mode 100644 index ea806db07..000000000 --- a/public/site/img/dow_ios.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/dow_mac.svg b/public/site/img/dow_mac.svg deleted file mode 100644 index 337b7971b..000000000 --- a/public/site/img/dow_mac.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/dow_window.svg b/public/site/img/dow_window.svg deleted file mode 100644 index ebb685a18..000000000 --- a/public/site/img/dow_window.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/drak.svg b/public/site/img/drak.svg deleted file mode 100644 index 71a0449c7..000000000 --- a/public/site/img/drak.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/favicon.ico b/public/site/img/favicon.ico deleted file mode 100644 index 0d2525721..000000000 Binary files a/public/site/img/favicon.ico and /dev/null differ diff --git a/public/site/img/github.svg b/public/site/img/github.svg deleted file mode 100644 index f23b00a60..000000000 --- a/public/site/img/github.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/home_icon1.svg b/public/site/img/home_icon1.svg deleted file mode 100644 index 8c2966e02..000000000 --- a/public/site/img/home_icon1.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/site/img/home_icon2.svg b/public/site/img/home_icon2.svg deleted file mode 100644 index 5fb5c5e6c..000000000 --- a/public/site/img/home_icon2.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/home_icon3.svg b/public/site/img/home_icon3.svg deleted file mode 100644 index bdf08c65e..000000000 --- a/public/site/img/home_icon3.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/home_icon4.svg b/public/site/img/home_icon4.svg deleted file mode 100644 index abc1d2ec3..000000000 --- a/public/site/img/home_icon4.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/home_icon5.svg b/public/site/img/home_icon5.svg deleted file mode 100644 index 9a27dbdb0..000000000 --- a/public/site/img/home_icon5.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/site/img/ios_code.png b/public/site/img/ios_code.png deleted file mode 100644 index 09aaed994..000000000 Binary files a/public/site/img/ios_code.png and /dev/null differ diff --git a/public/site/img/lang-select.svg b/public/site/img/lang-select.svg deleted file mode 100644 index 3cebf1e7d..000000000 --- a/public/site/img/lang-select.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/light.svg b/public/site/img/light.svg deleted file mode 100644 index e5f7414d3..000000000 --- a/public/site/img/light.svg +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/about_pic1.png b/public/site/img/light/about_pic1.png deleted file mode 100644 index 218da0fb2..000000000 Binary files a/public/site/img/light/about_pic1.png and /dev/null differ diff --git a/public/site/img/light/bg1.png b/public/site/img/light/bg1.png deleted file mode 100644 index 7df1a4c67..000000000 Binary files a/public/site/img/light/bg1.png and /dev/null differ diff --git a/public/site/img/light/bg10.png b/public/site/img/light/bg10.png deleted file mode 100644 index 57ba94642..000000000 Binary files a/public/site/img/light/bg10.png and /dev/null differ diff --git a/public/site/img/light/bg11.png b/public/site/img/light/bg11.png deleted file mode 100644 index 6c8d2ce6b..000000000 Binary files a/public/site/img/light/bg11.png and /dev/null differ diff --git a/public/site/img/light/bg1_768.png b/public/site/img/light/bg1_768.png deleted file mode 100644 index 341a974ff..000000000 Binary files a/public/site/img/light/bg1_768.png and /dev/null differ diff --git a/public/site/img/light/bg2.png b/public/site/img/light/bg2.png deleted file mode 100644 index d00c891bb..000000000 Binary files a/public/site/img/light/bg2.png and /dev/null differ diff --git a/public/site/img/light/bg2_768.png b/public/site/img/light/bg2_768.png deleted file mode 100644 index 4369b2443..000000000 Binary files a/public/site/img/light/bg2_768.png and /dev/null differ diff --git a/public/site/img/light/bg3.png b/public/site/img/light/bg3.png deleted file mode 100644 index c022b8552..000000000 Binary files a/public/site/img/light/bg3.png and /dev/null differ diff --git a/public/site/img/light/bg3_768.png b/public/site/img/light/bg3_768.png deleted file mode 100644 index 9dec512d0..000000000 Binary files a/public/site/img/light/bg3_768.png and /dev/null differ diff --git a/public/site/img/light/bg4.png b/public/site/img/light/bg4.png deleted file mode 100644 index e00669e2e..000000000 Binary files a/public/site/img/light/bg4.png and /dev/null differ diff --git a/public/site/img/light/bg4_768.png b/public/site/img/light/bg4_768.png deleted file mode 100644 index b17351407..000000000 Binary files a/public/site/img/light/bg4_768.png and /dev/null differ diff --git a/public/site/img/light/bg5.png b/public/site/img/light/bg5.png deleted file mode 100644 index 955d1d3ce..000000000 Binary files a/public/site/img/light/bg5.png and /dev/null differ diff --git a/public/site/img/light/bg5_768.png b/public/site/img/light/bg5_768.png deleted file mode 100644 index 2e7d84e64..000000000 Binary files a/public/site/img/light/bg5_768.png and /dev/null differ diff --git a/public/site/img/light/bg6.png b/public/site/img/light/bg6.png deleted file mode 100644 index 57f8b3029..000000000 Binary files a/public/site/img/light/bg6.png and /dev/null differ diff --git a/public/site/img/light/bg6_768.png b/public/site/img/light/bg6_768.png deleted file mode 100644 index 8f87d76ea..000000000 Binary files a/public/site/img/light/bg6_768.png and /dev/null differ diff --git a/public/site/img/light/bg7.png b/public/site/img/light/bg7.png deleted file mode 100644 index c4b8534fb..000000000 Binary files a/public/site/img/light/bg7.png and /dev/null differ diff --git a/public/site/img/light/bg7_768.png b/public/site/img/light/bg7_768.png deleted file mode 100644 index d21b7af86..000000000 Binary files a/public/site/img/light/bg7_768.png and /dev/null differ diff --git a/public/site/img/light/bg8.png b/public/site/img/light/bg8.png deleted file mode 100644 index 323ce86fb..000000000 Binary files a/public/site/img/light/bg8.png and /dev/null differ diff --git a/public/site/img/light/bg8_768.png b/public/site/img/light/bg8_768.png deleted file mode 100644 index 52ba79ff0..000000000 Binary files a/public/site/img/light/bg8_768.png and /dev/null differ diff --git a/public/site/img/light/bg9.png b/public/site/img/light/bg9.png deleted file mode 100644 index ba7f19f7b..000000000 Binary files a/public/site/img/light/bg9.png and /dev/null differ diff --git a/public/site/img/light/bg9_768.png b/public/site/img/light/bg9_768.png deleted file mode 100644 index 37121b083..000000000 Binary files a/public/site/img/light/bg9_768.png and /dev/null differ diff --git a/public/site/img/light/en_dow_pic1.png b/public/site/img/light/en_dow_pic1.png deleted file mode 100644 index c65495e65..000000000 Binary files a/public/site/img/light/en_dow_pic1.png and /dev/null differ diff --git a/public/site/img/light/en_home_pic1.png b/public/site/img/light/en_home_pic1.png deleted file mode 100644 index c5706b2b8..000000000 Binary files a/public/site/img/light/en_home_pic1.png and /dev/null differ diff --git a/public/site/img/light/en_home_pic2.png b/public/site/img/light/en_home_pic2.png deleted file mode 100644 index f7925831e..000000000 Binary files a/public/site/img/light/en_home_pic2.png and /dev/null differ diff --git a/public/site/img/light/en_home_pic3.png b/public/site/img/light/en_home_pic3.png deleted file mode 100644 index b79afb7f4..000000000 Binary files a/public/site/img/light/en_home_pic3.png and /dev/null differ diff --git a/public/site/img/light/en_home_pic4.png b/public/site/img/light/en_home_pic4.png deleted file mode 100644 index addc1b431..000000000 Binary files a/public/site/img/light/en_home_pic4.png and /dev/null differ diff --git a/public/site/img/light/en_home_pic5.png b/public/site/img/light/en_home_pic5.png deleted file mode 100644 index 6e20e555b..000000000 Binary files a/public/site/img/light/en_home_pic5.png and /dev/null differ diff --git a/public/site/img/light/en_home_pic6.png b/public/site/img/light/en_home_pic6.png deleted file mode 100644 index 2ce730a05..000000000 Binary files a/public/site/img/light/en_home_pic6.png and /dev/null differ diff --git a/public/site/img/light/en_product_pic11.png b/public/site/img/light/en_product_pic11.png deleted file mode 100644 index 3050cc7b9..000000000 Binary files a/public/site/img/light/en_product_pic11.png and /dev/null differ diff --git a/public/site/img/light/en_solution_pic1.png b/public/site/img/light/en_solution_pic1.png deleted file mode 100644 index a84369b78..000000000 Binary files a/public/site/img/light/en_solution_pic1.png and /dev/null differ diff --git a/public/site/img/light/en_solution_pic2.png b/public/site/img/light/en_solution_pic2.png deleted file mode 100644 index 5daae671a..000000000 Binary files a/public/site/img/light/en_solution_pic2.png and /dev/null differ diff --git a/public/site/img/light/en_solution_pic3.png b/public/site/img/light/en_solution_pic3.png deleted file mode 100644 index b94ef45fb..000000000 Binary files a/public/site/img/light/en_solution_pic3.png and /dev/null differ diff --git a/public/site/img/light/help_pic11.svg b/public/site/img/light/help_pic11.svg deleted file mode 100644 index ca8b360f9..000000000 --- a/public/site/img/light/help_pic11.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/site/img/light/help_pic2.png b/public/site/img/light/help_pic2.png deleted file mode 100644 index f70ec96a6..000000000 Binary files a/public/site/img/light/help_pic2.png and /dev/null differ diff --git a/public/site/img/light/help_pic3.png b/public/site/img/light/help_pic3.png deleted file mode 100644 index 07c647016..000000000 Binary files a/public/site/img/light/help_pic3.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task1.png b/public/site/img/light/help_pic_creat_task1.png deleted file mode 100644 index 7ab1a6999..000000000 Binary files a/public/site/img/light/help_pic_creat_task1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task10.png b/public/site/img/light/help_pic_creat_task10.png deleted file mode 100644 index 3270e6848..000000000 Binary files a/public/site/img/light/help_pic_creat_task10.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task2.png b/public/site/img/light/help_pic_creat_task2.png deleted file mode 100644 index 2ce88362d..000000000 Binary files a/public/site/img/light/help_pic_creat_task2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task3.png b/public/site/img/light/help_pic_creat_task3.png deleted file mode 100644 index c32ebc0ef..000000000 Binary files a/public/site/img/light/help_pic_creat_task3.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task4.png b/public/site/img/light/help_pic_creat_task4.png deleted file mode 100644 index 5123ba5f8..000000000 Binary files a/public/site/img/light/help_pic_creat_task4.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task5.png b/public/site/img/light/help_pic_creat_task5.png deleted file mode 100644 index 57dec4410..000000000 Binary files a/public/site/img/light/help_pic_creat_task5.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task6.png b/public/site/img/light/help_pic_creat_task6.png deleted file mode 100644 index ec8e81a77..000000000 Binary files a/public/site/img/light/help_pic_creat_task6.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task7.png b/public/site/img/light/help_pic_creat_task7.png deleted file mode 100644 index 649e00ae4..000000000 Binary files a/public/site/img/light/help_pic_creat_task7.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task8.png b/public/site/img/light/help_pic_creat_task8.png deleted file mode 100644 index 2e1f35296..000000000 Binary files a/public/site/img/light/help_pic_creat_task8.png and /dev/null differ diff --git a/public/site/img/light/help_pic_creat_task9.png b/public/site/img/light/help_pic_creat_task9.png deleted file mode 100644 index a1c7dcc51..000000000 Binary files a/public/site/img/light/help_pic_creat_task9.png and /dev/null differ diff --git a/public/site/img/light/help_pic_file1.png b/public/site/img/light/help_pic_file1.png deleted file mode 100644 index 6d620ba4c..000000000 Binary files a/public/site/img/light/help_pic_file1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_file2.png b/public/site/img/light/help_pic_file2.png deleted file mode 100644 index af1d54452..000000000 Binary files a/public/site/img/light/help_pic_file2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_file3.png b/public/site/img/light/help_pic_file3.png deleted file mode 100644 index bda98796b..000000000 Binary files a/public/site/img/light/help_pic_file3.png and /dev/null differ diff --git a/public/site/img/light/help_pic_file4.png b/public/site/img/light/help_pic_file4.png deleted file mode 100644 index e2dd8634c..000000000 Binary files a/public/site/img/light/help_pic_file4.png and /dev/null differ diff --git a/public/site/img/light/help_pic_file5.png b/public/site/img/light/help_pic_file5.png deleted file mode 100644 index d4f83dded..000000000 Binary files a/public/site/img/light/help_pic_file5.png and /dev/null differ diff --git a/public/site/img/light/help_pic_login1.png b/public/site/img/light/help_pic_login1.png deleted file mode 100644 index eb0e4a975..000000000 Binary files a/public/site/img/light/help_pic_login1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_login2.png b/public/site/img/light/help_pic_login2.png deleted file mode 100644 index 852aa9acf..000000000 Binary files a/public/site/img/light/help_pic_login2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_login3.png b/public/site/img/light/help_pic_login3.png deleted file mode 100644 index b1111380d..000000000 Binary files a/public/site/img/light/help_pic_login3.png and /dev/null differ diff --git a/public/site/img/light/help_pic_new_project1.png b/public/site/img/light/help_pic_new_project1.png deleted file mode 100644 index 26b04ace4..000000000 Binary files a/public/site/img/light/help_pic_new_project1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_new_project2.png b/public/site/img/light/help_pic_new_project2.png deleted file mode 100644 index 8523e9319..000000000 Binary files a/public/site/img/light/help_pic_new_project2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_new_project3.png b/public/site/img/light/help_pic_new_project3.png deleted file mode 100644 index baa1691d8..000000000 Binary files a/public/site/img/light/help_pic_new_project3.png and /dev/null differ diff --git a/public/site/img/light/help_pic_new_project4.png b/public/site/img/light/help_pic_new_project4.png deleted file mode 100644 index d8aad5fa2..000000000 Binary files a/public/site/img/light/help_pic_new_project4.png and /dev/null differ diff --git a/public/site/img/light/help_pic_new_project5.png b/public/site/img/light/help_pic_new_project5.png deleted file mode 100644 index eb12ef1de..000000000 Binary files a/public/site/img/light/help_pic_new_project5.png and /dev/null differ diff --git a/public/site/img/light/help_pic_new_project6.png b/public/site/img/light/help_pic_new_project6.png deleted file mode 100644 index c4c96a6ab..000000000 Binary files a/public/site/img/light/help_pic_new_project6.png and /dev/null differ diff --git a/public/site/img/light/help_pic_new_project7.png b/public/site/img/light/help_pic_new_project7.png deleted file mode 100644 index 7e360f370..000000000 Binary files a/public/site/img/light/help_pic_new_project7.png and /dev/null differ diff --git a/public/site/img/light/help_pic_note1.png b/public/site/img/light/help_pic_note1.png deleted file mode 100644 index ca06c630f..000000000 Binary files a/public/site/img/light/help_pic_note1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_note2.png b/public/site/img/light/help_pic_note2.png deleted file mode 100644 index 9d35d094e..000000000 Binary files a/public/site/img/light/help_pic_note2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_register1.png b/public/site/img/light/help_pic_register1.png deleted file mode 100644 index fad1dbc49..000000000 Binary files a/public/site/img/light/help_pic_register1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_register2.png b/public/site/img/light/help_pic_register2.png deleted file mode 100644 index c0279cf05..000000000 Binary files a/public/site/img/light/help_pic_register2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set1.png b/public/site/img/light/help_pic_set1.png deleted file mode 100644 index c4650889a..000000000 Binary files a/public/site/img/light/help_pic_set1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set2.png b/public/site/img/light/help_pic_set2.png deleted file mode 100644 index 7fa80a85f..000000000 Binary files a/public/site/img/light/help_pic_set2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set3.png b/public/site/img/light/help_pic_set3.png deleted file mode 100644 index db5ed3688..000000000 Binary files a/public/site/img/light/help_pic_set3.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set4.png b/public/site/img/light/help_pic_set4.png deleted file mode 100644 index 8ebc8e10c..000000000 Binary files a/public/site/img/light/help_pic_set4.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set5.png b/public/site/img/light/help_pic_set5.png deleted file mode 100644 index c138450f9..000000000 Binary files a/public/site/img/light/help_pic_set5.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set6.png b/public/site/img/light/help_pic_set6.png deleted file mode 100644 index 8f1d96a19..000000000 Binary files a/public/site/img/light/help_pic_set6.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set7.png b/public/site/img/light/help_pic_set7.png deleted file mode 100644 index a058c9356..000000000 Binary files a/public/site/img/light/help_pic_set7.png and /dev/null differ diff --git a/public/site/img/light/help_pic_set8.png b/public/site/img/light/help_pic_set8.png deleted file mode 100644 index 0701cd9e8..000000000 Binary files a/public/site/img/light/help_pic_set8.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team1.png b/public/site/img/light/help_pic_team1.png deleted file mode 100644 index b5bfdae2a..000000000 Binary files a/public/site/img/light/help_pic_team1.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team10.png b/public/site/img/light/help_pic_team10.png deleted file mode 100644 index 43520ebcd..000000000 Binary files a/public/site/img/light/help_pic_team10.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team11.png b/public/site/img/light/help_pic_team11.png deleted file mode 100644 index 2e91a7f52..000000000 Binary files a/public/site/img/light/help_pic_team11.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team12.png b/public/site/img/light/help_pic_team12.png deleted file mode 100644 index defa03760..000000000 Binary files a/public/site/img/light/help_pic_team12.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team13.png b/public/site/img/light/help_pic_team13.png deleted file mode 100644 index 2da3a736f..000000000 Binary files a/public/site/img/light/help_pic_team13.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team14.png b/public/site/img/light/help_pic_team14.png deleted file mode 100644 index d75432ba5..000000000 Binary files a/public/site/img/light/help_pic_team14.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team15.png b/public/site/img/light/help_pic_team15.png deleted file mode 100644 index 0afcb74f9..000000000 Binary files a/public/site/img/light/help_pic_team15.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team2.png b/public/site/img/light/help_pic_team2.png deleted file mode 100644 index b36fcd370..000000000 Binary files a/public/site/img/light/help_pic_team2.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team3.png b/public/site/img/light/help_pic_team3.png deleted file mode 100644 index 1dd1f50ff..000000000 Binary files a/public/site/img/light/help_pic_team3.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team4.png b/public/site/img/light/help_pic_team4.png deleted file mode 100644 index 729eec0e4..000000000 Binary files a/public/site/img/light/help_pic_team4.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team5.png b/public/site/img/light/help_pic_team5.png deleted file mode 100644 index 82a7891e1..000000000 Binary files a/public/site/img/light/help_pic_team5.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team6.png b/public/site/img/light/help_pic_team6.png deleted file mode 100644 index df59ce937..000000000 Binary files a/public/site/img/light/help_pic_team6.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team7.png b/public/site/img/light/help_pic_team7.png deleted file mode 100644 index 8d8d8cf6a..000000000 Binary files a/public/site/img/light/help_pic_team7.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team8.png b/public/site/img/light/help_pic_team8.png deleted file mode 100644 index 67d38b137..000000000 Binary files a/public/site/img/light/help_pic_team8.png and /dev/null differ diff --git a/public/site/img/light/help_pic_team9.png b/public/site/img/light/help_pic_team9.png deleted file mode 100644 index 56f039bfa..000000000 Binary files a/public/site/img/light/help_pic_team9.png and /dev/null differ diff --git a/public/site/img/light/home_code.svg b/public/site/img/light/home_code.svg deleted file mode 100644 index 9bba95757..000000000 --- a/public/site/img/light/home_code.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/site/img/light/home_icon1.png b/public/site/img/light/home_icon1.png deleted file mode 100644 index f0e856339..000000000 Binary files a/public/site/img/light/home_icon1.png and /dev/null differ diff --git a/public/site/img/light/home_icon2.png b/public/site/img/light/home_icon2.png deleted file mode 100644 index f310a8c4f..000000000 Binary files a/public/site/img/light/home_icon2.png and /dev/null differ diff --git a/public/site/img/light/home_icon3.png b/public/site/img/light/home_icon3.png deleted file mode 100644 index ed443d251..000000000 Binary files a/public/site/img/light/home_icon3.png and /dev/null differ diff --git a/public/site/img/light/home_icon4.png b/public/site/img/light/home_icon4.png deleted file mode 100644 index 9db25f277..000000000 Binary files a/public/site/img/light/home_icon4.png and /dev/null differ diff --git a/public/site/img/light/home_pic7.svg b/public/site/img/light/home_pic7.svg deleted file mode 100644 index 0a2f6de87..000000000 --- a/public/site/img/light/home_pic7.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/home_pic7_768.svg b/public/site/img/light/home_pic7_768.svg deleted file mode 100644 index 2017468d1..000000000 --- a/public/site/img/light/home_pic7_768.svg +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/logo.svg b/public/site/img/light/logo.svg deleted file mode 100644 index ea93b08f1..000000000 --- a/public/site/img/light/logo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic1.svg b/public/site/img/light/product_pic1.svg deleted file mode 100644 index 195695159..000000000 --- a/public/site/img/light/product_pic1.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic10.svg b/public/site/img/light/product_pic10.svg deleted file mode 100644 index bbd18aa75..000000000 --- a/public/site/img/light/product_pic10.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/site/img/light/product_pic2.svg b/public/site/img/light/product_pic2.svg deleted file mode 100644 index 8a6a494e0..000000000 --- a/public/site/img/light/product_pic2.svg +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic3.svg b/public/site/img/light/product_pic3.svg deleted file mode 100644 index f2899b249..000000000 --- a/public/site/img/light/product_pic3.svg +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic4.svg b/public/site/img/light/product_pic4.svg deleted file mode 100644 index 309450e37..000000000 --- a/public/site/img/light/product_pic4.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic5.svg b/public/site/img/light/product_pic5.svg deleted file mode 100644 index f95660938..000000000 --- a/public/site/img/light/product_pic5.svg +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic6.svg b/public/site/img/light/product_pic6.svg deleted file mode 100644 index bdcdaa1a1..000000000 --- a/public/site/img/light/product_pic6.svg +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic7.svg b/public/site/img/light/product_pic7.svg deleted file mode 100644 index 60ed8eaa3..000000000 --- a/public/site/img/light/product_pic7.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic8.svg b/public/site/img/light/product_pic8.svg deleted file mode 100644 index f35a8dbca..000000000 --- a/public/site/img/light/product_pic8.svg +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/product_pic9.svg b/public/site/img/light/product_pic9.svg deleted file mode 100644 index ea37e71ff..000000000 --- a/public/site/img/light/product_pic9.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/site/img/light/solution_pic4.png b/public/site/img/light/solution_pic4.png deleted file mode 100644 index e9ec30a34..000000000 Binary files a/public/site/img/light/solution_pic4.png and /dev/null differ diff --git a/public/site/img/light/zh_dow_pic1.png b/public/site/img/light/zh_dow_pic1.png deleted file mode 100644 index a4cc0889a..000000000 Binary files a/public/site/img/light/zh_dow_pic1.png and /dev/null differ diff --git a/public/site/img/light/zh_home_pic1.png b/public/site/img/light/zh_home_pic1.png deleted file mode 100644 index 65843d707..000000000 Binary files a/public/site/img/light/zh_home_pic1.png and /dev/null differ diff --git a/public/site/img/light/zh_home_pic2.png b/public/site/img/light/zh_home_pic2.png deleted file mode 100644 index 6c1e7bdbe..000000000 Binary files a/public/site/img/light/zh_home_pic2.png and /dev/null differ diff --git a/public/site/img/light/zh_home_pic3.png b/public/site/img/light/zh_home_pic3.png deleted file mode 100644 index b7737fe75..000000000 Binary files a/public/site/img/light/zh_home_pic3.png and /dev/null differ diff --git a/public/site/img/light/zh_home_pic4.png b/public/site/img/light/zh_home_pic4.png deleted file mode 100644 index 9b14ab251..000000000 Binary files a/public/site/img/light/zh_home_pic4.png and /dev/null differ diff --git a/public/site/img/light/zh_home_pic5.png b/public/site/img/light/zh_home_pic5.png deleted file mode 100644 index b631d7e99..000000000 Binary files a/public/site/img/light/zh_home_pic5.png and /dev/null differ diff --git a/public/site/img/light/zh_home_pic6.png b/public/site/img/light/zh_home_pic6.png deleted file mode 100644 index 73a351ce2..000000000 Binary files a/public/site/img/light/zh_home_pic6.png and /dev/null differ diff --git a/public/site/img/light/zh_product_pic11.png b/public/site/img/light/zh_product_pic11.png deleted file mode 100644 index 33eaf4758..000000000 Binary files a/public/site/img/light/zh_product_pic11.png and /dev/null differ diff --git a/public/site/img/light/zh_solution_pic1.png b/public/site/img/light/zh_solution_pic1.png deleted file mode 100644 index 2ab624a79..000000000 Binary files a/public/site/img/light/zh_solution_pic1.png and /dev/null differ diff --git a/public/site/img/light/zh_solution_pic2.png b/public/site/img/light/zh_solution_pic2.png deleted file mode 100644 index 5b6ab33d8..000000000 Binary files a/public/site/img/light/zh_solution_pic2.png and /dev/null differ diff --git a/public/site/img/light/zh_solution_pic3.png b/public/site/img/light/zh_solution_pic3.png deleted file mode 100644 index 5ea2c1b3f..000000000 Binary files a/public/site/img/light/zh_solution_pic3.png and /dev/null differ diff --git a/public/site/img/loading.png b/public/site/img/loading.png deleted file mode 100644 index e9ec5e714..000000000 Binary files a/public/site/img/loading.png and /dev/null differ diff --git a/public/site/img/logo_y.svg b/public/site/img/logo_y.svg deleted file mode 100644 index abbfabdc5..000000000 --- a/public/site/img/logo_y.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/menu.svg b/public/site/img/menu.svg deleted file mode 100644 index dec5de1d7..000000000 --- a/public/site/img/menu.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/next.svg b/public/site/img/next.svg deleted file mode 100644 index 295277f0b..000000000 --- a/public/site/img/next.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/prev.svg b/public/site/img/prev.svg deleted file mode 100644 index 051af887d..000000000 --- a/public/site/img/prev.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/price_icon1.svg b/public/site/img/price_icon1.svg deleted file mode 100644 index 47df1f81b..000000000 --- a/public/site/img/price_icon1.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/public/site/img/price_icon2.svg b/public/site/img/price_icon2.svg deleted file mode 100644 index 62a2ec657..000000000 --- a/public/site/img/price_icon2.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/public/site/img/product_icon1.svg b/public/site/img/product_icon1.svg deleted file mode 100644 index a6ffa9a69..000000000 --- a/public/site/img/product_icon1.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/public/site/img/product_icons0.svg b/public/site/img/product_icons0.svg deleted file mode 100644 index f963d4d3b..000000000 --- a/public/site/img/product_icons0.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_icons0_h.svg b/public/site/img/product_icons0_h.svg deleted file mode 100644 index 1166326c7..000000000 --- a/public/site/img/product_icons0_h.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_icons1.svg b/public/site/img/product_icons1.svg deleted file mode 100644 index 53b1f7609..000000000 --- a/public/site/img/product_icons1.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/site/img/product_icons1_h.svg b/public/site/img/product_icons1_h.svg deleted file mode 100644 index adf1716cb..000000000 --- a/public/site/img/product_icons1_h.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/site/img/product_icons2.svg b/public/site/img/product_icons2.svg deleted file mode 100644 index 658a91e80..000000000 --- a/public/site/img/product_icons2.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_icons2_h.svg b/public/site/img/product_icons2_h.svg deleted file mode 100644 index 0f6cf7604..000000000 --- a/public/site/img/product_icons2_h.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_icons3.svg b/public/site/img/product_icons3.svg deleted file mode 100644 index 6e4d1efeb..000000000 --- a/public/site/img/product_icons3.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_icons3_h.svg b/public/site/img/product_icons3_h.svg deleted file mode 100644 index aa3961a41..000000000 --- a/public/site/img/product_icons3_h.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_icons4.svg b/public/site/img/product_icons4.svg deleted file mode 100644 index c2e2b1a8e..000000000 --- a/public/site/img/product_icons4.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/site/img/product_icons4_h.svg b/public/site/img/product_icons4_h.svg deleted file mode 100644 index 45f3603d5..000000000 --- a/public/site/img/product_icons4_h.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/site/img/product_icons5.svg b/public/site/img/product_icons5.svg deleted file mode 100644 index c50c67f77..000000000 --- a/public/site/img/product_icons5.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/public/site/img/product_icons5_h.svg b/public/site/img/product_icons5_h.svg deleted file mode 100644 index c60ad525b..000000000 --- a/public/site/img/product_icons5_h.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/public/site/img/product_icons6.svg b/public/site/img/product_icons6.svg deleted file mode 100644 index 3c2a67036..000000000 --- a/public/site/img/product_icons6.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/public/site/img/product_icons6_h.svg b/public/site/img/product_icons6_h.svg deleted file mode 100644 index e4744a168..000000000 --- a/public/site/img/product_icons6_h.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/public/site/img/product_icons7.svg b/public/site/img/product_icons7.svg deleted file mode 100644 index 565fae137..000000000 --- a/public/site/img/product_icons7.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/public/site/img/product_icons7_h.svg b/public/site/img/product_icons7_h.svg deleted file mode 100644 index 8ab74aee5..000000000 --- a/public/site/img/product_icons7_h.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/public/site/img/product_icons8.svg b/public/site/img/product_icons8.svg deleted file mode 100644 index 4ed9ee6ff..000000000 --- a/public/site/img/product_icons8.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_icons8_h.svg b/public/site/img/product_icons8_h.svg deleted file mode 100644 index c9b0c4722..000000000 --- a/public/site/img/product_icons8_h.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/product_subtract.svg b/public/site/img/product_subtract.svg deleted file mode 100644 index 31c5d0d6b..000000000 --- a/public/site/img/product_subtract.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/img/qq_code.jpg b/public/site/img/qq_code.jpg deleted file mode 100644 index 2640e860e..000000000 Binary files a/public/site/img/qq_code.jpg and /dev/null differ diff --git a/public/site/img/search-icon.svg b/public/site/img/search-icon.svg deleted file mode 100644 index 4e73c09da..000000000 --- a/public/site/img/search-icon.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/public/site/img/side_nav_wechat.png b/public/site/img/side_nav_wechat.png deleted file mode 100644 index c92250bf5..000000000 Binary files a/public/site/img/side_nav_wechat.png and /dev/null differ diff --git a/public/site/img/side_nav_whatsapp.png b/public/site/img/side_nav_whatsapp.png deleted file mode 100644 index b4d81d3ce..000000000 Binary files a/public/site/img/side_nav_whatsapp.png and /dev/null differ diff --git a/public/site/img/solution_icon1.svg b/public/site/img/solution_icon1.svg deleted file mode 100644 index 102bd1d25..000000000 --- a/public/site/img/solution_icon1.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/site/img/solution_icon2.svg b/public/site/img/solution_icon2.svg deleted file mode 100644 index c6f567931..000000000 --- a/public/site/img/solution_icon2.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/site/img/solution_icon3.svg b/public/site/img/solution_icon3.svg deleted file mode 100644 index 7a68a1a3e..000000000 --- a/public/site/img/solution_icon3.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/public/site/img/vector.svg b/public/site/img/vector.svg deleted file mode 100644 index c6d32b28b..000000000 --- a/public/site/img/vector.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/site/index.html b/public/site/index.html deleted file mode 100644 index f5853cb71..000000000 --- a/public/site/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - diff --git a/public/site/js/ad.js b/public/site/js/ad.js deleted file mode 100644 index e607ab1f7..000000000 --- a/public/site/js/ad.js +++ /dev/null @@ -1,828 +0,0 @@ -// 根据窗口宽度设置广告栏高度 -let adBarHeight = window?.innerWidth <= 768 ? 48 : 64; -const adBarHeightPX = `${adBarHeight}px`; - -// 当DOM加载完成时执行 -document.addEventListener("DOMContentLoaded", function () { - // 获取当前页面路径 - const currentPath = window.location.pathname; - // 判断是否为广告页面 - const isAdPage = currentPath.endsWith("/ad.html"); - - // 获取URL对象 - const url = new URL(window.location.href); - // 分割路径 - const pathSegments = url.pathname.split("/"); - // 确定语言 - const language = pathSegments.includes("zh") - ? "zh" - : pathSegments.includes("en") - ? "en" - : "zh"; - - if (isAdPage) { - // 如果是广告页面,设置导航背景色并获取广告计划和介绍 - setNavBackgroundColor(); - fetchAdBanner(language); - fetchAdPlan(language); - fetchAdIntro(language); - - manageAnimate(); - - handleDialog(); - } else { - // 如果不是广告页面,插入广告样式表并获取广告栏 - insertAdStylesheet(); - fetchAdBar(language); - } -}); - -// 初始化广告栏 -function initializeAdBar() { - displayAdBar(); - adjustNavPosition("down"); - - // 添加关闭广告栏的事件监听器 - const closeAdBarButton = document.getElementById("ad-close"); - closeAdBarButton.addEventListener("click", () => { - hideAdBar(); - adjustNavPosition("up"); - }); -} - -// 显示广告栏 -function displayAdBar() { - const adWrapper = document.getElementById("ad"); - if (!adWrapper) return; - adWrapper.style.height = adBarHeightPX; - adWrapper.style.display = "block"; - - // 调整头部元素的边距 - const headerEl = document.getElementsByTagName("header")[0]; - if (!headerEl) return; - headerEl.style.marginTop = adBarHeightPX; -} - -// 隐藏广告栏 -function hideAdBar() { - const adWrapper = document.getElementById("ad"); - if (!adWrapper) return; - adWrapper.style.height = "0px"; - adWrapper.style.display = "none"; - - // 重置头部元素的边距 - const headerEl = document.getElementsByTagName("header")[0]; - if (!headerEl) return; - headerEl.style.marginTop = "0px"; -} - -// 调整导航栏位置 -function adjustNavPosition(direction) { - const navWrapper = document.getElementsByClassName("nav")[0]; - navWrapper.style.top = direction === "down" ? adBarHeightPX : "0"; -} - -// 获取广告栏数据 -function fetchAdBar(language) { - const apiUrl = `https://cms.hitosea.com/api/doo-task-ad-bar?locale=${language}&populate[0]=background`; - fetchData(apiUrl) - .then(({ data: { attributes } }) => { - updateAdBar(attributes); - }) - .catch(handleError); -} - -// 获取广告banner数据 -function fetchAdBanner(language) { - const query = window.Qs.stringify( - { - locale: language, - populate: { - title: { - populate: "*", - }, - description: { - populate: "*", - }, - background: { - populate: "*", - }, - underline: { - populate: "*", - }, - signUpButton: { - populate: "*", - }, - selfHostButton: { - populate: "*", - }, - localizations: { - populate: "*", - }, - }, - }, - { - encodeValuesOnly: true, - } - ); - const apiUrl = `https://cms.hitosea.com/api/doo-task-ad-banner?${query}`; - fetchData(apiUrl).then(handleAdBannerResponse).catch(handleError); -} - -// 获取广告计划数据 -function fetchAdPlan(language) { - const query = window.Qs.stringify({ - locale: language, - populate: { - plans: { - populate: { - price: { - populate: "*", - }, - button: { - populate: "*", - }, - features: { - populate: "*", - }, - }, - }, - }, - }); - const apiUrl = `https://cms.hitosea.com/api/doo-task-ad-plan?${query}`; - fetchData(apiUrl).then(handleAdPlanResponse).catch(handleError); -} - -// 获取广告介绍数据 -function fetchAdIntro(language) { - const query = window.Qs.stringify({ - locale: language, - populate: { - intros: { - populate: { - bar: { - populate: "*", - }, - cover: { - populate: "*", - }, - title: { - populate: "*", - }, - description: { - populate: "*", - }, - }, - }, - }, - }); - const apiUrl = `https://cms.hitosea.com/api/doo-task-ad-intro?${query}`; - fetchData(apiUrl).then(handleAdIntroResponse).catch(handleError); -} - -// 通用数据获取函数 -function fetchData(url) { - return fetch(url).then((response) => response.json()); -} - -function getMediaUrl(media) { - if (!media?.data?.attributes?.url) { - return ""; - } - return `https://cms.hitosea.com${media.data.attributes.url}`; -} - -function getStyle(style) { - if (!style) return null; - return Object.keys(style) - .map((key) => `${key}: ${style[key]}`) - .join("; "); -} - -// 处理广告banner响应 -function handleAdBannerResponse(response) { - // 在此实现广告banner处理逻辑 - try { - const { - data: { - attributes: { - title, - description, - background, - underline, - signUpButton, - selfHostButton, - }, - }, - } = response; - handleAdBannerTitle(title); - handleAdBannerDescription(description); - handleAdBannerBackground(background); - handleAdBannerUnderline(underline); - handleAdBannerSignUpButton(signUpButton); - handleAdBannerSelfHostButton(selfHostButton); - } catch (error) { - console.error("处理广告banner响应时出错:", error); - } -} - -function handleAdBannerTitle(title) { - const titleText = {}; - if (Array.isArray(title)) { - title.forEach((item) => { - titleText[item.key] = { text: item.text, style: item.style }; - }); - } - const titlePart1El = document.getElementById("ad-banner-title-part1"); - const titlePart2El = document.getElementById("ad-banner-title-part2"); - const titlePart3El = document.getElementById("ad-banner-title-part3"); - if (titlePart1El && titleText["part1"]) { - titlePart1El.textContent = titleText["part1"].text; - titlePart1El.style = getStyle(titleText["part1"].style); - } - if (titlePart2El && titleText["part2"]) { - titlePart2El.textContent = titleText["part2"].text; - titlePart2El.style = getStyle(titleText["part2"].style); - } - if (titlePart3El && titleText["part3"]) { - titlePart3El.textContent = titleText["part3"].text; - titlePart3El.style = getStyle(titleText["part3"].style); - } -} - -function handleAdBannerDescription(description) { - const descriptionText = { - text: description.text, - style: description.style, - }; - const descriptionEl = document.getElementById("ad-banner-description"); - if (descriptionEl && descriptionText.text) { - descriptionEl.textContent = descriptionText.text; - descriptionEl.style = getStyle(descriptionText.style); - } -} - -function handleAdBannerBackground(background) { - const backgroundUrl = getMediaUrl(background); - const adBannerEl = document.getElementById("ad-banner"); - - if (adBannerEl && backgroundUrl) { - adBannerEl.style.backgroundImage = `url(${backgroundUrl})`; - } -} - -function handleAdBannerUnderline(underline) { - const underlineUrl = getMediaUrl(underline); - const adBannerTitleUnderlineEl = document.getElementById( - "ad-banner-title-underline" - ); - if (adBannerTitleUnderlineEl && underlineUrl) { - adBannerTitleUnderlineEl.innerHTML = `underline`; - } -} - -function handleAdBannerSignUpButton({ - theme, - style, - link: { label, href, target, slug }, -}) { - const signUpButtonEl = document.getElementById("ad-banner-sign-up-button"); - if (signUpButtonEl) { - signUpButtonEl.innerHTML = ` - - - `; - signUpButtonEl.style = getStyle(style); - } -} - -function handleAdBannerSelfHostButton({ - theme, - style, - link: { label, href, target, slug }, -}) { - const selfHostButtonEl = document.getElementById( - "ad-banner-self-host-button" - ); - if (selfHostButtonEl) { - if (href === "#") { - selfHostButtonEl.innerHTML = ` - - - `; - function showDialog(e) { - e.preventDefault(); - e.stopPropagation(); - - const dialogEl = document.querySelector(".ad-dialog"); - if (!dialogEl) return; - dialogEl.classList.add("show"); - lockBodyScroll(true); - handleDialogAnimate(true) - } - selfHostButtonEl.addEventListener("click", showDialog); - } else { - selfHostButtonEl.innerHTML = ` - - - `; - } - selfHostButtonEl.style = getStyle(style); - } -} - -// 处理广告计划响应 -function handleAdPlanResponse(response) { - // 在此实现广告计划处理逻辑 - try { - const { - data: { - attributes: { title, description, plans }, - }, - } = response; - handleAdPlanTitle(title); - handleAdPlanDescription(description); - handleAdPlanPlans(plans); - } catch (error) { - console.error("处理广告计划响应时出错:", error); - } -} - -function handleAdPlanTitle(title) { - const planTitleEl = document.getElementById("ad-plan-title"); - if (planTitleEl && title) { - planTitleEl.textContent = title; - } -} - -function handleAdPlanDescription(description) { - const planDescriptionEl = document.getElementById("ad-plan-description"); - if (planDescriptionEl && description) { - planDescriptionEl.textContent = description; - } -} - -async function handleAdPlanPlans(plans) { - const planContentEl = document.getElementById("ad-plan-content"); - if (planContentEl && Array.isArray(plans)) { - const prevPlanItems = planContentEl.querySelectorAll(".plan-item"); - - for (const prevPlanItem of prevPlanItems) { - prevPlanItem.classList.add( - "animate__animated", - "animate__backOutDown" - ); - prevPlanItem.addEventListener( - "animationend", - () => { - prevPlanItem.remove(); - }, - { once: true } - ); - } - - plans.sort((a, b) => a.priority - b.priority); - for (const plan of plans) { - const planItemEl = document.createElement("div"); - planItemEl.className = `plan-item ${plan.activated ? "active" : "" - }`; - planItemEl.innerHTML = ` - ${plan.tag ? `
      ${plan.tag}
      ` : ""} -
      - ${plan.title} -
      -
      - - ${plan.price.current} - - ${plan.price.payment ?? ""} - - - - ${plan.price.original ?? ""} - -
      -
      - - - -
      -
      - -
      - `; - planContentEl.appendChild(planItemEl); - planItemEl.classList.add( - "animate__animated", - "animate__backInUp", - "animate__faster", - "animate__delay-1s" - ); - couldAdPlanElAnimate[`${plan.id}`] = false; - planItemEl.addEventListener( - "animationend", - () => { - planItemEl.classList.remove( - "animate__backInUp", - "animate__faster", - "animate__delay-1s" - ); - couldAdPlanElAnimate[`${plan.id}`] = true; - }, - { once: true } - ); - - await new Promise((resolve) => { - setTimeout(resolve, 150); - }); - } - - overridePlanButton(); - } -} - -// 处理广告介绍响应 -function handleAdIntroResponse(response) { - try { - const { - data: { - attributes: { title, description, intros }, - }, - } = response; - handleAdIntroTitle(title); - handleAdIntroDescription(description); - handleAdIntroIntros(intros); - } catch (error) { - console.error("处理广告介绍响应时出错:", error); - } -} - -function handleAdIntroTitle(title) { - const introTitleEl = document.getElementById("ad-intro-title"); - if (introTitleEl && title) { - introTitleEl.textContent = title; - } -} - -function handleAdIntroDescription(description) { - const introDescriptionEl = document.getElementById("ad-intro-description"); - if (introDescriptionEl && description) { - introDescriptionEl.textContent = description; - } -} - -async function handleAdIntroIntros(intros) { - const introContentEl = document.getElementById("ad-intro-content"); - if (introContentEl && Array.isArray(intros)) { - const prevIntroItems = - introContentEl.querySelectorAll(".ad-intro-item"); - for (const prevIntroItem of prevIntroItems) { - prevIntroItem.classList.add( - "animate__animated", - "animate__zoomOut" - ); - prevIntroItem.addEventListener( - "animationend", - () => { - prevIntroItem.remove(); - }, - { once: true } - ); - } - - intros.sort((a, b) => a.priority - b.priority); - - for (const intro of intros) { - const introItemEl = document.createElement("div"); - const barUrl = intro.bar.data - ? getMediaUrl(intro.bar) - : "../img/ad/intro-card-head.png"; - const coverUrl = intro.cover.data - ? getMediaUrl(intro.cover) - : `../img/ad/intro-card-img${intro.priority + 1}.svg`; - introItemEl.className = "ad-intro-item"; - introItemEl.innerHTML = ` -
      - intro-bar -
      -
      - intro-cover -
      -
      - ${intro.title} -
      -
      - ${intro.description} -
      - `; - introContentEl.appendChild(introItemEl); - introItemEl.classList.add( - "animate__animated", - "animate__zoomIn", - "animate__delay-1s" - ); - couldAdIntroElAnimate[`${intro.id}`] = false; - - introItemEl.addEventListener( - "animationend", - () => { - introItemEl.classList.remove( - "animate__zoomIn", - "animate__delay-1s" - ); - couldAdIntroElAnimate[`${intro.id}`] = true; - }, - { once: true } - ); - await new Promise((resolve) => { - setTimeout(resolve, 150); - }); - } - } -} - -// 错误处理函数 -function handleError(error) { - console.error("获取数据时出错:", error); -} - -// 插入广告栏元素 -function insertAdBarElement() { - const adBarHTML = ` - - `; - const headerElement = document.getElementsByTagName("header")[0]; - if (headerElement) { - headerElement.insertAdjacentHTML("afterbegin", adBarHTML); - } - - // 添加广告按钮点击事件 - const adButton = document.getElementById("ad-btn"); - if (adButton) { - adButton.addEventListener("click", () => { - window.location.href = "ad.html"; - }); - } -} - -// 插入广告样式表 -function insertAdStylesheet() { - const adStylesheet = document.createElement("link"); - adStylesheet.rel = "stylesheet"; - adStylesheet.type = "text/css"; - adStylesheet.href = "../css/ad.css"; - document.head.appendChild(adStylesheet); -} - -// 更新广告栏内容 -function updateAdBar({ background, text, buttonText }) { - insertAdBarElement(); - - const adWrapper = document.getElementById("ad"); - if (!adWrapper) return; - - // 设置背景图片 - const backgroundUrl = background?.data?.attributes?.url; - if (backgroundUrl) { - adWrapper.style.backgroundImage = `url(https://cms.hitosea.com${backgroundUrl})`; - } - - // 更新文本内容 - const textElement = adWrapper.querySelector(".ad-text"); - if (textElement) { - textElement.textContent = text; - } - - // 更新按钮文本 - const buttonElement = adWrapper.querySelector(".ad-btn"); - if (buttonElement) { - buttonElement.textContent = buttonText; - } - - initializeAdBar(); -} - -// 设置导航栏背景颜色 -function setNavBackgroundColor() { - const navWrapper = document.getElementsByClassName("nav")[0]; - navWrapper.style.backgroundColor = "#fff"; -} - -// 管理动画 -function manageAnimate() { - let throttleTimer = null; - const throttle = (callback, time) => { - if (throttleTimer) return; - throttleTimer = true; - setTimeout(() => { - callback(); - throttleTimer = false; - }, time); - }; - - window.addEventListener("scroll", () => { - throttle(() => { - detectAdPlanEl(); - detectAdIntroEl(); - }, 200); - }); -} - -const couldAdPlanElAnimate = {}; -const couldAdIntroElAnimate = {}; - -function detectAdPlanEl() { - const adPlanEl = document.querySelector(".ad-plan"); - if (isElementOutOfViewport(adPlanEl)) { - const els = document.querySelectorAll(".plan-item"); - for (const el of els) { - couldAdPlanElAnimate[`${el.id}`] = true; - } - return; - } - - const _couldAdPlanElAnimate = - Object.values(couldAdPlanElAnimate).every(Boolean); - if (!_couldAdPlanElAnimate) return; - if (isElementPartiallyInViewport(adPlanEl)) { - const els = document.querySelectorAll(".plan-item"); - for (const el of els) { - el.classList.add("animate__flipInX"); - couldAdPlanElAnimate[`${el.id}`] = false; - el.addEventListener( - "animationend", - () => { - el.classList.remove("animate__flipInX"); - }, - { once: true } - ); - } - return; - } -} - -function detectAdIntroEl() { - const adIntroEl = document.querySelector(".ad-intro"); - if (isElementOutOfViewport(adIntroEl)) { - const els = document.querySelectorAll(".ad-intro-item"); - for (const el of els) { - couldAdIntroElAnimate[`${el.id}`] = true; - } - return; - } - - const _couldAdIntroElAnimate = Object.values(couldAdIntroElAnimate).every( - Boolean - ); - if (!_couldAdIntroElAnimate) return; - if (isElementPartiallyInViewport(adIntroEl)) { - const els = document.querySelectorAll(".ad-intro-item"); - for (const el of els) { - el.classList.add("animate__zoomIn"); - couldAdIntroElAnimate[`${el.id}`] = false; - el.addEventListener( - "animationend", - () => { - el.classList.remove("animate__zoomIn"); - }, - { once: true } - ); - } - return; - } -} - -function isElementPartiallyInViewport(el) { - if (!el) return false; - const rect = el.getBoundingClientRect(); - return ( - rect.top < - (window.innerHeight || document.documentElement.clientHeight) && - rect.bottom > 0 && - rect.left < - (window.innerWidth || document.documentElement.clientWidth) && - rect.right > 0 - ); -} - -function isElementOutOfViewport(el) { - if (!el) return false; - const rect = el.getBoundingClientRect(); - return ( - rect.bottom < 0 || - rect.top > - (window.innerHeight || document.documentElement.clientHeight) || - rect.right < 0 || - rect.left > (window.innerWidth || document.documentElement.clientWidth) - ); -} - -function handleDialog() { - const dialogEl = document.querySelector(".ad-dialog"); - if (!dialogEl) return; - - lockBodyScroll(dialogEl.classList.contains("show")); - overridePlanButton(); - - const dialogBackdropEl = dialogEl.querySelector(".ad-dialog-backdrop"); - if (dialogBackdropEl) { - dialogBackdropEl.addEventListener("click", () => { - dialogEl.classList.remove("show"); - lockBodyScroll(false); - handleDialogAnimate(false) - }); - } - - const dialogFooterBtnEl = dialogEl.querySelector(".ad-dialog-footer-btn"); - if (dialogFooterBtnEl) { - dialogFooterBtnEl.addEventListener("click", () => { - dialogEl.classList.remove("show"); - lockBodyScroll(false); - handleDialogAnimate(false) - }); - } -} - -function lockBodyScroll(bool) { - document.body.style.overflowY = bool ? "hidden" : "auto"; -} - -function overridePlanButton() { - function showDialog(e) { - e.preventDefault(); - e.stopPropagation(); - - const dialogEl = document.querySelector(".ad-dialog"); - if (!dialogEl) return; - dialogEl.classList.add("show"); - lockBodyScroll(true); - handleDialogAnimate(true) - } - - const planButtonEl = document.querySelectorAll(".plan-item-button"); - planButtonEl.forEach((el) => { - el.removeEventListener("click", showDialog); - - const aEl = el.querySelector("a"); - if (!aEl.href || aEl.href.includes("#")) { - aEl.removeAttribute("href"); - el.addEventListener("click", showDialog); - } - }); -} - -function handleDialogAnimate(bool) { - const dialogEl = document.querySelector(".ad-dialog"); - if (!dialogEl) return; - - const dialogWrapperEl = dialogEl.querySelector(".ad-dialog-wrapper"); - if (!dialogWrapperEl) return; - - if (bool) { - dialogWrapperEl.classList.add("animate__animated", "animate__bounceIn", "animate__faster"); - dialogWrapperEl.addEventListener("animationend", () => { - dialogWrapperEl.classList.remove("animate__animated", "animate__bounceIn", "animate__faster") - }) - } else { - dialogWrapperEl.classList.remove("animate__animated", "animate__bounceIn", "animate__faster") - } -} \ No newline at end of file diff --git a/public/site/js/axios.js b/public/site/js/axios.js deleted file mode 100644 index b662228e7..000000000 --- a/public/site/js/axios.js +++ /dev/null @@ -1,2972 +0,0 @@ -// Axios v1.3.6 Copyright (c) 2023 Matt Zabriskie and contributors -(function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : - typeof define === 'function' && define.amd ? define(factory) : - (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.axios = factory()); -})(this, (function () { 'use strict'; - - function _typeof(obj) { - "@babel/helpers - typeof"; - - return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { - return typeof obj; - } : function (obj) { - return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }, _typeof(obj); - } - function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } - } - function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } - } - function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - Object.defineProperty(Constructor, "prototype", { - writable: false - }); - return Constructor; - } - function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); - } - function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; - } - function _iterableToArrayLimit(arr, i) { - var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; - if (_i == null) return; - var _arr = []; - var _n = true; - var _d = false; - var _s, _e; - try { - for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - return _arr; - } - function _unsupportedIterableToArray(o, minLen) { - if (!o) return; - if (typeof o === "string") return _arrayLikeToArray(o, minLen); - var n = Object.prototype.toString.call(o).slice(8, -1); - if (n === "Object" && o.constructor) n = o.constructor.name; - if (n === "Map" || n === "Set") return Array.from(o); - if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); - } - function _arrayLikeToArray(arr, len) { - if (len == null || len > arr.length) len = arr.length; - for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; - return arr2; - } - function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); - } - - function bind(fn, thisArg) { - return function wrap() { - return fn.apply(thisArg, arguments); - }; - } - - // utils is a library of generic helper functions non-specific to axios - - var toString = Object.prototype.toString; - var getPrototypeOf = Object.getPrototypeOf; - var kindOf = function (cache) { - return function (thing) { - var str = toString.call(thing); - return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase()); - }; - }(Object.create(null)); - var kindOfTest = function kindOfTest(type) { - type = type.toLowerCase(); - return function (thing) { - return kindOf(thing) === type; - }; - }; - var typeOfTest = function typeOfTest(type) { - return function (thing) { - return _typeof(thing) === type; - }; - }; - - /** - * Determine if a value is an Array - * - * @param {Object} val The value to test - * - * @returns {boolean} True if value is an Array, otherwise false - */ - var isArray = Array.isArray; - - /** - * Determine if a value is undefined - * - * @param {*} val The value to test - * - * @returns {boolean} True if the value is undefined, otherwise false - */ - var isUndefined = typeOfTest('undefined'); - - /** - * Determine if a value is a Buffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Buffer, otherwise false - */ - function isBuffer(val) { - return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val); - } - - /** - * Determine if a value is an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is an ArrayBuffer, otherwise false - */ - var isArrayBuffer = kindOfTest('ArrayBuffer'); - - /** - * Determine if a value is a view on an ArrayBuffer - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false - */ - function isArrayBufferView(val) { - var result; - if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) { - result = ArrayBuffer.isView(val); - } else { - result = val && val.buffer && isArrayBuffer(val.buffer); - } - return result; - } - - /** - * Determine if a value is a String - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a String, otherwise false - */ - var isString = typeOfTest('string'); - - /** - * Determine if a value is a Function - * - * @param {*} val The value to test - * @returns {boolean} True if value is a Function, otherwise false - */ - var isFunction = typeOfTest('function'); - - /** - * Determine if a value is a Number - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Number, otherwise false - */ - var isNumber = typeOfTest('number'); - - /** - * Determine if a value is an Object - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an Object, otherwise false - */ - var isObject = function isObject(thing) { - return thing !== null && _typeof(thing) === 'object'; - }; - - /** - * Determine if a value is a Boolean - * - * @param {*} thing The value to test - * @returns {boolean} True if value is a Boolean, otherwise false - */ - var isBoolean = function isBoolean(thing) { - return thing === true || thing === false; - }; - - /** - * Determine if a value is a plain Object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a plain Object, otherwise false - */ - var isPlainObject = function isPlainObject(val) { - if (kindOf(val) !== 'object') { - return false; - } - var prototype = getPrototypeOf(val); - return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val); - }; - - /** - * Determine if a value is a Date - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Date, otherwise false - */ - var isDate = kindOfTest('Date'); - - /** - * Determine if a value is a File - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ - var isFile = kindOfTest('File'); - - /** - * Determine if a value is a Blob - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Blob, otherwise false - */ - var isBlob = kindOfTest('Blob'); - - /** - * Determine if a value is a FileList - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a File, otherwise false - */ - var isFileList = kindOfTest('FileList'); - - /** - * Determine if a value is a Stream - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a Stream, otherwise false - */ - var isStream = function isStream(val) { - return isObject(val) && isFunction(val.pipe); - }; - - /** - * Determine if a value is a FormData - * - * @param {*} thing The value to test - * - * @returns {boolean} True if value is an FormData, otherwise false - */ - var isFormData = function isFormData(thing) { - var kind; - return thing && (typeof FormData === 'function' && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === 'formdata' || - // detect form-data instance - kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')); - }; - - /** - * Determine if a value is a URLSearchParams object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a URLSearchParams object, otherwise false - */ - var isURLSearchParams = kindOfTest('URLSearchParams'); - - /** - * Trim excess whitespace off the beginning and end of a string - * - * @param {String} str The String to trim - * - * @returns {String} The String freed of excess whitespace - */ - var trim = function trim(str) { - return str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); - }; - - /** - * Iterate over an Array or an Object invoking a function for each item. - * - * If `obj` is an Array callback will be called passing - * the value, index, and complete array for each item. - * - * If 'obj' is an Object callback will be called passing - * the value, key, and complete object for each property. - * - * @param {Object|Array} obj The object to iterate - * @param {Function} fn The callback to invoke for each item - * - * @param {Boolean} [allOwnKeys = false] - * @returns {any} - */ - function forEach(obj, fn) { - var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}, - _ref$allOwnKeys = _ref.allOwnKeys, - allOwnKeys = _ref$allOwnKeys === void 0 ? false : _ref$allOwnKeys; - // Don't bother if no value provided - if (obj === null || typeof obj === 'undefined') { - return; - } - var i; - var l; - - // Force an array if not already something iterable - if (_typeof(obj) !== 'object') { - /*eslint no-param-reassign:0*/ - obj = [obj]; - } - if (isArray(obj)) { - // Iterate over array values - for (i = 0, l = obj.length; i < l; i++) { - fn.call(null, obj[i], i, obj); - } - } else { - // Iterate over object keys - var keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj); - var len = keys.length; - var key; - for (i = 0; i < len; i++) { - key = keys[i]; - fn.call(null, obj[key], key, obj); - } - } - } - function findKey(obj, key) { - key = key.toLowerCase(); - var keys = Object.keys(obj); - var i = keys.length; - var _key; - while (i-- > 0) { - _key = keys[i]; - if (key === _key.toLowerCase()) { - return _key; - } - } - return null; - } - var _global = function () { - /*eslint no-undef:0*/ - if (typeof globalThis !== "undefined") return globalThis; - return typeof self !== "undefined" ? self : typeof window !== 'undefined' ? window : global; - }(); - var isContextDefined = function isContextDefined(context) { - return !isUndefined(context) && context !== _global; - }; - - /** - * Accepts varargs expecting each argument to be an object, then - * immutably merges the properties of each object and returns result. - * - * When multiple objects contain the same key the later object in - * the arguments list will take precedence. - * - * Example: - * - * ```js - * var result = merge({foo: 123}, {foo: 456}); - * console.log(result.foo); // outputs 456 - * ``` - * - * @param {Object} obj1 Object to merge - * - * @returns {Object} Result of all merge properties - */ - function /* obj1, obj2, obj3, ... */ - merge() { - var _ref2 = isContextDefined(this) && this || {}, - caseless = _ref2.caseless; - var result = {}; - var assignValue = function assignValue(val, key) { - var targetKey = caseless && findKey(result, key) || key; - if (isPlainObject(result[targetKey]) && isPlainObject(val)) { - result[targetKey] = merge(result[targetKey], val); - } else if (isPlainObject(val)) { - result[targetKey] = merge({}, val); - } else if (isArray(val)) { - result[targetKey] = val.slice(); - } else { - result[targetKey] = val; - } - }; - for (var i = 0, l = arguments.length; i < l; i++) { - arguments[i] && forEach(arguments[i], assignValue); - } - return result; - } - - /** - * Extends object a by mutably adding to it the properties of object b. - * - * @param {Object} a The object to be extended - * @param {Object} b The object to copy properties from - * @param {Object} thisArg The object to bind function to - * - * @param {Boolean} [allOwnKeys] - * @returns {Object} The resulting value of object a - */ - var extend = function extend(a, b, thisArg) { - var _ref3 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}, - allOwnKeys = _ref3.allOwnKeys; - forEach(b, function (val, key) { - if (thisArg && isFunction(val)) { - a[key] = bind(val, thisArg); - } else { - a[key] = val; - } - }, { - allOwnKeys: allOwnKeys - }); - return a; - }; - - /** - * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) - * - * @param {string} content with BOM - * - * @returns {string} content value without BOM - */ - var stripBOM = function stripBOM(content) { - if (content.charCodeAt(0) === 0xFEFF) { - content = content.slice(1); - } - return content; - }; - - /** - * Inherit the prototype methods from one constructor into another - * @param {function} constructor - * @param {function} superConstructor - * @param {object} [props] - * @param {object} [descriptors] - * - * @returns {void} - */ - var inherits = function inherits(constructor, superConstructor, props, descriptors) { - constructor.prototype = Object.create(superConstructor.prototype, descriptors); - constructor.prototype.constructor = constructor; - Object.defineProperty(constructor, 'super', { - value: superConstructor.prototype - }); - props && Object.assign(constructor.prototype, props); - }; - - /** - * Resolve object with deep prototype chain to a flat object - * @param {Object} sourceObj source object - * @param {Object} [destObj] - * @param {Function|Boolean} [filter] - * @param {Function} [propFilter] - * - * @returns {Object} - */ - var toFlatObject = function toFlatObject(sourceObj, destObj, filter, propFilter) { - var props; - var i; - var prop; - var merged = {}; - destObj = destObj || {}; - // eslint-disable-next-line no-eq-null,eqeqeq - if (sourceObj == null) return destObj; - do { - props = Object.getOwnPropertyNames(sourceObj); - i = props.length; - while (i-- > 0) { - prop = props[i]; - if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) { - destObj[prop] = sourceObj[prop]; - merged[prop] = true; - } - } - sourceObj = filter !== false && getPrototypeOf(sourceObj); - } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype); - return destObj; - }; - - /** - * Determines whether a string ends with the characters of a specified string - * - * @param {String} str - * @param {String} searchString - * @param {Number} [position= 0] - * - * @returns {boolean} - */ - var endsWith = function endsWith(str, searchString, position) { - str = String(str); - if (position === undefined || position > str.length) { - position = str.length; - } - position -= searchString.length; - var lastIndex = str.indexOf(searchString, position); - return lastIndex !== -1 && lastIndex === position; - }; - - /** - * Returns new array from array like object or null if failed - * - * @param {*} [thing] - * - * @returns {?Array} - */ - var toArray = function toArray(thing) { - if (!thing) return null; - if (isArray(thing)) return thing; - var i = thing.length; - if (!isNumber(i)) return null; - var arr = new Array(i); - while (i-- > 0) { - arr[i] = thing[i]; - } - return arr; - }; - - /** - * Checking if the Uint8Array exists and if it does, it returns a function that checks if the - * thing passed in is an instance of Uint8Array - * - * @param {TypedArray} - * - * @returns {Array} - */ - // eslint-disable-next-line func-names - var isTypedArray = function (TypedArray) { - // eslint-disable-next-line func-names - return function (thing) { - return TypedArray && thing instanceof TypedArray; - }; - }(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array)); - - /** - * For each entry in the object, call the function with the key and value. - * - * @param {Object} obj - The object to iterate over. - * @param {Function} fn - The function to call for each entry. - * - * @returns {void} - */ - var forEachEntry = function forEachEntry(obj, fn) { - var generator = obj && obj[Symbol.iterator]; - var iterator = generator.call(obj); - var result; - while ((result = iterator.next()) && !result.done) { - var pair = result.value; - fn.call(obj, pair[0], pair[1]); - } - }; - - /** - * It takes a regular expression and a string, and returns an array of all the matches - * - * @param {string} regExp - The regular expression to match against. - * @param {string} str - The string to search. - * - * @returns {Array} - */ - var matchAll = function matchAll(regExp, str) { - var matches; - var arr = []; - while ((matches = regExp.exec(str)) !== null) { - arr.push(matches); - } - return arr; - }; - - /* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */ - var isHTMLForm = kindOfTest('HTMLFormElement'); - var toCamelCase = function toCamelCase(str) { - return str.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g, function replacer(m, p1, p2) { - return p1.toUpperCase() + p2; - }); - }; - - /* Creating a function that will check if an object has a property. */ - var hasOwnProperty = function (_ref4) { - var hasOwnProperty = _ref4.hasOwnProperty; - return function (obj, prop) { - return hasOwnProperty.call(obj, prop); - }; - }(Object.prototype); - - /** - * Determine if a value is a RegExp object - * - * @param {*} val The value to test - * - * @returns {boolean} True if value is a RegExp object, otherwise false - */ - var isRegExp = kindOfTest('RegExp'); - var reduceDescriptors = function reduceDescriptors(obj, reducer) { - var descriptors = Object.getOwnPropertyDescriptors(obj); - var reducedDescriptors = {}; - forEach(descriptors, function (descriptor, name) { - if (reducer(descriptor, name, obj) !== false) { - reducedDescriptors[name] = descriptor; - } - }); - Object.defineProperties(obj, reducedDescriptors); - }; - - /** - * Makes all methods read-only - * @param {Object} obj - */ - - var freezeMethods = function freezeMethods(obj) { - reduceDescriptors(obj, function (descriptor, name) { - // skip restricted props in strict mode - if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) { - return false; - } - var value = obj[name]; - if (!isFunction(value)) return; - descriptor.enumerable = false; - if ('writable' in descriptor) { - descriptor.writable = false; - return; - } - if (!descriptor.set) { - descriptor.set = function () { - throw Error('Can not rewrite read-only method \'' + name + '\''); - }; - } - }); - }; - var toObjectSet = function toObjectSet(arrayOrString, delimiter) { - var obj = {}; - var define = function define(arr) { - arr.forEach(function (value) { - obj[value] = true; - }); - }; - isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter)); - return obj; - }; - var noop = function noop() {}; - var toFiniteNumber = function toFiniteNumber(value, defaultValue) { - value = +value; - return Number.isFinite(value) ? value : defaultValue; - }; - var ALPHA = 'abcdefghijklmnopqrstuvwxyz'; - var DIGIT = '0123456789'; - var ALPHABET = { - DIGIT: DIGIT, - ALPHA: ALPHA, - ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT - }; - var generateString = function generateString() { - var size = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 16; - var alphabet = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ALPHABET.ALPHA_DIGIT; - var str = ''; - var length = alphabet.length; - while (size--) { - str += alphabet[Math.random() * length | 0]; - } - return str; - }; - - /** - * If the thing is a FormData object, return true, otherwise return false. - * - * @param {unknown} thing - The thing to check. - * - * @returns {boolean} - */ - function isSpecCompliantForm(thing) { - return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]); - } - var toJSONObject = function toJSONObject(obj) { - var stack = new Array(10); - var visit = function visit(source, i) { - if (isObject(source)) { - if (stack.indexOf(source) >= 0) { - return; - } - if (!('toJSON' in source)) { - stack[i] = source; - var target = isArray(source) ? [] : {}; - forEach(source, function (value, key) { - var reducedValue = visit(value, i + 1); - !isUndefined(reducedValue) && (target[key] = reducedValue); - }); - stack[i] = undefined; - return target; - } - } - return source; - }; - return visit(obj, 0); - }; - var utils = { - isArray: isArray, - isArrayBuffer: isArrayBuffer, - isBuffer: isBuffer, - isFormData: isFormData, - isArrayBufferView: isArrayBufferView, - isString: isString, - isNumber: isNumber, - isBoolean: isBoolean, - isObject: isObject, - isPlainObject: isPlainObject, - isUndefined: isUndefined, - isDate: isDate, - isFile: isFile, - isBlob: isBlob, - isRegExp: isRegExp, - isFunction: isFunction, - isStream: isStream, - isURLSearchParams: isURLSearchParams, - isTypedArray: isTypedArray, - isFileList: isFileList, - forEach: forEach, - merge: merge, - extend: extend, - trim: trim, - stripBOM: stripBOM, - inherits: inherits, - toFlatObject: toFlatObject, - kindOf: kindOf, - kindOfTest: kindOfTest, - endsWith: endsWith, - toArray: toArray, - forEachEntry: forEachEntry, - matchAll: matchAll, - isHTMLForm: isHTMLForm, - hasOwnProperty: hasOwnProperty, - hasOwnProp: hasOwnProperty, - // an alias to avoid ESLint no-prototype-builtins detection - reduceDescriptors: reduceDescriptors, - freezeMethods: freezeMethods, - toObjectSet: toObjectSet, - toCamelCase: toCamelCase, - noop: noop, - toFiniteNumber: toFiniteNumber, - findKey: findKey, - global: _global, - isContextDefined: isContextDefined, - ALPHABET: ALPHABET, - generateString: generateString, - isSpecCompliantForm: isSpecCompliantForm, - toJSONObject: toJSONObject - }; - - /** - * Create an Error with the specified message, config, error code, request and response. - * - * @param {string} message The error message. - * @param {string} [code] The error code (for example, 'ECONNABORTED'). - * @param {Object} [config] The config. - * @param {Object} [request] The request. - * @param {Object} [response] The response. - * - * @returns {Error} The created error. - */ - function AxiosError(message, code, config, request, response) { - Error.call(this); - if (Error.captureStackTrace) { - Error.captureStackTrace(this, this.constructor); - } else { - this.stack = new Error().stack; - } - this.message = message; - this.name = 'AxiosError'; - code && (this.code = code); - config && (this.config = config); - request && (this.request = request); - response && (this.response = response); - } - utils.inherits(AxiosError, Error, { - toJSON: function toJSON() { - return { - // Standard - message: this.message, - name: this.name, - // Microsoft - description: this.description, - number: this.number, - // Mozilla - fileName: this.fileName, - lineNumber: this.lineNumber, - columnNumber: this.columnNumber, - stack: this.stack, - // Axios - config: utils.toJSONObject(this.config), - code: this.code, - status: this.response && this.response.status ? this.response.status : null - }; - } - }); - var prototype$1 = AxiosError.prototype; - var descriptors = {}; - ['ERR_BAD_OPTION_VALUE', 'ERR_BAD_OPTION', 'ECONNABORTED', 'ETIMEDOUT', 'ERR_NETWORK', 'ERR_FR_TOO_MANY_REDIRECTS', 'ERR_DEPRECATED', 'ERR_BAD_RESPONSE', 'ERR_BAD_REQUEST', 'ERR_CANCELED', 'ERR_NOT_SUPPORT', 'ERR_INVALID_URL' - // eslint-disable-next-line func-names - ].forEach(function (code) { - descriptors[code] = { - value: code - }; - }); - Object.defineProperties(AxiosError, descriptors); - Object.defineProperty(prototype$1, 'isAxiosError', { - value: true - }); - - // eslint-disable-next-line func-names - AxiosError.from = function (error, code, config, request, response, customProps) { - var axiosError = Object.create(prototype$1); - utils.toFlatObject(error, axiosError, function filter(obj) { - return obj !== Error.prototype; - }, function (prop) { - return prop !== 'isAxiosError'; - }); - AxiosError.call(axiosError, error.message, code, config, request, response); - axiosError.cause = error; - axiosError.name = error.name; - customProps && Object.assign(axiosError, customProps); - return axiosError; - }; - - // eslint-disable-next-line strict - var httpAdapter = null; - - /** - * Determines if the given thing is a array or js object. - * - * @param {string} thing - The object or array to be visited. - * - * @returns {boolean} - */ - function isVisitable(thing) { - return utils.isPlainObject(thing) || utils.isArray(thing); - } - - /** - * It removes the brackets from the end of a string - * - * @param {string} key - The key of the parameter. - * - * @returns {string} the key without the brackets. - */ - function removeBrackets(key) { - return utils.endsWith(key, '[]') ? key.slice(0, -2) : key; - } - - /** - * It takes a path, a key, and a boolean, and returns a string - * - * @param {string} path - The path to the current key. - * @param {string} key - The key of the current object being iterated over. - * @param {string} dots - If true, the key will be rendered with dots instead of brackets. - * - * @returns {string} The path to the current key. - */ - function renderKey(path, key, dots) { - if (!path) return key; - return path.concat(key).map(function each(token, i) { - // eslint-disable-next-line no-param-reassign - token = removeBrackets(token); - return !dots && i ? '[' + token + ']' : token; - }).join(dots ? '.' : ''); - } - - /** - * If the array is an array and none of its elements are visitable, then it's a flat array. - * - * @param {Array} arr - The array to check - * - * @returns {boolean} - */ - function isFlatArray(arr) { - return utils.isArray(arr) && !arr.some(isVisitable); - } - var predicates = utils.toFlatObject(utils, {}, null, function filter(prop) { - return /^is[A-Z]/.test(prop); - }); - - /** - * Convert a data object to FormData - * - * @param {Object} obj - * @param {?Object} [formData] - * @param {?Object} [options] - * @param {Function} [options.visitor] - * @param {Boolean} [options.metaTokens = true] - * @param {Boolean} [options.dots = false] - * @param {?Boolean} [options.indexes = false] - * - * @returns {Object} - **/ - - /** - * It converts an object into a FormData object - * - * @param {Object} obj - The object to convert to form data. - * @param {string} formData - The FormData object to append to. - * @param {Object} options - * - * @returns - */ - function toFormData(obj, formData, options) { - if (!utils.isObject(obj)) { - throw new TypeError('target must be an object'); - } - - // eslint-disable-next-line no-param-reassign - formData = formData || new (FormData)(); - - // eslint-disable-next-line no-param-reassign - options = utils.toFlatObject(options, { - metaTokens: true, - dots: false, - indexes: false - }, false, function defined(option, source) { - // eslint-disable-next-line no-eq-null,eqeqeq - return !utils.isUndefined(source[option]); - }); - var metaTokens = options.metaTokens; - // eslint-disable-next-line no-use-before-define - var visitor = options.visitor || defaultVisitor; - var dots = options.dots; - var indexes = options.indexes; - var _Blob = options.Blob || typeof Blob !== 'undefined' && Blob; - var useBlob = _Blob && utils.isSpecCompliantForm(formData); - if (!utils.isFunction(visitor)) { - throw new TypeError('visitor must be a function'); - } - function convertValue(value) { - if (value === null) return ''; - if (utils.isDate(value)) { - return value.toISOString(); - } - if (!useBlob && utils.isBlob(value)) { - throw new AxiosError('Blob is not supported. Use a Buffer instead.'); - } - if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) { - return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value); - } - return value; - } - - /** - * Default visitor. - * - * @param {*} value - * @param {String|Number} key - * @param {Array} path - * @this {FormData} - * - * @returns {boolean} return true to visit the each prop of the value recursively - */ - function defaultVisitor(value, key, path) { - var arr = value; - if (value && !path && _typeof(value) === 'object') { - if (utils.endsWith(key, '{}')) { - // eslint-disable-next-line no-param-reassign - key = metaTokens ? key : key.slice(0, -2); - // eslint-disable-next-line no-param-reassign - value = JSON.stringify(value); - } else if (utils.isArray(value) && isFlatArray(value) || (utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))) { - // eslint-disable-next-line no-param-reassign - key = removeBrackets(key); - arr.forEach(function each(el, index) { - !(utils.isUndefined(el) || el === null) && formData.append( - // eslint-disable-next-line no-nested-ternary - indexes === true ? renderKey([key], index, dots) : indexes === null ? key : key + '[]', convertValue(el)); - }); - return false; - } - } - if (isVisitable(value)) { - return true; - } - formData.append(renderKey(path, key, dots), convertValue(value)); - return false; - } - var stack = []; - var exposedHelpers = Object.assign(predicates, { - defaultVisitor: defaultVisitor, - convertValue: convertValue, - isVisitable: isVisitable - }); - function build(value, path) { - if (utils.isUndefined(value)) return; - if (stack.indexOf(value) !== -1) { - throw Error('Circular reference detected in ' + path.join('.')); - } - stack.push(value); - utils.forEach(value, function each(el, key) { - var result = !(utils.isUndefined(el) || el === null) && visitor.call(formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers); - if (result === true) { - build(el, path ? path.concat(key) : [key]); - } - }); - stack.pop(); - } - if (!utils.isObject(obj)) { - throw new TypeError('data must be an object'); - } - build(obj); - return formData; - } - - /** - * It encodes a string by replacing all characters that are not in the unreserved set with - * their percent-encoded equivalents - * - * @param {string} str - The string to encode. - * - * @returns {string} The encoded string. - */ - function encode$1(str) { - var charMap = { - '!': '%21', - "'": '%27', - '(': '%28', - ')': '%29', - '~': '%7E', - '%20': '+', - '%00': '\x00' - }; - return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) { - return charMap[match]; - }); - } - - /** - * It takes a params object and converts it to a FormData object - * - * @param {Object} params - The parameters to be converted to a FormData object. - * @param {Object} options - The options object passed to the Axios constructor. - * - * @returns {void} - */ - function AxiosURLSearchParams(params, options) { - this._pairs = []; - params && toFormData(params, this, options); - } - var prototype = AxiosURLSearchParams.prototype; - prototype.append = function append(name, value) { - this._pairs.push([name, value]); - }; - prototype.toString = function toString(encoder) { - var _encode = encoder ? function (value) { - return encoder.call(this, value, encode$1); - } : encode$1; - return this._pairs.map(function each(pair) { - return _encode(pair[0]) + '=' + _encode(pair[1]); - }, '').join('&'); - }; - - /** - * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their - * URI encoded counterparts - * - * @param {string} val The value to be encoded. - * - * @returns {string} The encoded value. - */ - function encode(val) { - return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']'); - } - - /** - * Build a URL by appending params to the end - * - * @param {string} url The base of the url (e.g., http://www.google.com) - * @param {object} [params] The params to be appended - * @param {?object} options - * - * @returns {string} The formatted url - */ - function buildURL(url, params, options) { - /*eslint no-param-reassign:0*/ - if (!params) { - return url; - } - var _encode = options && options.encode || encode; - var serializeFn = options && options.serialize; - var serializedParams; - if (serializeFn) { - serializedParams = serializeFn(params, options); - } else { - serializedParams = utils.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options).toString(_encode); - } - if (serializedParams) { - var hashmarkIndex = url.indexOf("#"); - if (hashmarkIndex !== -1) { - url = url.slice(0, hashmarkIndex); - } - url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; - } - return url; - } - - var InterceptorManager = /*#__PURE__*/function () { - function InterceptorManager() { - _classCallCheck(this, InterceptorManager); - this.handlers = []; - } - - /** - * Add a new interceptor to the stack - * - * @param {Function} fulfilled The function to handle `then` for a `Promise` - * @param {Function} rejected The function to handle `reject` for a `Promise` - * - * @return {Number} An ID used to remove interceptor later - */ - _createClass(InterceptorManager, [{ - key: "use", - value: function use(fulfilled, rejected, options) { - this.handlers.push({ - fulfilled: fulfilled, - rejected: rejected, - synchronous: options ? options.synchronous : false, - runWhen: options ? options.runWhen : null - }); - return this.handlers.length - 1; - } - - /** - * Remove an interceptor from the stack - * - * @param {Number} id The ID that was returned by `use` - * - * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise - */ - }, { - key: "eject", - value: function eject(id) { - if (this.handlers[id]) { - this.handlers[id] = null; - } - } - - /** - * Clear all interceptors from the stack - * - * @returns {void} - */ - }, { - key: "clear", - value: function clear() { - if (this.handlers) { - this.handlers = []; - } - } - - /** - * Iterate over all the registered interceptors - * - * This method is particularly useful for skipping over any - * interceptors that may have become `null` calling `eject`. - * - * @param {Function} fn The function to call for each interceptor - * - * @returns {void} - */ - }, { - key: "forEach", - value: function forEach(fn) { - utils.forEach(this.handlers, function forEachHandler(h) { - if (h !== null) { - fn(h); - } - }); - } - }]); - return InterceptorManager; - }(); - var InterceptorManager$1 = InterceptorManager; - - var transitionalDefaults = { - silentJSONParsing: true, - forcedJSONParsing: true, - clarifyTimeoutError: false - }; - - var URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams; - - var FormData$1 = typeof FormData !== 'undefined' ? FormData : null; - - var Blob$1 = typeof Blob !== 'undefined' ? Blob : null; - - /** - * Determine if we're running in a standard browser environment - * - * This allows axios to run in a web worker, and react-native. - * Both environments support XMLHttpRequest, but not fully standard globals. - * - * web workers: - * typeof window -> undefined - * typeof document -> undefined - * - * react-native: - * navigator.product -> 'ReactNative' - * nativescript - * navigator.product -> 'NativeScript' or 'NS' - * - * @returns {boolean} - */ - var isStandardBrowserEnv = function () { - var product; - if (typeof navigator !== 'undefined' && ((product = navigator.product) === 'ReactNative' || product === 'NativeScript' || product === 'NS')) { - return false; - } - return typeof window !== 'undefined' && typeof document !== 'undefined'; - }(); - - /** - * Determine if we're running in a standard browser webWorker environment - * - * Although the `isStandardBrowserEnv` method indicates that - * `allows axios to run in a web worker`, the WebWorker will still be - * filtered out due to its judgment standard - * `typeof window !== 'undefined' && typeof document !== 'undefined'`. - * This leads to a problem when axios post `FormData` in webWorker - */ - var isStandardBrowserWebWorkerEnv = function () { - return typeof WorkerGlobalScope !== 'undefined' && - // eslint-disable-next-line no-undef - self instanceof WorkerGlobalScope && typeof self.importScripts === 'function'; - }(); - var platform = { - isBrowser: true, - classes: { - URLSearchParams: URLSearchParams$1, - FormData: FormData$1, - Blob: Blob$1 - }, - isStandardBrowserEnv: isStandardBrowserEnv, - isStandardBrowserWebWorkerEnv: isStandardBrowserWebWorkerEnv, - protocols: ['http', 'https', 'file', 'blob', 'url', 'data'] - }; - - function toURLEncodedForm(data, options) { - return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({ - visitor: function visitor(value, key, path, helpers) { - if (platform.isNode && utils.isBuffer(value)) { - this.append(key, value.toString('base64')); - return false; - } - return helpers.defaultVisitor.apply(this, arguments); - } - }, options)); - } - - /** - * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z'] - * - * @param {string} name - The name of the property to get. - * - * @returns An array of strings. - */ - function parsePropPath(name) { - // foo[x][y][z] - // foo.x.y.z - // foo-x-y-z - // foo x y z - return utils.matchAll(/\w+|\[(\w*)]/g, name).map(function (match) { - return match[0] === '[]' ? '' : match[1] || match[0]; - }); - } - - /** - * Convert an array to an object. - * - * @param {Array} arr - The array to convert to an object. - * - * @returns An object with the same keys and values as the array. - */ - function arrayToObject(arr) { - var obj = {}; - var keys = Object.keys(arr); - var i; - var len = keys.length; - var key; - for (i = 0; i < len; i++) { - key = keys[i]; - obj[key] = arr[key]; - } - return obj; - } - - /** - * It takes a FormData object and returns a JavaScript object - * - * @param {string} formData The FormData object to convert to JSON. - * - * @returns {Object | null} The converted object. - */ - function formDataToJSON(formData) { - function buildPath(path, value, target, index) { - var name = path[index++]; - var isNumericKey = Number.isFinite(+name); - var isLast = index >= path.length; - name = !name && utils.isArray(target) ? target.length : name; - if (isLast) { - if (utils.hasOwnProp(target, name)) { - target[name] = [target[name], value]; - } else { - target[name] = value; - } - return !isNumericKey; - } - if (!target[name] || !utils.isObject(target[name])) { - target[name] = []; - } - var result = buildPath(path, value, target[name], index); - if (result && utils.isArray(target[name])) { - target[name] = arrayToObject(target[name]); - } - return !isNumericKey; - } - if (utils.isFormData(formData) && utils.isFunction(formData.entries)) { - var obj = {}; - utils.forEachEntry(formData, function (name, value) { - buildPath(parsePropPath(name), value, obj, 0); - }); - return obj; - } - return null; - } - - var DEFAULT_CONTENT_TYPE = { - 'Content-Type': undefined - }; - - /** - * It takes a string, tries to parse it, and if it fails, it returns the stringified version - * of the input - * - * @param {any} rawValue - The value to be stringified. - * @param {Function} parser - A function that parses a string into a JavaScript object. - * @param {Function} encoder - A function that takes a value and returns a string. - * - * @returns {string} A stringified version of the rawValue. - */ - function stringifySafely(rawValue, parser, encoder) { - if (utils.isString(rawValue)) { - try { - (parser || JSON.parse)(rawValue); - return utils.trim(rawValue); - } catch (e) { - if (e.name !== 'SyntaxError') { - throw e; - } - } - } - return (encoder || JSON.stringify)(rawValue); - } - var defaults = { - transitional: transitionalDefaults, - adapter: ['xhr', 'http'], - transformRequest: [function transformRequest(data, headers) { - var contentType = headers.getContentType() || ''; - var hasJSONContentType = contentType.indexOf('application/json') > -1; - var isObjectPayload = utils.isObject(data); - if (isObjectPayload && utils.isHTMLForm(data)) { - data = new FormData(data); - } - var isFormData = utils.isFormData(data); - if (isFormData) { - if (!hasJSONContentType) { - return data; - } - return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data; - } - if (utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) { - return data; - } - if (utils.isArrayBufferView(data)) { - return data.buffer; - } - if (utils.isURLSearchParams(data)) { - headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false); - return data.toString(); - } - var isFileList; - if (isObjectPayload) { - if (contentType.indexOf('application/x-www-form-urlencoded') > -1) { - return toURLEncodedForm(data, this.formSerializer).toString(); - } - if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) { - var _FormData = this.env && this.env.FormData; - return toFormData(isFileList ? { - 'files[]': data - } : data, _FormData && new _FormData(), this.formSerializer); - } - } - if (isObjectPayload || hasJSONContentType) { - headers.setContentType('application/json', false); - return stringifySafely(data); - } - return data; - }], - transformResponse: [function transformResponse(data) { - var transitional = this.transitional || defaults.transitional; - var forcedJSONParsing = transitional && transitional.forcedJSONParsing; - var JSONRequested = this.responseType === 'json'; - if (data && utils.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) { - var silentJSONParsing = transitional && transitional.silentJSONParsing; - var strictJSONParsing = !silentJSONParsing && JSONRequested; - try { - return JSON.parse(data); - } catch (e) { - if (strictJSONParsing) { - if (e.name === 'SyntaxError') { - throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response); - } - throw e; - } - } - } - return data; - }], - /** - * A timeout in milliseconds to abort a request. If set to 0 (default) a - * timeout is not created. - */ - timeout: 0, - xsrfCookieName: 'XSRF-TOKEN', - xsrfHeaderName: 'X-XSRF-TOKEN', - maxContentLength: -1, - maxBodyLength: -1, - env: { - FormData: platform.classes.FormData, - Blob: platform.classes.Blob - }, - validateStatus: function validateStatus(status) { - return status >= 200 && status < 300; - }, - headers: { - common: { - 'Accept': 'application/json, text/plain, */*' - } - } - }; - utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { - defaults.headers[method] = {}; - }); - utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); - }); - var defaults$1 = defaults; - - // RawAxiosHeaders whose duplicates are ignored by node - // c.f. https://nodejs.org/api/http.html#http_message_headers - var ignoreDuplicateOf = utils.toObjectSet(['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent']); - - /** - * Parse headers into an object - * - * ``` - * Date: Wed, 27 Aug 2014 08:58:49 GMT - * Content-Type: application/json - * Connection: keep-alive - * Transfer-Encoding: chunked - * ``` - * - * @param {String} rawHeaders Headers needing to be parsed - * - * @returns {Object} Headers parsed into an object - */ - var parseHeaders = (function (rawHeaders) { - var parsed = {}; - var key; - var val; - var i; - rawHeaders && rawHeaders.split('\n').forEach(function parser(line) { - i = line.indexOf(':'); - key = line.substring(0, i).trim().toLowerCase(); - val = line.substring(i + 1).trim(); - if (!key || parsed[key] && ignoreDuplicateOf[key]) { - return; - } - if (key === 'set-cookie') { - if (parsed[key]) { - parsed[key].push(val); - } else { - parsed[key] = [val]; - } - } else { - parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; - } - }); - return parsed; - }); - - var $internals = Symbol('internals'); - function normalizeHeader(header) { - return header && String(header).trim().toLowerCase(); - } - function normalizeValue(value) { - if (value === false || value == null) { - return value; - } - return utils.isArray(value) ? value.map(normalizeValue) : String(value); - } - function parseTokens(str) { - var tokens = Object.create(null); - var tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g; - var match; - while (match = tokensRE.exec(str)) { - tokens[match[1]] = match[2]; - } - return tokens; - } - var isValidHeaderName = function isValidHeaderName(str) { - return /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim()); - }; - function matchHeaderValue(context, value, header, filter, isHeaderNameFilter) { - if (utils.isFunction(filter)) { - return filter.call(this, value, header); - } - if (isHeaderNameFilter) { - value = header; - } - if (!utils.isString(value)) return; - if (utils.isString(filter)) { - return value.indexOf(filter) !== -1; - } - if (utils.isRegExp(filter)) { - return filter.test(value); - } - } - function formatHeader(header) { - return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, function (w, _char, str) { - return _char.toUpperCase() + str; - }); - } - function buildAccessors(obj, header) { - var accessorName = utils.toCamelCase(' ' + header); - ['get', 'set', 'has'].forEach(function (methodName) { - Object.defineProperty(obj, methodName + accessorName, { - value: function value(arg1, arg2, arg3) { - return this[methodName].call(this, header, arg1, arg2, arg3); - }, - configurable: true - }); - }); - } - var AxiosHeaders = /*#__PURE__*/function (_Symbol$iterator, _Symbol$toStringTag) { - function AxiosHeaders(headers) { - _classCallCheck(this, AxiosHeaders); - headers && this.set(headers); - } - _createClass(AxiosHeaders, [{ - key: "set", - value: function set(header, valueOrRewrite, rewrite) { - var self = this; - function setHeader(_value, _header, _rewrite) { - var lHeader = normalizeHeader(_header); - if (!lHeader) { - throw new Error('header name must be a non-empty string'); - } - var key = utils.findKey(self, lHeader); - if (!key || self[key] === undefined || _rewrite === true || _rewrite === undefined && self[key] !== false) { - self[key || _header] = normalizeValue(_value); - } - } - var setHeaders = function setHeaders(headers, _rewrite) { - return utils.forEach(headers, function (_value, _header) { - return setHeader(_value, _header, _rewrite); - }); - }; - if (utils.isPlainObject(header) || header instanceof this.constructor) { - setHeaders(header, valueOrRewrite); - } else if (utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) { - setHeaders(parseHeaders(header), valueOrRewrite); - } else { - header != null && setHeader(valueOrRewrite, header, rewrite); - } - return this; - } - }, { - key: "get", - value: function get(header, parser) { - header = normalizeHeader(header); - if (header) { - var key = utils.findKey(this, header); - if (key) { - var value = this[key]; - if (!parser) { - return value; - } - if (parser === true) { - return parseTokens(value); - } - if (utils.isFunction(parser)) { - return parser.call(this, value, key); - } - if (utils.isRegExp(parser)) { - return parser.exec(value); - } - throw new TypeError('parser must be boolean|regexp|function'); - } - } - } - }, { - key: "has", - value: function has(header, matcher) { - header = normalizeHeader(header); - if (header) { - var key = utils.findKey(this, header); - return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher))); - } - return false; - } - }, { - key: "delete", - value: function _delete(header, matcher) { - var self = this; - var deleted = false; - function deleteHeader(_header) { - _header = normalizeHeader(_header); - if (_header) { - var key = utils.findKey(self, _header); - if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) { - delete self[key]; - deleted = true; - } - } - } - if (utils.isArray(header)) { - header.forEach(deleteHeader); - } else { - deleteHeader(header); - } - return deleted; - } - }, { - key: "clear", - value: function clear(matcher) { - var keys = Object.keys(this); - var i = keys.length; - var deleted = false; - while (i--) { - var key = keys[i]; - if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) { - delete this[key]; - deleted = true; - } - } - return deleted; - } - }, { - key: "normalize", - value: function normalize(format) { - var self = this; - var headers = {}; - utils.forEach(this, function (value, header) { - var key = utils.findKey(headers, header); - if (key) { - self[key] = normalizeValue(value); - delete self[header]; - return; - } - var normalized = format ? formatHeader(header) : String(header).trim(); - if (normalized !== header) { - delete self[header]; - } - self[normalized] = normalizeValue(value); - headers[normalized] = true; - }); - return this; - } - }, { - key: "concat", - value: function concat() { - var _this$constructor; - for (var _len = arguments.length, targets = new Array(_len), _key = 0; _key < _len; _key++) { - targets[_key] = arguments[_key]; - } - return (_this$constructor = this.constructor).concat.apply(_this$constructor, [this].concat(targets)); - } - }, { - key: "toJSON", - value: function toJSON(asStrings) { - var obj = Object.create(null); - utils.forEach(this, function (value, header) { - value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value); - }); - return obj; - } - }, { - key: _Symbol$iterator, - value: function value() { - return Object.entries(this.toJSON())[Symbol.iterator](); - } - }, { - key: "toString", - value: function toString() { - return Object.entries(this.toJSON()).map(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - header = _ref2[0], - value = _ref2[1]; - return header + ': ' + value; - }).join('\n'); - } - }, { - key: _Symbol$toStringTag, - get: function get() { - return 'AxiosHeaders'; - } - }], [{ - key: "from", - value: function from(thing) { - return thing instanceof this ? thing : new this(thing); - } - }, { - key: "concat", - value: function concat(first) { - var computed = new this(first); - for (var _len2 = arguments.length, targets = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { - targets[_key2 - 1] = arguments[_key2]; - } - targets.forEach(function (target) { - return computed.set(target); - }); - return computed; - } - }, { - key: "accessor", - value: function accessor(header) { - var internals = this[$internals] = this[$internals] = { - accessors: {} - }; - var accessors = internals.accessors; - var prototype = this.prototype; - function defineAccessor(_header) { - var lHeader = normalizeHeader(_header); - if (!accessors[lHeader]) { - buildAccessors(prototype, _header); - accessors[lHeader] = true; - } - } - utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header); - return this; - } - }]); - return AxiosHeaders; - }(Symbol.iterator, Symbol.toStringTag); - AxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']); - utils.freezeMethods(AxiosHeaders.prototype); - utils.freezeMethods(AxiosHeaders); - var AxiosHeaders$1 = AxiosHeaders; - - /** - * Transform the data for a request or a response - * - * @param {Array|Function} fns A single function or Array of functions - * @param {?Object} response The response object - * - * @returns {*} The resulting transformed data - */ - function transformData(fns, response) { - var config = this || defaults$1; - var context = response || config; - var headers = AxiosHeaders$1.from(context.headers); - var data = context.data; - utils.forEach(fns, function transform(fn) { - data = fn.call(config, data, headers.normalize(), response ? response.status : undefined); - }); - headers.normalize(); - return data; - } - - function isCancel(value) { - return !!(value && value.__CANCEL__); - } - - /** - * A `CanceledError` is an object that is thrown when an operation is canceled. - * - * @param {string=} message The message. - * @param {Object=} config The config. - * @param {Object=} request The request. - * - * @returns {CanceledError} The created error. - */ - function CanceledError(message, config, request) { - // eslint-disable-next-line no-eq-null,eqeqeq - AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request); - this.name = 'CanceledError'; - } - utils.inherits(CanceledError, AxiosError, { - __CANCEL__: true - }); - - /** - * Resolve or reject a Promise based on response status. - * - * @param {Function} resolve A function that resolves the promise. - * @param {Function} reject A function that rejects the promise. - * @param {object} response The response. - * - * @returns {object} The response. - */ - function settle(resolve, reject, response) { - var validateStatus = response.config.validateStatus; - if (!response.status || !validateStatus || validateStatus(response.status)) { - resolve(response); - } else { - reject(new AxiosError('Request failed with status code ' + response.status, [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4], response.config, response.request, response)); - } - } - - var cookies = platform.isStandardBrowserEnv ? - // Standard browser envs support document.cookie - function standardBrowserEnv() { - return { - write: function write(name, value, expires, path, domain, secure) { - var cookie = []; - cookie.push(name + '=' + encodeURIComponent(value)); - if (utils.isNumber(expires)) { - cookie.push('expires=' + new Date(expires).toGMTString()); - } - if (utils.isString(path)) { - cookie.push('path=' + path); - } - if (utils.isString(domain)) { - cookie.push('domain=' + domain); - } - if (secure === true) { - cookie.push('secure'); - } - document.cookie = cookie.join('; '); - }, - read: function read(name) { - var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); - return match ? decodeURIComponent(match[3]) : null; - }, - remove: function remove(name) { - this.write(name, '', Date.now() - 86400000); - } - }; - }() : - // Non standard browser env (web workers, react-native) lack needed support. - function nonStandardBrowserEnv() { - return { - write: function write() {}, - read: function read() { - return null; - }, - remove: function remove() {} - }; - }(); - - /** - * Determines whether the specified URL is absolute - * - * @param {string} url The URL to test - * - * @returns {boolean} True if the specified URL is absolute, otherwise false - */ - function isAbsoluteURL(url) { - // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). - // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed - // by any combination of letters, digits, plus, period, or hyphen. - return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); - } - - /** - * Creates a new URL by combining the specified URLs - * - * @param {string} baseURL The base URL - * @param {string} relativeURL The relative URL - * - * @returns {string} The combined URL - */ - function combineURLs(baseURL, relativeURL) { - return relativeURL ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') : baseURL; - } - - /** - * Creates a new URL by combining the baseURL with the requestedURL, - * only when the requestedURL is not already an absolute URL. - * If the requestURL is absolute, this function returns the requestedURL untouched. - * - * @param {string} baseURL The base URL - * @param {string} requestedURL Absolute or relative URL to combine - * - * @returns {string} The combined full path - */ - function buildFullPath(baseURL, requestedURL) { - if (baseURL && !isAbsoluteURL(requestedURL)) { - return combineURLs(baseURL, requestedURL); - } - return requestedURL; - } - - var isURLSameOrigin = platform.isStandardBrowserEnv ? - // Standard browser envs have full support of the APIs needed to test - // whether the request URL is of the same origin as current location. - function standardBrowserEnv() { - var msie = /(msie|trident)/i.test(navigator.userAgent); - var urlParsingNode = document.createElement('a'); - var originURL; - - /** - * Parse a URL to discover it's components - * - * @param {String} url The URL to be parsed - * @returns {Object} - */ - function resolveURL(url) { - var href = url; - if (msie) { - // IE needs attribute set twice to normalize properties - urlParsingNode.setAttribute('href', href); - href = urlParsingNode.href; - } - urlParsingNode.setAttribute('href', href); - - // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils - return { - href: urlParsingNode.href, - protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', - host: urlParsingNode.host, - search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', - hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', - hostname: urlParsingNode.hostname, - port: urlParsingNode.port, - pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname - }; - } - originURL = resolveURL(window.location.href); - - /** - * Determine if a URL shares the same origin as the current location - * - * @param {String} requestURL The URL to test - * @returns {boolean} True if URL shares the same origin, otherwise false - */ - return function isURLSameOrigin(requestURL) { - var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL; - return parsed.protocol === originURL.protocol && parsed.host === originURL.host; - }; - }() : - // Non standard browser envs (web workers, react-native) lack needed support. - function nonStandardBrowserEnv() { - return function isURLSameOrigin() { - return true; - }; - }(); - - function parseProtocol(url) { - var match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url); - return match && match[1] || ''; - } - - /** - * Calculate data maxRate - * @param {Number} [samplesCount= 10] - * @param {Number} [min= 1000] - * @returns {Function} - */ - function speedometer(samplesCount, min) { - samplesCount = samplesCount || 10; - var bytes = new Array(samplesCount); - var timestamps = new Array(samplesCount); - var head = 0; - var tail = 0; - var firstSampleTS; - min = min !== undefined ? min : 1000; - return function push(chunkLength) { - var now = Date.now(); - var startedAt = timestamps[tail]; - if (!firstSampleTS) { - firstSampleTS = now; - } - bytes[head] = chunkLength; - timestamps[head] = now; - var i = tail; - var bytesCount = 0; - while (i !== head) { - bytesCount += bytes[i++]; - i = i % samplesCount; - } - head = (head + 1) % samplesCount; - if (head === tail) { - tail = (tail + 1) % samplesCount; - } - if (now - firstSampleTS < min) { - return; - } - var passed = startedAt && now - startedAt; - return passed ? Math.round(bytesCount * 1000 / passed) : undefined; - }; - } - - function progressEventReducer(listener, isDownloadStream) { - var bytesNotified = 0; - var _speedometer = speedometer(50, 250); - return function (e) { - var loaded = e.loaded; - var total = e.lengthComputable ? e.total : undefined; - var progressBytes = loaded - bytesNotified; - var rate = _speedometer(progressBytes); - var inRange = loaded <= total; - bytesNotified = loaded; - var data = { - loaded: loaded, - total: total, - progress: total ? loaded / total : undefined, - bytes: progressBytes, - rate: rate ? rate : undefined, - estimated: rate && total && inRange ? (total - loaded) / rate : undefined, - event: e - }; - data[isDownloadStream ? 'download' : 'upload'] = true; - listener(data); - }; - } - var isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined'; - var xhrAdapter = isXHRAdapterSupported && function (config) { - return new Promise(function dispatchXhrRequest(resolve, reject) { - var requestData = config.data; - var requestHeaders = AxiosHeaders$1.from(config.headers).normalize(); - var responseType = config.responseType; - var onCanceled; - function done() { - if (config.cancelToken) { - config.cancelToken.unsubscribe(onCanceled); - } - if (config.signal) { - config.signal.removeEventListener('abort', onCanceled); - } - } - if (utils.isFormData(requestData) && (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv)) { - requestHeaders.setContentType(false); // Let the browser set it - } - - var request = new XMLHttpRequest(); - - // HTTP basic authentication - if (config.auth) { - var username = config.auth.username || ''; - var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : ''; - requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password)); - } - var fullPath = buildFullPath(config.baseURL, config.url); - request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); - - // Set the request timeout in MS - request.timeout = config.timeout; - function onloadend() { - if (!request) { - return; - } - // Prepare the response - var responseHeaders = AxiosHeaders$1.from('getAllResponseHeaders' in request && request.getAllResponseHeaders()); - var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response; - var response = { - data: responseData, - status: request.status, - statusText: request.statusText, - headers: responseHeaders, - config: config, - request: request - }; - settle(function _resolve(value) { - resolve(value); - done(); - }, function _reject(err) { - reject(err); - done(); - }, response); - - // Clean up request - request = null; - } - if ('onloadend' in request) { - // Use onloadend if available - request.onloadend = onloadend; - } else { - // Listen for ready state to emulate onloadend - request.onreadystatechange = function handleLoad() { - if (!request || request.readyState !== 4) { - return; - } - - // The request errored out and we didn't get a response, this will be - // handled by onerror instead - // With one exception: request that using file: protocol, most browsers - // will return status as 0 even though it's a successful request - if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { - return; - } - // readystate handler is calling before onerror or ontimeout handlers, - // so we should call onloadend on the next 'tick' - setTimeout(onloadend); - }; - } - - // Handle browser request cancellation (as opposed to a manual cancellation) - request.onabort = function handleAbort() { - if (!request) { - return; - } - reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Handle low level network errors - request.onerror = function handleError() { - // Real errors are hidden from us by the browser - // onerror should only fire if it's a network error - reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request)); - - // Clean up request - request = null; - }; - - // Handle timeout - request.ontimeout = function handleTimeout() { - var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded'; - var transitional = config.transitional || transitionalDefaults; - if (config.timeoutErrorMessage) { - timeoutErrorMessage = config.timeoutErrorMessage; - } - reject(new AxiosError(timeoutErrorMessage, transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED, config, request)); - - // Clean up request - request = null; - }; - - // Add xsrf header - // This is only done if running in a standard browser environment. - // Specifically not if we're in a web worker, or react-native. - if (platform.isStandardBrowserEnv) { - // Add xsrf header - var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName && cookies.read(config.xsrfCookieName); - if (xsrfValue) { - requestHeaders.set(config.xsrfHeaderName, xsrfValue); - } - } - - // Remove Content-Type if data is undefined - requestData === undefined && requestHeaders.setContentType(null); - - // Add headers to the request - if ('setRequestHeader' in request) { - utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) { - request.setRequestHeader(key, val); - }); - } - - // Add withCredentials to request if needed - if (!utils.isUndefined(config.withCredentials)) { - request.withCredentials = !!config.withCredentials; - } - - // Add responseType to request if needed - if (responseType && responseType !== 'json') { - request.responseType = config.responseType; - } - - // Handle progress if needed - if (typeof config.onDownloadProgress === 'function') { - request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true)); - } - - // Not all browsers support upload events - if (typeof config.onUploadProgress === 'function' && request.upload) { - request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress)); - } - if (config.cancelToken || config.signal) { - // Handle cancellation - // eslint-disable-next-line func-names - onCanceled = function onCanceled(cancel) { - if (!request) { - return; - } - reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel); - request.abort(); - request = null; - }; - config.cancelToken && config.cancelToken.subscribe(onCanceled); - if (config.signal) { - config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled); - } - } - var protocol = parseProtocol(fullPath); - if (protocol && platform.protocols.indexOf(protocol) === -1) { - reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config)); - return; - } - - // Send the request - request.send(requestData || null); - }); - }; - - var knownAdapters = { - http: httpAdapter, - xhr: xhrAdapter - }; - utils.forEach(knownAdapters, function (fn, value) { - if (fn) { - try { - Object.defineProperty(fn, 'name', { - value: value - }); - } catch (e) { - // eslint-disable-next-line no-empty - } - Object.defineProperty(fn, 'adapterName', { - value: value - }); - } - }); - var adapters = { - getAdapter: function getAdapter(adapters) { - adapters = utils.isArray(adapters) ? adapters : [adapters]; - var _adapters = adapters, - length = _adapters.length; - var nameOrAdapter; - var adapter; - for (var i = 0; i < length; i++) { - nameOrAdapter = adapters[i]; - if (adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter) { - break; - } - } - if (!adapter) { - if (adapter === false) { - throw new AxiosError("Adapter ".concat(nameOrAdapter, " is not supported by the environment"), 'ERR_NOT_SUPPORT'); - } - throw new Error(utils.hasOwnProp(knownAdapters, nameOrAdapter) ? "Adapter '".concat(nameOrAdapter, "' is not available in the build") : "Unknown adapter '".concat(nameOrAdapter, "'")); - } - if (!utils.isFunction(adapter)) { - throw new TypeError('adapter is not a function'); - } - return adapter; - }, - adapters: knownAdapters - }; - - /** - * Throws a `CanceledError` if cancellation has been requested. - * - * @param {Object} config The config that is to be used for the request - * - * @returns {void} - */ - function throwIfCancellationRequested(config) { - if (config.cancelToken) { - config.cancelToken.throwIfRequested(); - } - if (config.signal && config.signal.aborted) { - throw new CanceledError(null, config); - } - } - - /** - * Dispatch a request to the server using the configured adapter. - * - * @param {object} config The config that is to be used for the request - * - * @returns {Promise} The Promise to be fulfilled - */ - function dispatchRequest(config) { - throwIfCancellationRequested(config); - config.headers = AxiosHeaders$1.from(config.headers); - - // Transform request data - config.data = transformData.call(config, config.transformRequest); - if (['post', 'put', 'patch'].indexOf(config.method) !== -1) { - config.headers.setContentType('application/x-www-form-urlencoded', false); - } - var adapter = adapters.getAdapter(config.adapter || defaults$1.adapter); - return adapter(config).then(function onAdapterResolution(response) { - throwIfCancellationRequested(config); - - // Transform response data - response.data = transformData.call(config, config.transformResponse, response); - response.headers = AxiosHeaders$1.from(response.headers); - return response; - }, function onAdapterRejection(reason) { - if (!isCancel(reason)) { - throwIfCancellationRequested(config); - - // Transform response data - if (reason && reason.response) { - reason.response.data = transformData.call(config, config.transformResponse, reason.response); - reason.response.headers = AxiosHeaders$1.from(reason.response.headers); - } - } - return Promise.reject(reason); - }); - } - - var headersToObject = function headersToObject(thing) { - return thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing; - }; - - /** - * Config-specific merge-function which creates a new config-object - * by merging two configuration objects together. - * - * @param {Object} config1 - * @param {Object} config2 - * - * @returns {Object} New object resulting from merging config2 to config1 - */ - function mergeConfig(config1, config2) { - // eslint-disable-next-line no-param-reassign - config2 = config2 || {}; - var config = {}; - function getMergedValue(target, source, caseless) { - if (utils.isPlainObject(target) && utils.isPlainObject(source)) { - return utils.merge.call({ - caseless: caseless - }, target, source); - } else if (utils.isPlainObject(source)) { - return utils.merge({}, source); - } else if (utils.isArray(source)) { - return source.slice(); - } - return source; - } - - // eslint-disable-next-line consistent-return - function mergeDeepProperties(a, b, caseless) { - if (!utils.isUndefined(b)) { - return getMergedValue(a, b, caseless); - } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a, caseless); - } - } - - // eslint-disable-next-line consistent-return - function valueFromConfig2(a, b) { - if (!utils.isUndefined(b)) { - return getMergedValue(undefined, b); - } - } - - // eslint-disable-next-line consistent-return - function defaultToConfig2(a, b) { - if (!utils.isUndefined(b)) { - return getMergedValue(undefined, b); - } else if (!utils.isUndefined(a)) { - return getMergedValue(undefined, a); - } - } - - // eslint-disable-next-line consistent-return - function mergeDirectKeys(a, b, prop) { - if (prop in config2) { - return getMergedValue(a, b); - } else if (prop in config1) { - return getMergedValue(undefined, a); - } - } - var mergeMap = { - url: valueFromConfig2, - method: valueFromConfig2, - data: valueFromConfig2, - baseURL: defaultToConfig2, - transformRequest: defaultToConfig2, - transformResponse: defaultToConfig2, - paramsSerializer: defaultToConfig2, - timeout: defaultToConfig2, - timeoutMessage: defaultToConfig2, - withCredentials: defaultToConfig2, - adapter: defaultToConfig2, - responseType: defaultToConfig2, - xsrfCookieName: defaultToConfig2, - xsrfHeaderName: defaultToConfig2, - onUploadProgress: defaultToConfig2, - onDownloadProgress: defaultToConfig2, - decompress: defaultToConfig2, - maxContentLength: defaultToConfig2, - maxBodyLength: defaultToConfig2, - beforeRedirect: defaultToConfig2, - transport: defaultToConfig2, - httpAgent: defaultToConfig2, - httpsAgent: defaultToConfig2, - cancelToken: defaultToConfig2, - socketPath: defaultToConfig2, - responseEncoding: defaultToConfig2, - validateStatus: mergeDirectKeys, - headers: function headers(a, b) { - return mergeDeepProperties(headersToObject(a), headersToObject(b), true); - } - }; - utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) { - var merge = mergeMap[prop] || mergeDeepProperties; - var configValue = merge(config1[prop], config2[prop], prop); - utils.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue); - }); - return config; - } - - var VERSION = "1.3.6"; - - var validators$1 = {}; - - // eslint-disable-next-line func-names - ['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) { - validators$1[type] = function validator(thing) { - return _typeof(thing) === type || 'a' + (i < 1 ? 'n ' : ' ') + type; - }; - }); - var deprecatedWarnings = {}; - - /** - * Transitional option validator - * - * @param {function|boolean?} validator - set to false if the transitional option has been removed - * @param {string?} version - deprecated version / removed since version - * @param {string?} message - some message with additional info - * - * @returns {function} - */ - validators$1.transitional = function transitional(validator, version, message) { - function formatMessage(opt, desc) { - return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : ''); - } - - // eslint-disable-next-line func-names - return function (value, opt, opts) { - if (validator === false) { - throw new AxiosError(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')), AxiosError.ERR_DEPRECATED); - } - if (version && !deprecatedWarnings[opt]) { - deprecatedWarnings[opt] = true; - // eslint-disable-next-line no-console - console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future')); - } - return validator ? validator(value, opt, opts) : true; - }; - }; - - /** - * Assert object's properties type - * - * @param {object} options - * @param {object} schema - * @param {boolean?} allowUnknown - * - * @returns {object} - */ - - function assertOptions(options, schema, allowUnknown) { - if (_typeof(options) !== 'object') { - throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE); - } - var keys = Object.keys(options); - var i = keys.length; - while (i-- > 0) { - var opt = keys[i]; - var validator = schema[opt]; - if (validator) { - var value = options[opt]; - var result = value === undefined || validator(value, opt, options); - if (result !== true) { - throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE); - } - continue; - } - if (allowUnknown !== true) { - throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION); - } - } - } - var validator = { - assertOptions: assertOptions, - validators: validators$1 - }; - - var validators = validator.validators; - - /** - * Create a new instance of Axios - * - * @param {Object} instanceConfig The default config for the instance - * - * @return {Axios} A new instance of Axios - */ - var Axios = /*#__PURE__*/function () { - function Axios(instanceConfig) { - _classCallCheck(this, Axios); - this.defaults = instanceConfig; - this.interceptors = { - request: new InterceptorManager$1(), - response: new InterceptorManager$1() - }; - } - - /** - * Dispatch a request - * - * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults) - * @param {?Object} config - * - * @returns {Promise} The Promise to be fulfilled - */ - _createClass(Axios, [{ - key: "request", - value: function request(configOrUrl, config) { - /*eslint no-param-reassign:0*/ - // Allow for axios('example/url'[, config]) a la fetch API - if (typeof configOrUrl === 'string') { - config = config || {}; - config.url = configOrUrl; - } else { - config = configOrUrl || {}; - } - config = mergeConfig(this.defaults, config); - var _config = config, - transitional = _config.transitional, - paramsSerializer = _config.paramsSerializer, - headers = _config.headers; - if (transitional !== undefined) { - validator.assertOptions(transitional, { - silentJSONParsing: validators.transitional(validators["boolean"]), - forcedJSONParsing: validators.transitional(validators["boolean"]), - clarifyTimeoutError: validators.transitional(validators["boolean"]) - }, false); - } - if (paramsSerializer != null) { - if (utils.isFunction(paramsSerializer)) { - config.paramsSerializer = { - serialize: paramsSerializer - }; - } else { - validator.assertOptions(paramsSerializer, { - encode: validators["function"], - serialize: validators["function"] - }, true); - } - } - - // Set config.method - config.method = (config.method || this.defaults.method || 'get').toLowerCase(); - var contextHeaders; - - // Flatten headers - contextHeaders = headers && utils.merge(headers.common, headers[config.method]); - contextHeaders && utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function (method) { - delete headers[method]; - }); - config.headers = AxiosHeaders$1.concat(contextHeaders, headers); - - // filter out skipped interceptors - var requestInterceptorChain = []; - var synchronousRequestInterceptors = true; - this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { - if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) { - return; - } - synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous; - requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected); - }); - var responseInterceptorChain = []; - this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { - responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected); - }); - var promise; - var i = 0; - var len; - if (!synchronousRequestInterceptors) { - var chain = [dispatchRequest.bind(this), undefined]; - chain.unshift.apply(chain, requestInterceptorChain); - chain.push.apply(chain, responseInterceptorChain); - len = chain.length; - promise = Promise.resolve(config); - while (i < len) { - promise = promise.then(chain[i++], chain[i++]); - } - return promise; - } - len = requestInterceptorChain.length; - var newConfig = config; - i = 0; - while (i < len) { - var onFulfilled = requestInterceptorChain[i++]; - var onRejected = requestInterceptorChain[i++]; - try { - newConfig = onFulfilled(newConfig); - } catch (error) { - onRejected.call(this, error); - break; - } - } - try { - promise = dispatchRequest.call(this, newConfig); - } catch (error) { - return Promise.reject(error); - } - i = 0; - len = responseInterceptorChain.length; - while (i < len) { - promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]); - } - return promise; - } - }, { - key: "getUri", - value: function getUri(config) { - config = mergeConfig(this.defaults, config); - var fullPath = buildFullPath(config.baseURL, config.url); - return buildURL(fullPath, config.params, config.paramsSerializer); - } - }]); - return Axios; - }(); // Provide aliases for supported request methods - utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { - /*eslint func-names:0*/ - Axios.prototype[method] = function (url, config) { - return this.request(mergeConfig(config || {}, { - method: method, - url: url, - data: (config || {}).data - })); - }; - }); - utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { - /*eslint func-names:0*/ - - function generateHTTPMethod(isForm) { - return function httpMethod(url, data, config) { - return this.request(mergeConfig(config || {}, { - method: method, - headers: isForm ? { - 'Content-Type': 'multipart/form-data' - } : {}, - url: url, - data: data - })); - }; - } - Axios.prototype[method] = generateHTTPMethod(); - Axios.prototype[method + 'Form'] = generateHTTPMethod(true); - }); - var Axios$1 = Axios; - - /** - * A `CancelToken` is an object that can be used to request cancellation of an operation. - * - * @param {Function} executor The executor function. - * - * @returns {CancelToken} - */ - var CancelToken = /*#__PURE__*/function () { - function CancelToken(executor) { - _classCallCheck(this, CancelToken); - if (typeof executor !== 'function') { - throw new TypeError('executor must be a function.'); - } - var resolvePromise; - this.promise = new Promise(function promiseExecutor(resolve) { - resolvePromise = resolve; - }); - var token = this; - - // eslint-disable-next-line func-names - this.promise.then(function (cancel) { - if (!token._listeners) return; - var i = token._listeners.length; - while (i-- > 0) { - token._listeners[i](cancel); - } - token._listeners = null; - }); - - // eslint-disable-next-line func-names - this.promise.then = function (onfulfilled) { - var _resolve; - // eslint-disable-next-line func-names - var promise = new Promise(function (resolve) { - token.subscribe(resolve); - _resolve = resolve; - }).then(onfulfilled); - promise.cancel = function reject() { - token.unsubscribe(_resolve); - }; - return promise; - }; - executor(function cancel(message, config, request) { - if (token.reason) { - // Cancellation has already been requested - return; - } - token.reason = new CanceledError(message, config, request); - resolvePromise(token.reason); - }); - } - - /** - * Throws a `CanceledError` if cancellation has been requested. - */ - _createClass(CancelToken, [{ - key: "throwIfRequested", - value: function throwIfRequested() { - if (this.reason) { - throw this.reason; - } - } - - /** - * Subscribe to the cancel signal - */ - }, { - key: "subscribe", - value: function subscribe(listener) { - if (this.reason) { - listener(this.reason); - return; - } - if (this._listeners) { - this._listeners.push(listener); - } else { - this._listeners = [listener]; - } - } - - /** - * Unsubscribe from the cancel signal - */ - }, { - key: "unsubscribe", - value: function unsubscribe(listener) { - if (!this._listeners) { - return; - } - var index = this._listeners.indexOf(listener); - if (index !== -1) { - this._listeners.splice(index, 1); - } - } - - /** - * Returns an object that contains a new `CancelToken` and a function that, when called, - * cancels the `CancelToken`. - */ - }], [{ - key: "source", - value: function source() { - var cancel; - var token = new CancelToken(function executor(c) { - cancel = c; - }); - return { - token: token, - cancel: cancel - }; - } - }]); - return CancelToken; - }(); - var CancelToken$1 = CancelToken; - - /** - * Syntactic sugar for invoking a function and expanding an array for arguments. - * - * Common use case would be to use `Function.prototype.apply`. - * - * ```js - * function f(x, y, z) {} - * var args = [1, 2, 3]; - * f.apply(null, args); - * ``` - * - * With `spread` this example can be re-written. - * - * ```js - * spread(function(x, y, z) {})([1, 2, 3]); - * ``` - * - * @param {Function} callback - * - * @returns {Function} - */ - function spread(callback) { - return function wrap(arr) { - return callback.apply(null, arr); - }; - } - - /** - * Determines whether the payload is an error thrown by Axios - * - * @param {*} payload The value to test - * - * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false - */ - function isAxiosError(payload) { - return utils.isObject(payload) && payload.isAxiosError === true; - } - - var HttpStatusCode = { - Continue: 100, - SwitchingProtocols: 101, - Processing: 102, - EarlyHints: 103, - Ok: 200, - Created: 201, - Accepted: 202, - NonAuthoritativeInformation: 203, - NoContent: 204, - ResetContent: 205, - PartialContent: 206, - MultiStatus: 207, - AlreadyReported: 208, - ImUsed: 226, - MultipleChoices: 300, - MovedPermanently: 301, - Found: 302, - SeeOther: 303, - NotModified: 304, - UseProxy: 305, - Unused: 306, - TemporaryRedirect: 307, - PermanentRedirect: 308, - BadRequest: 400, - Unauthorized: 401, - PaymentRequired: 402, - Forbidden: 403, - NotFound: 404, - MethodNotAllowed: 405, - NotAcceptable: 406, - ProxyAuthenticationRequired: 407, - RequestTimeout: 408, - Conflict: 409, - Gone: 410, - LengthRequired: 411, - PreconditionFailed: 412, - PayloadTooLarge: 413, - UriTooLong: 414, - UnsupportedMediaType: 415, - RangeNotSatisfiable: 416, - ExpectationFailed: 417, - ImATeapot: 418, - MisdirectedRequest: 421, - UnprocessableEntity: 422, - Locked: 423, - FailedDependency: 424, - TooEarly: 425, - UpgradeRequired: 426, - PreconditionRequired: 428, - TooManyRequests: 429, - RequestHeaderFieldsTooLarge: 431, - UnavailableForLegalReasons: 451, - InternalServerError: 500, - NotImplemented: 501, - BadGateway: 502, - ServiceUnavailable: 503, - GatewayTimeout: 504, - HttpVersionNotSupported: 505, - VariantAlsoNegotiates: 506, - InsufficientStorage: 507, - LoopDetected: 508, - NotExtended: 510, - NetworkAuthenticationRequired: 511 - }; - Object.entries(HttpStatusCode).forEach(function (_ref) { - var _ref2 = _slicedToArray(_ref, 2), - key = _ref2[0], - value = _ref2[1]; - HttpStatusCode[value] = key; - }); - var HttpStatusCode$1 = HttpStatusCode; - - /** - * Create an instance of Axios - * - * @param {Object} defaultConfig The default config for the instance - * - * @returns {Axios} A new instance of Axios - */ - function createInstance(defaultConfig) { - var context = new Axios$1(defaultConfig); - var instance = bind(Axios$1.prototype.request, context); - - // Copy axios.prototype to instance - utils.extend(instance, Axios$1.prototype, context, { - allOwnKeys: true - }); - - // Copy context to instance - utils.extend(instance, context, null, { - allOwnKeys: true - }); - - // Factory for creating new instances - instance.create = function create(instanceConfig) { - return createInstance(mergeConfig(defaultConfig, instanceConfig)); - }; - return instance; - } - - // Create the default instance to be exported - var axios = createInstance(defaults$1); - - // Expose Axios class to allow class inheritance - axios.Axios = Axios$1; - - // Expose Cancel & CancelToken - axios.CanceledError = CanceledError; - axios.CancelToken = CancelToken$1; - axios.isCancel = isCancel; - axios.VERSION = VERSION; - axios.toFormData = toFormData; - - // Expose AxiosError class - axios.AxiosError = AxiosError; - - // alias for CanceledError for backward compatibility - axios.Cancel = axios.CanceledError; - - // Expose all/spread - axios.all = function all(promises) { - return Promise.all(promises); - }; - axios.spread = spread; - - // Expose isAxiosError - axios.isAxiosError = isAxiosError; - - // Expose mergeConfig - axios.mergeConfig = mergeConfig; - axios.AxiosHeaders = AxiosHeaders$1; - axios.formToJSON = function (thing) { - return formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing); - }; - axios.HttpStatusCode = HttpStatusCode$1; - axios["default"] = axios; - - return axios; - -})); -//# sourceMappingURL=axios.js.map diff --git a/public/site/js/common.js b/public/site/js/common.js deleted file mode 100644 index a526de435..000000000 --- a/public/site/js/common.js +++ /dev/null @@ -1,308 +0,0 @@ -const menuBtn = document.getElementById("menuBtn"); // 768模式下的菜单按钮 -const drawer = document.querySelector(".drawer"); // 768模式下的菜单 -const theme_light = document.querySelectorAll(".theme_light"); -const theme_dark = document.querySelectorAll(".theme_dark"); -/* 主题切换更换图片 */ -const themeSwitch = (val1, val2) => { - theme_light.forEach((item) => { - item.style.display = val1; - }); - theme_dark.forEach((item) => { - item.style.display = val2; - }); -}; -/* 更换图片 */ -const changeImageSrc = (img, src) => { - const imgDom = document.querySelectorAll(img); - const url = window.location.href; // 获取当前浏览器 URL - if (imgDom.length > 0) { - imgDom.forEach((item) => { - item.src = url.includes("site/i") - ? `./img/${src}` - : `../img/${src}`; - }); - } -}; -/* 设置默认语言 */ -if (!localStorage.getItem("lang")) { - localStorage.setItem("lang", "zh"); -} -/* 设置默认主题 */ -const localStorageTheme = localStorage.getItem("theme"); -if (!localStorageTheme) { - setTheme("light"); - localStorage.setItem("theme", "light"); -} else { - setTheme(localStorageTheme); -} - -/* 切换主题函数 */ -function setTheme(theme) { - const root = document.documentElement; - const lang = localStorage.getItem("lang"); - changeImageSrc("#logo", `${theme}/logo.svg`); - changeImageSrc("#home_pic", `${theme}/${lang}_home_pic1.png`); - changeImageSrc("#home_pic2", `${theme}/${lang}_home_pic2.png`); - changeImageSrc("#home_pic3", `${theme}/${lang}_home_pic3.png`); - changeImageSrc("#home_pic4", `${theme}/${lang}_home_pic4.png`); - changeImageSrc("#home_pic5", `${theme}/${lang}_home_pic5.png`); - changeImageSrc("#home_pic6", `${theme}/${lang}_home_pic6.png`); - changeImageSrc("#solution_pic1", `${theme}/${lang}_solution_pic1.png`); - changeImageSrc("#solution_pic2", `${theme}/${lang}_solution_pic2.png`); - changeImageSrc("#solution_pic3", `${theme}/${lang}_solution_pic3.png`); - changeImageSrc("#dow_pic1", `${theme}/${lang}_dow_pic1.png`); - changeImageSrc("#solution_pic4", `${theme}/solution_pic4.png`); - changeImageSrc("#about_pic1", `${theme}/about_pic1.png`); - changeImageSrc("#home_icon1", `${theme}/home_icon1.png`); - changeImageSrc("#home_icon2", `${theme}/home_icon2.png`); - changeImageSrc("#home_icon3", `${theme}/home_icon3.png`); - changeImageSrc("#home_icon4", `${theme}/home_icon4.png`); - changeImageSrc("#home_pic7", `${theme}/home_pic7.svg`); - changeImageSrc("#home_pic7_768", `${theme}/home_pic7_768.svg`); - changeImageSrc("#help_pic2", `${theme}/help_pic2.png`); - changeImageSrc("#help_pic3", `${theme}/help_pic3.png`); - root.style.setProperty( - "--bg-pic7-url", - `url(../img/${theme}/home_pic7.svg)` - ); - root.style.setProperty( - "--bg-pic7-768-url", - `url(../img/${theme}/home_pic7-768.svg)` - ); - root.style.setProperty( - `--bg-pic1-url`, - `url(../img/${theme}/${lang}_dow_pic1.png)` - ); - root.style.setProperty( - `--bg-pic2-url`, - `url(../img/${theme}/help_pic1.svg)` - ); - root.style.setProperty(`--bg-1-url`, `url(../img/${theme}/bg1.png)`); - root.style.setProperty(`--bg-2-url`, `url(../img/${theme}/bg2.png)`); - root.style.setProperty(`--bg-3-url`, `url(../img/${theme}/bg3.png)`); - root.style.setProperty(`--bg-4-url`, `url(../img/${theme}/bg4.png)`); - root.style.setProperty(`--bg-5-url`, `url(../img/${theme}/bg5.png)`); - root.style.setProperty(`--bg-6-url`, `url(../img/${theme}/bg6.png)`); - root.style.setProperty(`--bg-7-url`, `url(../img/${theme}/bg7.png)`); - root.style.setProperty(`--bg-8-url`, `url(../img/${theme}/bg8.png)`); - root.style.setProperty(`--bg-9-url`, `url(../img/${theme}/bg9.png)`); - root.style.setProperty(`--bg-10-url`, `url(../img/${theme}/bg10.png)`); - root.style.setProperty(`--bg-11-url`, `url(../img/${theme}/bg11.png)`); - root.style.setProperty( - `--bg-768-3-url`, - `url(../img/${theme}/bg3_768.png)` - ); - root.style.setProperty( - `--bg-768-4-url`, - `url(../img/${theme}/bg4_768.png)` - ); - root.style.setProperty( - `--bg-768-5-url`, - `url(../img/${theme}/bg5_768.png)` - ); - root.style.setProperty( - `--bg-768-6-url`, - `url(../img/${theme}/bg6_768.png)` - ); - root.style.setProperty( - `--bg-768-7-url`, - `url(../img/${theme}/bg7_768.png)` - ); - root.style.setProperty( - `--bg-768-8-url`, - `url(../img/${theme}/bg8_768.png)` - ); - root.style.setProperty( - `--bg-768-9-url`, - `url(../img/${theme}/bg9_768.png)` - ); - root.style.setProperty("--bg-color", theme === "dark" ? "#1E1E1E" : "#fff"); - root.style.setProperty("--text-color", theme === "dark" ? "#fff" : "#000"); - root.style.setProperty( - "--txt-gray-color", - theme === "dark" ? "#888C8A" : "#727570" - ); - root.style.setProperty( - "--txt-4ca5", - theme === "dark" ? "#A5ACA9" : "#4C4E4B" - ); - root.style.setProperty( - "--txt-theme-color", - theme === "dark" ? "#58A738" : "#8BCF70" - ); - root.style.setProperty( - "--bg-hover-color", - theme === "dark" ? "#2C312E" : "#F2F3F1" - ); - root.style.setProperty( - "--btn-hover-color", - theme === "dark" ? "#5EB939" : "#98d87f" - ); - root.style.setProperty( - "--choose-bg-hover-color", - theme === "dark" ? "#2E3533" : "#fff" - ); - root.style.setProperty( - "--box-shadow-color", - theme === "dark" ? "rgba(0, 0, 0, 0.12)" : "rgba(234, 236, 242, 0.5)" - ); - root.style.setProperty( - "--border-color", - theme === "dark" ? "#2F3329" : "#E7E9E4" - ); - root.style.setProperty( - "--pop-bg-color", - theme === "dark" ? "#202124" : "#fff" - ); - root.style.setProperty( - "--bg-fa-color", - theme === "dark" ? "#262B2A" : "#fafafa" - ); - root.style.setProperty( - "--txt-191a15-color", - theme === "dark" ? "#fff" : "#191a15" - ); - root.style.setProperty( - "--bg-rec-color", - theme === "dark" ? "#D6B300" : "#FFDD33" - ); - root.style.setProperty( - "--bg-292c2f-color", - theme === "dark" ? "#292C2F" : "#fff" - ); - root.style.setProperty( - "--pop-box-shadow", - theme === "dark" - ? "0px 4px 16px 8px rgba(0, 0, 0, 0.12)" - : "0px 0px 8px #F3F2F5" - ); - root.style.setProperty( - "--code-bg-color", - theme === "dark" ? "#2E3533" : "#000" - ); - theme === "dark" - ? themeSwitch("none", "block") - : themeSwitch("block", "none"); - localStorage.setItem("theme", theme); - drawer.classList.remove("open-drawer"); -} -/* 导航选中激活 */ -const url = window.location.pathname; -const currentTabName = url.split("/")[url.split("/").length - 1].split(".")[0]; -if ( - currentTabName && - currentTabName != "index" && - currentTabName != "help" && - currentTabName != "download" && - currentTabName != "log" -) { - const currentTab = document.querySelector(`.nav-${currentTabName}`); - if (currentTab) { - currentTab.style.backgroundColor = "var(--bg-hover-color)"; - currentTab.style.color = "var(--text-color)"; - currentTab.style.borderRadius = "6px"; - } -} -/* 导航下拉菜单函数 */ -const submenuPopDom = document.querySelector("#submenu-pop"); -const dropDownSvgDom = document.querySelector("#drop-down-svg"); -const showMenuPopHandle = () => { - submenuPopDom.style.display = "block"; - dropDownSvgDom.style.transform = "rotate(180deg)"; -}; -const changeMenu = (type) => { - submenuPopDom.style.display = "none"; - dropDownSvgDom.style.transform = ""; -}; -document.addEventListener("click", function (event) { - if (!event.target.closest("#support-txt")) { - submenuPopDom.style.display = "none"; - dropDownSvgDom.style.transform = ""; - } -}); -/* 语言切换函数 */ -const langPopDom = document.querySelector("#lang-pop"); -const shouLangPopHandle = () => { - langPopDom.style.display = "block"; -}; -const changeLanguage = (type) => { - const str = window.location.pathname; - const index = str.lastIndexOf("/"); - const newStr = str.slice(index + 1); - const lang = localStorage.getItem("lang"); - if (type != lang) { - if (str.includes("site")) { - window.location.href = `/site/${type}/${newStr}`; - } else { - window.location.href = `/site/${type}/index.html`; - } - } else { - if (str.includes("site")) { - window.location.href = `/site/${lang}/${newStr}`; - } else { - window.location.href = `/site/${lang}/index.html`; - } - } - langPopDom.style.display = "none"; - localStorage.setItem("lang", type); - drawer.classList.remove("open-drawer"); -}; -document.addEventListener("click", function (event) { - if (!event.target.closest("#lang-img")) { - langPopDom.style.display = "none"; - } -}); -/* 当屏幕宽度低于768px时显示菜单的抽屉的相关操作逻辑 */ -menuBtn.addEventListener("click", () => { - drawer.classList.add("open-drawer"); -}); -const closeDraweHandle = () => { - drawer.classList.remove("open-drawer"); -}; -window.addEventListener("click", (e) => { - if (!drawer.contains(e.target) && e.target !== menuBtn) { - drawer.classList.remove("open-drawer"); - } -}); -const expandMenuHandle = (val) => { - const actives = document.querySelector(`#${val}`); - const dropDownSvgDom = document.querySelector(`#drawer-down-${val}-svg`); - if (actives.style.display == "none") { - actives.style.display = "block"; - dropDownSvgDom.style.transform = "rotate(180deg)"; - } else { - dropDownSvgDom.style.transform = ""; - actives.style.display = "none"; - } -}; -/* 导航栏悬浮函数 */ -const navbar = document.querySelector(".nav"); -window.addEventListener("scroll", () => { - if (window.scrollY >= 30) { - navbar.classList.add("navbar-white"); - } else { - navbar.classList.remove("navbar-white"); - } -}); -const openInNewTab = (url) => { - const win = window.open(url, "_blank"); - win.focus(); -}; -// 点击其他地方置为none -document.addEventListener("click", function (event) { - let toolbarPhone = document.getElementById("side_toolbar_item_phone"); - let tooltipPhone = document.getElementById("toolbar_tooltip_phone"); - let toolbarWhtasapp = document.getElementById("side_toolbar_item_whtasapp"); - let tooltipWhtasapp = document.getElementById("toolbar_tooltip_whtasapp"); - let toolbarQrcode = document.getElementById("side_toolbar_item_qrcode"); - let tooltipQrcode = document.getElementById("toolbar_tooltip_qrcode"); - if (!toolbarPhone.contains(event.target)) { - tooltipPhone.style.display = "none"; - } - if (!toolbarWhtasapp.contains(event.target)) { - tooltipWhtasapp.style.display = "none"; - } - if (!toolbarQrcode.contains(event.target)) { - tooltipQrcode.style.display = "none"; - } -}); diff --git a/public/site/js/googleAds.js b/public/site/js/googleAds.js deleted file mode 100644 index 48eea715b..000000000 --- a/public/site/js/googleAds.js +++ /dev/null @@ -1,6 +0,0 @@ -window.dataLayer = window.dataLayer || []; -function gtag() { - dataLayer.push(arguments); -} -gtag("js", new Date()); -gtag("config", "AW-16660800396"); diff --git a/public/site/js/googleAnalyze.js b/public/site/js/googleAnalyze.js deleted file mode 100644 index bc8e5fd53..000000000 --- a/public/site/js/googleAnalyze.js +++ /dev/null @@ -1,6 +0,0 @@ -window.dataLayer = window.dataLayer || []; -function gtag() { - dataLayer.push(arguments); -} -gtag("js", new Date()); -gtag("config", "G-PE77P6491J"); diff --git a/public/site/js/markdown-it.min.js b/public/site/js/markdown-it.min.js deleted file mode 100644 index 5e6f25691..000000000 --- a/public/site/js/markdown-it.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! markdown-it 14.1.0 https://github.com/markdown-it/markdown-it @license MIT */ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).markdownit=e()}(this,(function(){"use strict";const t={};function e(r,n){"string"!=typeof n&&(n=e.defaultChars);const s=function(e){let r=t[e];if(r)return r;r=t[e]=[];for(let t=0;t<128;t++){const e=String.fromCharCode(t);r.push(e)}for(let t=0;t=55296&&t<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(t),r+=6;continue}}if(240==(248&i)&&r+91114111?e+="\ufffd\ufffd\ufffd\ufffd":(t-=65536,e+=String.fromCharCode(55296+(t>>10),56320+(1023&t))),r+=9;continue}}e+="\ufffd"}}return e}))}e.defaultChars=";/?:@&=+$,#",e.componentChars="";const r={};function n(t,e,s){"string"!=typeof e&&(s=e,e=n.defaultChars),void 0===s&&(s=!0);const i=function(t){let e=r[t];if(e)return e;e=r[t]=[];for(let t=0;t<128;t++){const r=String.fromCharCode(t);/^[0-9a-z]$/i.test(r)?e.push(r):e.push("%"+("0"+t.toString(16).toUpperCase()).slice(-2))}for(let r=0;r=55296&&n<=57343){if(n>=55296&&n<=56319&&e+1=56320&&r<=57343){o+=encodeURIComponent(t[e]+t[e+1]),e++;continue}}o+="%EF%BF%BD"}else o+=encodeURIComponent(t[e])}return o}function s(t){let e="";return e+=t.protocol||"",e+=t.slashes?"//":"",e+=t.auth?t.auth+"@":"",t.hostname&&-1!==t.hostname.indexOf(":")?e+="["+t.hostname+"]":e+=t.hostname||"",e+=t.port?":"+t.port:"",e+=t.pathname||"",e+=t.search||"",e+=t.hash||"",e}function i(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}n.defaultChars=";/?:@&=+$,-_.!~*'()#",n.componentChars="-_.!~*'()";const o=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,c=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,a=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(a),h=["%","/","?",";","#"].concat(l),p=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,_={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function g(t,e){if(t&&t instanceof i)return t;const r=new i;return r.parse(t,e),r}i.prototype.parse=function(t,e){let r,n,s,i=t;if(i=i.trim(),!e&&1===t.split("#").length){const t=c.exec(i);if(t)return this.pathname=t[1],t[2]&&(this.search=t[2]),this}let u=o.exec(i);if(u&&(u=u[0],r=u.toLowerCase(),this.protocol=u,i=i.substr(u.length)),(e||u||i.match(/^\/\/[^@\/]+@[^@\/]+/))&&(s="//"===i.substr(0,2),!s||u&&_[u]||(i=i.substr(2),this.slashes=!0)),!_[u]&&(s||u&&!m[u])){let t,e,r=-1;for(let t=0;t127?n+="x":n+=r[t];if(!n.match(f)){const n=t.slice(0,e),s=t.slice(e+1),o=r.match(d);o&&(n.push(o[1]),s.unshift(o[2])),s.length&&(i=s.join(".")+i),this.hostname=n.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),o&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}const a=i.indexOf("#");-1!==a&&(this.hash=i.substr(a),i=i.slice(0,a));const l=i.indexOf("?");return-1!==l&&(this.search=i.substr(l),i=i.slice(0,l)),i&&(this.pathname=i),m[r]&&this.hostname&&!this.pathname&&(this.pathname=""),this},i.prototype.parseHost=function(t){let e=u.exec(t);e&&(e=e[0],":"!==e&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};var k,D=Object.freeze({__proto__:null,decode:e,encode:n,format:s,parse:g}),C=/[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,y=/[\0-\x1F\x7F-\x9F]/,E=/[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061D-\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1B7D\u1B7E\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52-\u2E5D\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDEAD\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3E]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD81B[\uDE97-\uDE9A\uDFE2]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]|\uD83A[\uDD5E\uDD5F]/,A=/[\$\+<->\^`\|~\xA2-\xA6\xA8\xA9\xAC\xAE-\xB1\xB4\xB8\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0384\u0385\u03F6\u0482\u058D-\u058F\u0606-\u0608\u060B\u060E\u060F\u06DE\u06E9\u06FD\u06FE\u07F6\u07FE\u07FF\u0888\u09F2\u09F3\u09FA\u09FB\u0AF1\u0B70\u0BF3-\u0BFA\u0C7F\u0D4F\u0D79\u0E3F\u0F01-\u0F03\u0F13\u0F15-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE\u0FCF\u0FD5-\u0FD8\u109E\u109F\u1390-\u1399\u166D\u17DB\u1940\u19DE-\u19FF\u1B61-\u1B6A\u1B74-\u1B7C\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2044\u2052\u207A-\u207C\u208A-\u208C\u20A0-\u20C0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2307\u230C-\u2328\u232B-\u2426\u2440-\u244A\u249C-\u24E9\u2500-\u2767\u2794-\u27C4\u27C7-\u27E5\u27F0-\u2982\u2999-\u29D7\u29DC-\u29FB\u29FE-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2E50\u2E51\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3004\u3012\u3013\u3020\u3036\u3037\u303E\u303F\u309B\u309C\u3190\u3191\u3196-\u319F\u31C0-\u31E3\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uAA77-\uAA79\uAB5B\uAB6A\uAB6B\uFB29\uFBB2-\uFBC2\uFD40-\uFD4F\uFDCF\uFDFC-\uFDFF\uFE62\uFE64-\uFE66\uFE69\uFF04\uFF0B\uFF1C-\uFF1E\uFF3E\uFF40\uFF5C\uFF5E\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC]|\uD802[\uDC77\uDC78\uDEC8]|\uD805\uDF3F|\uD807[\uDFD5-\uDFF1]|\uD81A[\uDF3C-\uDF3F\uDF45]|\uD82F\uDC9C|\uD833[\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85\uDE86]|\uD838[\uDD4F\uDEFF]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED7\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDF76\uDF7B-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0\uDCB1\uDD00-\uDE53\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC5\uDECE-\uDEDB\uDEE0-\uDEE8\uDEF0-\uDEF8\uDF00-\uDF92\uDF94-\uDFCA]/,b=/[ \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/,F=Object.freeze({__proto__:null,Any:C,Cc:y,Cf:/[\xAD\u0600-\u0605\u061C\u06DD\u070F\u0890\u0891\u08E2\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804[\uDCBD\uDCCD]|\uD80D[\uDC30-\uDC3F]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/,P:E,S:A,Z:b}),x=new Uint16Array('\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c'.split("").map((t=>t.charCodeAt(0)))),w=new Uint16Array("\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022".split("").map((t=>t.charCodeAt(0))));const v=new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),z=null!==(k=String.fromCodePoint)&&void 0!==k?k:function(t){let e="";return t>65535&&(t-=65536,e+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e+=String.fromCharCode(t),e};var S;!function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(S||(S={}));var q,B,L;function I(t){return t>=S.ZERO&&t<=S.NINE}function M(t){return t>=S.UPPER_A&&t<=S.UPPER_F||t>=S.LOWER_A&&t<=S.LOWER_F}function T(t){return t===S.EQUALS||function(t){return t>=S.UPPER_A&&t<=S.UPPER_Z||t>=S.LOWER_A&&t<=S.LOWER_Z||I(t)}(t)}!function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(q||(q={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(B||(B={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(L||(L={}));class R{constructor(t,e,r){this.decodeTree=t,this.emitCodePoint=e,this.errors=r,this.state=B.EntityStart,this.consumed=1,this.result=0,this.treeIndex=0,this.excess=1,this.decodeMode=L.Strict}startEntity(t){this.decodeMode=t,this.state=B.EntityStart,this.result=0,this.treeIndex=0,this.excess=1,this.consumed=1}write(t,e){switch(this.state){case B.EntityStart:return t.charCodeAt(e)===S.NUM?(this.state=B.NumericStart,this.consumed+=1,this.stateNumericStart(t,e+1)):(this.state=B.NamedEntity,this.stateNamedEntity(t,e));case B.NumericStart:return this.stateNumericStart(t,e);case B.NumericDecimal:return this.stateNumericDecimal(t,e);case B.NumericHex:return this.stateNumericHex(t,e);case B.NamedEntity:return this.stateNamedEntity(t,e)}}stateNumericStart(t,e){return e>=t.length?-1:(32|t.charCodeAt(e))===S.LOWER_X?(this.state=B.NumericHex,this.consumed+=1,this.stateNumericHex(t,e+1)):(this.state=B.NumericDecimal,this.stateNumericDecimal(t,e))}addToNumericResult(t,e,r,n){if(e!==r){const s=r-e;this.result=this.result*Math.pow(n,s)+parseInt(t.substr(e,s),n),this.consumed+=s}}stateNumericHex(t,e){const r=e;for(;e=55296&&t<=57343||t>1114111?65533:null!==(e=v.get(t))&&void 0!==e?e:t}(this.result),this.consumed),this.errors&&(t!==S.SEMI&&this.errors.missingSemicolonAfterCharacterReference(),this.errors.validateNumericCharacterReference(this.result)),this.consumed}stateNamedEntity(t,e){const{decodeTree:r}=this;let n=r[this.treeIndex],s=(n&q.VALUE_LENGTH)>>14;for(;e>14,0!==s){if(i===S.SEMI)return this.emitNamedEntityData(this.treeIndex,s,this.consumed+this.excess);this.decodeMode!==L.Strict&&(this.result=this.treeIndex,this.consumed+=this.excess,this.excess=0)}}return-1}emitNotTerminatedNamedEntity(){var t;const{result:e,decodeTree:r}=this,n=(r[e]&q.VALUE_LENGTH)>>14;return this.emitNamedEntityData(e,n,this.consumed),null===(t=this.errors)||void 0===t||t.missingSemicolonAfterCharacterReference(),this.consumed}emitNamedEntityData(t,e,r){const{decodeTree:n}=this;return this.emitCodePoint(1===e?n[t]&~q.VALUE_LENGTH:n[t+1],r),3===e&&this.emitCodePoint(n[t+2],r),r}end(){var t;switch(this.state){case B.NamedEntity:return 0===this.result||this.decodeMode===L.Attribute&&this.result!==this.treeIndex?0:this.emitNotTerminatedNamedEntity();case B.NumericDecimal:return this.emitNumericEntity(0,2);case B.NumericHex:return this.emitNumericEntity(0,3);case B.NumericStart:return null===(t=this.errors)||void 0===t||t.absenceOfDigitsInNumericCharacterReference(this.consumed),0;case B.EntityStart:return 0}}}function N(t){let e="";const r=new R(t,(t=>e+=z(t)));return function(t,n){let s=0,i=0;for(;(i=t.indexOf("&",i))>=0;){e+=t.slice(s,i),r.startEntity(n);const o=r.write(t,i+1);if(o<0){s=i+r.end();break}s=i+o,i=0===o?s+1:s}const o=e+t.slice(s);return e="",o}}function P(t,e,r,n){const s=(e&q.BRANCH_LENGTH)>>7,i=e&q.JUMP_TABLE;if(0===s)return 0!==i&&n===i?r:-1;if(i){const e=n-i;return e<0||e>=s?-1:t[r+e]-1}let o=r,u=o+s-1;for(;o<=u;){const e=o+u>>>1,r=t[e];if(rn))return t[e+s];u=e-1}}return-1}const O=N(x);function j(t,e=L.Legacy){return O(t,e)}function Z(t){return"[object String]"===function(t){return Object.prototype.toString.call(t)}(t)}N(w);const $=Object.prototype.hasOwnProperty;function U(t){return Array.prototype.slice.call(arguments,1).forEach((function(e){if(e){if("object"!=typeof e)throw new TypeError(e+"must be object");Object.keys(e).forEach((function(r){t[r]=e[r]}))}})),t}function H(t,e,r){return[].concat(t.slice(0,e),r,t.slice(e+1))}function V(t){return!(t>=55296&&t<=57343)&&(!(t>=64976&&t<=65007)&&(!!(65535&~t&&65534!=(65535&t))&&(!(t>=0&&t<=8)&&(11!==t&&(!(t>=14&&t<=31)&&(!(t>=127&&t<=159)&&!(t>1114111)))))))}function G(t){if(t>65535){const e=55296+((t-=65536)>>10),r=56320+(1023&t);return String.fromCharCode(e,r)}return String.fromCharCode(t)}const W=/\\([!"#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~])/g,J=new RegExp(W.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),Q=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))$/i;function X(t){return t.indexOf("\\")<0&&t.indexOf("&")<0?t:t.replace(J,(function(t,e,r){return e||function(t,e){if(35===e.charCodeAt(0)&&Q.test(e)){const r="x"===e[1].toLowerCase()?parseInt(e.slice(2),16):parseInt(e.slice(1),10);return V(r)?G(r):t}const r=j(t);return r!==t?r:t}(t,r)}))}const Y=/[&<>"]/,K=/[&<>"]/g,tt={"&":"&","<":"<",">":">",'"':"""};function et(t){return tt[t]}function rt(t){return Y.test(t)?t.replace(K,et):t}const nt=/[.?*+^$[\]\\(){}|-]/g;function st(t){switch(t){case 9:case 32:return!0}return!1}function it(t){if(t>=8192&&t<=8202)return!0;switch(t){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1}function ot(t){return E.test(t)||A.test(t)}function ut(t){switch(t){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}}function ct(t){return t=t.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(t=t.replace(/\u1e9e/g,"\xdf")),t.toLowerCase().toUpperCase()}const at={mdurl:D,ucmicro:F};var lt=Object.freeze({__proto__:null,arrayReplaceAt:H,assign:U,escapeHtml:rt,escapeRE:function(t){return t.replace(nt,"\\$&")},fromCodePoint:G,has:function(t,e){return $.call(t,e)},isMdAsciiPunct:ut,isPunctChar:ot,isSpace:st,isString:Z,isValidEntityCode:V,isWhiteSpace:it,lib:at,normalizeReference:ct,unescapeAll:X,unescapeMd:function(t){return t.indexOf("\\")<0?t:t.replace(W,"$1")}});var ht=Object.freeze({__proto__:null,parseLinkDestination:function(t,e,r){let n,s=e;const i={ok:!1,pos:0,str:""};if(60===t.charCodeAt(s)){for(s++;s32))return i;if(41===n){if(0===o)break;o--}s++}return e===s||0!==o||(i.str=X(t.slice(e,s)),i.pos=s,i.ok=!0),i},parseLinkLabel:function(t,e,r){let n,s,i,o;const u=t.posMax,c=t.pos;for(t.pos=e+1,n=1;t.pos=r)return o;let n=t.charCodeAt(i);if(34!==n&&39!==n&&40!==n)return o;e++,i++,40===n&&(n=41),o.marker=n}for(;i"+rt(i.content)+""},pt.code_block=function(t,e,r,n,s){const i=t[e];return""+rt(t[e].content)+"\n"},pt.fence=function(t,e,r,n,s){const i=t[e],o=i.info?X(i.info).trim():"";let u,c="",a="";if(o){const t=o.split(/(\s+)/g);c=t[0],a=t.slice(2).join("")}if(u=r.highlight&&r.highlight(i.content,c,a)||rt(i.content),0===u.indexOf("${u}\n`}return`
      ${u}
      \n`},pt.image=function(t,e,r,n,s){const i=t[e];return i.attrs[i.attrIndex("alt")][1]=s.renderInlineAsText(i.children,r,n),s.renderToken(t,e,r)},pt.hardbreak=function(t,e,r){return r.xhtmlOut?"
      \n":"
      \n"},pt.softbreak=function(t,e,r){return r.breaks?r.xhtmlOut?"
      \n":"
      \n":"\n"},pt.text=function(t,e){return rt(t[e].content)},pt.html_block=function(t,e){return t[e].content},pt.html_inline=function(t,e){return t[e].content},ft.prototype.renderAttrs=function(t){let e,r,n;if(!t.attrs)return"";for(n="",e=0,r=t.attrs.length;e\n":">",s},ft.prototype.renderInline=function(t,e,r){let n="";const s=this.rules;for(let i=0,o=t.length;i=0&&(r=this.attrs[e][1]),r},_t.prototype.attrJoin=function(t,e){const r=this.attrIndex(t);r<0?this.attrPush([t,e]):this.attrs[r][1]=this.attrs[r][1]+" "+e},mt.prototype.Token=_t;const gt=/\r\n?|\n/g,kt=/\0/g;function Dt(t){return/^<\/a\s*>/i.test(t)}const Ct=/\+-|\.\.|\?\?\?\?|!!!!|,,|--/,yt=/\((c|tm|r)\)/i,Et=/\((c|tm|r)\)/gi,At={c:"\xa9",r:"\xae",tm:"\u2122"};function bt(t,e){return At[e.toLowerCase()]}function Ft(t){let e=0;for(let r=t.length-1;r>=0;r--){const n=t[r];"text"!==n.type||e||(n.content=n.content.replace(Et,bt)),"link_open"===n.type&&"auto"===n.info&&e--,"link_close"===n.type&&"auto"===n.info&&e++}}function xt(t){let e=0;for(let r=t.length-1;r>=0;r--){const n=t[r];"text"!==n.type||e||Ct.test(n.content)&&(n.content=n.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1\u2014").replace(/(^|\s)--(?=\s|$)/gm,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1\u2013")),"link_open"===n.type&&"auto"===n.info&&e--,"link_close"===n.type&&"auto"===n.info&&e++}}const wt=/['"]/,vt=/['"]/g,zt="\u2019";function St(t,e,r){return t.slice(0,e)+r+t.slice(e+1)}function qt(t,e){let r;const n=[];for(let s=0;s=0&&!(n[r].level<=o);r--);if(n.length=r+1,"text"!==i.type)continue;let u=i.content,c=0,a=u.length;t:for(;c=0)d=u.charCodeAt(l.index-1);else for(r=s-1;r>=0&&("softbreak"!==t[r].type&&"hardbreak"!==t[r].type);r--)if(t[r].content){d=t[r].content.charCodeAt(t[r].content.length-1);break}let _=32;if(c=48&&d<=57&&(p=h=!1),h&&p&&(h=m,p=g),h||p){if(p)for(r=n.length-1;r>=0;r--){let h=n[r];if(n[r].level=0;o--){const u=s[o];if("link_close"!==u.type){if("html_inline"===u.type&&(r=u.content,/^\s]/i.test(r)&&i>0&&i--,Dt(u.content)&&i++),!(i>0)&&"text"===u.type&&t.md.linkify.test(u.content)){const r=u.content;let i=t.md.linkify.match(r);const c=[];let a=u.level,l=0;i.length>0&&0===i[0].index&&o>0&&"text_special"===s[o-1].type&&(i=i.slice(1));for(let e=0;el){const e=new t.Token("text","",0);e.content=r.slice(l,u),e.level=a,c.push(e)}const h=new t.Token("link_open","a",1);h.attrs=[["href",s]],h.level=a++,h.markup="linkify",h.info="auto",c.push(h);const p=new t.Token("text","",0);p.content=o,p.level=a,c.push(p);const f=new t.Token("link_close","a",-1);f.level=--a,f.markup="linkify",f.info="auto",c.push(f),l=i[e].lastIndex}if(l=0;e--)"inline"===t.tokens[e].type&&(yt.test(t.tokens[e].content)&&Ft(t.tokens[e].children),Ct.test(t.tokens[e].content)&&xt(t.tokens[e].children))}],["smartquotes",function(t){if(t.md.options.typographer)for(let e=t.tokens.length-1;e>=0;e--)"inline"===t.tokens[e].type&&wt.test(t.tokens[e].content)&&qt(t.tokens[e].children,t)}],["text_join",function(t){let e,r;const n=t.tokens,s=n.length;for(let t=0;t0&&this.level++,this.tokens.push(n),n},It.prototype.isEmpty=function(t){return this.bMarks[t]+this.tShift[t]>=this.eMarks[t]},It.prototype.skipEmptyLines=function(t){for(let e=this.lineMax;te;)if(!st(this.src.charCodeAt(--t)))return t+1;return t},It.prototype.skipChars=function(t,e){for(let r=this.src.length;tr;)if(e!==this.src.charCodeAt(--t))return t+1;return t},It.prototype.getLines=function(t,e,r,n){if(t>=e)return"";const s=new Array(e-t);for(let i=0,o=t;or?new Array(t-r+1).join(" ")+this.src.slice(a,c):this.src.slice(a,c)}return s.join("")},It.prototype.Token=_t;function Mt(t,e){const r=t.bMarks[e]+t.tShift[e],n=t.eMarks[e];return t.src.slice(r,n)}function Tt(t){const e=[],r=t.length;let n=0,s=t.charCodeAt(n),i=!1,o=0,u="";for(;n=n)return-1;let i=t.src.charCodeAt(s++);if(i<48||i>57)return-1;for(;;){if(s>=n)return-1;if(i=t.src.charCodeAt(s++),!(i>=48&&i<=57)){if(41===i||46===i)break;return-1}if(s-r>=10)return-1}return s`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",Ot="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",jt=new RegExp("^(?:"+Pt+"|"+Ot+"|\x3c!---?>|\x3c!--(?:[^-]|-[^-]|--[^>])*--\x3e|<[?][\\s\\S]*?[?]>|]*>|)"),Zt=new RegExp("^(?:"+Pt+"|"+Ot+")"),$t=[[/^<(script|pre|style|textarea)(?=(\s|>|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(Zt.source+"\\s*$"),/^$/,!1]];const Ut=[["table",function(t,e,r,n){if(e+2>r)return!1;let s=e+1;if(t.sCount[s]=4)return!1;let i=t.bMarks[s]+t.tShift[s];if(i>=t.eMarks[s])return!1;const o=t.src.charCodeAt(i++);if(124!==o&&45!==o&&58!==o)return!1;if(i>=t.eMarks[s])return!1;const u=t.src.charCodeAt(i++);if(124!==u&&45!==u&&58!==u&&!st(u))return!1;if(45===o&&st(u))return!1;for(;i=4)return!1;a=Tt(c),a.length&&""===a[0]&&a.shift(),a.length&&""===a[a.length-1]&&a.pop();const h=a.length;if(0===h||h!==l.length)return!1;if(n)return!0;const p=t.parentType;t.parentType="table";const f=t.md.block.ruler.getRules("blockquote"),d=[e,0];t.push("table_open","table",1).map=d,t.push("thead_open","thead",1).map=[e,e+1],t.push("tr_open","tr",1).map=[e,e+1];for(let e=0;e=4)break;if(a=Tt(c),a.length&&""===a[0]&&a.shift(),a.length&&""===a[a.length-1]&&a.pop(),m+=h-a.length,m>65536)break;if(s===e+2){t.push("tbody_open","tbody",1).map=_=[e+2,0]}t.push("tr_open","tr",1).map=[s,s+1];for(let e=0;e=4))break;n++,s=n}t.line=s;const i=t.push("code_block","code",0);return i.content=t.getLines(e,s,4+t.blkIndent,!1)+"\n",i.map=[e,t.line],!0}],["fence",function(t,e,r,n){let s=t.bMarks[e]+t.tShift[e],i=t.eMarks[e];if(t.sCount[e]-t.blkIndent>=4)return!1;if(s+3>i)return!1;const o=t.src.charCodeAt(s);if(126!==o&&96!==o)return!1;let u=s;s=t.skipChars(s,o);let c=s-u;if(c<3)return!1;const a=t.src.slice(u,s),l=t.src.slice(s,i);if(96===o&&l.indexOf(String.fromCharCode(o))>=0)return!1;if(n)return!0;let h=e,p=!1;for(;(h++,!(h>=r))&&(s=u=t.bMarks[h]+t.tShift[h],i=t.eMarks[h],!(s=4||(s=t.skipChars(s,o),s-u=4)return!1;if(62!==t.src.charCodeAt(s))return!1;if(n)return!0;const u=[],c=[],a=[],l=[],h=t.md.block.ruler.getRules("blockquote"),p=t.parentType;t.parentType="blockquote";let f,d=!1;for(f=e;f=i)break;if(62===t.src.charCodeAt(s++)&&!e){let e,r,n=t.sCount[f]+1;32===t.src.charCodeAt(s)?(s++,n++,r=!1,e=!0):9===t.src.charCodeAt(s)?(e=!0,(t.bsCount[f]+n)%4==3?(s++,n++,r=!1):r=!0):e=!1;let o=n;for(u.push(t.bMarks[f]),t.bMarks[f]=s;s=i,c.push(t.bsCount[f]),t.bsCount[f]=t.sCount[f]+1+(e?1:0),a.push(t.sCount[f]),t.sCount[f]=o-n,l.push(t.tShift[f]),t.tShift[f]=s-t.bMarks[f];continue}if(d)break;let n=!1;for(let e=0,s=h.length;e";const g=[e,0];m.map=g,t.md.block.tokenize(t,e,f),t.push("blockquote_close","blockquote",-1).markup=">",t.lineMax=o,t.parentType=p,g[1]=t.line;for(let r=0;r=4)return!1;let i=t.bMarks[e]+t.tShift[e];const o=t.src.charCodeAt(i++);if(42!==o&&45!==o&&95!==o)return!1;let u=1;for(;i=4)return!1;if(t.listIndent>=0&&t.sCount[c]-t.listIndent>=4&&t.sCount[c]=t.blkIndent&&(f=!0),(p=Nt(t,c))>=0){if(l=!0,o=t.bMarks[c]+t.tShift[c],h=Number(t.src.slice(o,p-1)),f&&1!==h)return!1}else{if(!((p=Rt(t,c))>=0))return!1;l=!1}if(f&&t.skipSpaces(p)>=t.eMarks[c])return!1;if(n)return!0;const d=t.src.charCodeAt(p-1),_=t.tokens.length;l?(u=t.push("ordered_list_open","ol",1),1!==h&&(u.attrs=[["start",h]])):u=t.push("bullet_list_open","ul",1);const m=[c,0];u.map=m,u.markup=String.fromCharCode(d);let g=!1;const k=t.md.block.ruler.getRules("list"),D=t.parentType;for(t.parentType="list";c=s?1:n-e,f>4&&(f=1);const _=e+f;u=t.push("list_item_open","li",1),u.markup=String.fromCharCode(d);const m=[c,0];u.map=m,l&&(u.info=t.src.slice(o,p-1));const D=t.tight,C=t.tShift[c],y=t.sCount[c],E=t.listIndent;if(t.listIndent=t.blkIndent,t.blkIndent=_,t.tight=!0,t.tShift[c]=h-t.bMarks[c],t.sCount[c]=n,h>=s&&t.isEmpty(c+1)?t.line=Math.min(t.line+2,r):t.md.block.tokenize(t,c,r,!0),t.tight&&!g||(a=!1),g=t.line-c>1&&t.isEmpty(t.line-1),t.blkIndent=t.listIndent,t.listIndent=E,t.tShift[c]=C,t.sCount[c]=y,t.tight=D,u=t.push("list_item_close","li",-1),u.markup=String.fromCharCode(d),c=t.line,m[1]=c,c>=r)break;if(t.sCount[c]=4)break;let A=!1;for(let e=0,n=k.length;e=4)return!1;if(91!==t.src.charCodeAt(s))return!1;function u(e){const r=t.lineMax;if(e>=r||t.isEmpty(e))return null;let n=!1;if(t.sCount[e]-t.blkIndent>3&&(n=!0),t.sCount[e]<0&&(n=!0),!n){const n=t.md.block.ruler.getRules("reference"),s=t.parentType;t.parentType="reference";let i=!1;for(let s=0,o=n.length;s=4)return!1;if(!t.md.options.html)return!1;if(60!==t.src.charCodeAt(s))return!1;let o=t.src.slice(s,i),u=0;for(;u<$t.length&&!$t[u][0].test(o);u++);if(u===$t.length)return!1;if(n)return $t[u][2];let c=e+1;if(!$t[u][1].test(o))for(;c=4)return!1;let o=t.src.charCodeAt(s);if(35!==o||s>=i)return!1;let u=1;for(o=t.src.charCodeAt(++s);35===o&&s6||ss&&st(t.src.charCodeAt(c-1))&&(i=c),t.line=e+1;const a=t.push("heading_open","h"+String(u),1);a.markup="########".slice(0,u),a.map=[e,t.line];const l=t.push("inline","",0);return l.content=t.src.slice(s,i).trim(),l.map=[e,t.line],l.children=[],t.push("heading_close","h"+String(u),-1).markup="########".slice(0,u),!0},["paragraph","reference","blockquote"]],["lheading",function(t,e,r){const n=t.md.block.ruler.getRules("paragraph");if(t.sCount[e]-t.blkIndent>=4)return!1;const s=t.parentType;t.parentType="paragraph";let i,o=0,u=e+1;for(;u3)continue;if(t.sCount[u]>=t.blkIndent){let e=t.bMarks[u]+t.tShift[u];const r=t.eMarks[u];if(e=r))){o=61===i?1:2;break}}if(t.sCount[u]<0)continue;let e=!1;for(let s=0,i=n.length;s3)continue;if(t.sCount[i]<0)continue;let e=!1;for(let s=0,o=n.length;s=r))&&!(t.sCount[o]=i){t.line=r;break}const e=t.line;let c=!1;for(let i=0;i=t.line)throw new Error("block rule didn't increment state.line");break}if(!c)throw new Error("none of the block rules matched");t.tight=!u,t.isEmpty(t.line-1)&&(u=!0),o=t.line,o0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],s={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(n),this.tokens_meta.push(s),n},Vt.prototype.scanDelims=function(t,e){const r=this.posMax,n=this.src.charCodeAt(t),s=t>0?this.src.charCodeAt(t-1):32;let i=t;for(;i?@[]^_`{|}~-".split("").forEach((function(t){Jt[t.charCodeAt(0)]=1}));var Xt={tokenize:function(t,e){const r=t.pos,n=t.src.charCodeAt(r);if(e)return!1;if(126!==n)return!1;const s=t.scanDelims(t.pos,!0);let i=s.length;const o=String.fromCharCode(n);if(i<2)return!1;let u;i%2&&(u=t.push("text","",0),u.content=o,i--);for(let e=0;e=0;r--){const n=e[r];if(95!==n.marker&&42!==n.marker)continue;if(-1===n.end)continue;const s=e[n.end],i=r>0&&e[r-1].end===n.end+1&&e[r-1].marker===n.marker&&e[r-1].token===n.token-1&&e[n.end+1].token===s.token+1,o=String.fromCharCode(n.marker),u=t.tokens[n.token];u.type=i?"strong_open":"em_open",u.tag=i?"strong":"em",u.nesting=1,u.markup=i?o+o:o,u.content="";const c=t.tokens[s.token];c.type=i?"strong_close":"em_close",c.tag=i?"strong":"em",c.nesting=-1,c.markup=i?o+o:o,c.content="",i&&(t.tokens[e[r-1].token].content="",t.tokens[e[n.end+1].token].content="",r--)}}var Kt={tokenize:function(t,e){const r=t.pos,n=t.src.charCodeAt(r);if(e)return!1;if(95!==n&&42!==n)return!1;const s=t.scanDelims(t.pos,42===n);for(let e=0;e\x00-\x20]*)$/;const re=/^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i,ne=/^&([a-z][a-z0-9]{1,31});/i;function se(t){const e={},r=t.length;if(!r)return;let n=0,s=-2;const i=[];for(let o=0;ou;c-=i[c]+1){const e=t[c];if(e.marker===r.marker&&(e.open&&e.end<0)){let n=!1;if((e.close||r.open)&&(e.length+r.length)%3==0&&(e.length%3==0&&r.length%3==0||(n=!0)),!n){const n=c>0&&!t[c-1].open?i[c-1]+1:0;i[o]=o-c+n,i[c]=n,r.open=!1,e.end=o,e.close=!1,a=-1,s=-2;break}}}-1!==a&&(e[r.marker][(r.open?3:0)+(r.length||0)%3]=a)}}const ie=[["text",function(t,e){let r=t.pos;for(;r0)return!1;const r=t.pos;if(r+3>t.posMax)return!1;if(58!==t.src.charCodeAt(r))return!1;if(47!==t.src.charCodeAt(r+1))return!1;if(47!==t.src.charCodeAt(r+2))return!1;const n=t.pending.match(Wt);if(!n)return!1;const s=n[1],i=t.md.linkify.matchAtStart(t.src.slice(r-s.length));if(!i)return!1;let o=i.url;if(o.length<=s.length)return!1;o=o.replace(/\*+$/,"");const u=t.md.normalizeLink(o);if(!t.md.validateLink(u))return!1;if(!e){t.pending=t.pending.slice(0,-s.length);const e=t.push("link_open","a",1);e.attrs=[["href",u]],e.markup="linkify",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(o);const r=t.push("link_close","a",-1);r.markup="linkify",r.info="auto"}return t.pos+=o.length-s.length,!0}],["newline",function(t,e){let r=t.pos;if(10!==t.src.charCodeAt(r))return!1;const n=t.pending.length-1,s=t.posMax;if(!e)if(n>=0&&32===t.pending.charCodeAt(n))if(n>=1&&32===t.pending.charCodeAt(n-1)){let e=n-1;for(;e>=1&&32===t.pending.charCodeAt(e-1);)e--;t.pending=t.pending.slice(0,e),t.push("hardbreak","br",0)}else t.pending=t.pending.slice(0,-1),t.push("softbreak","br",0);else t.push("softbreak","br",0);for(r++;r=n)return!1;let s=t.src.charCodeAt(r);if(10===s){for(e||t.push("hardbreak","br",0),r++;r=55296&&s<=56319&&r+1=56320&&e<=57343&&(i+=t.src[r+1],r++)}const o="\\"+i;if(!e){const e=t.push("text_special","",0);s<256&&0!==Jt[s]?e.content=i:e.content=o,e.markup=o,e.info="escape"}return t.pos=r+1,!0}],["backticks",function(t,e){let r=t.pos;if(96!==t.src.charCodeAt(r))return!1;const n=r;r++;const s=t.posMax;for(;r=h)return!1;if(c=d,s=t.md.helpers.parseLinkDestination(t.src,d,t.posMax),s.ok){for(o=t.md.normalizeLink(s.str),t.md.validateLink(o)?d=s.pos:o="",c=d;d=h||41!==t.src.charCodeAt(d))&&(a=!0),d++}if(a){if(void 0===t.env.references)return!1;if(d=0?n=t.src.slice(c,d++):d=f+1):d=f+1,n||(n=t.src.slice(p,f)),i=t.env.references[ct(n)],!i)return t.pos=l,!1;o=i.href,u=i.title}if(!e){t.pos=p,t.posMax=f;const e=[["href",o]];t.push("link_open","a",1).attrs=e,u&&e.push(["title",u]),t.linkLevel++,t.md.inline.tokenize(t),t.linkLevel--,t.push("link_close","a",-1)}return t.pos=d,t.posMax=h,!0}],["image",function(t,e){let r,n,s,i,o,u,c,a,l="";const h=t.pos,p=t.posMax;if(33!==t.src.charCodeAt(t.pos))return!1;if(91!==t.src.charCodeAt(t.pos+1))return!1;const f=t.pos+2,d=t.md.helpers.parseLinkLabel(t,t.pos+1,!1);if(d<0)return!1;if(i=d+1,i=p)return!1;for(a=i,u=t.md.helpers.parseLinkDestination(t.src,i,t.posMax),u.ok&&(l=t.md.normalizeLink(u.str),t.md.validateLink(l)?i=u.pos:l=""),a=i;i=p||41!==t.src.charCodeAt(i))return t.pos=h,!1;i++}else{if(void 0===t.env.references)return!1;if(i=0?s=t.src.slice(a,i++):i=d+1):i=d+1,s||(s=t.src.slice(f,d)),o=t.env.references[ct(s)],!o)return t.pos=h,!1;l=o.href,c=o.title}if(!e){n=t.src.slice(f,d);const e=[];t.md.inline.parse(n,t.md,t.env,e);const r=t.push("image","img",0),s=[["src",l],["alt",""]];r.attrs=s,r.children=e,r.content=n,c&&s.push(["title",c])}return t.pos=i,t.posMax=p,!0}],["autolink",function(t,e){let r=t.pos;if(60!==t.src.charCodeAt(r))return!1;const n=t.pos,s=t.posMax;for(;;){if(++r>=s)return!1;const e=t.src.charCodeAt(r);if(60===e)return!1;if(62===e)break}const i=t.src.slice(n+1,r);if(ee.test(i)){const r=t.md.normalizeLink(i);if(!t.md.validateLink(r))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",r]],e.markup="autolink",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(i);const n=t.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return t.pos+=i.length+2,!0}if(te.test(i)){const r=t.md.normalizeLink("mailto:"+i);if(!t.md.validateLink(r))return!1;if(!e){const e=t.push("link_open","a",1);e.attrs=[["href",r]],e.markup="autolink",e.info="auto";t.push("text","",0).content=t.md.normalizeLinkText(i);const n=t.push("link_close","a",-1);n.markup="autolink",n.info="auto"}return t.pos+=i.length+2,!0}return!1}],["html_inline",function(t,e){if(!t.md.options.html)return!1;const r=t.posMax,n=t.pos;if(60!==t.src.charCodeAt(n)||n+2>=r)return!1;const s=t.src.charCodeAt(n+1);if(33!==s&&63!==s&&47!==s&&!function(t){const e=32|t;return e>=97&&e<=122}(s))return!1;const i=t.src.slice(n).match(jt);if(!i)return!1;if(!e){const e=t.push("html_inline","",0);e.content=i[0],o=e.content,/^\s]/i.test(o)&&t.linkLevel++,function(t){return/^<\/a\s*>/i.test(t)}(e.content)&&t.linkLevel--}var o;return t.pos+=i[0].length,!0}],["entity",function(t,e){const r=t.pos,n=t.posMax;if(38!==t.src.charCodeAt(r))return!1;if(r+1>=n)return!1;if(35===t.src.charCodeAt(r+1)){const n=t.src.slice(r).match(re);if(n){if(!e){const e="x"===n[1][0].toLowerCase()?parseInt(n[1].slice(1),16):parseInt(n[1],10),r=t.push("text_special","",0);r.content=V(e)?G(e):G(65533),r.markup=n[0],r.info="entity"}return t.pos+=n[0].length,!0}}else{const n=t.src.slice(r).match(ne);if(n){const r=j(n[0]);if(r!==n[0]){if(!e){const e=t.push("text_special","",0);e.content=r,e.markup=n[0],e.info="entity"}return t.pos+=n[0].length,!0}}}return!1}]],oe=[["balance_pairs",function(t){const e=t.tokens_meta,r=t.tokens_meta.length;se(t.delimiters);for(let t=0;t0&&n++,"text"===s[e].type&&e+1=t.pos)throw new Error("inline rule didn't increment state.pos");break}}else t.pos=t.posMax;o||t.pos++,i[e]=t.pos},ue.prototype.tokenize=function(t){const e=this.ruler.getRules(""),r=e.length,n=t.posMax,s=t.md.options.maxNesting;for(;t.pos=t.pos)throw new Error("inline rule didn't increment state.pos");break}if(o){if(t.pos>=n)break}else t.pending+=t.src[t.pos++]}t.pending&&t.pushPending()},ue.prototype.parse=function(t,e,r,n){const s=new this.State(t,e,r,n);this.tokenize(s);const i=this.ruler2.getRules(""),o=i.length;for(let t=0;t=3&&":"===t[e-3]||e>=3&&"/"===t[e-3]?0:n.match(r.re.no_http)[0].length:0}},"mailto:":{validate:function(t,e,r){const n=t.slice(e);return r.re.mailto||(r.re.mailto=new RegExp("^"+r.re.src_email_name+"@"+r.re.src_host_strict,"i")),r.re.mailto.test(n)?n.match(r.re.mailto)[0].length:0}}},de="a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]",_e="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function me(t){const e=t.re=function(t){const e={};t=t||{},e.src_Any=C.source,e.src_Cc=y.source,e.src_Z=b.source,e.src_P=E.source,e.src_ZPCc=[e.src_Z,e.src_P,e.src_Cc].join("|"),e.src_ZCc=[e.src_Z,e.src_Cc].join("|");const r="[><\uff5c]";return e.src_pseudo_letter="(?:(?![><\uff5c]|"+e.src_ZPCc+")"+e.src_Any+")",e.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",e.src_auth="(?:(?:(?!"+e.src_ZCc+"|[@/\\[\\]()]).)+@)?",e.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",e.src_host_terminator="(?=$|[><\uff5c]|"+e.src_ZPCc+")(?!"+(t["---"]?"-(?!--)|":"-|")+"_|:\\d|\\.-|\\.(?!$|"+e.src_ZPCc+"))",e.src_path="(?:[/?#](?:(?!"+e.src_ZCc+"|"+r+"|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+e.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+e.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+e.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+e.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+e.src_ZCc+"|[']).)+\\'|\\'(?="+e.src_pseudo_letter+"|[-])|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+e.src_ZCc+"|[.]|$)|"+(t["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+e.src_ZCc+"|$)|;(?!"+e.src_ZCc+"|$)|\\!+(?!"+e.src_ZCc+"|[!]|$)|\\?(?!"+e.src_ZCc+"|[?]|$))+|\\/)?",e.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',e.src_xn="xn--[a-z0-9\\-]{1,59}",e.src_domain_root="(?:"+e.src_xn+"|"+e.src_pseudo_letter+"{1,63})",e.src_domain="(?:"+e.src_xn+"|(?:"+e.src_pseudo_letter+")|(?:"+e.src_pseudo_letter+"(?:-|"+e.src_pseudo_letter+"){0,61}"+e.src_pseudo_letter+"))",e.src_host="(?:(?:(?:(?:"+e.src_domain+")\\.)*"+e.src_domain+"))",e.tpl_host_fuzzy="(?:"+e.src_ip4+"|(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%)))",e.tpl_host_no_ip_fuzzy="(?:(?:(?:"+e.src_domain+")\\.)+(?:%TLDS%))",e.src_host_strict=e.src_host+e.src_host_terminator,e.tpl_host_fuzzy_strict=e.tpl_host_fuzzy+e.src_host_terminator,e.src_host_port_strict=e.src_host+e.src_port+e.src_host_terminator,e.tpl_host_port_fuzzy_strict=e.tpl_host_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_port_no_ip_fuzzy_strict=e.tpl_host_no_ip_fuzzy+e.src_port+e.src_host_terminator,e.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+e.src_ZPCc+"|>|$))",e.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+e.src_ZCc+")("+e.src_email_name+"@"+e.tpl_host_fuzzy_strict+")",e.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+e.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+e.tpl_host_port_fuzzy_strict+e.src_path+")",e.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+e.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+e.tpl_host_port_no_ip_fuzzy_strict+e.src_path+")",e}(t.__opts__),r=t.__tlds__.slice();function n(t){return t.replace("%TLDS%",e.src_tlds)}t.onCompile(),t.__tlds_replaced__||r.push(de),r.push(e.src_xn),e.src_tlds=r.join("|"),e.email_fuzzy=RegExp(n(e.tpl_email_fuzzy),"i"),e.link_fuzzy=RegExp(n(e.tpl_link_fuzzy),"i"),e.link_no_ip_fuzzy=RegExp(n(e.tpl_link_no_ip_fuzzy),"i"),e.host_fuzzy_test=RegExp(n(e.tpl_host_fuzzy_test),"i");const s=[];function i(t,e){throw new Error('(LinkifyIt) Invalid schema "'+t+'": '+e)}t.__compiled__={},Object.keys(t.__schemas__).forEach((function(e){const r=t.__schemas__[e];if(null===r)return;const n={validate:null,link:null};if(t.__compiled__[e]=n,"[object Object]"===ae(r))return!function(t){return"[object RegExp]"===ae(t)}(r.validate)?le(r.validate)?n.validate=r.validate:i(e,r):n.validate=function(t){return function(e,r){const n=e.slice(r);return t.test(n)?n.match(t)[0].length:0}}(r.validate),void(le(r.normalize)?n.normalize=r.normalize:r.normalize?i(e,r):n.normalize=function(t,e){e.normalize(t)});!function(t){return"[object String]"===ae(t)}(r)?i(e,r):s.push(e)})),s.forEach((function(e){t.__compiled__[t.__schemas__[e]]&&(t.__compiled__[e].validate=t.__compiled__[t.__schemas__[e]].validate,t.__compiled__[e].normalize=t.__compiled__[t.__schemas__[e]].normalize)})),t.__compiled__[""]={validate:null,normalize:function(t,e){e.normalize(t)}};const o=Object.keys(t.__compiled__).filter((function(e){return e.length>0&&t.__compiled__[e]})).map(he).join("|");t.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+e.src_ZPCc+"))("+o+")","i"),t.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+e.src_ZPCc+"))("+o+")","ig"),t.re.schema_at_start=RegExp("^"+t.re.schema_search.source,"i"),t.re.pretest=RegExp("("+t.re.schema_test.source+")|("+t.re.host_fuzzy_test.source+")|@","i"),function(t){t.__index__=-1,t.__text_cache__=""}(t)}function ge(t,e){const r=t.__index__,n=t.__last_index__,s=t.__text_cache__.slice(r,n);this.schema=t.__schema__.toLowerCase(),this.index=r+e,this.lastIndex=n+e,this.raw=s,this.text=s,this.url=s}function ke(t,e){const r=new ge(t,e);return t.__compiled__[r.schema].normalize(r,t),r}function De(t,e){if(!(this instanceof De))return new De(t,e);var r;e||(r=t,Object.keys(r||{}).reduce((function(t,e){return t||pe.hasOwnProperty(e)}),!1)&&(e=t,t={})),this.__opts__=ce({},pe,e),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=ce({},fe,t),this.__compiled__={},this.__tlds__=_e,this.__tlds_replaced__=!1,this.re={},me(this)}De.prototype.add=function(t,e){return this.__schemas__[t]=e,me(this),this},De.prototype.set=function(t){return this.__opts__=ce(this.__opts__,t),this},De.prototype.test=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return!1;let e,r,n,s,i,o,u,c,a;if(this.re.schema_test.test(t))for(u=this.re.schema_search,u.lastIndex=0;null!==(e=u.exec(t));)if(s=this.testSchemaAt(t,e[2],u.lastIndex),s){this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+s;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(c=t.search(this.re.host_fuzzy_test),c>=0&&(this.__index__<0||c=0&&null!==(n=t.match(this.re.email_fuzzy))&&(i=n.index+n[1].length,o=n.index+n[0].length,(this.__index__<0||ithis.__last_index__)&&(this.__schema__="mailto:",this.__index__=i,this.__last_index__=o))),this.__index__>=0},De.prototype.pretest=function(t){return this.re.pretest.test(t)},De.prototype.testSchemaAt=function(t,e,r){return this.__compiled__[e.toLowerCase()]?this.__compiled__[e.toLowerCase()].validate(t,r,this):0},De.prototype.match=function(t){const e=[];let r=0;this.__index__>=0&&this.__text_cache__===t&&(e.push(ke(this,r)),r=this.__last_index__);let n=r?t.slice(r):t;for(;this.test(n);)e.push(ke(this,r)),n=n.slice(this.__last_index__),r+=this.__last_index__;return e.length?e:null},De.prototype.matchAtStart=function(t){if(this.__text_cache__=t,this.__index__=-1,!t.length)return null;const e=this.re.schema_at_start.exec(t);if(!e)return null;const r=this.testSchemaAt(t,e[2],e[0].length);return r?(this.__schema__=e[2],this.__index__=e.index+e[1].length,this.__last_index__=e.index+e[0].length+r,ke(this,0)):null},De.prototype.tlds=function(t,e){return t=Array.isArray(t)?t:[t],e?(this.__tlds__=this.__tlds__.concat(t).sort().filter((function(t,e,r){return t!==r[e-1]})).reverse(),me(this),this):(this.__tlds__=t.slice(),this.__tlds_replaced__=!0,me(this),this)},De.prototype.normalize=function(t){t.schema||(t.url="http://"+t.url),"mailto:"!==t.schema||/^mailto:/i.test(t.url)||(t.url="mailto:"+t.url)},De.prototype.onCompile=function(){};const Ce=2147483647,ye=36,Ee=/^xn--/,Ae=/[^\0-\x7F]/,be=/[\x2E\u3002\uFF0E\uFF61]/g,Fe={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},xe=Math.floor,we=String.fromCharCode;function ve(t){throw new RangeError(Fe[t])}function ze(t,e){const r=t.split("@");let n="";r.length>1&&(n=r[0]+"@",t=r[1]);const s=function(t,e){const r=[];let n=t.length;for(;n--;)r[n]=e(t[n]);return r}((t=t.replace(be,".")).split("."),e).join(".");return n+s}function Se(t){const e=[];let r=0;const n=t.length;for(;r=55296&&s<=56319&&r>1,t+=xe(t/e);t>455;n+=ye)t=xe(t/35);return xe(n+36*t/(t+38))},Le=function(t){const e=[],r=t.length;let n=0,s=128,i=72,o=t.lastIndexOf("-");o<0&&(o=0);for(let r=0;r=128&&ve("not-basic"),e.push(t.charCodeAt(r));for(let c=o>0?o+1:0;c=r&&ve("invalid-input");const o=(u=t.charCodeAt(c++))>=48&&u<58?u-48+26:u>=65&&u<91?u-65:u>=97&&u<123?u-97:ye;o>=ye&&ve("invalid-input"),o>xe((Ce-n)/e)&&ve("overflow"),n+=o*e;const a=s<=i?1:s>=i+26?26:s-i;if(oxe(Ce/l)&&ve("overflow"),e*=l}const a=e.length+1;i=Be(n-o,a,0==o),xe(n/a)>Ce-s&&ve("overflow"),s+=xe(n/a),n%=a,e.splice(n++,0,s)}var u;return String.fromCodePoint(...e)},Ie=function(t){const e=[],r=(t=Se(t)).length;let n=128,s=0,i=72;for(const r of t)r<128&&e.push(we(r));const o=e.length;let u=o;for(o&&e.push("-");u=n&&exe((Ce-s)/c)&&ve("overflow"),s+=(r-n)*c,n=r;for(const r of t)if(rCe&&ve("overflow"),r===n){let t=s;for(let r=ye;;r+=ye){const n=r<=i?1:r>=i+26?26:r-i;if(tString.fromCodePoint(...t)},decode:Le,encode:Ie,toASCII:function(t){return ze(t,(function(t){return Ae.test(t)?"xn--"+Ie(t):t}))},toUnicode:function(t){return ze(t,(function(t){return Ee.test(t)?Le(t.slice(4).toLowerCase()):t}))}};const Te={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:100},components:{core:{},block:{},inline:{}}},zero:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["paragraph"]},inline:{rules:["text"],rules2:["balance_pairs","fragments_join"]}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:"language-",linkify:!1,typographer:!1,quotes:"\u201c\u201d\u2018\u2019",highlight:null,maxNesting:20},components:{core:{rules:["normalize","block","inline","text_join"]},block:{rules:["blockquote","code","fence","heading","hr","html_block","lheading","list","reference","paragraph"]},inline:{rules:["autolink","backticks","emphasis","entity","escape","html_inline","image","link","newline","text"],rules2:["balance_pairs","emphasis","fragments_join"]}}}},Re=/^(vbscript|javascript|file|data):/,Ne=/^data:image\/(gif|png|jpeg|webp);/;function Pe(t){const e=t.trim().toLowerCase();return!Re.test(e)||Ne.test(e)}const Oe=["http:","https:","mailto:"];function je(t){const e=g(t,!0);if(e.hostname&&(!e.protocol||Oe.indexOf(e.protocol)>=0))try{e.hostname=Me.toASCII(e.hostname)}catch(t){}return n(s(e))}function Ze(t){const r=g(t,!0);if(r.hostname&&(!r.protocol||Oe.indexOf(r.protocol)>=0))try{r.hostname=Me.toUnicode(r.hostname)}catch(t){}return e(s(r),e.defaultChars+"%")}function $e(t,e){if(!(this instanceof $e))return new $e(t,e);e||Z(t)||(e=t||{},t="default"),this.inline=new ue,this.block=new Ht,this.core=new Lt,this.renderer=new ft,this.linkify=new De,this.validateLink=Pe,this.normalizeLink=je,this.normalizeLinkText=Ze,this.utils=lt,this.helpers=U({},ht),this.options={},this.configure(t),e&&this.set(e)}return $e.prototype.set=function(t){return U(this.options,t),this},$e.prototype.configure=function(t){const e=this;if(Z(t)){const e=t;if(!(t=Te[e]))throw new Error('Wrong `markdown-it` preset "'+e+'", check name')}if(!t)throw new Error("Wrong `markdown-it` preset, can't be empty");return t.options&&e.set(t.options),t.components&&Object.keys(t.components).forEach((function(r){t.components[r].rules&&e[r].ruler.enableOnly(t.components[r].rules),t.components[r].rules2&&e[r].ruler2.enableOnly(t.components[r].rules2)})),this},$e.prototype.enable=function(t,e){let r=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){r=r.concat(this[e].ruler.enable(t,!0))}),this),r=r.concat(this.inline.ruler2.enable(t,!0));const n=t.filter((function(t){return r.indexOf(t)<0}));if(n.length&&!e)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+n);return this},$e.prototype.disable=function(t,e){let r=[];Array.isArray(t)||(t=[t]),["core","block","inline"].forEach((function(e){r=r.concat(this[e].ruler.disable(t,!0))}),this),r=r.concat(this.inline.ruler2.disable(t,!0));const n=t.filter((function(t){return r.indexOf(t)<0}));if(n.length&&!e)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+n);return this},$e.prototype.use=function(t){const e=[this].concat(Array.prototype.slice.call(arguments,1));return t.apply(t,e),this},$e.prototype.parse=function(t,e){if("string"!=typeof t)throw new Error("Input data should be a String");const r=new this.core.State(t,this,e);return this.core.process(r),r.tokens},$e.prototype.render=function(t,e){return e=e||{},this.renderer.render(this.parse(t,e),this.options,e)},$e.prototype.parseInline=function(t,e){const r=new this.core.State(t,this,e);return r.inlineMode=!0,this.core.process(r),r.tokens},$e.prototype.renderInline=function(t,e){return e=e||{},this.renderer.render(this.parseInline(t,e),this.options,e)},$e})); diff --git a/public/site/js/qs.min.js b/public/site/js/qs.min.js deleted file mode 100644 index 8b329032d..000000000 --- a/public/site/js/qs.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Minified by jsDelivr using Terser v5.19.2. - * Original file: /npm/qs@6.13.0/dist/qs.js - * - * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files - */ -!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).Qs=t()}}((function(){return function t(e,r,o){function n(a,l){if(!r[a]){if(!e[a]){var p="function"==typeof require&&require;if(!l&&p)return p(a,!0);if(i)return i(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var f=r[a]={exports:{}};e[a][0].call(f.exports,(function(t){return n(e[a][1][t]||t)}),f,f.exports,t,e,r,o)}return r[a].exports}for(var i="function"==typeof require&&require,a=0;a-1?t.split(","):t},c=function(t,e,r,o){if(t){var i=r.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t,a=/(\[[^[\]]*])/g,l=r.depth>0&&/(\[[^[\]]*])/.exec(i),c=l?i.slice(0,l.index):i,f=[];if(c){if(!r.plainObjects&&n.call(Object.prototype,c)&&!r.allowPrototypes)return;f.push(c)}for(var u=0;r.depth>0&&null!==(l=a.exec(i))&&u=0;--i){var a,l=t[i];if("[]"===l&&r.parseArrays)a=r.allowEmptyArrays&&(""===n||r.strictNullHandling&&null===n)?[]:[].concat(n);else{a=r.plainObjects?Object.create(null):{};var c="["===l.charAt(0)&&"]"===l.charAt(l.length-1)?l.slice(1,-1):l,f=r.decodeDotInKeys?c.replace(/%2E/g,"."):c,u=parseInt(f,10);r.parseArrays||""!==f?!isNaN(u)&&l!==f&&String(u)===f&&u>=0&&r.parseArrays&&u<=r.arrayLimit?(a=[])[u]=n:"__proto__"!==f&&(a[f]=n):a={0:n}}n=a}return n}(f,e,r,o)}};e.exports=function(t,e){var r=function(t){if(!t)return a;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.decodeDotInKeys&&"boolean"!=typeof t.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var e=void 0===t.charset?a.charset:t.charset,r=void 0===t.duplicates?a.duplicates:t.duplicates;if("combine"!==r&&"first"!==r&&"last"!==r)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===t.allowDots?!0===t.decodeDotInKeys||a.allowDots:!!t.allowDots,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:a.allowEmptyArrays,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:a.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:a.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:a.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:a.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:a.comma,decodeDotInKeys:"boolean"==typeof t.decodeDotInKeys?t.decodeDotInKeys:a.decodeDotInKeys,decoder:"function"==typeof t.decoder?t.decoder:a.decoder,delimiter:"string"==typeof t.delimiter||o.isRegExp(t.delimiter)?t.delimiter:a.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:a.depth,duplicates:r,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:a.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:a.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:a.plainObjects,strictDepth:"boolean"==typeof t.strictDepth?!!t.strictDepth:a.strictDepth,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:a.strictNullHandling}}(e);if(""===t||null==t)return r.plainObjects?Object.create(null):{};for(var f="string"==typeof t?function(t,e){var r={__proto__:null},c=e.ignoreQueryPrefix?t.replace(/^\?/,""):t;c=c.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var f,u=e.parameterLimit===1/0?void 0:e.parameterLimit,y=c.split(e.delimiter,u),s=-1,d=e.charset;if(e.charsetSentinel)for(f=0;f-1&&(g=i(g)?[g]:g);var w=n.call(r,b);w&&"combine"===e.duplicates?r[b]=o.combine(r[b],g):w&&"last"!==e.duplicates||(r[b]=g)}return r}(t,r):t,u=r.plainObjects?Object.create(null):{},y=Object.keys(f),s=0;s0?E.join(",")||null:void 0}];else if(p(g))F=g;else{var k=Object.keys(E);F=h?k.sort(h):k}var N=y?r.replace(/\./g,"%2E"):r,_=a&&p(E)&&1===E.length?N+"[]":N;if(l&&p(E)&&0===E.length)return _+"[]";for(var M=0;M0?w+v:""}},{1:1,29:29,5:5}],5:[function(t,e,r){"use strict";var o=t(1),n=Object.prototype.hasOwnProperty,i=Array.isArray,a=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),l=1024;e.exports={combine:function(t,e){return[].concat(t,e)},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],o=0;o1;){var e=t.pop(),r=e.obj[e.prop];if(i(r)){for(var o=[],n=0;n=l?p.slice(f,f+l):p,y=[],s=0;s=48&&d<=57||d>=65&&d<=90||d>=97&&d<=122||i===o.RFC1738&&(40===d||41===d)?y[y.length]=u.charAt(s):d<128?y[y.length]=a[d]:d<2048?y[y.length]=a[192|d>>6]+a[128|63&d]:d<55296||d>=57344?y[y.length]=a[224|d>>12]+a[128|d>>6&63]+a[128|63&d]:(s+=1,d=65536+((1023&d)<<10|1023&u.charCodeAt(s)),y[y.length]=a[240|d>>18]+a[128|d>>12&63]+a[128|d>>6&63]+a[128|63&d])}c+=y.join("")}return c},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(i(t)){for(var r=[],o=0;o-1?n(r):r}},{20:20,8:8}],20:[function(t,e,r){"use strict";var o,n=t(12),i=t(11),a=t(13),l=t(14),p=t(15),c=t(16),f=t(17),u=Function,y=function(t){try{return u('"use strict"; return ('+t+").constructor;")()}catch(t){}},s=Object.getOwnPropertyDescriptor;if(s)try{s({},"")}catch(t){s=null}var d=function(){throw new c},b=s?function(){try{return d}catch(t){try{return s(arguments,"callee").get}catch(t){return d}}}():d,g=t(24)(),h=t(23)(),m=Object.getPrototypeOf||(h?function(t){return t.__proto__}:null),v={},w="undefined"!=typeof Uint8Array&&m?m(Uint8Array):o,S={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?o:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?o:ArrayBuffer,"%ArrayIteratorPrototype%":g&&m?m([][Symbol.iterator]()):o,"%AsyncFromSyncIteratorPrototype%":o,"%AsyncFunction%":v,"%AsyncGenerator%":v,"%AsyncGeneratorFunction%":v,"%AsyncIteratorPrototype%":v,"%Atomics%":"undefined"==typeof Atomics?o:Atomics,"%BigInt%":"undefined"==typeof BigInt?o:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?o:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?o:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?o:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":n,"%eval%":eval,"%EvalError%":i,"%Float32Array%":"undefined"==typeof Float32Array?o:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?o:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?o:FinalizationRegistry,"%Function%":u,"%GeneratorFunction%":v,"%Int8Array%":"undefined"==typeof Int8Array?o:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?o:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?o:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":g&&m?m(m([][Symbol.iterator]())):o,"%JSON%":"object"==typeof JSON?JSON:o,"%Map%":"undefined"==typeof Map?o:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&g&&m?m((new Map)[Symbol.iterator]()):o,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?o:Promise,"%Proxy%":"undefined"==typeof Proxy?o:Proxy,"%RangeError%":a,"%ReferenceError%":l,"%Reflect%":"undefined"==typeof Reflect?o:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?o:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&g&&m?m((new Set)[Symbol.iterator]()):o,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?o:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":g&&m?m(""[Symbol.iterator]()):o,"%Symbol%":g?Symbol:o,"%SyntaxError%":p,"%ThrowTypeError%":b,"%TypedArray%":w,"%TypeError%":c,"%Uint8Array%":"undefined"==typeof Uint8Array?o:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?o:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?o:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?o:Uint32Array,"%URIError%":f,"%WeakMap%":"undefined"==typeof WeakMap?o:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?o:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?o:WeakSet};if(m)try{null.error}catch(t){var A=m(m(t));S["%Error.prototype%"]=A}var j=function t(e){var r;if("%AsyncFunction%"===e)r=y("async function () {}");else if("%GeneratorFunction%"===e)r=y("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=y("async function* () {}");else if("%AsyncGenerator%"===e){var o=t("%AsyncGeneratorFunction%");o&&(r=o.prototype)}else if("%AsyncIteratorPrototype%"===e){var n=t("%AsyncGenerator%");n&&m&&(r=m(n.prototype))}return S[e]=r,r},O={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},E=t(19),P=t(26),x=E.call(Function.call,Array.prototype.concat),I=E.call(Function.apply,Array.prototype.splice),D=E.call(Function.call,String.prototype.replace),F=E.call(Function.call,String.prototype.slice),R=E.call(Function.call,RegExp.prototype.exec),k=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,N=/\\(\\)?/g,_=function(t,e){var r,o=t;if(P(O,o)&&(o="%"+(r=O[o])[0]+"%"),P(S,o)){var n=S[o];if(n===v&&(n=j(o)),void 0===n&&!e)throw new c("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:o,value:n}}throw new p("intrinsic "+t+" does not exist!")};e.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new c("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new c('"allowMissing" argument must be a boolean');if(null===R(/^%?[^%]*%?$/,t))throw new p("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=F(t,0,1),r=F(t,-1);if("%"===e&&"%"!==r)throw new p("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new p("invalid intrinsic syntax, expected opening `%`");var o=[];return D(t,k,(function(t,e,r,n){o[o.length]=r?D(n,N,"$1"):e||t})),o}(t),o=r.length>0?r[0]:"",n=_("%"+o+"%",e),i=n.name,a=n.value,l=!1,f=n.alias;f&&(o=f[0],I(r,x([0,1],f)));for(var u=1,y=!0;u=r.length){var h=s(a,d);a=(y=!!h)&&"get"in h&&!("originalValue"in h.get)?h.get:a[d]}else y=P(a,d),a=a[d];y&&!l&&(S[i]=a)}}return a}},{11:11,12:12,13:13,14:14,15:15,16:16,17:17,19:19,23:23,24:24,26:26}],8:[function(t,e,r){"use strict";var o=t(19),n=t(20),i=t(28),a=t(16),l=n("%Function.prototype.apply%"),p=n("%Function.prototype.call%"),c=n("%Reflect.apply%",!0)||o.call(p,l),f=t(10),u=n("%Math.max%");e.exports=function(t){if("function"!=typeof t)throw new a("a function is required");var e=c(o,p,arguments);return i(e,1+u(0,t.length-(arguments.length-1)),!0)};var y=function(){return c(o,l,arguments)};f?f(e.exports,"apply",{value:y}):e.exports.apply=y},{10:10,16:16,19:19,20:20,28:28}],16:[function(t,e,r){"use strict";e.exports=TypeError},{}],19:[function(t,e,r){"use strict";var o=t(18);e.exports=Function.prototype.bind||o},{18:18}],10:[function(t,e,r){"use strict";var o=t(20)("%Object.defineProperty%",!0)||!1;if(o)try{o({},"a",{value:1})}catch(t){o=!1}e.exports=o},{20:20}],28:[function(t,e,r){"use strict";var o=t(20),n=t(9),i=t(22)(),a=t(21),l=t(16),p=o("%Math.floor%");e.exports=function(t,e){if("function"!=typeof t)throw new l("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||p(e)!==e)throw new l("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],o=!0,c=!0;if("length"in t&&a){var f=a(t,"length");f&&!f.configurable&&(o=!1),f&&!f.writable&&(c=!1)}return(o||c||!r)&&(i?n(t,"length",e,!0,!0):n(t,"length",e)),t}},{16:16,20:20,21:21,22:22,9:9}],9:[function(t,e,r){"use strict";var o=t(10),n=t(15),i=t(16),a=t(21);e.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new i("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var l=arguments.length>3?arguments[3]:null,p=arguments.length>4?arguments[4]:null,c=arguments.length>5?arguments[5]:null,f=arguments.length>6&&arguments[6],u=!!a&&a(t,e);if(o)o(t,e,{configurable:null===c&&u?u.configurable:!c,enumerable:null===l&&u?u.enumerable:!l,value:r,writable:null===p&&u?u.writable:!p});else{if(!f&&(l||p||c))throw new n("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},{10:10,15:15,16:16,21:21}],15:[function(t,e,r){"use strict";e.exports=SyntaxError},{}],21:[function(t,e,r){"use strict";var o=t(20)("%Object.getOwnPropertyDescriptor%",!0);if(o)try{o([],"length")}catch(t){o=null}e.exports=o},{20:20}],11:[function(t,e,r){"use strict";e.exports=EvalError},{}],12:[function(t,e,r){"use strict";e.exports=Error},{}],13:[function(t,e,r){"use strict";e.exports=RangeError},{}],14:[function(t,e,r){"use strict";e.exports=ReferenceError},{}],17:[function(t,e,r){"use strict";e.exports=URIError},{}],18:[function(t,e,r){"use strict";var o=Object.prototype.toString,n=Math.max,i=function(t,e){for(var r=[],o=0;o-1e3&&t<1e3||A.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var o=t<0?-P(-t):P(t);if(o!==t){var n=String(o),i=m.call(e,n.length+1);return v.call(n,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=t(6),T=M.custom,U=K(T)?T:null;function B(t,e,r){var o="double"===(r.quoteStyle||e)?'"':"'";return o+t+o}function W(t){return v.call(String(t),/"/g,""")}function C(t){return!("[object Array]"!==$(t)||R&&"object"==typeof t&&R in t)}function L(t){return!("[object RegExp]"!==$(t)||R&&"object"==typeof t&&R in t)}function K(t){if(F)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!D)return!1;try{return D.call(t),!0}catch(t){}return!1}e.exports=function t(e,o,n,l){var p=o||{};if(G(p,"quoteStyle")&&"single"!==p.quoteStyle&&"double"!==p.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(G(p,"maxStringLength")&&("number"==typeof p.maxStringLength?p.maxStringLength<0&&p.maxStringLength!==1/0:null!==p.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var b=!G(p,"customInspect")||p.customInspect;if("boolean"!=typeof b&&"symbol"!==b)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(G(p,"indent")&&null!==p.indent&&"\t"!==p.indent&&!(parseInt(p.indent,10)===p.indent&&p.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(G(p,"numericSeparator")&&"boolean"!=typeof p.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var w=p.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return V(e,p);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var A=String(e);return w?_(e,A):A}if("bigint"==typeof e){var P=String(e)+"n";return w?_(e,P):P}var I=void 0===p.depth?5:p.depth;if(void 0===n&&(n=0),n>=I&&I>0&&"object"==typeof e)return C(e)?"[Array]":"[Object]";var T=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=O.call(Array(t.indent+1)," ")}return{base:r,prev:O.call(Array(e+1),r)}}(p,n);if(void 0===l)l=[];else if(H(l,e)>=0)return"[Circular]";function q(e,r,o){if(r&&(l=E.call(l)).push(r),o){var i={depth:p.depth};return G(p,"quoteStyle")&&(i.quoteStyle=p.quoteStyle),t(e,i,n+1,l)}return t(e,p,n+1,l)}if("function"==typeof e&&!L(e)){var z=function(t){if(t.name)return t.name;var e=h.call(g.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),tt=Z(e,q);return"[Function"+(z?": "+z:" (anonymous)")+"]"+(tt.length>0?" { "+O.call(tt,", ")+" }":"")}if(K(e)){var et=F?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):D.call(e);return"object"!=typeof e||F?et:Q(et)}if(function(t){return!(!t||"object"!=typeof t)&&("undefined"!=typeof HTMLElement&&t instanceof HTMLElement||"string"==typeof t.nodeName&&"function"==typeof t.getAttribute)}(e)){for(var rt="<"+S.call(String(e.nodeName)),ot=e.attributes||[],nt=0;nt"}if(C(e)){if(0===e.length)return"[]";var it=Z(e,q);return T&&!function(t){for(var e=0;e=0)return!1;return!0}(it)?"["+Y(it,T)+"]":"[ "+O.call(it,", ")+" ]"}if(function(t){return!("[object Error]"!==$(t)||R&&"object"==typeof t&&R in t)}(e)){var at=Z(e,q);return"cause"in Error.prototype||!("cause"in e)||k.call(e,"cause")?0===at.length?"["+String(e)+"]":"{ ["+String(e)+"] "+O.call(at,", ")+" }":"{ ["+String(e)+"] "+O.call(j.call("[cause]: "+q(e.cause),at),", ")+" }"}if("object"==typeof e&&b){if(U&&"function"==typeof e[U]&&M)return M(e,{depth:I-n});if("symbol"!==b&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return a&&a.call(e,(function(t,r){lt.push(q(r,e,!0)+" => "+q(t,e))})),X("Map",i.call(e),lt,T)}if(function(t){if(!c||!t||"object"!=typeof t)return!1;try{c.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var pt=[];return f&&f.call(e,(function(t){pt.push(q(t,e))})),X("Set",c.call(e),pt,T)}if(function(t){if(!u||!t||"object"!=typeof t)return!1;try{u.call(t,u);try{y.call(t,y)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return J("WeakMap");if(function(t){if(!y||!t||"object"!=typeof t)return!1;try{y.call(t,y);try{u.call(t,u)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return J("WeakSet");if(function(t){if(!s||!t||"object"!=typeof t)return!1;try{return s.call(t),!0}catch(t){}return!1}(e))return J("WeakRef");if(function(t){return!("[object Number]"!==$(t)||R&&"object"==typeof t&&R in t)}(e))return Q(q(Number(e)));if(function(t){if(!t||"object"!=typeof t||!x)return!1;try{return x.call(t),!0}catch(t){}return!1}(e))return Q(q(x.call(e)));if(function(t){return!("[object Boolean]"!==$(t)||R&&"object"==typeof t&&R in t)}(e))return Q(d.call(e));if(function(t){return!("[object String]"!==$(t)||R&&"object"==typeof t&&R in t)}(e))return Q(q(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||void 0!==r&&e===r)return"{ [object globalThis] }";if(!function(t){return!("[object Date]"!==$(t)||R&&"object"==typeof t&&R in t)}(e)&&!L(e)){var ct=Z(e,q),ft=N?N(e)===Object.prototype:e instanceof Object||e.constructor===Object,ut=e instanceof Object?"":"null prototype",yt=!ft&&R&&Object(e)===e&&R in e?m.call($(e),8,-1):ut?"Object":"",st=(ft||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(yt||ut?"["+O.call(j.call([],yt||[],ut||[]),": ")+"] ":"");return 0===ct.length?st+"{}":T?st+"{"+Y(ct,T)+"}":st+"{ "+O.call(ct,", ")+" }"}return String(e)};var q=Object.prototype.hasOwnProperty||function(t){return t in this};function G(t,e){return q.call(t,e)}function $(t){return b.call(t)}function H(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,o=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,o="... "+r+" more character"+(r>1?"s":"");return V(m.call(t,0,e.maxStringLength),e)+o}return B(v.call(v.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,z),"single",e)}function z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Q(t){return"Object("+t+")"}function J(t){return t+" { ? }"}function X(t,e,r,o){return t+" ("+e+") {"+(o?Y(r,o):O.call(r,", "))+"}"}function Y(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+O.call(t,","+r)+"\n"+e.prev}function Z(t,e){var r=C(t),o=[];if(r){o.length=t.length;for(var n=0;n - - - - - 关于我们 - DooTask - - - - - - - - - - - - - - - - -
      -
      -
      - -
      -
      -
      -
      - 关于我们的公司 -
      -

      - 专注于网络安全领域,我们致力于为用户提供全方位的网络安全解决方案。 -

      -
        -
      • -

        - 2020 -

        -
        - 公司成立 -
        -
      • -
      • -
        -

        - 10 -

        - + -
        -
        - 团队经验 -
        -
      • -
      • -
        -

        - 99 -

        - % -
        -
        - 客户满意 -
        -
      • -
      -
      -
      -
      -
      -
      -
      - 广西海豚有海信息科技公司,HITOSEA,海豚有海,广西海豚有海 -
      -

      - 公司介绍 - - - -

      -
      - 自成立以来,广西海豚有海信息科技有限公司(HITOSEA)一直专注于网络安全领域前沿技术的创新,提供包括边界安全、云安全、数据安全、内网安全在内的网络安全产品和服务,致力于为用户提供更全面、更智能、零干扰的网络安全解决方案,是一家拥有年轻活力的技术公司。 -
      -
      -
      -
      -
      -
      - -
      -
      - - -
      - -
      - -
      - -
      -
      -
      -
      -

      - 情景应用 -

      -
      - 该产品支持各种应用场景,帮助团队协作 -
      -
        -
      • - - 边缘安全 - -
        - 边缘安全 -
        -
        - HITOSEA下一代防火墙、入侵防御/入侵检测系统、云沙箱等产品为用户提供网络边界访问控制、深度攻击检测和APT攻击检测等全面的智能安全保护。 -
        - HITOSEA下一代防火墙、入侵防御/入侵检测系统、云沙箱等产品为用户提供网络边界访问控制、深度攻击检测和APT攻击检测等全面的智能安全保护。 -
      • -
      • - - 云安全 - -
        - 云安全 -
        -
        - 我们提供安全可靠的高防云服务器,解决了服务器面临的主要网络安全风险,缓解了因洪水攻击而导致的业务中断风险,满足了常规安全操作的需要。 -
        - 我们提供安全可靠的高防云服务器,解决了服务器面临的主要网络安全风险,缓解了因洪水攻击而导致的业务中断风险,满足了常规安全操作的需要。 -
      • -
      • - - 数据安全 - -
        - 数据安全 -
        -
        - 数据库审计和数据泄漏保护系统可以保护敏感数据和文件,识别数据和监控操作,阻止内部和外部人员通过网络、电子邮件和其他渠道进行数据盗窃。 -
        - 数据库审计和数据泄漏保护系统可以保护敏感数据和文件,识别数据和监控操作,阻止内部和外部人员通过网络、电子邮件和其他渠道进行数据盗窃。 -
      • -
      • - - 内联网安全 - -
        - 内联网安全 -
        -
        - 网络应用防火墙和网络防篡改系统为应用系统提供了全面的安全保护,有效阻止了网络篡改和攻击等恶意行为的发生。 -
        - 网络应用防火墙和网络防篡改系统为应用系统提供了全面的安全保护,有效阻止了网络篡改和攻击等恶意行为的发生。 -
      • -
      -
      -
      -
      - -
      -
      - - - - -
      - - - - - - - \ No newline at end of file diff --git a/public/site/zh/ad.html b/public/site/zh/ad.html deleted file mode 100644 index f4e1fd4bb..000000000 --- a/public/site/zh/ad.html +++ /dev/null @@ -1,872 +0,0 @@ - - - - - - DooTask - 最受欢迎的开源项目协助工具 - - - - - - - - - - - - - - - - - - - - -
      -
      -
      -
      -
      -
      -
      - 如需购买请扫码添加微信客服专员 -
      - -
      -
      - -
      - -
      -
      - 我们使用第一方 cookie - 来改善您在我们网站上的浏览体验、分析我们的网站流量并了解我们的访问者来自哪里。如果您选择退出,则只会使用绝对必要的 - cookie。我们的 cookie 政策 -
      -
      - - -
      -
      - -
      - -
      -
      -
      -
      - - DooTask - - - - - - - - - - - - - - - ,轻量级 -
      - 任务管理工具 -
      -
      -

      - 助力团队高效推进项目,让工作更简单。 -

      - -
      -
      -
      -
      - -
      -
      - - -
      - -
      - -
      -
      -
      - -
      -
      -
      - 免费版 -
      -
      - - 0 - - /月 - - - - 最多3人 - -
      - -
      -
        -
      • - - undefined - - - 支持私有化部署 - -
      • - -
      • - - undefined - - - 技术咨询服务 - -
      • - -
      • - - undefined - - - 专属运营客服 - -
      • - -
      • - - undefined - - - 12小时服务响应 - -
      • -
      -
      -
      -
      -
      最受欢迎
      -
      - 10人专业版 -
      -
      - - ¥5,800 - - - - - ¥8,800 - -
      - -
      -
        -
      • - - undefined - - - 支持私有化部署 - -
      • - -
      • - - undefined - - - 技术咨询服务 - -
      • - -
      • - - undefined - - - 专属运营客服 - -
      • - -
      • - - undefined - - - 12小时服务响应 - -
      • - -
      • - - undefined - - - 赠1年免费技术维护 - -
      • -
      -
      -
      -
      -
      热销
      -
      - 无限专业版 -
      -
      - - ¥16,800 - - - - - ¥18,888 - -
      - -
      -
        -
      • - - undefined - - - 支持私有化部署 - -
      • - -
      • - - undefined - - - 技术咨询服务 - -
      • - -
      • - - undefined - - - LOGO定制 - -
      • - -
      • - - undefined - - - 专属运营客服 - -
      • - -
      • - - undefined - - - 12小时服务响应 - -
      • - -
      • - - undefined - - - 赠1年免费技术维护 - -
      • -
      -
      -
      -
      -
      -
      -
      -
      -
      - 为何选择DooTask? -
      -
      -   -
      -
      -
      -
      - head -
      -
      - img -
      -
      - 项目管理 -
      -
      - 支持多种项目管理模式,如敏捷开发、水晶计划、看板等,适用于各种规模和类型的项目管理。用户可以使用DooTask里的项目管理工具,例如任务分配、进度跟踪、资源分配等来管理整个项目。 - -
      -
      -
      -
      - head -
      -
      - img -
      -
      - 团队协作 -
      -
      - DooTask的丰富实用的工具可以方便团队成员之间的沟通和协作,提高工作效率。例如,团队成员可以使用DooTask里的文档协作工具、在线思维导图、流程图等工具进行协作。 - -
      -
      -
      -
      - head -
      -
      - img -
      -
      - 数据安全保护 -
      -
      - DooTask在消息功能上使用非对称加密技术,确保用户的信息得到最大程度的保护。此外,它还提供了强大的权限管理系统,能够根据不同用户的角色和职责,灵活地设置他们在项目管理中的权限和操作范围。 - -
      -
      -
      -
      - head -
      -
      - img -
      -
      - 自由定制 -
      -
      - DooTask是一款完全开源的工具,用户可以自由修改和定制,避免了商业软件订阅费用带来的额外成本。 - -
      -
      -
      -
      -
      -
      - - - - -
      - - - - - - - diff --git a/public/site/zh/cookie.html b/public/site/zh/cookie.html deleted file mode 100644 index 06164e673..000000000 --- a/public/site/zh/cookie.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - Cookie Policy - DooTask - - - - - - - - - - - - - - -
      - - - - - diff --git a/public/site/zh/cookie.md b/public/site/zh/cookie.md deleted file mode 100644 index 9d4ccecd4..000000000 --- a/public/site/zh/cookie.md +++ /dev/null @@ -1,80 +0,0 @@ -# Cookie 政策 - -最后更新时间:2023 年 8 月 10 日 - -本 Cookie 政策解释了什么是 Cookie 以及我们如何使用它们。您应该阅读本政策,以便您了解我们使用什么类型的 Cookie,或者我们使用 Cookie 收集的信息以及如何使用该信息。本 Cookie 政策是在[Cookie 政策生成器](https://www.termsfeed.com/cookies-policy-generator/)的帮助下创建的。 - -Cookie 通常不包含任何可识别用户个人身份的信息,但我们存储的有关您的个人信息可能与 Cookie 中存储和获取的信息相关联。有关我们如何使用、存储和保证您的个人数据安全的更多信息,请参阅我们的隐私政策。 - -我们不会在我们使用的 Cookie 中存储敏感的个人信息,例如邮寄地址、帐户密码等。 - -# 解释和定义 - -## 解释 - -首字母大写的单词具有在以下条件下定义的含义。下列定义无论以单数还是复数形式出现,均具有相同的含义。 - -## 定义 - -就本 Cookie 政策而言: - -- __公司__ (在本Cookies政策中称为"公司"、“我们”、“我们”或“我们的”)是指广西海豚有海信息科技有限公司,地址:中国广西壮族自治区南宁市良庆区五象航洋城 1 号楼 14 层 1411 号。 -- __Cookies__ 是指网站放置在您的计算机、移动设备或任何其他设备上的小文件,其中包含您在该网站上的浏览历史记录以及其多种用途的详细信息。 -- __网站__ 指的是 DooTask,可从 [ https://www.dootask.com/]( https://www.dootask.com/)访问。 -- __您__ 是指访问或使用本网站的个人,或代表该个人访问或使用本网站的公司或任何法律实体(如果适用)。 - -# Cookie 的使用 - -## 我们使用的 Cookie 类型 - -Cookie 可以是“持久”Cookie 或“会话”Cookie。 当您离线时,持久 Cookie 会保留在您的个人计算机或移动设备上,而会话 Cookie 会在您关闭网络浏览器后立即删除。 - -我们出于以下目的使用会话 Cookie 和持久 Cookie: - -- __必要/必需的 Cookie__ - - 类型:会话 Cookie - - 管理机构:我们 - - 目的:这些 Cookie 对于向您提供通过网站提供的服务以及使您能够使用网站的某些功能至关重要。它们有助于验证用户身份并防止欺诈性使用用户帐户。如果没有这些 Cookie,则无法提供您所请求的服务,我们仅使用这些 Cookie 来为您提供这些服务。 - -- __功能性 Cookie__ - - 类型:持久性 Cookie - - 管理机构:我们 - - 目的:这些 Cookie 使我们能够记住您在使用本网站时所做的选择,例如记住您的登录详细信息或语言偏好。这些 Cookie 的目的是为您提供更加个性化的体验,并避免您每次使用网站时都必须重新输入您的偏好设置。 - - - - -## 您对 Cookie 的选择 - -如果您希望避免在网站上使用 Cookie,首先您必须在浏览器中禁用 Cookie,然后删除浏览器中保存的与本网站关联的 Cookie。您可以随时使用此选项来阻止使用 Cookie。 - -如果您不接受我们的 Cookie,您在使用本网站时可能会遇到一些不便,并且某些功能可能无法正常运行。 - -如果您想删除 Cookie 或指示您的网络浏览器删除或拒绝 Cookie,请访问您的网络浏览器的帮助页面。 - -- 对于 Chrome 网络浏览器,请访问 Google 的此页面:[https://support.google.com/accounts/answer/32050](https://support.google.com/accounts/answer/32050) - -- 对于 Internet Explorer Web 浏览器,请访问 Microsoft 的此页面:[http://support.microsoft.com/kb/278835](http://support.microsoft.com/kb/278835) - -- 对于 Firefox 网络浏览器,请从 Mozilla 访问此页面:[https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored](https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored) - -- 对于 Safari 网络浏览器,请访问 Apple 的此页面:[https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac](https://support.apple.com/guide/safari/manage-cookies-and-website-data-sfri11471/mac) - -对于任何其他网络浏览器,请访问您的网络浏览器的官方网页。 - -## 有关 Cookie 的更多信息 - -您可以在此处了解有关 Cookie 的更多信息:[TermsFeed 提供的有关 Cookie 的所有信息](https://www.termsfeed.com/blog/cookies/)。 - -## 联系我们 - -如果您对此 Cookie 政策有任何疑问,您可以联系我们: - - -- 通过电子邮件:service@hitosea.com diff --git a/public/site/zh/download.html b/public/site/zh/download.html deleted file mode 100644 index 71b969411..000000000 --- a/public/site/zh/download.html +++ /dev/null @@ -1,648 +0,0 @@ - - - - - - 下载中心 - DooTask - - - - - - - - - - - - - - - - - - -
      -
      - -
      - -
      -
      -
      -
      - 下载DooTask客户端 -
      -

      - 同时支持iOS、Android、macOS、Windows版本 -

      - - 其他版本 -
      -
      -
      -
      - -
      -
      - - -
      - -
      - -
      - -
      - -
      -
      - - - - -
      - - - - - - - \ No newline at end of file diff --git a/public/site/zh/help.html b/public/site/zh/help.html deleted file mode 100644 index ae89c5bc9..000000000 --- a/public/site/zh/help.html +++ /dev/null @@ -1,1357 +0,0 @@ - - - - - - 帮助中心 - DooTask - - - - - - - - - - - - - - - - -
      - -
      - -
      - -
      -
      - - -
      - -
      - -
      -
      - - -
      - -
      - -
      - -
      -
      -
      -
      - 帮助中心 - 帮助中心 -
      -
      -
      - - -
      -
      -
      - 刚开始使用DooTask?没问题,这本入门书是为你准备的! - 刚开始使用DooTask?没问题,这本入门书是为你准备的! -
      -

      - 用户手册 -

      -
      - 刚开始使用DooTask?没问题,这本入门书是为你准备的! -
      -
      -
      -
        -
      • -

        - 什么是DooTask? -

        -
        - DooTask是一个轻量级的开源在线项目任务管理工具,提供各种文档协作工具、在线思维导图、在线流程图、项目管理、任务分配、即时IM、文件管理和其他工具。它可以帮助团队有效地推进项目,使工作更轻松。 -
        -
      • -
      • -

        - 什么是任务管理? -

        -
        - 任务管理是对你的项目任务从开始到结束的各个阶段进行监控的过程。这涉及到为你的任务积极做出决定,以适应可能实时发生的变化,你的最终目标是成功完成你的任务。项目任务管理也意味着有效地管理任务的各个方面,如预算、时间、范围、资源、复现等。 -
        - -
      • -
      • -

        - 如何管理任务? -

        -
        - 以下是任务管理中涉及的一些关键步骤: -
        -
        - 确定优先次序: - 无论你用什么工具来管理你的任务,无论是简单的待办事项清单还是全面的项目任务管理工具,任务管理最重要的方面是确定优先次序。这有助于有效地完成所有涉及的任务,同时保持计划的约束。 -
        -
        - 里程碑跟踪:这项研究的结果还表明,建立明确的目标对于成功完成一个项目至关重要。虽然对于任务管理来说,最终的目标不是必须的,但定义里程碑有助于激励团队成功执行任务。 -
        -
        - 日程管理:确保你的任务能按时完成是对整个项目健康有影响的事情。通过估计所涉及的努力来分配正确的时间框架是这里的关键。 -
        - -
      • -
      • -

        - 如何选择正确的任务管理软件? -

        -
        - 根据你的目的、价格范围、现有的工作环境和首选平台,有几种项目和任务管理工具可供选择。从可能甚至不需要互联网连接的简单核对表到成熟的项目任务管理软件,功能多种多样。也有适合特定行业的软件选择,如建筑、IT或教育,或特定功能,如crm任务管理。 -
        -
      • -
      • -

        - 注册账户 -

        -
        - (1) - 点击【注册账号】进入注册页面; -
        - 注册账户 -
        - (2) - 在注册页面对应的输入框,分别输入电子邮箱/密码/邀请码,创建DooTask账户,点击【注册】即可完成账号注册。 -
        - 注册账户 -
      • -
      • -

        - 登录账户 -

        -
        - 账号密码登录 -
        -
        - (1) - 在登录页面对应的输入框,分别输入电子邮箱/密码; -
        -
        - (2) 点击【登录】即可进入账号。 -
        - 账号密码登录 -
        - 扫码登录 -
        -
        - (1) - 点击登录页面右上角绿色二维码,进入扫码登录页面; -
        - 扫码登录 -
        - (2) - 使用DooTask移动端扫描二维码登录账号。 -
        - 扫码登录 -
      • -
      • -

        - 任务提醒机器人 -

        -
        - 打开DooTask左侧导航栏中的【消息】按键,可查看“任务提醒”,任务提醒机器人根据关联任务变更状态实时更新提醒,如新建任务提示、任务修改提示、任务到期提示等。 -
        - 任务提醒机器人 -
      • -
      • -

        - 签到打卡机器人 -

        -
        - 打开DooTask左侧导航栏中的【消息】按键,可查看“签到打卡”,签到打卡机器人自动记录员工日常签到打卡数据,帮用户实现有效的工作进度管理及时间规划。 -
        - 签到打卡机器人 -
      • -
      • -

        - 个人信息设置 -

        -
        - (1) - 点击用户右上角【头像】→点击【个人设置】选择个人设置页面,即可对个人头像/电话/昵称/职位(职称)等信息进行修改; -
        -
        - (2) - 点击【提交】确认修改,点击【重置】清空当前设置。 -
        - 个人信息设置 -
      • -
      • -

        - 签到设置 -

        -
        - (1) - 点击用户右上角【头像】→点击【个人设置】→点击【签到设置】,即显示最近五天的签到记录,点击下方【查看更多签到数据】即可查看历史签到记录; -
        - 签到设置 -
        - (2) - 在签到设置栏下对应的输入框,输入设备MAC地址/备注信息,关联设备连接上指定路由器(WiFi)实现自动签到,若需添加其他设备,可点击【添加设备】进行新增; -
        -
        - (3) - 点击【提交】确认修改,点击【重置】清空当前设置。 -
        - 签到设置 -
      • -
      • -

        - 快捷键设置 -

        -
        - (1) - 点击用户右上角【头像】→点击【个人设置】→点击【快捷键】,即可根据个人习惯,自定义设置快捷键组合; -
        -
        - (2) - 点击【保存】确认修改,点击【重置】清空当前设置。 -
        - 快捷键设置 -
      • -
      • -

        - 语言设置 -

        -
        - (1) - 点击用户右上角【头像】→点击【个人设置】→点击【语言设置】,点击选择语言右侧方框下拉图标,即可切换不同语言。系统目前支持简体中文、繁体中文、英语、韩语、日语、德语、法语和印度尼西亚语; -
        -
        - (2) - 点击【提交】确认修改,点击【重置】清空当前设置。 -
        - 语言设置 -
      • -
      • -

        - 主题设置 -

        -
        - (1) - 点击用户右上角【头像】→点击【个人设置】→点击【主题设置】,点击选择主题右侧方框下拉图标,即可切换对应主题,系统目前支持明亮/暗黑两大主题; -
        -
        - (2) - 点击【提交】确认修改,点击【重置】清空当前设置。 -
        - 主题设置 -
      • -
      • -

        - 密码设置 -

        -
        - (1) - 点击用户右上角【头像】→点击【个人设置】→点击【密码设置】,输入用户旧密码→输入用户新密码→再次输入用户新密码确认; -
        -
        - (2) - 点击【提交】确认修改,点击【重置】清空当前设置。 -
        - 密码设置 -
      • -
      • -

        - 修改邮箱 -

        -
        - (1) - 点击用户左上角【头像】→点击【个人设置】→点击【修改邮箱】,输入新邮箱地址后点击【发送验证码】并输入验证码; -
        -
        - (2) - 点击【提交】确认修改,点击【重置】清空当前设置。 -
        - 修改邮箱 -
      • -
      • -

        - 多样式项目管理模版 -

        -
        - DooTask模版满足多种团队协作场景,同时支持自定义模版,满足团队个性化场景管理需求,可直观的查看项目的进展情况,团队协作更方便。 -
        -
      • -
      • -

        - 可视化项目办公 -

        -
        - 使用看板、表格、列表等多种视图让整体项目一目了然;成员可对任务灵活筛选、排序和分组,让要事优先,并保持专注。 -
        -
      • -
      • -

        - 实时监控项目管理动态 -

        -
        - 实时变更项目动态,具体任务变更情况记录提醒,以便团队把控项目整体进程,制定相应计划。 -
        -
      • -
      • -

        - 创建项目 -

        -
        - (1) - 点击DooTask页面左下角的【新建项目】; -
        - 创建项目 -
        - (2) - 在出现的新建项目弹窗中输入项目名称(必填并且不能少于两个字)→选择项目模板(默认空白模板)→选择是否开启工作流; -
        -
        - (3) - 点击【添加】即可完成项目创建。 -
        - 创建项目 -
      • -
      • -

        - 多视图任务列表 -

        -
        - (1) - 打开DooTask页面左侧点击对应的项目名称按钮,即可显示该项目所属的所有任务列表; -
        - 多视图任务列表 -
        - (2) - 点击左上角对应的【切换视图】图标,可查看对应任务的任务分类/任务优先级/负责人/到期时间等信息。 -
        - 多视图任务列表 -
      • -
      • -

        - 已完成任务显示 -

        -
        - (1) - 常规情况下“已完成任务”将在任务列表中自动隐藏,不作展示; -
        -
        - (2) - 勾选项目任务列表中右上角【显示已完成】图标,即可查看“已完成任务”。 -
        - 已完成任务显示 -
      • -
      • -

        - 项目动态显示 -

        -
        - (1) - 在对应项目页面中,点击左上角【项目动态】图标,即可根据日期查看项目成员操作历史。 -
        - 项目动态显示 - 项目动态显示 -
      • -
      • -

        - 创建任务 -

        -
        - (1) - 选定项目名称进入任务列表,在对应任务列表左上角点击【新建任务】图标; -
        - 创建任务 -
        - (2) - 在对应输入框中输入任务描述/详细描述,选择任务优先级/任务时间/任务负责人/可见性等信息,并按需添加子任务; -
        -
        - (3) - 点击创建任务页面右下角【添加任务】,完成新任务创建。 -
        - 创建任务 -
      • -
      • -

        - 任务仪表盘 -

        -
        - 点击DooTask页面左侧的【仪表盘】,即可显示任务统计数据(显示今日到期任务、超期任务、待完成任务)。 -
        - 任务仪表盘 -
      • -
      • -

        - 任务时间 -

        -
        - 选择需要修改的任务,打开任务详情页,点击【截止时间】根据实际情况对任务时间进行修改。 -
        - 任务时间 -
      • -
      • -

        - 任务可见性 -

        -
        - 选择对应任务,打开任务详情页,点击【可见性】按需选择项目人员/任务人员/指定成员可见。 -
        - 任务可见性 -
      • -
      • -

        - 任务优先级 -

        -
        - 在任务创建窗口和任务详情页中,可按需设置任务优先级,系统目前支持四大任务优先级:重要紧急、重要不紧急、紧急不重要、不重要不紧急。(可根据任务情况变更优先级) -
        - 任务优先级 -
      • -
      • -

        - 引用关联文件及任务 -

        -
        - 选择对应任务,打开任务详情页,在页面右侧聊天窗口输入框中输入关联的文件链接/任务,点击【发送】图标即可引用。 -
        - 引用关联文件及任务 -
      • -
      • -

        - 任务关联人员 -

        -
        - 选择对应任务,打开任务详情页,在页面右侧聊天窗口输入框中@任务关联人员账号昵称,点击【发送】图标,该成员即刻进入任务群聊。 -
        - 任务关联人员 -
      • -
      • -

        - 任务群组会议 -

        -
        - 选择对应任务,打开任务详情页,在页面右侧聊天窗口右下方点击【展开】图标,即可对任务群聊内的所有成员发起群组视频/语音会议。 -
        -
        - 可对任务群聊内的所有成员发起群组视频/语音会议。 -
        - 任务群组会议 -
      • -
      • -

        - 项目动态显示 -

        -
        - 在对应任务详情页中,点击右上角【任务动态】图标,即可根据日期查看任务成员操作历史。 -
        - 项目动态显示 -
      • - -
      • -

        - 公司管理 -

        -
        - 帮助企业对其公司目标,将目标、关键结果与个人工作连接,共同推动战略落地、目标达成; -
        -
        - 通过协同创作,共享企业各项工作的进度、完成状态、日程安排,促进信息流动,让全员获取项目关键信息,及时跟进,推动跨部门协作。 -
        -
      • -
      • -

        - 产品管理 -

        -
        - 自定义产品研发过程的工作流程,在不同阶段把任务分派不同角色,推动产品研发进程;各完成项目及任务历史资料统一归档,方便随时调用或展开讨论,形成知识沉淀到复用的闭环。 -
        -
      • -
      • -

        - 人事行政管理 -

        -
        - 通过数据可视化统计报表获取多维度企业数据,全面了解员工表现,让绩效评价更客观、公正;使用公告发布通知,安排公司活动,传递企业决策,便于塑造企业文化,让员工更有参与感。 -
        -
      • -
      • -

        - 工作报告 -

        -
        - 1 我的汇报: -
        -
        - 汇报搜索 -
        -
        - 点击用户左上角头像→点击【工作报告】→点击【我的汇报】,在页面左上方选择需要查询的汇报类型/汇报时间,点击【搜索】,即刻展示相关报告数据。 -
        - 汇报搜索 -
        - 汇报记录展示 -
        -
        - 点击用户左上角头像→点击【工作报告】→点击【我的汇报】,在工作报告页面中可查看对应报告的名称/类型/汇报时间/汇报对象/操作等信息。 -
        - 汇报记录展示 -
        - 新增报告 -
        -
        - (1) - 点击用户左上角头像→点击【工作报告】→点击【新增报告】; -
        -
        - (2) - 在新增报告页面中选择汇报类型(选择周报/日报)/汇报对象(可直接使用上次汇报对象),输入相应的汇报内容,点击【提交】即可完成报告。 -
        - 新增报告 - 新增报告 -
        - 2 收到的汇报: -
        -
        - 汇报搜索 -
        -
        - 点击用户左上角头像→点击【工作报告】→点击【收到的汇报】,在页面左上方选择需要查询的关键词/汇报类型/汇报时间,点击【搜索】,即刻展示相关报告数据。 -
        - 汇报搜索 -
        - 汇报记录展示 -
        -
        - 点击用户左上角头像→点击【工作报告】→点击【收到的汇报】,在工作报告页面中可查看对应报告的标题/类型/接收时间//操作等信息。 -
        - 汇报记录展示 -
      • -
      • -

        - 数据导出 -

        -
        - 点击用户左上角头像→点击【团队管理】,根据需求选择点击【导出任务统计】/【导出超期任务】/【导出审批数据】/【导出签到数据】,导出关联数据记录。 -
        - 数据导出 -
      • -
      • -

        - 新建部门 -

        -
        - (1) - 点击用户左上角头像→点击【团队管理】列表中的“团队管理”选项,进入页面左下角点击【新建部门】; -
        - 新建部门 -
        - (2) - 在出现的新建部门弹窗中输入部门名称→选择上级部门→添加部门负责人→选择创建部门群聊或使用现有群聊; -
        -
        - (3) - 点击【新建】即可完成新部门创建。 -
        - 新建部门 -
      • -
      • -

        - 搜索成员 -

        -
        - 点击用户左上角头像→点击【团队管理】列表中的“团队管理”选项,在页面上方选择需要查询的关键词/身份/在职状态/邮箱认证,点击【搜索】,即可展示相关人员信息。 -
        - 搜索成员 -
      • -
      • -

        - 团队成员操作 -

        -
        - 点击用户左上角头像→点击【团队管理】列表中的“团队管理”选项,点击对应人员信息【操作】按键,可对该成员选择进行:设为管理员/设为临时账号/修改邮箱/修改密码/修改部门/操作离职/删除的操作。 -
        - 团队成员操作 -
      • -
      • -

        - 项目成员 -

        -
        - (1) - 选择对应项目,点击右上方【成员管理】,添加/删除项目成员; -
        -
        - (2) - 点击【取消】取消成员管理设置,点击【保存】保存成员修改管理操作。 -
        - 项目成员 - 项目成员 -
      • -
      • -

        - 任务成员 -

        -
        - 选择对应项目,点击任务列表右上角【新建任务】图标→点击【高级选项】,即可添加/删除相关任务负责人或协助人员。 -
        - 任务成员 - 任务成员 -
      • -
      • -

        - 文件类型 -

        -
        - (1) - 在DooTask页面左侧点击【文件】,显示和查看项目相关文件 -
        - 文件类型 -
        - (2) - 点击页面右上角【新建文件】图标按钮,即可新建文件夹/上传文件/上传文件夹,目前系统支持文本、图标、思维导图、Word文档、Excel工作表、PPT演示文稿多种文件类型。 -
        - 文件类型 -
      • -
      • -

        - 文件共享 -

        -
        - 在DooTask页面左侧点击【文件】,选择对应的文件夹/文件后点击右上角图标,点击【共享】即可将文件夹/文件共享给相关项目成员。 -
        - 文件共享 -
      • -
      • -

        - 访问权限 -

        -
        - (1) - 在DooTask页面左侧点击【文件】,选择对应的文件夹/文件后点击右上角图标,点击【共享】打开共享设置; -
        -
        - (2) - 根据需求选择所有人/指定成员可见,共享文件读写/只读,点击【共享】即可完成操作。 -
        - 访问权限 -
      • -
      • -

        - 文件显示 -

        -
        - 在DooTask页面左侧点击【文件】,勾选页面右上角【仅显示我的】图标,即可分类查看个人关联文件。 -
        - 文件显示 -
      • -
      -
      -
      -
      -
      -
      -
      - - - - -
      - - - - - - \ No newline at end of file diff --git a/public/site/zh/index.html b/public/site/zh/index.html deleted file mode 100644 index 1918eb673..000000000 --- a/public/site/zh/index.html +++ /dev/null @@ -1,1016 +0,0 @@ - - - - - - DooTask - 最受欢迎的开源项目协助工具 - - - - - - - - - - - - - - - - -
      - -
      -
      - 我们使用第一方 cookie - 来改善您在我们网站上的浏览体验、分析我们的网站流量并了解我们的访问者来自哪里。如果您选择退出,则只会使用绝对必要的 - cookie。我们的 cookie 政策 -
      -
      - - -
      -
      - -
      - -
      -
      -
      -
      - - DooTask - - - - - ,轻量级任务管理工具 -
      -

      - DooTask是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。助力团队高效推进项目,让工作更简单。 -

      - -
      -
      - DooTask是一款轻量级的开源在线项目任务管理工具,提供各类文档协作工具、在线思维导图、在线流程图、项目管理、任务分发、即时IM,文件管理等工具。助力团队高效推进项目,让工作更简单。 -
      -
      -
      -
      - -
      -
      - - -
      - -
      - -
      - -
      - -
      -
      -

      - 受到许多公司的信任 -

      -
        -
      • - 陕建集团 -
      • -
      • - 艾特科 -
      • -
      • - 中国联通 -
      • -
      • - 旗雲科技 -
      • -
      -
      -
      - -
      -
      -

      使用场景

      -
      -
        -
      • - 项目管理 -
        -

        - 项目管理 -

        - 项目管理 -
        -
        -
        -

        - 项目管理 -

        - 支持多种项目管理模式,适用于各种规模和类型的项目管理,实时掌控项目进度,优化工作流程。 -
        - 支持多种项目管理模式,适用于各种规模和类型的项目管理,实时掌控项目进度,优化工作流程。 -
        -
      • -
      • - 团队协作 -
        -

        - 团队协作 -

        - 团队协作 -
        -
        -
        -

        - 团队协作 -

        - 提供丰富实用的在线文档协作工具,方便团队成员之间的沟通和协作,提高工作效率。 -
        - 提供丰富实用的在线文档协作工具,方便团队成员之间的沟通和协作,提高工作效率。 -
        -
      • -
      • - 任务协同 -
        -

        - 任务协同 -

        - 任务协同 -
        -
        -
        -

        - 任务协同 -

        - 以任务化的方式让团队的工作井井有条,保证团队协作的高效性和任务分工的明确性。 -
        - 以任务化的方式让团队的工作井井有条,保证团队协作的高效性和任务分工的明确性。 -
        -
      • -
      • - 绩效衡量 -
        -

        - 绩效衡量 -

        - 绩效衡量 -
        -
        -
        -

        - 绩效衡量 -

        - 建立可量化的评价标准,数据化呈现工作成效,凝聚核心人才。 -
        - 建立可量化的评价标准,数据化呈现工作成效,凝聚核心人才。 -
        -
      • -
      • - 沟通汇报 -
        -

        - 沟通汇报 -

        - 沟通汇报 -
        -
        -
        -

        - 沟通汇报 -

        - 基于工作场景的即时通讯及共享,实现更好的团队沟通。 -
        - 基于工作场景的即时通讯及共享,实现更好的团队沟通。 -
        -
      • -
      - 支持多种项目管理模式,适用于各种规模和类型的项目管理,实时掌控项目进度,优化工作流程。 -
      -
      -
      -

      使用场景

      -
      -
        -
      • - 项目管理 -

        - 项目管理 -

        - 支持多种项目管理模式,适用于各种规模和类型的项目管理,实时掌控项目进度,优化工作流程。 - 支持多种项目管理模式,适用于各种规模和类型的项目管理,实时掌控项目进度,优化工作流程。 -
      • -
      • - 团队协作 -

        - 团队协作 -

        - 提供丰富实用的在线文档协作工具,方便团队成员之间的沟通和协作,提高工作效率。 - 提供丰富实用的在线文档协作工具,方便团队成员之间的沟通和协作,提高工作效率。 -
      • -
      • - 任务协同 -

        - 任务协同 -

        - 以任务化的方式让团队的工作井井有条,保证团队协作的高效性和任务分工的明确性。 - 以任务化的方式让团队的工作井井有条,保证团队协作的高效性和任务分工的明确性。 -
      • -
      • - 绩效衡量 -

        - 绩效衡量 -

        - 建立可量化的评价标准,数据化呈现工作成效,凝聚核心人才。 - 建立可量化的评价标准,数据化呈现工作成效,凝聚核心人才。 -
      • -
      • - 沟通汇报 -

        - 沟通汇报 -

        - 基于工作场景的即时通讯和分享,以实现更好的团队沟通。 - 基于工作场景的即时通讯和分享,以实现更好的团队沟通。 -
      • -
      -
      -
      -
      - -
      -
      -
        -
      • -

        - 为什么选择我们 - - - -

        -
      • -
      • -

        - 01 -

        -
        - 高效便捷的团队沟通工具 -
        -
        - 针对项目和任务建立群组,工作问题可及时沟通,促进团队快速协作,提高团队工作效率。 -
        -
      • -
      • -

        - 02 -

        -
        - 强大易用的协同创作云文档 -
        -
        - 汇集文档、电子表格、思维笔记等多种在线工具,汇聚企业知识资源于一处,支持多人实时协同编辑,让团队协作更便捷。 -
        -
      • -
      -
        -
      • -

        - 03 -

        -
        - 便捷多样的项目管理模版 -
        -
        - 模版满足多种团队协作场景,同时支持自定义模版,满足团队个性化场景管理需求,可直观的查看项目的进展情况,团队协作更方便。 -
        -
      • -
      • -

        - 04 -

        -
        - 清晰直观的任务日历 -
        -
        - 通过灵活的任务日历,轻松安排每一天的日程,把任务拆解到每天,让工作目标更清晰,时间分配更合理。 -
        -
      • -
      • -

        - 05 -

        -
        - 支持多平台应用 -
        -
        - 多平台应用支持,随时随地追踪项目进度,同时让你在工作中每一个步骤都能拥有更高效愉悦的体验。 -
        -
      • -
      -
      -
      -

      - 为什么选择我们为什么选择我们 -

      -
      -
        -
      • -

        - 01 -

        -
        - 高效便捷的团队沟通工具 -
        -
        - 针对项目和任务建立群组,工作问题可及时沟通,促进团队快速协作,提高团队工作效率。 -
        -
      • -
      • -

        - 02 -

        -
        - 强大易用的协同创作云文档 -
        -
        - 汇集文档、电子表格、思维笔记等多种在线工具,汇聚企业知识资源于一处,支持多人实时协同编辑,让团队协作更便捷。 -
        -
      • -
      • -

        - 03 -

        -
        - 便捷多样的项目管理模版 -
        -
        - 模版满足多种团队协作场景,同时支持自定义模版,满足团队个性化场景管理需求,可直观的查看项目的进展情况,团队协作更方便。 -
        -
      • -
      • -

        - 04 -

        -
        - 清晰直观的任务日历 -
        -
        - 通过灵活的任务日历,轻松安排每一天的日程,把任务拆解到每天,让工作目标更清晰,时间分配更合理。 -
        -
      • -
      • -

        - 05 -

        -
        - 支持多平台应用 -
        -
        - 多平台应用支持,随时随地追踪项目进度,同时让你在工作中每一个步骤都能拥有更高效愉悦的体验。 -
        -
      • -
      -
      -
        -
      • -
      • -
      • -
      • -
      • -
      -
      -
      - -
      -
      - - - - -
      - - - - - - \ No newline at end of file diff --git a/public/site/zh/log.html b/public/site/zh/log.html deleted file mode 100644 index ad47f09dd..000000000 --- a/public/site/zh/log.html +++ /dev/null @@ -1,699 +0,0 @@ - - - - - - 更新日志 - DooTask - - - - - - - - - - - - - - - - -
      - -
      - -
      - -
      -
      - - -
      -
      更新日志
      -
        -
        - -
        -
        - - -
        - -
        - -
        - -
        -
        -
        - -
        -
        -
        - 更新日志 -
        -
          -
          -
          -

          - DooTask更新日志 -

          -
            -
            -
            -
            -
            -
            -
            - - - - -
            - - - - - - - - \ No newline at end of file diff --git a/public/site/zh/price.html b/public/site/zh/price.html deleted file mode 100644 index 6d37df786..000000000 --- a/public/site/zh/price.html +++ /dev/null @@ -1,1977 +0,0 @@ - - - - - - 服务价格 - DooTask - - - - - - - - - - - - - - - - -
            -
            -
            联系我们
            -
            -
            -
            -

            如果有任何问题,欢迎使用以下方式与我们联系。

            -

            座机电话:0771-3164099

            -

            邮箱地址:service@hitosea.com

            -
            -
            -
            确定
            -
            -
            -
            - -
            - -
            -
            -
            -
            - 选择你的方案 -
            -

            - 根据你的企业的规模和需求,有不同的版本可供选择 -

            -
              -
            • -

              - 普通版 -

              -
              -

              - ¥0 -

              - /月 -
              -
              - 人数无限制 -
              - - - -
                -
              1. - 支持私有化部署 -
                - 支持私有化部署 -
                -
              2. -
              -
            • -
            • -

              - 专业版 -

              -
              -

              - ¥0 -

              - /月 -
              -
              - 最多3人 -
              - - - -
                -
              1. - 支持私有化部署 -
                - 支持私有化部署 -
                -
              2. -
              3. - 技术咨询服务 -
                - 技术咨询服务 -
                -
              4. -
              5. - 24小时服务响应 -
                - 24小时服务响应 -
                -
              6. -
              -
            • -
            • -

              - 专业版Rec. -

              -
              -

              - ¥18,888 -

              -
              -
              - 人数无限制 -
              - -
                -
              1. - 支持私有化部署 -
                - 支持私有化部署 -
                -
              2. -
              3. - 技术咨询服务 -
                - 技术咨询服务 -
                -
              4. -
              5. - Logo定制 -
                - Logo定制 -
                -
              6. -
              7. - 专属客户经理 -
                - 专属客户经理 -
                -
              8. -
              9. - 12小时服务响应 -
                - 12小时服务响应 -
                -
              10. -
              -
            • -
            • -

              - 定制版 -

              -
              -

              - 定制 -

              -
              -
              - 人数可定制 -
              - -
                -
              1. - 支持私有化部署 -
                - 支持私有化部署 -
                -
              2. -
              3. - 技术咨询服务 -
                - 技术咨询服务 -
                -
              4. -
              5. - Logo定制 -
                - Logo定制 -
                -
              6. -
              7. - 专属客户经理 -
                - 专属客户经理 -
                -
              8. -
              9. - 12小时服务响应 -
                - 12小时服务响应 -
                -
              10. -
              -
            • -
            -
            -
            -
            -
            - -
            -
            - - -
            - -
            - -
            - -
            -
            -
            -
            -

            - 对比所有计划 -

            -
            - 该产品支持各种应用场景,帮助团队协作 -
            -
              -
              -
            • -

              - 特点 -

              -

              - 普通版 -

              -

              - 专业版 -

              -

              - 专业版 -

              -

              - 定制版 -

              -
            • -
              -
            • -

              - 定价 -

              -
              -
              -

              - ¥0 -

              - /月 -
              - - - - - -
              -
              -
              -

              - ¥0 -

              - /月 -
              - - - - - -
              -
              -
              -

              - ¥18,888 -

              -
              - - - -
              -
              -
              -

              - 定制 -

              -
              - - - -
              -
            • - -
            • -
                -
              1. -
                - 系统使用 -
                -
              2. -
              3. -
                - 用户数量 -
                -
                - 无限制 -
                -
                - ≤3 -
                -
                - 无限制 -
                -
                - 可定制 -
                -
              4. -
              5. -
                - 项目数量 -
                -
                - 无限制 -
                -
                - 无限制 -
                -
                - 无限制 -
                -
                - 无限制 -
                -
              6. -
              7. -
                - 任务数量 -
                -
                - 无限制 -
                -
                - 无限制 -
                -
                - 无限制 -
                -
                - 无限制 -
                -
              8. -
              9. -
                - 离线部署 -
                -
                - 支持 -
                -
                - 支持 -
                -
                - 官方支持 -
                -
                - 官方支持 -
                -
              10. -
              -
            • -
            • -
                -
              1. -
                - 任务协作 -
                -
              2. -
              3. -
                - 多视图展示 -
                - 多视图展示 - 多视图展示 - 多视图展示 - 多视图展示 -
              4. -
              5. -
                - 自定义栏目 -
                - 自定义栏目 - 自定义栏目 - 自定义栏目 - 自定义栏目 -
              6. -
              7. -
                - 可见性设置 -
                - 可见性设置 - 可见性设置 - 可见性设置 - 可见性设置 -
              8. -
              9. -
                - 重复周期 -
                - 重复周期 - 重复周期 - 重复周期 - 重复周期 -
              10. -
              -
            • -
            • -
                -
              1. -
                - 项目管理 -
                -
              2. -
              3. -
                - 项目进度 -
                - 项目进度 - 项目进度 - 项目进度 - 项目进度 -
              4. -
              5. -
                - 项目模板 -
                - 项目模板 - 项目模板 - 项目模板 - 项目模板 -
              6. -
              7. -
                - 甘特图 -
                - 甘特图 - 甘特图 - 甘特图 - 甘特图 -
              8. -
              -
            • -
            • -
                -
              1. -
                - 应用 -
                -
              2. -
              3. -
                - 审批中心 -
                - 审批中心 - 审批中心 - 审批中心 - 审批中心 -
              4. -
              5. -
                - OKR管理 -
                - OKR管理 - OKR管理 - OKR管理 - OKR管理 -
              6. -
              7. -
                - AI机器人 -
                - AI机器人 - AI机器人 - AI机器人 - AI机器人 -
              8. -
              9. -
                - 会议 -
                - 会议 - 会议 - 会议 - 会议 -
              10. -
              11. -
                - OKR结果分析 -
                - OKR结果分析 - OKR结果分析 - OKR结果分析 - OKR结果分析 -
              12. -
              13. -
                - LDAP -
                - LDAP - LDAP - LDAP - LDAP -
              14. -
              15. -
                - 邮件 -
                - 邮件 - 邮件 - 邮件 - 邮件 -
              16. -
              17. -
                - APP推送 -
                - APP推送 - APP推送 - APP推送 - APP推送 -
              18. -
              19. -
                - 团队管理 -
                - 团队管理 - 团队管理 - 团队管理 - 团队管理 -
              20. -
              -
            • -
            • -
                -
              1. -
                - 聊天 -
                -
              2. -
              3. -
                - @功能 -
                - @功能 - @功能 - @功能 - @功能 -
              4. -
              5. -
                - 关联任务 -
                - 关联任务 - 关联任务 - 关联任务 - 关联任务 -
              6. -
              7. -
                - 表情 -
                - 表情 - 表情 - 表情 - 表情 -
              8. -
              9. -
                - 消息分类 -
                - 消息分类 - 消息分类 - 消息分类 - 消息分类 -
              10. -
              11. -
                - 消息右键功能 -
                - 消息右键功能 - 消息右键功能 - 消息右键功能 - 消息右键功能 -
              12. -
              13. -
                - 消息免打扰 -
                - 消息免打扰 - 消息免打扰 - 消息免打扰 - 消息免打扰 -
              14. -
              15. -
                - 颜色标注 -
                - 颜色标注 - 颜色标注 - 颜色标注 - 颜色标注 -
              16. -
              -
            • - -
            -
              -
            • -
              - 普通版 -
              -
                -
              1. -
                -
                - 系统使用 -
                -
                -
                -
                - 用户数量 -
                -
                - 无限制 -
                -
                -
                -
                - 项目数量 -
                -
                - 无限制 -
                -
                -
                -
                - 任务数量 -
                -
                - 无限制 -
                -
                -
                -
                - 离线部署 -
                -
                - 支持 -
                -
                -
              2. -
              3. -
                -
                - 任务协作 -
                -
                -
                -
                - 多视图展示 -
                - 多视图展示 -
                -
                -
                - 自定义栏目 -
                - 自定义栏目 -
                -
                -
                - 可见性设置 -
                - 可见性设置 -
                -
                -
                - 重复周期 -
                - 重复周期 -
                -
              4. -
              5. -
                -
                - 项目管理 -
                -
                -
                -
                - 项目进度 -
                - 项目进度 -
                -
                -
                - 项目模板 -
                - 项目模板 -
                -
                -
                - 甘特图 -
                - 甘特图 -
                -
              6. -
              7. -
                -
                - 应用 -
                -
                -
                -
                - 审批中心 -
                - 审批中心 -
                -
                -
                - OKR管理 -
                - OKR管理 -
                -
                -
                - AI机器人 -
                - AI机器人 -
                -
                -
                - 会议 -
                - 会议 -
                -
                -
                - OKR结果分析 -
                - OKR结果分析 -
                -
                -
                - LDAP -
                - LDAP -
                -
                -
                - 邮件 -
                - 邮件 -
                -
                -
                - APP推送 -
                - APP推送 -
                -
                -
                - 团队管理 -
                - 团队管理 -
                -
              8. -
              9. -
                -
                - 聊天 -
                -
                -
                -
                - @功能 -
                - @功能 -
                -
                -
                - 关联任务 -
                - 关联任务 -
                -
                -
                - 表情 -
                - 表情 -
                -
                -
                - 消息分类 -
                - 消息分类 -
                -
                -
                - 消息右键功能 -
                - 消息右键功能 -
                -
                -
                - 消息免打扰 -
                - 消息免打扰 -
                -
                -
                - 颜色标注 -
                - 颜色标注 -
                -
              10. -
              11. -

                - ¥0 -

                - /月 -
              12. -
              13. - - - - - -
              14. -
              -
            • -
            • -
              - 专业版 -
              -
                -
              1. -
                -
                - 系统使用 -
                -
                -
                -
                - 用户数量 -
                -
                - ≤3 -
                -
                -
                -
                - 项目数量 -
                -
                - 无限制 -
                -
                -
                -
                - 任务数量 -
                -
                - 无限制 -
                -
                -
                -
                - 离线部署 -
                -
                - 支持 -
                -
                -
              2. -
              3. -
                -
                - 任务协作 -
                -
                -
                -
                - 多视图展示 -
                - 多视图展示 -
                -
                -
                - 自定义栏目 -
                - 自定义栏目 -
                -
                -
                - 可见性设置 -
                - 可见性设置 -
                -
                -
                - 重复周期 -
                - 重复周期 -
                -
              4. -
              5. -
                -
                - 项目管理 -
                -
                -
                -
                - 项目进度 -
                - 项目进度 -
                -
                -
                - 项目模板 -
                - 项目模板 -
                -
                -
                - 甘特图 -
                - 甘特图 -
                -
              6. -
              7. -
                -
                - 应用 -
                -
                -
                -
                - 审批中心 -
                - 审批中心 -
                -
                -
                - OKR管理 -
                - OKR管理 -
                -
                -
                - AI机器人 -
                - AI机器人 -
                -
                -
                - 会议 -
                - 会议 -
                -
                -
                - OKR结果分析 -
                - OKR结果分析 -
                -
                -
                - LDAP -
                - LDAP -
                -
                -
                - 邮件 -
                - 邮件 -
                -
                -
                - APP推送 -
                - APP推送 -
                -
                -
                - 团队管理 -
                - 团队管理 -
                -
              8. -
              9. -
                -
                - 聊天 -
                -
                -
                -
                - @功能 -
                - @功能 -
                -
                -
                - 关联任务 -
                - 关联任务 -
                -
                -
                - 表情 -
                - 表情 -
                -
                -
                - 消息分类 -
                - 消息分类 -
                -
                -
                - 消息右键功能 -
                - 消息右键功能 -
                -
                -
                - 消息免打扰 -
                - 消息免打扰 -
                -
                -
                - 颜色标注 -
                - 颜色标注 -
                -
              10. -
              11. -

                - ¥0 -

                - /月 -
              12. -
              13. - - - - - -
              14. -
              -
            • -
            • -
              - 专业版 -
              -
                -
              1. -
                -
                - 系统使用 -
                -
                -
                -
                - 用户数量 -
                -
                - 无限制 -
                -
                -
                -
                - 项目数量 -
                -
                - 无限制 -
                -
                -
                -
                - 任务数量 -
                -
                - 无限制 -
                -
                -
                -
                - 离线部署 -
                -
                - 官方支持 -
                -
                -
              2. -
              3. -
                -
                - 任务协作 -
                -
                -
                -
                - 多视图展示 -
                - 多视图展示 -
                -
                -
                - 自定义栏目 -
                - 自定义栏目 -
                -
                -
                - 可见性设置 -
                - 可见性设置 -
                -
                -
                - 重复周期 -
                - 重复周期 -
                -
              4. -
              5. -
                -
                - 项目管理 -
                -
                -
                -
                - 项目进度 -
                - 项目进度 -
                -
                -
                - 项目模板 -
                - 项目模板 -
                -
                -
                - 甘特图 -
                - 甘特图 -
                -
              6. -
              7. -
                -
                - 应用 -
                -
                -
                -
                - 审批中心 -
                - 审批中心 -
                -
                -
                - OKR管理 -
                - OKR管理 -
                -
                -
                - AI机器人 -
                - AI机器人 -
                -
                -
                - 会议 -
                - 会议 -
                -
                -
                - OKR结果分析 -
                - OKR结果分析 -
                -
                -
                - LDAP -
                - LDAP -
                -
                -
                - 邮件 -
                - 邮件 -
                -
                -
                - APP推送 -
                - APP推送 -
                -
                -
                - 团队管理 -
                - 团队管理 -
                -
              8. -
              9. -
                -
                - 聊天 -
                -
                -
                -
                - @功能 -
                - @功能 -
                -
                -
                - 关联任务 -
                - 关联任务 -
                -
                -
                - 表情 -
                - 表情 -
                -
                -
                - 消息分类 -
                - 消息分类 -
                -
                -
                - 消息右键功能 -
                - 消息右键功能 -
                -
                -
                - 消息免打扰 -
                - 消息免打扰 -
                -
                -
                - 颜色标注 -
                - 颜色标注 -
                -
              10. -
              11. -

                - ¥18,888 -

                - /永久 -
              12. -
              13. - - - -
              14. -
              -
            • -
            • -
              - 定制版 -
              -
                -
              1. -
                -
                - 系统使用 -
                -
                -
                -
                - 用户数量 -
                -
                - 可定制 -
                -
                -
                -
                - 项目数量 -
                -
                - 无限制 -
                -
                -
                -
                - 任务数量 -
                -
                - 无限制 -
                -
                -
                -
                - 离线部署 -
                -
                - 官方支持 -
                -
                -
              2. -
              3. -
                -
                - 任务协作 -
                -
                -
                -
                - 多视图展示 -
                - 多视图展示 -
                -
                -
                - 自定义栏目 -
                - 自定义栏目 -
                -
                -
                - 可见性设置 -
                - 可见性设置 -
                -
                -
                - 重复周期 -
                - 重复周期 -
                -
              4. -
              5. -
                -
                - 项目管理 -
                -
                -
                -
                - 项目进度 -
                - 项目进度 -
                -
                -
                - 项目模板 -
                - 项目模板 -
                -
                -
                - 甘特图 -
                - 甘特图 -
                -
              6. -
              7. -
                -
                - 应用 -
                -
                -
                -
                - 审批中心 -
                - 审批中心 -
                -
                -
                - OKR管理 -
                - OKR管理 -
                -
                -
                - AI机器人 -
                - AI机器人 -
                -
                -
                - 会议 -
                - 会议 -
                -
                -
                - OKR结果分析 -
                - OKR结果分析 -
                -
                -
                - LDAP -
                - LDAP -
                -
                -
                - 邮件 -
                - 邮件 -
                -
                -
                - APP推送 -
                - APP推送 -
                -
                -
                - 团队管理 -
                - 团队管理 -
                -
              8. -
              9. -
                -
                - 聊天 -
                -
                -
                -
                - @功能 -
                - @功能 -
                -
                -
                - 关联任务 -
                - 关联任务 -
                -
                -
                - 表情 -
                - 表情 -
                -
                -
                - 消息分类 -
                - 消息分类 -
                -
                -
                - 消息右键功能 -
                - 消息右键功能 -
                -
                -
                - 消息免打扰 -
                - 消息免打扰 -
                -
                -
                - 颜色标注 -
                - 颜色标注 -
                -
              10. -
              11. -

                - 定制 -

                - -
              12. -
              13. - - - -
              14. -
              -
            • -
            -
            -
            -
            -
            -
            - - - - -
            - - - - - - \ No newline at end of file diff --git a/public/site/zh/privacy.html b/public/site/zh/privacy.html deleted file mode 100644 index d8e1fd548..000000000 --- a/public/site/zh/privacy.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - 隐私政策 - DooTask - - - - - - - - - - - - - - -
            - - - - - diff --git a/public/site/zh/privacy.md b/public/site/zh/privacy.md deleted file mode 100644 index 228924dd6..000000000 --- a/public/site/zh/privacy.md +++ /dev/null @@ -1,189 +0,0 @@ -# 隐私政策 - -最后更新 2023 年 7 月 21 日 - -本隐私政策描述了我们在您使用本服务时收集、使用和披露您的信息的政策和程序,并向您介绍了您的隐私权以及法律如何保护您。 - -我们使用您的个人数据来提供和改进服务。使用本服务即表示您同意我们按照本隐私政策收集和使用信息。本隐私政策在[隐私政策生成器](https://www.termsfeed.com/privacy-policy-generator/)的帮助下创建。 - -# 解释和定义 - -## 释义 - -首字母大写的词语在以下情况下具有定义的含义。以下定义具有相同含义,无论其为单数还是复数。 - -## 定义 - -在本隐私政策中: - -- 账户:是指为您访问我们的服务或我们服务的部分内容而创建的唯一账户。 -- 关联方:指控制一方、受一方控制或与一方受共同控制的实体,其中 "控制 "系指拥有 50%或 50%以上有权投票选举董事或其他管理权的股份、股权或其他证券。 -- 公司:(在本协议中称为 "本公司"、"我们"、"我们的 "或 "我们的")是指广西海豚有海信息科技公司,地址为中国广西壮族自治区南宁市良庆区五象航洋城 1 号楼 14 层 1411 号。 -- Cookies:是网站放置在您的计算机、移动设备或任何其他设备上的小文件,其中包含您在该网站上的详细浏览记录及其他多种用途。 -- 国家:是指中国 -- 设备:是指可以访问本服务的任何设备,如计算机、手机或数字平板电脑。 -- 个人数据:是指与已识别或可识别的个人有关的任何信息。 -- 服务:系指本网站。 -- 服务提供商:指代表本公司处理数据的任何自然人或法人。它指公司雇用的第三方公司或个人,以促进服务、代表公司提供服务、执行与服务有关的服务或协助公司分析服务的使用情况。 -- 使用数据:系指自动收集的数据,这些数据可以是使用本服务时产生的,也可以是本服务基础设施本身产生的(例如,访问页面的持续时间)。 -- 网站:是指 DooTask,可从 [https://www.dootask.com/](https://www.dootask.com/)访问。 -- 您:指访问或使用本服务的个人,或该个人访问或使用本服务所代表的公司或其他法人实体(如适用)。 - - -# 收集和使用您的个人数据 - -## 收集的数据类型 - -### 个人数据 - -在使用我们的服务时,我们可能会要求您向我们提供某些可用于联系或识别您身份的个人身份信息。个人身份信息可能包括但不限于 - -- 电话号码 -- 使用数据 - -#### 使用数据 - -使用数据是在使用服务时自动收集的。 - -使用数据可能包括以下信息:您设备的互联网协议地址(如 IP 地址)、浏览器类型、浏览器版本、您访问的服务页面、访问时间和日期、在这些页面上花费的时间、唯一设备标识符和其他诊断数据。 - -当您使用或通过移动设备访问本服务时,我们可能会自动收集某些信息,包括但不限于您使用的移动设备类型、您的移动设备唯一 ID、您的移动设备 IP 地址、您的移动操作系统、您使用的移动互联网浏览器类型、唯一设备标识符和其他诊断数据。 - -当您访问我们的服务时,或者当您通过移动设备访问服务时,我们也会收集您的浏览器发送的信息。 - - -### 跟踪技术和 Cookie - -我们使用 Cookie 和类似的跟踪技术来跟踪我们服务上的活动并存储某些信息。跟踪技术包括信标、标签和脚本,用于收集和跟踪信息以及改进和分析我们的服务。我们使用的技术可能包括 - -- Cookie 或浏览器 Cookie 是放置在您设备上的一个小文件。您可以指示您的浏览器拒绝所有 Cookie 或在发送 Cookie 时进行提示。但是,如果您不接受 Cookie,您可能无法使用我们服务的某些部分。除非您已将浏览器设置调整为拒绝 Cookie,否则我们的服务可能会使用 Cookie。 -- 本公司服务的某些部分和本公司的电子邮件可能包含称为网站信标(也称为透明 gifs、像素标签和单像素 gifs)的小型电子文件,这些电子文件允许本公司对访问过这些页面或打开过电子邮件的用户进行计数,并用于其他相关的网站统计(例如,记录特定部分的受欢迎程度以及验证系统和服务器的完整性)。 - -Cookie 可以是 "持久 "或 "会话 "Cookie。永久 Cookie 会在您离线后保留在您的个人电脑或移动设备上,而 Session Cookie 会在您关闭网络浏览器后立即删除。您可以在[TermsFeed 网站](https://www.termsfeed.com/blog/cookies/#What_Are_Cookies) 文章中了解有关 Cookie 的更多信息。 - -我们使用会话 Cookie 和永久 Cookie 的目的如下: - -- __必要/基本 Cookie__ - - 类型: 会话 Cookie - - 管理者: 我们 - - 目的:这些 Cookies 对于通过本网站向您提供服务以及使您能够使用本网站的某些功能至关重要。它们有助于验证用户身份,防止用户账户被冒用。如果没有这些 Cookies,您所要求的服务将无法提供,而我们使用这些 Cookies 只是为了向您提供这些服务。 -- __Cookies政策/通知接受Cookies__ - - 类型: 持久 Cookie - - 管理者 我们 - - 目的:这些 Cookie 可识别用户是否接受本网站使用 Cookie。 -- 功能 Cookies - - 类型 持久 Cookie - - 管理者: 我们 - - 目的:这些 Cookies 允许我们记住您在使用本网站时所作的选择,例如记住您的登录信息或语言偏好。这些 Cookies 的目的是为您提供更加个性化的体验,避免您每次使用网站时都要重新输入您的偏好。 - - - -有关我们使用的 Cookie 以及您对 Cookie 的选择的更多信息,请访问我们的 Cookie 政策或隐私政策中的 Cookie 部分。 - - -## 您个人资料的使用 - -公司可将个人数据用于以下目的: - -- 提供并维护本公司的服务,包括监控本公司服务的使用情况。 -- 管理您的帐户:管理您作为服务用户的注册。您提供的个人数据可以让您作为注册用户使用本服务的不同功能。 -- 履行合同:您通过本服务购买的产品、项目或服务的购买合同或与我们签订的任何其他合同的制定、遵守和履行。 -- 与您联系:在必要或合理的情况下,通过电子邮件、电话、短信或其他同等形式的电子通信(如移动应用程序的推送通知),就与功能、产品或合同服务(包括安全更新)有关的更新或信息通信与您联系。 -- 向您提供有关我们提供的与您已购买或询问的产品、服务和活动类似的其他产品、服务和活动的新闻、特别优惠和一般信息,除非您选择不接收此类信息。 -- 管理您的请求: 处理和管理您向我们提出的请求。 - -- 用于业务转让:我们可能会使用您的信息来评估或进行合并、剥离、重组、改组、解散或以其他方式出售或转让我们的部分或全部资产,无论是作为持续经营还是作为破产、清算或类似程序的一部分,在转让的资产中包括我们持有的关于我们服务用户的个人数据。 -- 用于其他目的: 我们可能会将您的信息用于其他目的,例如数据分析、确定使用趋势、确定我们促销活动的有效性,以及评估和改进我们的服务、产品、服务、营销和您的体验。 - -在以下情况下,我们可能会共享您的个人信息: - -- 与服务提供商共享: 我们可能会与服务提供商共享您的个人信息,以监控和分析我们服务的使用情况,并与您联系。 -- 业务转让:我们可能会在任何合并、出售公司资产、融资或向另一家公司收购我们全部或部分业务的过程中或谈判期间共享或转让您的个人信息。 -- 与关联公司:我们可能会与我们的关联公司共享您的信息,在这种情况下,我们将要求这些关联公司遵守本隐私政策。关联公司包括我们的母公司以及我们控制的或与我们处于共同控制下的任何其他子公司、合资伙伴或其他公司。 -- 与业务合作伙伴: 我们可能会与我们的业务合作伙伴共享您的信息,以便向您提供某些产品、服务或促销活动。 -- 与其他用户:当您在公共区域与其他用户共享个人信息或以其他方式进行交互时,这些信息可能会被所有用户查看,并可能被公开传播到外部。 -- 经您同意: 在征得您同意的情况下,我们可以出于任何其他目的披露您的个人信息。 - -## 保留您的个人资料 - -本公司保留您的个人资料的期限仅限于本隐私政策规定的目的所需的时间。我们将在必要的范围内保留和使用您的个人数据,以履行我们的法律义务(例如,如果我们被要求保留您的数据以遵守适用法律)、解决争议以及执行我们的法律协议和政策。 - -本公司还将保留使用数据用于内部分析。使用数据的保留期限一般较短,除非这些数据用于加强安全或改进我们服务的功能,或者我们有法律义务将这些数据保留更长时间。 - -## 您个人数据的传输 - -您的信息(包括个人数据)将在本公司的运营办事处以及参与处理的各方所在的任何其他地方进行处理。这意味着这些信息可能会被转移到您所在州、省、国家或其他政府管辖区以外的计算机上,并在这些计算机上进行维护,而这些地方的数据保护法律可能与您所在的管辖区不同。 - -您同意本隐私政策并提交此类信息,即表示您同意该转移。 - -本公司将采取一切合理必要的措施,确保您的数据得到安全处理,并遵守本隐私政策,除非有适当的控制措施(包括您的数据和其他个人信息的安全),否则不会将您的个人数据传输到任何组织或国家。 - -##删除您的个人数据 - -您有权删除或要求我们协助删除我们收集到的关于您的个人数据。 - -我们的服务可能会让您能够在服务内删除有关您的某些信息。 - -您可以随时登录您的账户(如果您有账户),访问允许您管理个人信息的账户设置部分,更新、修改或删除您的信息。您也可以联系我们,要求访问、修改或删除您提供给我们的任何个人信息。 - -但请注意,当我们有法律义务或合法依据时,我们可能需要保留某些信息。 - -## 您个人信息的披露 - -### 商业交易 - -如果公司涉及合并、收购或资产出售,您的个人数据可能会被转移。在您的个人数据被转移并受不同的隐私政策约束之前,我们将发出通知。 - -#### 执法 - -在某些情况下,如果法律要求或公共当局(如法院或政府机构)的有效要求,本公司可能需要披露您的个人资料。 - -### 其他法律要求 - -公司可能会在真诚相信有必要披露您的个人数据的情况下披露您的个人数据,以便 - -- 遵守法律义务 -- 保护和捍卫公司的权利或财产 -- 防止或调查与服务有关的可能不当行为 -- 保护服务用户或公众的人身安全 -- 防止承担法律责任 - -## 您个人数据的安全 - -我们非常重视您的个人数据的安全,但请记住,任何互联网传输方式或电子存储方式都不是百分之百安全的。虽然我们努力使用商业上可接受的方法来保护您的个人数据,但我们不能保证其绝对安全。 - - -# 儿童隐私 - -我们的服务不针对 13 岁以下的任何人。如果您是家长或监护人,并意识到您的孩子向我们提供了个人数据,请联系我们。如果我们发现我们在未核实父母同意的情况下收集了 13 岁以下任何人的个人数据,我们会采取措施从我们的服务器上删除该信息。 - -如果我们需要依赖同意作为处理您的信息的法律依据,而您所在的国家/地区要求获得父母的同意,我们可能会在收集和使用该信息之前要求获得您父母的同意。 - - -#与其他网站的链接 - -我们的服务可能包含指向非我们运营的其他网站的链接。如果您点击第三方链接,您将被引导至该第三方网站。我们强烈建议您查看您访问的每个网站的隐私政策。 - -对于任何第三方网站或服务的内容、隐私政策或做法,我们无法控制,也不承担任何责任。 - -# 本隐私政策的变更 - -我们可能会不时更新我们的隐私政策。如有任何变更,我们将通过在本页面上发布新的隐私政策来通知您。 - -在变更生效之前,我们将通过电子邮件和/或我们服务上的显著通知告知您,并更新本隐私政策顶部的 "最后更新 "日期。 - -建议您定期查看本隐私政策是否有任何变更。本隐私政策的变更在本页面发布时生效。 - -# 联系我们 - -如果您对本隐私政策有任何疑问,可以联系我们: -- 电话号码:0771-3164099 diff --git a/public/site/zh/product.html b/public/site/zh/product.html deleted file mode 100644 index 1cdf861f0..000000000 --- a/public/site/zh/product.html +++ /dev/null @@ -1,1092 +0,0 @@ - - - - - - 产品 - DooTask - - - - - - - - - - - - - - - - -
            - -
            - -
            -
            -
            -
            - 一个产品,多种强大的工具 -
            -

            - 该产品汇集了各种文档协作、在线思维导图、在线流程图、项目管理、任务分配、即时IM、文档管理等功能。 -

            - -
            -
            -
            -
            -
              -
            • - - 一个产品,多种强大的工具 - -
            • - -
            • - 协同创作 -

              协同创作

              -
            • - -
            • - 即时沟通 -

              即时沟通

              -
            • - -
            • - 项目管理 -

              项目管理

              -
            • - -
            • - 任务仪表盘 -

              任务仪表盘

              -
            • - -
            • - 任务日历 -

              任务日历

              -
            • - -
            • - 机器人助手 -

              机器人助手

              -
            • - -
            • - 团队管理 -

              团队管理

              -
            • - -
            • - 端到端加密 -

              端到端加密

              -
            • - -
            • - 多平台应用 -

              多平台应用

              -
            • -
            • - - 一个产品,多种强大的工具 - -
            • -
            -
              -
            • -
              - 团队协作无界限,不再是文件孤岛 - 团队协作无界限,不再是文件孤岛 -
                -
              • -

                - 01 -

                -
                - 团队协作无界限 -
                -
                - 汇集文档、电子表格、思维笔记等多种在线工具,汇聚企业知识资源于一处,支持多人实时协同编辑,让团队协作更便捷。 -
                -
              • -
              • -

                - 02 -

                -
                - 不再是文件孤岛 -
                -
                - 具有多种文件格式支持,团队内部文件共享,可控制的文件权限、历史版本追踪等,方便团队成员之间进行文件协作和讨论,提高工作效率。 -
                -
              • -
              -
              -
            • -
            • -
              - 聚焦沟通高效交流,消息必达沟通无阻碍,云端同步查阅历史信息不受限,随时随地参会 - 聚焦沟通高效交流,消息必达沟通无阻碍,云端同步查阅历史信息不受限,随时随地参会 -
                -
              • -

                - 01 -

                -
                - 聚焦沟通,高效交流 -
                -
                - 针对项目和任务建立群组,即时IM功能可以帮助团队成员之间实时沟通,在任务卡片中添加评论、附件、提醒等,促进团队快速协作,提高团队工作效率。 -
                -
              • -
              • -

                - 02 -

                -
                - 消息必达沟通无阻碍 -
                -
                - 消息支持查看已读未读,未读消息通过官方邮件通知对方,高效传达。 -
                -
              • -
              • -

                - 03 -

                -
                - 云端同步查阅历史信息不受限 -
                -
                - 信息多端同步,不丢失。新员工加入组织,支持查看聊天历史消息,无缝融入团队。 -
                -
              • -
              • -

                - 04 -

                -
                - 随时随地参会 -
                -
                - 使用沟通群组视频会议,项目人员随时随地参会,提升线上会议便捷性,保证会议全程安全可控,有序进行。 -
                -
              • -
              -
              -
                -
              • - 聚焦沟通高效交流,消息必达沟通无阻碍,云端同步查阅历史信息不受限,随时随地参会 - 聚焦沟通高效交流,消息必达沟通无阻碍,云端同步查阅历史信息不受限,随时随地参会 -
              • -
              • -

                - 01 -

                -
                - 聚焦沟通,高效交流 -
                -
                - 针对项目和任务建立群组,即时IM功能可以帮助团队成员之间实时沟通,在任务卡片中添加评论、附件、提醒等,促进团队快速协作,提高团队工作效率。 -
                -
              • -
              • -

                - 02 -

                -
                - 消息必达沟通无阻碍 -
                -
                - 消息支持查看已读未读,未读消息通过官方邮件通知对方,高效传达。 -
                -
              • -
              • -

                - 03 -

                -
                - 云端同步查阅历史信息不受限 -
                -
                - 信息多端同步,不丢失。新员工加入组织,支持查看聊天历史消息,无缝融入团队。 -
                -
              • -
              • -

                - 04 -

                -
                - 随时随地参会 -
                -
                - 使用沟通群组视频会议,项目人员随时随地参会,提升线上会议便捷性,保证会议全程安全可控,有序进行。 -
                -
              • -
              -
            • -
            • -
              - 多样式管理模版,关联文件一键归档,项目化办公,行动可视化,动态管理,实时监控 - 多样式管理模版,关联文件一键归档,项目化办公,行动可视化,动态管理,实时监控 -
                -
              • -

                - 01 -

                -
                - 多样式管理模版 -
                -
                - 模版满足多种团队协作场景,同时支持自定义模版,满足团队个性化场景管理需求,可直观的查看项目的进展情况,团队协作更方便。 -
                -
              • -
              • -

                - 02 -

                -
                - 项目化办公,行动可视化 -
                -
                - 使用看板、表格、列表等多种视图让整体项目一目了然;成员可对任务灵活筛选、排序和分组,让要事优先,并保持专注。 -
                -
              • -
              • -

                - 03 -

                -
                - 动态管理,实时监控 -
                -
                - 实时变更项目动态,具体任务变更情况记录提醒,以便团队把控项目整体进程,制定相应计划。 -
                -
              • -
              • -

                - 04 -

                -
                - 关联文件一键归档 -
                -
                - 项目及相关任务文件自动归档储存,便于之后查阅使用。 -
                -
              • -
              -
              -
                -
              • - 多样式管理模版,关联文件一键归档,项目化办公,行动可视化,动态管理,实时监控 - 多样式管理模版,关联文件一键归档,项目化办公,行动可视化,动态管理,实时监控 -
              • -
              • -

                - 01 -

                -
                - 多样式管理模版 -
                -
                - 模版满足多种团队协作场景,同时支持自定义模版,满足团队个性化场景管理需求,可直观的查看项目的进展情况,团队协作更方便。 -
                -
              • -
              • -

                - 02 -

                -
                - 项目化办公,行动可视化 -
                -
                - 使用看板、表格、列表等多种视图让整体项目一目了然;成员可对任务灵活筛选、排序和分组,让要事优先,并保持专注。 -
                -
              • -
              • -

                - 03 -

                -
                - 动态管理,实时监控 -
                -
                - 实时变更项目动态,具体任务变更情况记录提醒,以便团队把控项目整体进程,制定相应计划。 -
                -
              • -
              • -

                - 04 -

                -
                - 关联文件一键归档 -
                -
                - 项目及相关任务文件自动归档储存,便于之后查阅使用。 -
                -
              • -
              -
            • -
            • -
              - 全面洞悉任务数据 - 全面洞悉任务数据 -
                -
              • -

                - 01 -

                -
                - 全面洞悉任务数据 -
                -
                - 任务仪表盘内展示任务状态分类统计,便于个人掌握任务进度,合理安排和规划工作,提高工作效率。 -
                -
              • -
              -
              -
            • -
            • -
              - 精准掌握时间进度,多款日历视图 - 精准掌握时间进度,多款日历视图 -
                -
              • -

                - 01 -

                -
                - 精准掌握时间进度 -
                -
                - 展现各项工作的日程排期,让工作任务一目了然,更好的平衡工作和生活。 -
                -
              • -
              • -

                - 02 -

                -
                - 多款日历视图 -
                -
                - 提供月/周/日等多款日历视图,便捷切换;支持按使用目的创建多个日历,自定义可见范围和颜色标识,让日程分类展示。 -
                -
              • -
              -
              -
            • -
            • -
              - 智能提示,让科技贴近生活 - 智能提示,让科技贴近生活 -
                -
              • -

                - 01 -

                -
                - 智能提示,让科技贴近生活 -
                -
                - 智能机器人可对员工日常签到打卡、任务提醒、推送最新咨询消息等进行服务,帮用户实现有效的工作进度管理及时间规划。 -
                -
              • -
              • -

                - 02 -

                -
                - 人工智能,实现与AI实时交流 -
                -
                - 聪明的小海豚,基于人工智能技术的语言处理工具,能够通过学习和理解人类的语言来进行对话,实时交流,全面掌握各种文字信息,极大提高工作的便捷性。 -
                -
              • -
              -
              -
            • -
            • -
              - 全面提升层级化组织效能,多功能协助企业管理团队 - 全面提升层级化组织效能,多功能协助企业管理团队 -
                -
              • -

                - 01 -

                -
                - 全面提升层级化组织效能 -
                -
                - 管理人员可在后台设置公司人员架构,形成完整团队形态,便于对项目和相关任务进行分级协同管理。 -
                -
              • -
              • -

                - 02 -

                -
                - 多功能协助企业管理团队 -
                -
                - 提供日常工作报告编辑汇总,项目及任务数据汇总统计,多种功能协助企业管理团队和项目,提高公司管理效率和管理水平。 -
                -
              • -
              -
              -
            • -
            • -
              - 掌控加密密钥,保障安全可靠 - 数据分类加密,实现安全同步 -
                -
              • -

                - 01 -

                -
                - 掌控加密密钥,保障安全可靠 -
                -
                - 使用端到端加密技术,确保用户的数据只能由他们自己解密。这意味着即使黑客入侵了DooTask的服务器,也无法访问用户的数据。 -
                -
              • -
              • -

                - 02 -

                -
                - 数据分类加密,实现安全同步 -
                -
                - 使用分类加密技术,用户可以在多个设备间同步其任务和文件,不必担心数据被窃取或篡改。 -
                -
              • -
              -
              -
            • -
            • -
              - 多平台应用 - 多平台应用 -
                -
              • -

                - 01 -

                -
                - 多平台应用 -
                -
                - 多平台应用支持,随时随地追踪项目进度,同时让你在工作中每一个步骤都能拥有更高效愉悦的体验。 -
                -
              • -
              -
              -
            • -
            -
            -
            - -
            -
            - - -
            - -
            - -
            - -
            -
            -
            -
            -

            - 组织管理 -

            -
            - 统一管理内部和外部工作,实时查看统计数据,透明的目标,可见的进展,可控的绩效 -
            -
            -
            -
              -
            • - 考勤统计实时查看 -
              -

              - 考勤统计实时查看 -

              -
              - 随时随地查看出勤数据,记录每个团队成员的工作时间,包括上班时间、下班时间、加班时间等,在企业内部实现目标管理以及绩效管理; -
              -
              -
            • -
            • - 极速打卡极致体验 -
              -

              - 极速打卡极致体验 -

              -
              - 系统识别并连接公司wifi自动打卡,告别排队以及打开手机操作,员工不再忘记打卡; -
              -
              -
            • -
            -
            - 考勤数据可视化分析 -
            -

            - 考勤数据可视化分析 -

            -
            - 统计每个团队成员的出勤率、迟到次数、早退次数、加班时长等相关数据,并生成可视化的统计图表。通过这些数据和图表,企业管理层可以深入了解团队成员的工作状况和工作效率,为后续的人事安排和绩效考核提供参考依据。 -
            -
            -
            -
            - 顺利打卡上班 - 顺利打卡上班 -
            - 出勤签到 - 顺利打卡上班 -
            -

            - 出勤签到 -

            -
            -
            -
            -
            -
            -
            -

            - 数字化绩效 -

            - 数字化绩效 - 数字化绩效 -
              -
            • - -
              - 目标设定和跟踪, -
              -
              - 团队更聚焦 -
              -
              - 帮助团队成员设定工作目标和KPI,并进行跟踪和管理,以便及时关注任务进展情况。 -
              -
            • -
            • - -
              - 绩效评估和反馈, -
              -
              - 管理更省心 -
              -
              - 支持对团队成员的绩效进行评估和反馈,根据任务完成情况,自动生成绩效报告和统计图表,为后续的人事管理和绩效考核提供参考依据。 -
              -
            • -
            • - -
              - 数据可视化分析, -
              -
              - 结果更直观 -
              -
              - 将任务完成情况、团队合作效率和个人绩效等数据转化为直观和易于理解的图表和数据分析,更好地了解团队成员的工作表现和绩效状况,并进行针对性的培训和指导。 -
              -
            • -
            • - -
              - 自定义报告和分析, -
              -
              - 服务更个性化 -
              -
              - 用户可以根据自己的需求和业务流程,自定义绩效考核指标和报告内容,并进行分析,更好地符合团队成员的实际工作需求,以及企业的具体业务情况。 -
              -
            • -
            -
            -
            -
            -
            - - - - -
            - - - - - - \ No newline at end of file diff --git a/public/site/zh/sideNav.html b/public/site/zh/sideNav.html deleted file mode 100644 index 8739669cd..000000000 --- a/public/site/zh/sideNav.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - DooTask - 最受欢迎的开源项目协助工具 - - - - - - - - - - - - - diff --git a/public/site/zh/solutions.html b/public/site/zh/solutions.html deleted file mode 100644 index f6fa26636..000000000 --- a/public/site/zh/solutions.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - 解决方案 - DooTask - - - - - - - - - - - - - - - - -
            - -
            - -
            -
            -
            -
            - 帮助您更好地进行协作 -
            -

            - DooTask提供了一系列基于不同场景的解决方案,以便您可以快速开始与您的团队或部门合作 -

            - -
            -
            -
            -
            - -
            -
            - - -
            - -
            - -
            - -
            -
            -
            -
            -
            -

            - 场景应用 -

            -
            -
            - 该产品支持各种应用场景,帮助团队协作 -
            -
            -
            -
              -
            • -
              - 项目管理 -
              -

              - 项目管理 -

              -
              - 支持多种项目管理模式,如敏捷开发、水晶计划、看板等,适用于各种规模和类型的项目管理。用户可以使用DooTask里的项目管理工具,例如任务分配、进度跟踪、资源分配等来管理整个项目。 -
              -
            • -
            • -
              - 团队协作 -
              -

              - 团队协作 -

              -
              - DooTask的丰富实用的工具可以方便团队成员之间的沟通和协作,提高工作效率。例如,团队成员可以使用DooTask里的文档协作工具、在线思维导图、流程图等工具进行协作。 -
              -
            • -
            • -
              - 数据安全保护 -
              -

              - 数据安全保护 -

              -
              - DooTask在消息功能上使用非对称加密技术,确保用户的信息得到最大程度的保护。此外,它还提供了强大的权限管理系统,能够根据不同用户的角色和职责,灵活地设置他们在项目管理中的权限和操作范围。 -
              -
            • -
            • -
              - 自由定制 -
              -

              - 自由定制 -

              -
              - DooTask是一款完全开源的工具,用户可以自由修改和定制,避免了商业软件订阅费用带来的额外成本。 -
              -
            • -
            -
            -
            -
            -
            -
            -

            团队运营

            -
              -
            • - 公司管理 -

              - 公司管理 -

              -
              - 帮助企业对其公司目标,将目标、关键结果与个人工作连接,共同推动战略落地、目标达成;通过协同创作,共享企业各项工作的进度、完成状态、日程安排,促进信息流动,让全员获取项目关键信息,及时跟进,推动跨部门协作。 -
              -
            • -
            • - 产品管理 -

              - 产品管理 -

              -
              - 自定义产品研发过程的工作流程,在不同阶段把任务分派不同角色,推动产品研发进程; - 各完成项目及任务历史资料统一归档,方便随时调用或展开讨论,形成知识沉淀到复用的闭环。 -
              -
            • -
            • - 人事行政 -

              - 人事行政 -

              -
              - 通过数据可视化统计报表获取多维度企业数据,全面了解员工表现,让绩效评价更客观、公正;使用公告发布通知,安排公司活动,传递企业决策,便于塑造企业文化,让员工更有参与感。 -
              -
            • -
            -
            -
            -
            -
            - - - - -
            - - - - - - \ No newline at end of file diff --git a/resources/assets/js/pages/index.vue b/resources/assets/js/pages/index.vue index 75ca35859..1ff363ba3 100644 --- a/resources/assets/js/pages/index.vue +++ b/resources/assets/js/pages/index.vue @@ -37,30 +37,6 @@ export default { methods: { start() { - if (this.$isSoftware) { - this.goNext() - return; - } - // - this.$store.dispatch("showSpinner", 1000) - this.$store.dispatch("needHome").then(_ => { - this.goIndex(); - }).catch(_ => { - this.goNext(); - }).finally(_ => { - this.$store.dispatch("hiddenSpinner") - }); - }, - - goIndex() { - if (languageName === "zh" || languageName === "zh-CHT") { - window.location.href = $A.mainUrl("site/zh/index.html") - } else { - window.location.href = $A.mainUrl("site/en/index.html") - } - }, - - goNext() { if (this.userId > 0) { this.goForward({name: 'manage-dashboard'}, true); } else { diff --git a/resources/assets/js/pages/login.vue b/resources/assets/js/pages/login.vue index 8c4dde506..183162c27 100644 --- a/resources/assets/js/pages/login.vue +++ b/resources/assets/js/pages/login.vue @@ -2,7 +2,7 @@