diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..c55c2b4
Binary files /dev/null and b/.DS_Store differ
diff --git a/.env b/.env
new file mode 100644
index 0000000..b866baa
--- /dev/null
+++ b/.env
@@ -0,0 +1,10 @@
+VUE_FILE_PATH = 'https://zyypacs-code.oss-cn-shanghai.aliyuncs.com'
+
+
+OSS_REGION = 'oss-cn-shanghai'
+
+OSS_BUCKET = 'zyypacs-code'
+
+OSS_ACCESS_KEY_ID = 'mpXG7Nu6zTpsDrI1'
+
+OSS_ACCESS_KEY_SECRET = 'yNINcEb099SkNfF6vYKaoP8TZNI3xZ'
diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..a512cf0
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,50 @@
+ENV = 'development'
+NODE_ENV = 'development'
+
+# base public path
+VUE_APP_BASE_PATH = '/'
+
+VUE_APP_IS_TEST = false
+
+# base api
+VUE_APP_BASE_API = 'http://123.56.94.154:7000'
+
+VUE_CLI_BABEL_TRANSPILE_MODULES = false
+
+# 是否开启登陆限制 true:是 false:否
+VUE_APP_LOGIN_FOR_PERMISSION = false
+
+# 是否开启长时间无操作锁定弹框 true:是 false:否
+VUE_APP_LOCK_FOR_PERMISSION = false
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOCK_FOR_TIME = 900
+
+# 是否开启长时间无操作登出 true:是 false:否
+VUE_APP_LOGOUT_FOR_PERMISSION = false
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOGOUT_FOR_TIME = 1800
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_PERMISSION = false
+
+# 密码校验规则
+VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
+
+# 是否开启文档签署验证 true:是 false:否
+VUE_APP_WORD_FOR_PERMISSION = false
+
+
+# dicom文件地址
+VUE_APP_DICOM_PATH = 'https://zyypacs.oss-cn-shanghai.aliyuncs.com'
+
+VUE_APP_DICOM_USA_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com'
+
+VUE_APP_OSS_CONFIG_REGION = 'oss-cn-shanghai'
+
+VUE_APP_OSS_CONFIG_BUCKET = 'zyypacs'
+
+VUE_APP_OSS_PATH = '/dev/dist'
+
+VUE_APP_NODE_SERVER_PATH = 'http://127.0.0.1:7003/'
diff --git a/.env.prod b/.env.prod
new file mode 100644
index 0000000..9b2fc4e
--- /dev/null
+++ b/.env.prod
@@ -0,0 +1,41 @@
+# just a flag
+ENV = 'prod'
+NODE_ENV = 'prod'
+#process.env.NODE_ENV
+# base public path
+VUE_APP_BASE_PATH = '/'
+
+# 是否开启登陆限制 true:是 false:否
+VUE_APP_LOGIN_FOR_PERMISSION = true
+
+# 是否开启长时间无操作锁定弹框 true:是 false:否
+VUE_APP_LOCK_FOR_PERMISSION = true
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOCK_FOR_TIME = 900
+
+# 是否开启长时间无操作登出 true:是 false:否
+VUE_APP_LOGOUT_FOR_PERMISSION = true
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOGOUT_FOR_TIME = 1800
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_PERMISSION = true
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
+
+# 是否开启文档签署验证 true:是 false:否
+VUE_APP_WORD_FOR_PERMISSION = true
+
+# dicom文件地址
+# VUE_APP_DICOM_PATH = 'http://101.132.193.237:7080'
+VUE_APP_DICOM_PATH = 'https://zyypacs-prod.oss-cn-shanghai.aliyuncs.com'
+
+VUE_APP_OSS_CONFIG_REGION = 'oss-cn-shanghai'
+
+VUE_APP_OSS_CONFIG_BUCKET = 'zyypacs-prod'
+
+
+VUE_APP_OSS_PATH = '/prod/dist'
diff --git a/.env.production b/.env.production
new file mode 100644
index 0000000..920e713
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,46 @@
+# just a flag
+ENV = 'production'
+NODE_ENV = 'production'
+# base public path
+VUE_APP_BASE_PATH = '/'
+
+VUE_APP_IS_TEST = true
+
+# 是否开启登陆限制 true:是 false:否
+VUE_APP_LOGIN_FOR_PERMISSION = false
+
+# 是否开启长时间无操作锁定弹框 true:是 false:否
+VUE_APP_LOCK_FOR_PERMISSION = false
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOCK_FOR_TIME = 900
+
+# 是否开启长时间无操作登出 true:是 false:否
+VUE_APP_LOGOUT_FOR_PERMISSION = false
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOGOUT_FOR_TIME = 1800
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_PERMISSION = true
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
+
+# 是否开启文档签署验证 true:是 false:否
+VUE_APP_WORD_FOR_PERMISSION = false
+
+
+
+# dicom文件地址
+VUE_APP_DICOM_PATH = 'https://zyypacs.oss-cn-shanghai.aliyuncs.com'
+#VUE_APP_DICOM_PATH = 'http://123.56.94.154:7000'
+#VUE_APP_DICOM_PATH = 'https://zyypacs-mdc.oss-cn-shanghai.aliyuncs.com'
+
+VUE_APP_DICOM_USA_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com'
+
+VUE_APP_OSS_CONFIG_REGION = 'oss-cn-shanghai'
+
+VUE_APP_OSS_CONFIG_BUCKET = 'zyypacs'
+
+VUE_APP_OSS_PATH = '/test/dist'
diff --git a/.env.prop b/.env.prop
new file mode 100644
index 0000000..79660db
--- /dev/null
+++ b/.env.prop
@@ -0,0 +1,34 @@
+# just a flag
+ENV = 'prop'
+NODE_ENV = 'prop'
+
+# 是否开启登陆限制 true:是 false:否
+VUE_APP_LOGIN_FOR_PERMISSION = true
+
+# 是否开启长时间无操作锁定弹框 true:是 false:否
+VUE_APP_LOCK_FOR_PERMISSION = true
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOCK_FOR_TIME = 900
+
+# 是否开启长时间无操作登出 true:是 false:否
+VUE_APP_LOGOUT_FOR_PERMISSION = true
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOGOUT_FOR_TIME = 1800
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_PERMISSION = true
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
+
+# 是否开启文档签署验证 true:是 false:否
+VUE_APP_WORD_FOR_PERMISSION = true
+
+# dicom文件地址
+VUE_APP_DICOM_PATH = 'http://123.56.94.154:7020'
+
+VUE_APP_OSS_CONFIG_REGION = 'oss-cn-shanghai'
+
+VUE_APP_OSS_CONFIG_BUCKET = 'zyypacs'
diff --git a/.env.uat b/.env.uat
new file mode 100644
index 0000000..e0ad567
--- /dev/null
+++ b/.env.uat
@@ -0,0 +1,41 @@
+# just a flag
+ENV = 'production'
+NODE_ENV = 'production'
+# base public path
+VUE_APP_BASE_PATH = '/'
+
+# base public path
+VUE_APP_BASE_PATH = '/'
+
+# 是否开启登陆限制 true:是 false:否
+VUE_APP_LOGIN_FOR_PERMISSION = true
+
+# 是否开启长时间无操作锁定弹框 true:是 false:否
+VUE_APP_LOCK_FOR_PERMISSION = true
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOCK_FOR_TIME = 900
+
+# 是否开启长时间无操作登出 true:是 false:否
+VUE_APP_LOGOUT_FOR_PERMISSION = true
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOGOUT_FOR_TIME = 1800
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_PERMISSION = true
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
+
+# 是否开启文档签署验证 true:是 false:否
+VUE_APP_WORD_FOR_PERMISSION = true
+
+# dicom文件地址
+VUE_APP_DICOM_PATH = 'https://zyypacs-uat.oss-cn-shanghai.aliyuncs.com'
+
+VUE_APP_OSS_CONFIG_REGION = 'oss-cn-shanghai'
+
+VUE_APP_OSS_CONFIG_BUCKET = 'zyypacs-uat'
+
+VUE_APP_OSS_PATH = '/uat/dist'
diff --git a/.env.usa b/.env.usa
new file mode 100644
index 0000000..7df52bb
--- /dev/null
+++ b/.env.usa
@@ -0,0 +1,40 @@
+# just a flag
+ENV = 'production'
+NODE_ENV = 'production'
+# base public path
+VUE_APP_BASE_PATH = '/'
+
+# 是否开启登陆限制 true:是 false:否
+VUE_APP_LOGIN_FOR_PERMISSION = false
+
+# 是否开启长时间无操作锁定弹框 true:是 false:否
+VUE_APP_LOCK_FOR_PERMISSION = false
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOCK_FOR_TIME = 900
+
+# 是否开启长时间无操作登出 true:是 false:否
+VUE_APP_LOGOUT_FOR_PERMISSION = false
+
+# 无操作锁定弹框判断时间 单位:秒
+VUE_APP_LOGOUT_FOR_TIME = 1800
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_PERMISSION = false
+
+# 是否开启密码正则验证 true:是 false:否
+VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
+
+# 是否开启文档签署验证 true:是 false:否
+VUE_APP_WORD_FOR_PERMISSION = false
+
+# dicom文件地址
+VUE_APP_DICOM_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com'
+
+VUE_APP_DICOM_USA_PATH = 'https://zyypacs-usa.oss-us-west-1.aliyuncs.com'
+
+VUE_APP_OSS_CONFIG_REGION = 'oss-us-west-1'
+
+VUE_APP_OSS_CONFIG_BUCKET = 'zyypacs-usa'
+
+VUE_APP_OSS_PATH = '/usa/dist'
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 0000000..6f386e1
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,7 @@
+build/*.js
+src/assets
+src/utils/*
+public
+dist
+
+src/*
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..f22315a
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,278 @@
+module.exports = {
+ root: true,
+ parserOptions: {
+ parser: 'babel-eslint',
+ sourceType: 'module'
+ },
+ globals: {
+ "zzSessionStorage": true
+ },
+ env: {
+ browser: true,
+ node: true,
+ es6: true
+ },
+ extends: ["plugin:vue/recommended"],
+
+ // add your custom rules here
+ //it is base on https://github.com/vuejs/eslint-config-vue
+ rules: {
+ "vue/max-attributes-per-line": [
+ 2,
+ {
+ singleline: 10,
+ multiline: {
+ max: 1,
+ allowFirstLine: false
+ }
+ }
+ ],
+ "vue/singleline-html-element-content-newline": "off",
+ "vue/multiline-html-element-content-newline": "off",
+ "vue/name-property-casing": ["error", "PascalCase"],
+ "vue/no-v-html": "off",
+ "accessor-pairs": 2,
+ "arrow-spacing": [
+ 2,
+ {
+ before: true,
+ after: true
+ }
+ ],
+ "block-spacing": [2, "always"],
+ "brace-style": [
+ 2,
+ "1tbs",
+ {
+ allowSingleLine: true
+ }
+ ],
+ camelcase: [
+ 0,
+ {
+ properties: "always"
+ }
+ ],
+ "comma-dangle": [2, "never"],
+ "comma-spacing": [
+ 2,
+ {
+ before: false,
+ after: true
+ }
+ ],
+ "comma-style": [2, "last"],
+ "constructor-super": 2,
+ curly: [2, "multi-line"],
+ "dot-location": [2, "property"],
+ "eol-last": 2,
+ eqeqeq: ["error", "always", { null: "ignore" }],
+ "generator-star-spacing": [
+ 2,
+ {
+ before: true,
+ after: true
+ }
+ ],
+ "handle-callback-err": [2, "^(err|error)$"],
+ indent: [
+ 2,
+ 2,
+ {
+ SwitchCase: 1
+ }
+ ],
+ "jsx-quotes": [2, "prefer-single"],
+ "key-spacing": [
+ 2,
+ {
+ beforeColon: false,
+ afterColon: true
+ }
+ ],
+ "keyword-spacing": [
+ 2,
+ {
+ before: true,
+ after: true
+ }
+ ],
+ "new-cap": [
+ 2,
+ {
+ newIsCap: true,
+ capIsNew: false
+ }
+ ],
+ "new-parens": 2,
+ "no-array-constructor": 2,
+ "no-caller": 2,
+ "no-console": "off",
+ "no-class-assign": 2,
+ "no-cond-assign": 2,
+ "no-const-assign": 2,
+ "no-control-regex": 0,
+ "no-delete-var": 2,
+ "no-dupe-args": 2,
+ "no-dupe-class-members": 2,
+ "no-dupe-keys": 2,
+ "no-duplicate-case": 2,
+ "no-empty-character-class": 2,
+ "no-empty-pattern": 2,
+ "no-eval": 2,
+ "no-ex-assign": 2,
+ "no-extend-native": 2,
+ "no-extra-bind": 2,
+ "no-extra-boolean-cast": 2,
+ "no-extra-parens": [2, "functions"],
+ "no-fallthrough": 2,
+ "no-floating-decimal": 2,
+ "no-func-assign": 2,
+ "no-implied-eval": 2,
+ "no-inner-declarations": [2, "functions"],
+ "no-invalid-regexp": 2,
+ "no-irregular-whitespace": 2,
+ "no-iterator": 2,
+ "no-label-var": 2,
+ "no-labels": [
+ 2,
+ {
+ allowLoop: false,
+ allowSwitch: false
+ }
+ ],
+ "no-lone-blocks": 2,
+ "no-mixed-spaces-and-tabs": 2,
+ "no-multi-spaces": 2,
+ "no-multi-str": 2,
+ "no-multiple-empty-lines": [
+ 2,
+ {
+ max: 1
+ }
+ ],
+ "no-native-reassign": 2,
+ "no-negated-in-lhs": 2,
+ "no-new-object": 2,
+ "no-new-require": 2,
+ "no-new-symbol": 2,
+ "no-new-wrappers": 2,
+ "no-obj-calls": 2,
+ "no-octal": 2,
+ "no-octal-escape": 2,
+ "no-path-concat": 2,
+ "no-proto": 2,
+ "no-redeclare": 2,
+ "no-regex-spaces": 2,
+ "no-return-assign": [2, "except-parens"],
+ "no-self-assign": 2,
+ "no-self-compare": 2,
+ "no-sequences": 2,
+ "no-shadow-restricted-names": 2,
+ "no-spaced-func": 2,
+ "no-sparse-arrays": 2,
+ "no-this-before-super": 2,
+ "no-throw-literal": 2,
+ "no-trailing-spaces": 2,
+ "no-undef": 2,
+ "no-undef-init": 2,
+ "no-unexpected-multiline": 2,
+ "no-unmodified-loop-condition": 2,
+ "no-unneeded-ternary": [
+ 2,
+ {
+ defaultAssignment: false
+ }
+ ],
+ "no-unreachable": 2,
+ "no-unsafe-finally": 2,
+ "no-unused-vars": [
+ 2,
+ {
+ vars: "all",
+ args: "none"
+ }
+ ],
+ "no-useless-call": 2,
+ "no-useless-computed-key": 2,
+ "no-useless-constructor": 2,
+ "no-useless-escape": 0,
+ "no-whitespace-before-property": 2,
+ "no-with": 2,
+ "one-var": [
+ 2,
+ {
+ initialized: "never"
+ }
+ ],
+ "operator-linebreak": [
+ 2,
+ "after",
+ {
+ overrides: {
+ "?": "before",
+ ":": "before"
+ }
+ }
+ ],
+ "padded-blocks": [2, "never"],
+ quotes: [
+ 2,
+ "single",
+ {
+ avoidEscape: true,
+ allowTemplateLiterals: true
+ }
+ ],
+ semi: [2, "never"],
+ "semi-spacing": [
+ 2,
+ {
+ before: false,
+ after: true
+ }
+ ],
+ "space-before-blocks": [2, "always"],
+ "space-before-function-paren": [2, "never"],
+ "space-in-parens": [2, "never"],
+ "space-infix-ops": 2,
+ "space-unary-ops": [
+ 2,
+ {
+ words: true,
+ nonwords: false
+ }
+ ],
+ "spaced-comment": [
+ 2,
+ "always",
+ {
+ markers: [
+ "global",
+ "globals",
+ "eslint",
+ "eslint-disable",
+ "*package",
+ "!",
+ ","
+ ]
+ }
+ ],
+ "template-curly-spacing": [2, "never"],
+ "use-isnan": 2,
+ "valid-typeof": 2,
+ "wrap-iife": [2, "any"],
+ "yield-star-spacing": [2, "both"],
+ yoda: [2, "never"],
+ "prefer-const": 2,
+ //"no-debugger": process.env.NODE_ENV === "production" ? 2 : 0,
+ "object-curly-spacing": [
+ 2,
+ "always",
+ {
+ objectsInObjects: false
+ }
+ ],
+ "array-bracket-spacing": [2, "never"]
+ }
+};
diff --git a/.gitignore b/.gitignore
index a19f004..3c3629e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1 @@
-# ---> Vue
-# gitignore template for Vue.js projects
-#
-# Recommended template: Node.gitignore
-
-# TODO: where does this rule come from?
-docs/_book
-
-# TODO: where does this rule come from?
-test/
-
+node_modules
diff --git a/20230207.zip b/20230207.zip
new file mode 100644
index 0000000..0753684
Binary files /dev/null and b/20230207.zip differ
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d1e1072
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1 @@
+MIT License
diff --git a/README-zh.md b/README-zh.md
new file mode 100644
index 0000000..e472d1d
--- /dev/null
+++ b/README-zh.md
@@ -0,0 +1,7 @@
+
+# 安装依赖
+npm install
+
+# 启动服务
+npm run dev
+
diff --git a/README.en.md b/README.en.md
new file mode 100644
index 0000000..eb5d053
--- /dev/null
+++ b/README.en.md
@@ -0,0 +1,36 @@
+# zhizhun
+
+#### Description
+{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Instructions
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Contribution
+
+1. Fork the repository
+2. Create Feat_xxx branch
+3. Commit your code
+4. Create Pull Request
+
+
+#### Gitee Feature
+
+1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4. The most valuable open source project [GVP](https://gitee.com/gvp)
+5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..94f2654
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,10 @@
+module.exports = {
+ presets: [
+ '@vue/cli-plugin-babel/preset',
+ '@babel/preset-env'
+ ],
+ plugins: [
+ '@babel/plugin-proposal-optional-chaining',
+ '@babel/plugin-proposal-nullish-coalescing-operator'
+ ]
+}
diff --git a/eamil.html b/eamil.html
new file mode 100644
index 0000000..8dec1a9
--- /dev/null
+++ b/eamil.html
@@ -0,0 +1,49 @@
+
+
+
+
+ Title
+
+
+
+
+
+ 石原里美:
+
+
+ 您参与的临床试验项目【Tsadad】,独立影像评估相关工作将在网上进行。项目及账号信息为:
+
+
+
+ 项目编号: 【内部项目编号】
+
+
+ 试验方案号: 【试验方案号】
+
+
+ 试验名称: 【试验名称】
+
+
+ 用户名: 【用户名】
+
+
+ 密码: 【***】(您已有账号, 若忘记密码,请通过邮箱找回)
+
+
+ 角色: 【用户类型】
+
+
+ 系统登录地址: 【登录网址】
+
+
+
+
+
+ 查看并确认
+
+
+
+
+
diff --git a/i18n.xlsx b/i18n.xlsx
new file mode 100644
index 0000000..466cc3e
Binary files /dev/null and b/i18n.xlsx differ
diff --git a/i18n20230116.xlsx b/i18n20230116.xlsx
new file mode 100644
index 0000000..aaf01b1
Binary files /dev/null and b/i18n20230116.xlsx differ
diff --git a/i18nGenerate.js b/i18nGenerate.js
new file mode 100644
index 0000000..b9ef96a
--- /dev/null
+++ b/i18nGenerate.js
@@ -0,0 +1,50 @@
+/* eslint-disable */
+let xlsx = require('node-xlsx')
+let fs = require('fs')
+if (!fs.existsSync('./i18n.xlsx')) {
+ console.log('缺少国际化文件\,请检查')
+ return
+}
+let sheets = xlsx.parse('./i18n.xlsx')
+let xfsheets = xlsx.parse('./xfi18n.xlsx')
+let varoptions = process.argv
+let lang = varoptions[2].split('=')[1]
+let keyCol = parseInt(varoptions[3].split('=')[1]) - 1
+let valCol = parseInt(varoptions[4].split('=')[1]) - 1
+
+async function init () {
+ try {
+ if (!fs.existsSync('./src/lang')) {
+ fs.mkdirSync('./src/lang')
+ } else {
+ }
+ let txt = '/* eslint-disable */\nexport default {\n'
+ let xftxt = '/* eslint-disable */\nexport default {\n'
+ sheets[0].data.forEach((v, i) => {
+ if (!i) return
+ if (!v[keyCol]) return
+ txt += `\t\t'${v[keyCol]}': \`${v[valCol]}\`,\n`
+ })
+ xfsheets[0].data.forEach((v, i) => {
+ if (!i) return
+ if (!v[keyCol]) return
+ xftxt += `\t\t'${v[keyCol]}': \`${v[valCol]}\`,\n`
+ })
+ txt = txt + '}'
+ xftxt = xftxt + '}'
+ fs.writeFileSync(`./src/lang/${lang}.js`, txt, {
+ encoding: 'utf8'
+ })
+ fs.writeFileSync(`./src/lang/xf${lang}.js`, xftxt, {
+ encoding: 'utf8'
+ })
+ console.log(`${lang}语言国际化配置生成成功`)
+ } catch (e) {
+ console.log(e)
+ }
+}
+
+init()
+
+
+
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 0000000..2a892f4
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,6 @@
+{
+ "compilerOptions":{
+ "experimentalDecorators":true,
+ "jsx": "preserve"
+ }
+}
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..9f72bcc
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,19019 @@
+{
+ "name": "EICS",
+ "version": "1.0.0",
+ "lockfileVersion": 1,
+ "requires": true,
+ "dependencies": {
+ "@achrinza/node-ipc": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmmirror.com/@achrinza/node-ipc/-/node-ipc-9.2.2.tgz",
+ "integrity": "sha512-b90U39dx0cU6emsOvy5hxU4ApNXnE3+Tuo8XQZfiKTGelDwpMwBVgBP7QX6dGTcJgu/miyJuNJ/2naFBliNWEw==",
+ "dev": true,
+ "requires": {
+ "@node-ipc/js-queue": "2.0.3",
+ "event-pubsub": "4.3.0",
+ "js-message": "1.0.7"
+ }
+ },
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@babel/code-frame": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.13.tgz",
+ "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.22.13",
+ "chalk": "^2.4.2"
+ }
+ },
+ "@babel/compat-data": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.22.9.tgz",
+ "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.22.17",
+ "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.22.17.tgz",
+ "integrity": "sha512-2EENLmhpwplDux5PSsZnSbnSkB3tZ6QTksgO25xwEL7pIDcNOMhF5v/s6RzwjMZzZzw9Ofc30gHv5ChCC8pifQ==",
+ "dev": true,
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.22.15",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-module-transforms": "^7.22.17",
+ "@babel/helpers": "^7.22.15",
+ "@babel/parser": "^7.22.16",
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.22.17",
+ "@babel/types": "^7.22.17",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/generator": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.22.15.tgz",
+ "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15",
+ "@jridgewell/gen-mapping": "^0.3.2",
+ "@jridgewell/trace-mapping": "^0.3.17",
+ "jsesc": "^2.5.1"
+ }
+ },
+ "@babel/helper-annotate-as-pure": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz",
+ "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-builder-binary-assignment-operator-visitor": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz",
+ "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/helper-compilation-targets": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz",
+ "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-validator-option": "^7.22.15",
+ "browserslist": "^4.21.9",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-create-class-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.15",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.9",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-create-regexp-features-plugin": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz",
+ "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "regexpu-core": "^5.3.1",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/helper-define-polyfill-provider": {
+ "version": "0.4.2",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.2.tgz",
+ "integrity": "sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.22.6",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "debug": "^4.1.1",
+ "lodash.debounce": "^4.0.8",
+ "resolve": "^1.14.2"
+ }
+ },
+ "@babel/helper-environment-visitor": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz",
+ "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==",
+ "dev": true
+ },
+ "@babel/helper-function-name": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz",
+ "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.5",
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-hoist-variables": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz",
+ "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-member-expression-to-functions": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz",
+ "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/helper-module-imports": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz",
+ "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.22.17",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.17.tgz",
+ "integrity": "sha512-XouDDhQESrLHTpnBtCKExJdyY4gJCdrvH2Pyv8r8kovX2U8G0dRUOT45T9XlbLtuu9CLXP15eusnkprhoPV5iQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-simple-access": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/helper-validator-identifier": "^7.22.15"
+ }
+ },
+ "@babel/helper-optimise-call-expression": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz",
+ "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-plugin-utils": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz",
+ "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==",
+ "dev": true
+ },
+ "@babel/helper-remap-async-to-generator": {
+ "version": "7.22.17",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.17.tgz",
+ "integrity": "sha512-bxH77R5gjH3Nkde6/LuncQoLaP16THYPscurp1S8z7S9ZgezCyV3G8Hc+TZiCmY8pz4fp8CvKSgtJMW0FkLAxA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-wrap-function": "^7.22.17"
+ }
+ },
+ "@babel/helper-replace-supers": {
+ "version": "7.22.9",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.22.9.tgz",
+ "integrity": "sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-member-expression-to-functions": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz",
+ "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-skip-transparent-expression-wrappers": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz",
+ "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-split-export-declaration": {
+ "version": "7.22.6",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz",
+ "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.22.5"
+ }
+ },
+ "@babel/helper-string-parser": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz",
+ "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==",
+ "dev": true
+ },
+ "@babel/helper-validator-identifier": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz",
+ "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==",
+ "dev": true
+ },
+ "@babel/helper-validator-option": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz",
+ "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==",
+ "dev": true
+ },
+ "@babel/helper-wrap-function": {
+ "version": "7.22.17",
+ "resolved": "https://registry.npmmirror.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.17.tgz",
+ "integrity": "sha512-nAhoheCMlrqU41tAojw9GpVEKDlTS8r3lzFmF0lP52LwblCPbuFSO7nGIZoIcoU5NIm1ABrna0cJExE4Ay6l2Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/template": "^7.22.15",
+ "@babel/types": "^7.22.17"
+ }
+ },
+ "@babel/helpers": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.22.15.tgz",
+ "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.22.15",
+ "@babel/traverse": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.22.13",
+ "resolved": "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.13.tgz",
+ "integrity": "sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.22.5",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0"
+ },
+ "dependencies": {
+ "js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/parser": {
+ "version": "7.22.16",
+ "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.16.tgz",
+ "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA=="
+ },
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.22.15.tgz",
+ "integrity": "sha512-FB9iYlz7rURmRJyXRKEnalYPPdn87H5no108cyuQQyMwlpJ2SJtpIUBI27kdTin956pz+LPypkPVPUTlxOmrsg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.22.15.tgz",
+ "integrity": "sha512-Hyph9LseGvAeeXzikV88bczhsrLrIZqDPxO+sSmAunMPaGrBGhfMWzCPYTtiW9t+HzSE2wtV8e5cc5P6r1xMDQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-transform-optional-chaining": "^7.22.15"
+ }
+ },
+ "@babel/plugin-proposal-class-properties": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz",
+ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
+ "@babel/plugin-proposal-decorators": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.22.15.tgz",
+ "integrity": "sha512-kc0VvbbUyKelvzcKOSyQUSVVXS5pT3UhRB0e3c9An86MvLqs+gx0dN4asllrDluqSa3m9YyooXKGOFVomnyFkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.9",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/plugin-syntax-decorators": "^7.22.10"
+ }
+ },
+ "@babel/plugin-proposal-nullish-coalescing-operator": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
+ "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.18.6",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-optional-chaining": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
+ "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.20.2",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ }
+ },
+ "@babel/plugin-proposal-private-property-in-object": {
+ "version": "7.21.0-placeholder-for-preset-env.2",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz",
+ "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==",
+ "dev": true
+ },
+ "@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.12.13"
+ }
+ },
+ "@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-decorators": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.22.10.tgz",
+ "integrity": "sha512-z1KTVemBjnz+kSEilAsI4lbkPOl5TvJH7YDSY1CTIzvLWJ+KHXp+mRe8VPmfnyvqOPqar1V2gid2PleKzRUstQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-syntax-dynamic-import": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-export-namespace-from": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz",
+ "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.3"
+ }
+ },
+ "@babel/plugin-syntax-import-assertions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.22.5.tgz",
+ "integrity": "sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-syntax-import-attributes": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.22.5.tgz",
+ "integrity": "sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-jsx": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz",
+ "integrity": "sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ }
+ },
+ "@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ }
+ },
+ "@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ }
+ },
+ "@babel/plugin-syntax-unicode-sets-regex": {
+ "version": "7.18.6",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz",
+ "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.18.6",
+ "@babel/helper-plugin-utils": "^7.18.6"
+ }
+ },
+ "@babel/plugin-transform-arrow-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.22.5.tgz",
+ "integrity": "sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-async-generator-functions": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.22.15.tgz",
+ "integrity": "sha512-jBm1Es25Y+tVoTi5rfd5t1KLmL8ogLKpXszboWOTTtGFGz2RKnQe2yn7HbZ+kb/B8N0FVSGQo874NSlOU1T4+w==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.9",
+ "@babel/plugin-syntax-async-generators": "^7.8.4"
+ }
+ },
+ "@babel/plugin-transform-async-to-generator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz",
+ "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-remap-async-to-generator": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-block-scoped-functions": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.22.5.tgz",
+ "integrity": "sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-block-scoping": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.22.15.tgz",
+ "integrity": "sha512-G1czpdJBZCtngoK1sJgloLiOHUnkb/bLZwqVZD8kXmq0ZnVfTTWUcs9OWtp0mBtYJ+4LQY1fllqBkOIPhXmFmw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-class-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.22.5.tgz",
+ "integrity": "sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-class-static-block": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.22.11.tgz",
+ "integrity": "sha512-GMM8gGmqI7guS/llMFk1bJDkKfn3v3C4KHK9Yg1ey5qcHcOlKb0QvcMrgzvxo+T03/4szNh5lghY+fEC98Kq9g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.22.11",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-classes": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.22.15.tgz",
+ "integrity": "sha512-VbbC3PGjBdE0wAWDdHM9G8Gm977pnYI0XpqMd6LrKISj8/DJXEsWqgRuTYaNE9Bv0JGhTZUzHDlMk18IpOuoqw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-optimise-call-expression": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.9",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-computed-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.22.5.tgz",
+ "integrity": "sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/template": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-destructuring": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.22.15.tgz",
+ "integrity": "sha512-HzG8sFl1ZVGTme74Nw+X01XsUTqERVQ6/RLHo3XjGRzm7XD6QTtfS3NJotVgCGy8BzkDqRjRBD8dAyJn5TuvSQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-dotall-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.22.5.tgz",
+ "integrity": "sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-duplicate-keys": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.22.5.tgz",
+ "integrity": "sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-dynamic-import": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.22.11.tgz",
+ "integrity": "sha512-g/21plo58sfteWjaO0ZNVb+uEOkJNjAaHhbejrnBmu011l/eNDScmkbjCC3l4FKb10ViaGU4aOkFznSu2zRHgA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-exponentiation-operator": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.22.5.tgz",
+ "integrity": "sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-export-namespace-from": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.22.11.tgz",
+ "integrity": "sha512-xa7aad7q7OiT8oNZ1mU7NrISjlSkVdMbNxn9IuLZyL9AJEhs1Apba3I+u5riX1dIkdptP5EKDG5XDPByWxtehw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-for-of": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.15.tgz",
+ "integrity": "sha512-me6VGeHsx30+xh9fbDLLPi0J1HzmeIIyenoOQHuw2D4m2SAU3NrspX5XxJLBpqn5yrLzrlw2Iy3RA//Bx27iOA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-function-name": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.22.5.tgz",
+ "integrity": "sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-compilation-targets": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-json-strings": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.22.11.tgz",
+ "integrity": "sha512-CxT5tCqpA9/jXFlme9xIBCc5RPtdDq3JpkkhgHQqtDdiTnTI0jtZ0QzXhr5DILeYifDPp2wvY2ad+7+hLMW5Pw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-json-strings": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.22.5.tgz",
+ "integrity": "sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-logical-assignment-operators": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.22.11.tgz",
+ "integrity": "sha512-qQwRTP4+6xFCDV5k7gZBF3C31K34ut0tbEcTKxlX/0KXxm9GLcO14p570aWxFvVzx6QAfPgq7gaeIHXJC8LswQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-member-expression-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.22.5.tgz",
+ "integrity": "sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-modules-amd": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.22.5.tgz",
+ "integrity": "sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-modules-commonjs": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.22.15.tgz",
+ "integrity": "sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-simple-access": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-modules-systemjs": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.22.11.tgz",
+ "integrity": "sha512-rIqHmHoMEOhI3VkVf5jQ15l539KrwhzqcBO6wdCNWPWc/JWt9ILNYNUssbRpeq0qWns8svuw8LnMNCvWBIJ8wA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-module-transforms": "^7.22.9",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-modules-umd": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.22.5.tgz",
+ "integrity": "sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-transforms": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-named-capturing-groups-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz",
+ "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-new-target": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.22.5.tgz",
+ "integrity": "sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-nullish-coalescing-operator": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.22.11.tgz",
+ "integrity": "sha512-YZWOw4HxXrotb5xsjMJUDlLgcDXSfO9eCmdl1bgW4+/lAGdkjaEvOnQ4p5WKKdUgSzO39dgPl0pTnfxm0OAXcg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-numeric-separator": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.22.11.tgz",
+ "integrity": "sha512-3dzU4QGPsILdJbASKhF/V2TVP+gJya1PsueQCxIPCEcerqF21oEcrob4mzjsp2Py/1nLfF5m+xYNMDpmA8vffg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4"
+ }
+ },
+ "@babel/plugin-transform-object-rest-spread": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.22.15.tgz",
+ "integrity": "sha512-fEB+I1+gAmfAyxZcX1+ZUwLeAuuf8VIg67CTznZE0MqVFumWkh8xWtn58I4dxdVf080wn7gzWoF8vndOViJe9Q==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-transform-parameters": "^7.22.15"
+ }
+ },
+ "@babel/plugin-transform-object-super": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.22.5.tgz",
+ "integrity": "sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-replace-supers": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-optional-catch-binding": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.22.11.tgz",
+ "integrity": "sha512-rli0WxesXUeCJnMYhzAglEjLWVDF6ahb45HuprcmQuLidBJFWjNnOzssk2kuc6e33FlLaiZhG/kUIzUMWdBKaQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-optional-chaining": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.22.15.tgz",
+ "integrity": "sha512-ngQ2tBhq5vvSJw2Q2Z9i7ealNkpDMU0rGWnHPKqRZO0tzZ5tlaoz4hDvhXioOoaE0X2vfNss1djwg0DXlfu30A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3"
+ }
+ },
+ "@babel/plugin-transform-parameters": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.22.15.tgz",
+ "integrity": "sha512-hjk7qKIqhyzhhUvRT683TYQOFa/4cQKwQy7ALvTpODswN40MljzNDa0YldevS6tGbxwaEKVn502JmY0dP7qEtQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-private-methods": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.22.5.tgz",
+ "integrity": "sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-class-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-private-property-in-object": {
+ "version": "7.22.11",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.22.11.tgz",
+ "integrity": "sha512-sSCbqZDBKHetvjSwpyWzhuHkmW5RummxJBVbYLkGkaiTOWGxml7SXt0iWa03bzxFIx7wOj3g/ILRd0RcJKBeSQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-annotate-as-pure": "^7.22.5",
+ "@babel/helper-create-class-features-plugin": "^7.22.11",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5"
+ }
+ },
+ "@babel/plugin-transform-property-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.22.5.tgz",
+ "integrity": "sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-regenerator": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.22.10.tgz",
+ "integrity": "sha512-F28b1mDt8KcT5bUyJc/U9nwzw6cV+UmTeRlXYIl2TNqMMJif0Jeey9/RQ3C4NOd2zp0/TRsDns9ttj2L523rsw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "regenerator-transform": "^0.15.2"
+ }
+ },
+ "@babel/plugin-transform-reserved-words": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.22.5.tgz",
+ "integrity": "sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-runtime": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.15.tgz",
+ "integrity": "sha512-tEVLhk8NRZSmwQ0DJtxxhTrCht1HVo8VaMzYT4w6lwyKBuHsgoioAUA7/6eT2fRfc5/23fuGdlwIxXhRVgWr4g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "babel-plugin-polyfill-corejs2": "^0.4.5",
+ "babel-plugin-polyfill-corejs3": "^0.8.3",
+ "babel-plugin-polyfill-regenerator": "^0.5.2",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/plugin-transform-shorthand-properties": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.22.5.tgz",
+ "integrity": "sha512-vM4fq9IXHscXVKzDv5itkO1X52SmdFBFcMIBZ2FRn2nqVYqw6dBexUgMvAjHW+KXpPPViD/Yo3GrDEBaRC0QYA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-spread": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.22.5.tgz",
+ "integrity": "sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-sticky-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.22.5.tgz",
+ "integrity": "sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-template-literals": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.22.5.tgz",
+ "integrity": "sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-typeof-symbol": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.22.5.tgz",
+ "integrity": "sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-escapes": {
+ "version": "7.22.10",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.22.10.tgz",
+ "integrity": "sha512-lRfaRKGZCBqDlRU3UIFovdp9c9mEvlylmpod0/OatICsSfuQ9YFthRo1tpTkGsklEefZdqlEFdY4A2dwTb6ohg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-property-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.22.5.tgz",
+ "integrity": "sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.22.5.tgz",
+ "integrity": "sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/plugin-transform-unicode-sets-regex": {
+ "version": "7.22.5",
+ "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.22.5.tgz",
+ "integrity": "sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-create-regexp-features-plugin": "^7.22.5",
+ "@babel/helper-plugin-utils": "^7.22.5"
+ }
+ },
+ "@babel/polyfill": {
+ "version": "7.12.1",
+ "resolved": "https://registry.npmmirror.com/@babel/polyfill/-/polyfill-7.12.1.tgz",
+ "integrity": "sha512-X0pi0V6gxLi6lFZpGmeNa4zxtwEmCs42isWLNjZZDE0Y8yVfgu0T2OAHlzBbdYlqbW/YXVvoBHpATEM+goCj8g==",
+ "requires": {
+ "core-js": "^2.6.5",
+ "regenerator-runtime": "^0.13.4"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
+ }
+ }
+ },
+ "@babel/preset-env": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.15.tgz",
+ "integrity": "sha512-tZFHr54GBkHk6hQuVA8w4Fmq+MSPsfvMG0vPnOYyTnJpyfMqybL8/MbNCPRT9zc2KBO2pe4tq15g6Uno4Jpoag==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.9",
+ "@babel/helper-compilation-targets": "^7.22.15",
+ "@babel/helper-plugin-utils": "^7.22.5",
+ "@babel/helper-validator-option": "^7.22.15",
+ "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.15",
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.15",
+ "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-export-namespace-from": "^7.8.3",
+ "@babel/plugin-syntax-import-assertions": "^7.22.5",
+ "@babel/plugin-syntax-import-attributes": "^7.22.5",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5",
+ "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
+ "@babel/plugin-transform-arrow-functions": "^7.22.5",
+ "@babel/plugin-transform-async-generator-functions": "^7.22.15",
+ "@babel/plugin-transform-async-to-generator": "^7.22.5",
+ "@babel/plugin-transform-block-scoped-functions": "^7.22.5",
+ "@babel/plugin-transform-block-scoping": "^7.22.15",
+ "@babel/plugin-transform-class-properties": "^7.22.5",
+ "@babel/plugin-transform-class-static-block": "^7.22.11",
+ "@babel/plugin-transform-classes": "^7.22.15",
+ "@babel/plugin-transform-computed-properties": "^7.22.5",
+ "@babel/plugin-transform-destructuring": "^7.22.15",
+ "@babel/plugin-transform-dotall-regex": "^7.22.5",
+ "@babel/plugin-transform-duplicate-keys": "^7.22.5",
+ "@babel/plugin-transform-dynamic-import": "^7.22.11",
+ "@babel/plugin-transform-exponentiation-operator": "^7.22.5",
+ "@babel/plugin-transform-export-namespace-from": "^7.22.11",
+ "@babel/plugin-transform-for-of": "^7.22.15",
+ "@babel/plugin-transform-function-name": "^7.22.5",
+ "@babel/plugin-transform-json-strings": "^7.22.11",
+ "@babel/plugin-transform-literals": "^7.22.5",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.22.11",
+ "@babel/plugin-transform-member-expression-literals": "^7.22.5",
+ "@babel/plugin-transform-modules-amd": "^7.22.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.22.15",
+ "@babel/plugin-transform-modules-systemjs": "^7.22.11",
+ "@babel/plugin-transform-modules-umd": "^7.22.5",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5",
+ "@babel/plugin-transform-new-target": "^7.22.5",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.11",
+ "@babel/plugin-transform-numeric-separator": "^7.22.11",
+ "@babel/plugin-transform-object-rest-spread": "^7.22.15",
+ "@babel/plugin-transform-object-super": "^7.22.5",
+ "@babel/plugin-transform-optional-catch-binding": "^7.22.11",
+ "@babel/plugin-transform-optional-chaining": "^7.22.15",
+ "@babel/plugin-transform-parameters": "^7.22.15",
+ "@babel/plugin-transform-private-methods": "^7.22.5",
+ "@babel/plugin-transform-private-property-in-object": "^7.22.11",
+ "@babel/plugin-transform-property-literals": "^7.22.5",
+ "@babel/plugin-transform-regenerator": "^7.22.10",
+ "@babel/plugin-transform-reserved-words": "^7.22.5",
+ "@babel/plugin-transform-shorthand-properties": "^7.22.5",
+ "@babel/plugin-transform-spread": "^7.22.5",
+ "@babel/plugin-transform-sticky-regex": "^7.22.5",
+ "@babel/plugin-transform-template-literals": "^7.22.5",
+ "@babel/plugin-transform-typeof-symbol": "^7.22.5",
+ "@babel/plugin-transform-unicode-escapes": "^7.22.10",
+ "@babel/plugin-transform-unicode-property-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-regex": "^7.22.5",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.22.5",
+ "@babel/preset-modules": "0.1.6-no-external-plugins",
+ "@babel/types": "^7.22.15",
+ "babel-plugin-polyfill-corejs2": "^0.4.5",
+ "babel-plugin-polyfill-corejs3": "^0.8.3",
+ "babel-plugin-polyfill-regenerator": "^0.5.2",
+ "core-js-compat": "^3.31.0",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/preset-modules": {
+ "version": "0.1.6-no-external-plugins",
+ "resolved": "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz",
+ "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@babel/types": "^7.4.4",
+ "esutils": "^2.0.2"
+ }
+ },
+ "@babel/regjsgen": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz",
+ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==",
+ "dev": true
+ },
+ "@babel/runtime": {
+ "version": "7.17.9",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.17.9.tgz",
+ "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==",
+ "requires": {
+ "regenerator-runtime": "^0.13.4"
+ }
+ },
+ "@babel/runtime-corejs3": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.22.15.tgz",
+ "integrity": "sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==",
+ "requires": {
+ "core-js-pure": "^3.30.2",
+ "regenerator-runtime": "^0.14.0"
+ },
+ "dependencies": {
+ "regenerator-runtime": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
+ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA=="
+ }
+ }
+ },
+ "@babel/template": {
+ "version": "7.22.15",
+ "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz",
+ "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/parser": "^7.22.15",
+ "@babel/types": "^7.22.15"
+ }
+ },
+ "@babel/traverse": {
+ "version": "7.22.17",
+ "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.22.17.tgz",
+ "integrity": "sha512-xK4Uwm0JnAMvxYZxOVecss85WxTEIbTa7bnGyf/+EgCL5Zt3U7htUpEOWv9detPlamGKuRzCqw74xVglDWpPdg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.22.13",
+ "@babel/generator": "^7.22.15",
+ "@babel/helper-environment-visitor": "^7.22.5",
+ "@babel/helper-function-name": "^7.22.5",
+ "@babel/helper-hoist-variables": "^7.22.5",
+ "@babel/helper-split-export-declaration": "^7.22.6",
+ "@babel/parser": "^7.22.16",
+ "@babel/types": "^7.22.17",
+ "debug": "^4.1.0",
+ "globals": "^11.1.0"
+ },
+ "dependencies": {
+ "globals": {
+ "version": "11.12.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz",
+ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+ "dev": true
+ }
+ }
+ },
+ "@babel/types": {
+ "version": "7.22.17",
+ "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.22.17.tgz",
+ "integrity": "sha512-YSQPHLFtQNE5xN9tHuZnzu8vPr61wVTBZdfv1meex1NBosa4iT05k/Jw06ddJugi4bk7The/oSwQGFcksmEJQg==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-string-parser": "^7.22.5",
+ "@babel/helper-validator-identifier": "^7.22.15",
+ "to-fast-properties": "^2.0.0"
+ },
+ "dependencies": {
+ "to-fast-properties": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
+ "dev": true
+ }
+ }
+ },
+ "@cornerstonejs/calculate-suv": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/calculate-suv/-/calculate-suv-1.1.0.tgz",
+ "integrity": "sha512-Q9XraiDJif9aMFArD2iEuDO/HXbcRVCqB7KfaHgDrdTTjgDFovS91Psbdim7crypRSvE6dh/+HKeFNHdvNkA6w=="
+ },
+ "@cornerstonejs/codec-charls": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/codec-charls/-/codec-charls-1.2.3.tgz",
+ "integrity": "sha512-qKUe6DN0dnGzhhfZLYhH9UZacMcudjxcaLXCrpxJImT/M/PQvZCT2rllu6VGJbWKJWG+dMVV2zmmleZcdJ7/cA=="
+ },
+ "@cornerstonejs/codec-libjpeg-turbo-8bit": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/codec-libjpeg-turbo-8bit/-/codec-libjpeg-turbo-8bit-1.2.2.tgz",
+ "integrity": "sha512-aAUMK2958YNpOb/7G6e2/aG7hExTiFTASlMt/v90XA0pRHdWiNg5ny4S5SAju0FbIw4zcMnR0qfY+yW3VG2ivg=="
+ },
+ "@cornerstonejs/codec-openjpeg": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/codec-openjpeg/-/codec-openjpeg-1.2.2.tgz",
+ "integrity": "sha512-b1O7lZacKXelgeV9n8XWZ7pTw3i4Bq4qQ26G5ahBjWoOw4QNcCrb5hPxWBxNB/I8AoNbJxAe+lyLtyQGfdrTbw=="
+ },
+ "@cornerstonejs/codec-openjph": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/codec-openjph/-/codec-openjph-2.4.2.tgz",
+ "integrity": "sha512-lgdvBvvNezleY+4pIe2ceUsJzlZe/0PipdeubQ3vZZOz3xxtHHMR1XFCl4fgd8gosR8COHuD7h6q+MwgrwBsng=="
+ },
+ "@cornerstonejs/core": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/core/-/core-1.16.0.tgz",
+ "integrity": "sha512-uyZPtyMI1qa9T9uzJeLv5A2WHe+sCK529a4VrFhAhkUkic7gSX3HmiJgvWWfvku/wYaqUo7buIRtHKisCEWx0w==",
+ "requires": {
+ "@kitware/vtk.js": "27.3.1",
+ "detect-gpu": "^5.0.22",
+ "gl-matrix": "^3.4.3",
+ "lodash.clonedeep": "4.5.0"
+ },
+ "dependencies": {
+ "@kitware/vtk.js": {
+ "version": "27.3.1",
+ "resolved": "https://registry.npmmirror.com/@kitware/vtk.js/-/vtk.js-27.3.1.tgz",
+ "integrity": "sha512-GvAXdOKtDDbkaSdO+UhKnDST4CW1C3fHgaDvA0wn1ZWTLm/6SFAMzarTjpzsVGYCPoEYIhCAAlBQ7K7aDcu3Vg==",
+ "requires": {
+ "@babel/runtime": "7.17.9",
+ "commander": "9.2.0",
+ "d3-scale": "4.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "fflate": "0.7.3",
+ "gl-matrix": "3.4.3",
+ "globalthis": "1.0.3",
+ "seedrandom": "3.0.5",
+ "shader-loader": "1.3.1",
+ "shelljs": "0.8.5",
+ "spark-md5": "3.0.2",
+ "stream-browserify": "3.0.0",
+ "webworker-promise": "0.5.0",
+ "worker-loader": "3.0.8",
+ "xmlbuilder2": "3.0.2"
+ }
+ }
+ }
+ },
+ "@cornerstonejs/dicom-image-loader": {
+ "version": "1.15.1",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/dicom-image-loader/-/dicom-image-loader-1.15.1.tgz",
+ "integrity": "sha512-MrMenFLwbvmyLjoKWXcZsSf6gfTmudDDZm02tFoeKHMu9WtD53ZZwpYrdcWQxdEYKno6ZKeCESVJ8ypQMM5uHQ==",
+ "requires": {
+ "@cornerstonejs/codec-charls": "^1.2.3",
+ "@cornerstonejs/codec-libjpeg-turbo-8bit": "^1.2.2",
+ "@cornerstonejs/codec-openjpeg": "^1.2.2",
+ "@cornerstonejs/codec-openjph": "^2.4.2",
+ "@cornerstonejs/core": "^1.15.1",
+ "dicom-parser": "^1.8.9",
+ "pako": "^2.0.4",
+ "uuid": "^9.0.0"
+ },
+ "dependencies": {
+ "pako": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
+ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
+ },
+ "uuid": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz",
+ "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="
+ }
+ }
+ },
+ "@cornerstonejs/streaming-image-volume-loader": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/streaming-image-volume-loader/-/streaming-image-volume-loader-1.16.0.tgz",
+ "integrity": "sha512-35TIhFqAedWYzbSTGmYZPMuZHZiNGl907wSaxeTBasU3teqjvQK0A0v+lYELvyHW5+58YODEcLdqOLFlECAqMg==",
+ "requires": {
+ "@cornerstonejs/core": "^1.16.0"
+ }
+ },
+ "@cornerstonejs/tools": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmmirror.com/@cornerstonejs/tools/-/tools-1.16.0.tgz",
+ "integrity": "sha512-S32I+j/t3tlrPIMFjFn9vU6HuGpfi9X2LR1283MvnxRy+wc96Ri6fxhQDyCh6moW8aMx1B1UUqSQUATZypDe0g==",
+ "requires": {
+ "@cornerstonejs/core": "^1.16.0",
+ "lodash.clonedeep": "4.5.0",
+ "lodash.get": "^4.4.2"
+ }
+ },
+ "@discoveryjs/json-ext": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
+ "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw=="
+ },
+ "@fast-csv/format": {
+ "version": "4.3.5",
+ "resolved": "https://registry.npmmirror.com/@fast-csv/format/-/format-4.3.5.tgz",
+ "integrity": "sha512-8iRn6QF3I8Ak78lNAa+Gdl5MJJBM5vRHivFtMRUWINdevNo00K7OXxS2PshawLKTejVwieIlPmK5YlLu6w4u8A==",
+ "requires": {
+ "@types/node": "^14.0.1",
+ "lodash.escaperegexp": "^4.1.2",
+ "lodash.isboolean": "^3.0.3",
+ "lodash.isequal": "^4.5.0",
+ "lodash.isfunction": "^3.0.9",
+ "lodash.isnil": "^4.0.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "14.18.59",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.59.tgz",
+ "integrity": "sha512-NWJMpBL2Xs3MY93yrD6YrrTKep8eIA6iMnfG4oIc6LrTRlBZgiSCGiY3V/Owlp6umIBLyKb4F8Q7hxWatjYH5A=="
+ }
+ }
+ },
+ "@fast-csv/parse": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmmirror.com/@fast-csv/parse/-/parse-4.3.6.tgz",
+ "integrity": "sha512-uRsLYksqpbDmWaSmzvJcuApSEe38+6NQZBUsuAyMZKqHxH0g1wcJgsKUvN3WC8tewaqFjBMMGrkHmC+T7k8LvA==",
+ "requires": {
+ "@types/node": "^14.0.1",
+ "lodash.escaperegexp": "^4.1.2",
+ "lodash.groupby": "^4.6.0",
+ "lodash.isfunction": "^3.0.9",
+ "lodash.isnil": "^4.0.0",
+ "lodash.isundefined": "^3.0.1",
+ "lodash.uniq": "^4.5.0"
+ },
+ "dependencies": {
+ "@types/node": {
+ "version": "14.18.59",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-14.18.59.tgz",
+ "integrity": "sha512-NWJMpBL2Xs3MY93yrD6YrrTKep8eIA6iMnfG4oIc6LrTRlBZgiSCGiY3V/Owlp6umIBLyKb4F8Q7hxWatjYH5A=="
+ }
+ }
+ },
+ "@ffmpeg/core": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmmirror.com/@ffmpeg/core/-/core-0.10.0.tgz",
+ "integrity": "sha512-qunWJl5PezpXEm31tb8Qu5z37B5KVA1VYZCpXchMhuAb3X9T7PuE3SlhOwphEoRhzaOa3lpofDfzihAUMFaVPQ=="
+ },
+ "@ffmpeg/ffmpeg": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmmirror.com/@ffmpeg/ffmpeg/-/ffmpeg-0.10.1.tgz",
+ "integrity": "sha512-ChQkH7Rh57hmVo1LhfQFibWX/xqneolJKSwItwZdKPcLZuKigtYAYDIvB55pDfP17VtR1R77SxgkB2/UApB+Og==",
+ "requires": {
+ "is-url": "^1.2.4",
+ "node-fetch": "^2.6.1",
+ "regenerator-runtime": "^0.13.7",
+ "resolve-url": "^0.2.1"
+ }
+ },
+ "@hapi/address": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/@hapi/address/-/address-2.1.4.tgz",
+ "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==",
+ "dev": true
+ },
+ "@hapi/bourne": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/@hapi/bourne/-/bourne-1.3.2.tgz",
+ "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==",
+ "dev": true
+ },
+ "@hapi/hoek": {
+ "version": "8.5.1",
+ "resolved": "https://registry.npmmirror.com/@hapi/hoek/-/hoek-8.5.1.tgz",
+ "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==",
+ "dev": true
+ },
+ "@hapi/joi": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmmirror.com/@hapi/joi/-/joi-15.1.1.tgz",
+ "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/address": "2.x.x",
+ "@hapi/bourne": "1.x.x",
+ "@hapi/hoek": "8.x.x",
+ "@hapi/topo": "3.x.x"
+ }
+ },
+ "@hapi/topo": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmmirror.com/@hapi/topo/-/topo-3.1.6.tgz",
+ "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==",
+ "dev": true,
+ "requires": {
+ "@hapi/hoek": "^8.3.0"
+ }
+ },
+ "@intervolga/optimize-cssnano-plugin": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/@intervolga/optimize-cssnano-plugin/-/optimize-cssnano-plugin-1.0.6.tgz",
+ "integrity": "sha512-zN69TnSr0viRSU6cEDIcuPcP67QcpQ6uHACg58FiN9PDrU6SLyGW3MR4tiISbYxy1kDWAVPwD+XwQTWE5cigAA==",
+ "dev": true,
+ "requires": {
+ "cssnano": "^4.0.0",
+ "cssnano-preset-default": "^4.0.0",
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "@jridgewell/gen-mapping": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
+ "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/sourcemap-codec": "^1.4.10",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
+ "@jridgewell/resolve-uri": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
+ "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
+ "dev": true
+ },
+ "@jridgewell/set-array": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz",
+ "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
+ "dev": true
+ },
+ "@jridgewell/sourcemap-codec": {
+ "version": "1.4.15",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
+ "dev": true
+ },
+ "@jridgewell/trace-mapping": {
+ "version": "0.3.19",
+ "resolved": "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz",
+ "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
+ "@kitware/vtk.js": {
+ "version": "26.9.15",
+ "resolved": "https://registry.npmmirror.com/@kitware/vtk.js/-/vtk.js-26.9.15.tgz",
+ "integrity": "sha512-bjviEH/v4Vr980JNEQId/yquDHG90JIH9rEEW6vWmXrX4kqOTa8zXJn6M3Yrlww9ibia+VXrWoN+iYt9SdVB4g==",
+ "requires": {
+ "@babel/runtime": "7.17.9",
+ "commander": "9.2.0",
+ "d3-scale": "4.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "fflate": "0.7.3",
+ "gl-matrix": "3.4.3",
+ "globalthis": "1.0.3",
+ "seedrandom": "3.0.5",
+ "shader-loader": "1.3.1",
+ "shelljs": "0.8.5",
+ "spark-md5": "3.0.2",
+ "stream-browserify": "3.0.0",
+ "webworker-promise": "0.5.0",
+ "worker-loader": "3.0.8",
+ "xmlbuilder2": "3.0.2"
+ }
+ },
+ "@leichtgewicht/ip-codec": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
+ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
+ },
+ "@microsoft/signalr": {
+ "version": "6.0.22",
+ "resolved": "https://registry.npmmirror.com/@microsoft/signalr/-/signalr-6.0.22.tgz",
+ "integrity": "sha512-FgkzSyMNP6nnxqeCAvixYln3nBluOYA6+Y2c9EuzU3e1hs/SuWliuFdNe8mBecJomWx95hi1vu2pozsyMrsSww==",
+ "requires": {
+ "abort-controller": "^3.0.0",
+ "eventsource": "^1.0.7",
+ "fetch-cookie": "^0.11.0",
+ "node-fetch": "^2.6.7",
+ "ws": "^7.4.5"
+ }
+ },
+ "@mrmlnc/readdir-enhanced": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
+ "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
+ "dev": true,
+ "requires": {
+ "call-me-maybe": "^1.0.1",
+ "glob-to-regexp": "^0.3.0"
+ }
+ },
+ "@node-ipc/js-queue": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/@node-ipc/js-queue/-/js-queue-2.0.3.tgz",
+ "integrity": "sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==",
+ "dev": true,
+ "requires": {
+ "easy-stack": "1.0.1"
+ }
+ },
+ "@nodelib/fs.scandir": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "requires": {
+ "@nodelib/fs.stat": "2.0.5",
+ "run-parallel": "^1.1.9"
+ }
+ },
+ "@nodelib/fs.stat": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
+ },
+ "@nodelib/fs.walk": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "requires": {
+ "@nodelib/fs.scandir": "2.1.5",
+ "fastq": "^1.6.0"
+ }
+ },
+ "@oozcitak/dom": {
+ "version": "1.15.10",
+ "resolved": "https://registry.npmmirror.com/@oozcitak/dom/-/dom-1.15.10.tgz",
+ "integrity": "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==",
+ "requires": {
+ "@oozcitak/infra": "1.0.8",
+ "@oozcitak/url": "1.0.4",
+ "@oozcitak/util": "8.3.8"
+ }
+ },
+ "@oozcitak/infra": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/@oozcitak/infra/-/infra-1.0.8.tgz",
+ "integrity": "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==",
+ "requires": {
+ "@oozcitak/util": "8.3.8"
+ }
+ },
+ "@oozcitak/url": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/@oozcitak/url/-/url-1.0.4.tgz",
+ "integrity": "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==",
+ "requires": {
+ "@oozcitak/infra": "1.0.8",
+ "@oozcitak/util": "8.3.8"
+ }
+ },
+ "@oozcitak/util": {
+ "version": "8.3.8",
+ "resolved": "https://registry.npmmirror.com/@oozcitak/util/-/util-8.3.8.tgz",
+ "integrity": "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ=="
+ },
+ "@riophae/vue-treeselect": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/@riophae/vue-treeselect/-/vue-treeselect-0.4.0.tgz",
+ "integrity": "sha512-J4atYmBqXQmiPFK/0B5sXKjtnGc21mBJEiyKIDZwk0Q9XuynVFX6IJ4EpaLmUgL5Tve7HAS7wkiGGSti6Uaxcg==",
+ "requires": {
+ "@babel/runtime": "^7.3.1",
+ "babel-helper-vue-jsx-merge-props": "^2.0.3",
+ "easings-css": "^1.0.0",
+ "fuzzysearch": "^1.0.3",
+ "is-promise": "^2.1.0",
+ "lodash": "^4.0.0",
+ "material-colors": "^1.2.6",
+ "watch-size": "^2.0.0"
+ }
+ },
+ "@samverschueren/stream-to-observable": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz",
+ "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==",
+ "requires": {
+ "any-observable": "^0.3.0"
+ }
+ },
+ "@soda/friendly-errors-webpack-plugin": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/@soda/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.8.1.tgz",
+ "integrity": "sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^3.0.0",
+ "error-stack-parser": "^2.0.6",
+ "string-width": "^4.2.3",
+ "strip-ansi": "^6.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "@soda/get-current-script": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/@soda/get-current-script/-/get-current-script-1.0.2.tgz",
+ "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==",
+ "dev": true
+ },
+ "@types/body-parser": {
+ "version": "1.19.2",
+ "resolved": "https://registry.npmmirror.com/@types/body-parser/-/body-parser-1.19.2.tgz",
+ "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
+ "requires": {
+ "@types/connect": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/bonjour": {
+ "version": "3.5.10",
+ "resolved": "https://registry.npmmirror.com/@types/bonjour/-/bonjour-3.5.10.tgz",
+ "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/connect": {
+ "version": "3.4.36",
+ "resolved": "https://registry.npmmirror.com/@types/connect/-/connect-3.4.36.tgz",
+ "integrity": "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/connect-history-api-fallback": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz",
+ "integrity": "sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw==",
+ "requires": {
+ "@types/express-serve-static-core": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/express": {
+ "version": "4.17.17",
+ "resolved": "https://registry.npmmirror.com/@types/express/-/express-4.17.17.tgz",
+ "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==",
+ "requires": {
+ "@types/body-parser": "*",
+ "@types/express-serve-static-core": "^4.17.33",
+ "@types/qs": "*",
+ "@types/serve-static": "*"
+ }
+ },
+ "@types/express-serve-static-core": {
+ "version": "4.17.36",
+ "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.36.tgz",
+ "integrity": "sha512-zbivROJ0ZqLAtMzgzIUC4oNqDG9iF0lSsAqpOD9kbs5xcIM3dTiyuHvBc7R8MtWBp3AAWGaovJa+wzWPjLYW7Q==",
+ "requires": {
+ "@types/node": "*",
+ "@types/qs": "*",
+ "@types/range-parser": "*",
+ "@types/send": "*"
+ }
+ },
+ "@types/glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
+ "requires": {
+ "@types/minimatch": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/http-errors": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/@types/http-errors/-/http-errors-2.0.1.tgz",
+ "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ=="
+ },
+ "@types/http-proxy": {
+ "version": "1.17.11",
+ "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.11.tgz",
+ "integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/json-schema": {
+ "version": "7.0.12",
+ "resolved": "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz",
+ "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA=="
+ },
+ "@types/mime": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/@types/mime/-/mime-1.3.2.tgz",
+ "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
+ },
+ "@types/minimatch": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz",
+ "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="
+ },
+ "@types/minimist": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/@types/minimist/-/minimist-1.2.2.tgz",
+ "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
+ "dev": true
+ },
+ "@types/node": {
+ "version": "20.6.0",
+ "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.6.0.tgz",
+ "integrity": "sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg=="
+ },
+ "@types/normalize-package-data": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
+ "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
+ "dev": true
+ },
+ "@types/q": {
+ "version": "1.5.6",
+ "resolved": "https://registry.npmmirror.com/@types/q/-/q-1.5.6.tgz",
+ "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==",
+ "dev": true
+ },
+ "@types/qs": {
+ "version": "6.9.8",
+ "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.8.tgz",
+ "integrity": "sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg=="
+ },
+ "@types/range-parser": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/@types/range-parser/-/range-parser-1.2.4.tgz",
+ "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
+ },
+ "@types/retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="
+ },
+ "@types/send": {
+ "version": "0.17.1",
+ "resolved": "https://registry.npmmirror.com/@types/send/-/send-0.17.1.tgz",
+ "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
+ "requires": {
+ "@types/mime": "^1",
+ "@types/node": "*"
+ }
+ },
+ "@types/serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/@types/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==",
+ "requires": {
+ "@types/express": "*"
+ }
+ },
+ "@types/serve-static": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmmirror.com/@types/serve-static/-/serve-static-1.15.2.tgz",
+ "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==",
+ "requires": {
+ "@types/http-errors": "*",
+ "@types/mime": "*",
+ "@types/node": "*"
+ }
+ },
+ "@types/sockjs": {
+ "version": "0.3.33",
+ "resolved": "https://registry.npmmirror.com/@types/sockjs/-/sockjs-0.3.33.tgz",
+ "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/source-list-map": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+ "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
+ "dev": true
+ },
+ "@types/tapable": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmmirror.com/@types/tapable/-/tapable-1.0.9.tgz",
+ "integrity": "sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==",
+ "dev": true
+ },
+ "@types/uglify-js": {
+ "version": "3.17.2",
+ "resolved": "https://registry.npmmirror.com/@types/uglify-js/-/uglify-js-3.17.2.tgz",
+ "integrity": "sha512-9SjrHO54LINgC/6Ehr81NjAxAYvwEZqjUHLjJYvC4Nmr9jbLQCIZbWSvl4vXQkkmR1UAuaKDycau3O1kWGFyXQ==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ }
+ },
+ "@types/webpack": {
+ "version": "4.41.33",
+ "resolved": "https://registry.npmmirror.com/@types/webpack/-/webpack-4.41.33.tgz",
+ "integrity": "sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/tapable": "^1",
+ "@types/uglify-js": "*",
+ "@types/webpack-sources": "*",
+ "anymatch": "^3.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "@types/webpack-dev-server": {
+ "version": "3.11.6",
+ "resolved": "https://registry.npmmirror.com/@types/webpack-dev-server/-/webpack-dev-server-3.11.6.tgz",
+ "integrity": "sha512-XCph0RiiqFGetukCTC3KVnY1jwLcZ84illFRMbyFzCcWl90B/76ew0tSqF46oBhnLC4obNDG7dMO0JfTN0MgMQ==",
+ "dev": true,
+ "requires": {
+ "@types/connect-history-api-fallback": "*",
+ "@types/express": "*",
+ "@types/serve-static": "*",
+ "@types/webpack": "^4",
+ "http-proxy-middleware": "^1.0.0"
+ },
+ "dependencies": {
+ "http-proxy-middleware": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-1.3.1.tgz",
+ "integrity": "sha512-13eVVDYS4z79w7f1+NPllJtOQFx/FdUW4btIvVRMaRlUY9VGstAbo5MOhLEuUgZFRHn3x50ufn25zkj/boZnEg==",
+ "dev": true,
+ "requires": {
+ "@types/http-proxy": "^1.17.5",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ }
+ }
+ }
+ },
+ "@types/webpack-sources": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz",
+ "integrity": "sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*",
+ "@types/source-list-map": "*",
+ "source-map": "^0.7.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true
+ }
+ }
+ },
+ "@types/ws": {
+ "version": "8.5.5",
+ "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.5.tgz",
+ "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@vue/babel-helper-vue-jsx-merge-props": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.4.0.tgz",
+ "integrity": "sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==",
+ "dev": true
+ },
+ "@vue/babel-helper-vue-transform-on": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.1.5.tgz",
+ "integrity": "sha512-SgUymFpMoAyWeYWLAY+MkCK3QEROsiUnfaw5zxOVD/M64KQs8D/4oK6Q5omVA2hnvEOE0SCkH2TZxs/jnnUj7w==",
+ "dev": true
+ },
+ "@vue/babel-plugin-jsx": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.1.5.tgz",
+ "integrity": "sha512-nKs1/Bg9U1n3qSWnsHhCVQtAzI6aQXqua8j/bZrau8ywT1ilXQbK4FwEJGmU8fV7tcpuFvWmmN7TMmV1OBma1g==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.22.5",
+ "@babel/plugin-syntax-jsx": "^7.22.5",
+ "@babel/template": "^7.22.5",
+ "@babel/traverse": "^7.22.5",
+ "@babel/types": "^7.22.5",
+ "@vue/babel-helper-vue-transform-on": "^1.1.5",
+ "camelcase": "^6.3.0",
+ "html-tags": "^3.3.1",
+ "svg-tags": "^1.0.0"
+ }
+ },
+ "@vue/babel-plugin-transform-vue-jsx": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.4.0.tgz",
+ "integrity": "sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-module-imports": "^7.0.0",
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
+ "html-tags": "^2.0.0",
+ "lodash.kebabcase": "^4.1.1",
+ "svg-tags": "^1.0.0"
+ },
+ "dependencies": {
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz",
+ "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-preset-app": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-preset-app/-/babel-preset-app-4.5.19.tgz",
+ "integrity": "sha512-VCNRiAt2P/bLo09rYt3DLe6xXUMlhJwrvU18Ddd/lYJgC7s8+wvhgYs+MTx4OiAXdu58drGwSBO9SPx7C6J82Q==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.11.0",
+ "@babel/helper-compilation-targets": "^7.9.6",
+ "@babel/helper-module-imports": "^7.8.3",
+ "@babel/plugin-proposal-class-properties": "^7.8.3",
+ "@babel/plugin-proposal-decorators": "^7.8.3",
+ "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+ "@babel/plugin-syntax-jsx": "^7.8.3",
+ "@babel/plugin-transform-runtime": "^7.11.0",
+ "@babel/preset-env": "^7.11.0",
+ "@babel/runtime": "^7.11.0",
+ "@vue/babel-plugin-jsx": "^1.0.3",
+ "@vue/babel-preset-jsx": "^1.2.4",
+ "babel-plugin-dynamic-import-node": "^2.3.3",
+ "core-js": "^3.6.5",
+ "core-js-compat": "^3.6.5",
+ "semver": "^6.1.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-preset-jsx": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-preset-jsx/-/babel-preset-jsx-1.4.0.tgz",
+ "integrity": "sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==",
+ "dev": true,
+ "requires": {
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
+ "@vue/babel-sugar-composition-api-inject-h": "^1.4.0",
+ "@vue/babel-sugar-composition-api-render-instance": "^1.4.0",
+ "@vue/babel-sugar-functional-vue": "^1.4.0",
+ "@vue/babel-sugar-inject-h": "^1.4.0",
+ "@vue/babel-sugar-v-model": "^1.4.0",
+ "@vue/babel-sugar-v-on": "^1.4.0"
+ }
+ },
+ "@vue/babel-sugar-composition-api-inject-h": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-inject-h/-/babel-sugar-composition-api-inject-h-1.4.0.tgz",
+ "integrity": "sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-composition-api-render-instance": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-composition-api-render-instance/-/babel-sugar-composition-api-render-instance-1.4.0.tgz",
+ "integrity": "sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-functional-vue": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.4.0.tgz",
+ "integrity": "sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-inject-h": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.4.0.tgz",
+ "integrity": "sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0"
+ }
+ },
+ "@vue/babel-sugar-v-model": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.4.0.tgz",
+ "integrity": "sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-helper-vue-jsx-merge-props": "^1.4.0",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
+ "camelcase": "^5.0.0",
+ "html-tags": "^2.0.0",
+ "svg-tags": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "html-tags": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz",
+ "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/babel-sugar-v-on": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.4.0.tgz",
+ "integrity": "sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==",
+ "dev": true,
+ "requires": {
+ "@babel/plugin-syntax-jsx": "^7.2.0",
+ "@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
+ "camelcase": "^5.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/cli-overlay": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-overlay/-/cli-overlay-4.5.19.tgz",
+ "integrity": "sha512-GdxvNSmOw7NHIazCO8gTK+xZbaOmScTtxj6eHVeMbYpDYVPJ+th3VMLWNpw/b6uOjwzzcyKlA5dRQ1DAb+gF/g==",
+ "dev": true
+ },
+ "@vue/cli-plugin-babel": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-babel/-/cli-plugin-babel-4.5.19.tgz",
+ "integrity": "sha512-8ebXzaMW9KNTMAN6+DzkhFsjty1ieqT7hIW5Lbk4v30Qhfjkms7lBWyXPGkoq+wAikXFa1Gnam2xmWOBqDDvWg==",
+ "dev": true,
+ "requires": {
+ "@babel/core": "^7.11.0",
+ "@vue/babel-preset-app": "^4.5.19",
+ "@vue/cli-shared-utils": "^4.5.19",
+ "babel-loader": "^8.1.0",
+ "cache-loader": "^4.1.0",
+ "thread-loader": "^2.1.3",
+ "webpack": "^4.0.0"
+ }
+ },
+ "@vue/cli-plugin-eslint": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-eslint/-/cli-plugin-eslint-4.5.19.tgz",
+ "integrity": "sha512-53sa4Pu9j5KajesFlj494CcO8vVo3e3nnZ1CCKjGGnrF90id1rUeepcFfz5XjwfEtbJZp2x/NoX/EZE6zCzSFQ==",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.19",
+ "eslint-loader": "^2.2.1",
+ "globby": "^9.2.0",
+ "inquirer": "^7.1.0",
+ "webpack": "^4.0.0",
+ "yorkie": "^2.0.0"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz",
+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "globby": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz",
+ "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^1.0.2",
+ "dir-glob": "^2.2.2",
+ "fast-glob": "^2.2.6",
+ "glob": "^7.1.3",
+ "ignore": "^4.0.3",
+ "pify": "^4.0.1",
+ "slash": "^2.0.0"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "@vue/cli-plugin-router": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-router/-/cli-plugin-router-4.5.19.tgz",
+ "integrity": "sha512-3icGzH1IbVYmMMsOwYa0lal/gtvZLebFXdE5hcQJo2mnTwngXGMTyYAzL56EgHBPjbMmRpyj6Iw9k4aVInVX6A==",
+ "dev": true,
+ "requires": {
+ "@vue/cli-shared-utils": "^4.5.19"
+ }
+ },
+ "@vue/cli-plugin-vuex": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-plugin-vuex/-/cli-plugin-vuex-4.5.19.tgz",
+ "integrity": "sha512-DUmfdkG3pCdkP7Iznd87RfE9Qm42mgp2hcrNcYQYSru1W1gX2dG/JcW8bxmeGSa06lsxi9LEIc/QD1yPajSCZw==",
+ "dev": true
+ },
+ "@vue/cli-service": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-service/-/cli-service-4.5.19.tgz",
+ "integrity": "sha512-+Wpvj8fMTCt9ZPOLu5YaLkFCQmB4MrZ26aRmhhKiCQ/4PMoL6mLezfqdt6c+m2htM+1WV5RunRo+0WHl2DfwZA==",
+ "dev": true,
+ "requires": {
+ "@intervolga/optimize-cssnano-plugin": "^1.0.5",
+ "@soda/friendly-errors-webpack-plugin": "^1.7.1",
+ "@soda/get-current-script": "^1.0.0",
+ "@types/minimist": "^1.2.0",
+ "@types/webpack": "^4.0.0",
+ "@types/webpack-dev-server": "^3.11.0",
+ "@vue/cli-overlay": "^4.5.19",
+ "@vue/cli-plugin-router": "^4.5.19",
+ "@vue/cli-plugin-vuex": "^4.5.19",
+ "@vue/cli-shared-utils": "^4.5.19",
+ "@vue/component-compiler-utils": "^3.1.2",
+ "@vue/preload-webpack-plugin": "^1.1.0",
+ "@vue/web-component-wrapper": "^1.2.0",
+ "acorn": "^7.4.0",
+ "acorn-walk": "^7.1.1",
+ "address": "^1.1.2",
+ "autoprefixer": "^9.8.6",
+ "browserslist": "^4.12.0",
+ "cache-loader": "^4.1.0",
+ "case-sensitive-paths-webpack-plugin": "^2.3.0",
+ "cli-highlight": "^2.1.4",
+ "clipboardy": "^2.3.0",
+ "cliui": "^6.0.0",
+ "copy-webpack-plugin": "^5.1.1",
+ "css-loader": "^3.5.3",
+ "cssnano": "^4.1.10",
+ "debug": "^4.1.1",
+ "default-gateway": "^5.0.5",
+ "dotenv": "^8.2.0",
+ "dotenv-expand": "^5.1.0",
+ "file-loader": "^4.2.0",
+ "fs-extra": "^7.0.1",
+ "globby": "^9.2.0",
+ "hash-sum": "^2.0.0",
+ "html-webpack-plugin": "^3.2.0",
+ "launch-editor-middleware": "^2.2.1",
+ "lodash.defaultsdeep": "^4.6.1",
+ "lodash.mapvalues": "^4.6.0",
+ "lodash.transform": "^4.6.0",
+ "mini-css-extract-plugin": "^0.9.0",
+ "minimist": "^1.2.5",
+ "pnp-webpack-plugin": "^1.6.4",
+ "portfinder": "^1.0.26",
+ "postcss-loader": "^3.0.0",
+ "ssri": "^8.0.1",
+ "terser-webpack-plugin": "^1.4.4",
+ "thread-loader": "^2.1.3",
+ "url-loader": "^2.2.0",
+ "vue-loader": "^15.9.2",
+ "vue-loader-v16": "npm:vue-loader@^16.1.0",
+ "vue-style-loader": "^4.1.2",
+ "webpack": "^4.0.0",
+ "webpack-bundle-analyzer": "^3.8.0",
+ "webpack-chain": "^6.4.0",
+ "webpack-dev-server": "^3.11.0",
+ "webpack-merge": "^4.2.2"
+ },
+ "dependencies": {
+ "@nodelib/fs.stat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
+ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
+ "dev": true
+ },
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
+ "ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "cacache": {
+ "version": "12.0.4",
+ "resolved": "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz",
+ "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ },
+ "dependencies": {
+ "ssri": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ }
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true,
+ "optional": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true,
+ "optional": true
+ },
+ "connect-history-api-fallback": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+ "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+ "dev": true
+ },
+ "copy-webpack-plugin": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.2.tgz",
+ "integrity": "sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.3",
+ "find-cache-dir": "^2.1.0",
+ "glob-parent": "^3.1.0",
+ "globby": "^7.1.1",
+ "is-glob": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "minimatch": "^3.0.4",
+ "normalize-path": "^3.0.0",
+ "p-limit": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^4.0.0",
+ "webpack-log": "^2.0.0"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz",
+ "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ }
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true
+ }
+ }
+ },
+ "default-gateway": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-5.0.5.tgz",
+ "integrity": "sha512-z2RnruVmj8hVMmAnEJMTIJNijhKCDiGjbLP+BHJFOT7ld3Bo5qcIBpVYDniqhbMIIf+jZDlkP2MkPXiQy/DBLA==",
+ "dev": true,
+ "requires": {
+ "execa": "^3.3.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "execa": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-3.4.0.tgz",
+ "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "p-finally": "^2.0.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "fast-glob": {
+ "version": "2.2.7",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz",
+ "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
+ "dev": true,
+ "requires": {
+ "@mrmlnc/readdir-enhanced": "^2.2.1",
+ "@nodelib/fs.stat": "^1.1.2",
+ "glob-parent": "^3.1.0",
+ "is-glob": "^4.0.0",
+ "merge2": "^1.2.3",
+ "micromatch": "^3.1.10"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "fs-extra": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz",
+ "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1"
+ }
+ },
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "globby": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-9.2.0.tgz",
+ "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^1.0.2",
+ "dir-glob": "^2.2.2",
+ "fast-glob": "^2.2.6",
+ "glob": "^7.1.3",
+ "ignore": "^4.0.3",
+ "pify": "^4.0.1",
+ "slash": "^2.0.0"
+ },
+ "dependencies": {
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "slash": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz",
+ "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
+ "dev": true
+ }
+ }
+ },
+ "html-entities": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-1.4.0.tgz",
+ "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
+ "dev": true
+ },
+ "http-proxy-middleware": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+ "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+ "dev": true,
+ "requires": {
+ "http-proxy": "^1.17.0",
+ "is-glob": "^4.0.0",
+ "lodash": "^4.17.11",
+ "micromatch": "^3.1.10"
+ }
+ },
+ "human-signals": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-1.1.1.tgz",
+ "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
+ "dev": true
+ },
+ "import-local": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/import-local/-/import-local-2.0.0.tgz",
+ "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+ "dev": true,
+ "requires": {
+ "pkg-dir": "^3.0.0",
+ "resolve-cwd": "^2.0.0"
+ }
+ },
+ "is-absolute-url": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+ "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+ "dev": true
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "optional": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "node-forge": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-0.10.0.tgz",
+ "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
+ "dev": true
+ },
+ "p-finally": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-2.0.1.tgz",
+ "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-retry": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-3.0.1.tgz",
+ "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+ "dev": true,
+ "requires": {
+ "retry": "^0.12.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "resolve-cwd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "dev": true
+ },
+ "retry": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/retry/-/retry-0.12.0.tgz",
+ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
+ "dev": true
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "selfsigned": {
+ "version": "1.10.14",
+ "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-1.10.14.tgz",
+ "integrity": "sha512-lkjaiAye+wBZDCBsu5BGi0XiLRxeUlsGod5ZP924CRSEoGuZAw/f7y9RKu28rwTfiHVhdavhB0qH0INV6P1lEA==",
+ "dev": true,
+ "requires": {
+ "node-forge": "^0.10.0"
+ }
+ },
+ "serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "ssri": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
+ "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==",
+ "dev": true,
+ "requires": {
+ "minipass": "^3.1.1"
+ }
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "supports-color": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-6.1.0.tgz",
+ "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+ "dev": true
+ },
+ "vue-loader-v16": {
+ "version": "npm:vue-loader@16.8.3",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-16.8.3.tgz",
+ "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "hash-sum": "^2.0.0",
+ "loader-utils": "^2.0.0"
+ },
+ "dependencies": {
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ }
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "3.7.3",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+ "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+ "dev": true,
+ "requires": {
+ "memory-fs": "^0.4.1",
+ "mime": "^2.4.4",
+ "mkdirp": "^0.5.1",
+ "range-parser": "^1.2.1",
+ "webpack-log": "^2.0.0"
+ }
+ },
+ "webpack-dev-server": {
+ "version": "3.11.3",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-3.11.3.tgz",
+ "integrity": "sha512-3x31rjbEQWKMNzacUZRE6wXvUFuGpH7vr0lIEbYpMAG9BOxi0928QU1BBswOAP3kg3H1O4hiS+sq4YyAn6ANnA==",
+ "dev": true,
+ "requires": {
+ "ansi-html-community": "0.0.8",
+ "bonjour": "^3.5.0",
+ "chokidar": "^2.1.8",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^1.6.0",
+ "debug": "^4.1.1",
+ "del": "^4.1.1",
+ "express": "^4.17.1",
+ "html-entities": "^1.3.1",
+ "http-proxy-middleware": "0.19.1",
+ "import-local": "^2.0.0",
+ "internal-ip": "^4.3.0",
+ "ip": "^1.1.5",
+ "is-absolute-url": "^3.0.3",
+ "killable": "^1.0.1",
+ "loglevel": "^1.6.8",
+ "opn": "^5.5.0",
+ "p-retry": "^3.0.1",
+ "portfinder": "^1.0.26",
+ "schema-utils": "^1.0.0",
+ "selfsigned": "^1.10.8",
+ "semver": "^6.3.0",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.21",
+ "sockjs-client": "^1.5.0",
+ "spdy": "^4.0.2",
+ "strip-ansi": "^3.0.1",
+ "supports-color": "^6.1.0",
+ "url": "^0.11.0",
+ "webpack-dev-middleware": "^3.7.2",
+ "webpack-log": "^2.0.0",
+ "ws": "^6.2.1",
+ "yargs": "^13.3.2"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "webpack-merge": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.15"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "dependencies": {
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ },
+ "dependencies": {
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "@vue/cli-shared-utils": {
+ "version": "4.5.19",
+ "resolved": "https://registry.npmmirror.com/@vue/cli-shared-utils/-/cli-shared-utils-4.5.19.tgz",
+ "integrity": "sha512-JYpdsrC/d9elerKxbEUtmSSU6QRM60rirVubOewECHkBHj+tLNznWq/EhCjswywtePyLaMUK25eTqnTSZlEE+g==",
+ "dev": true,
+ "requires": {
+ "@achrinza/node-ipc": "9.2.2",
+ "@hapi/joi": "^15.0.1",
+ "chalk": "^2.4.2",
+ "execa": "^1.0.0",
+ "launch-editor": "^2.2.1",
+ "lru-cache": "^5.1.1",
+ "open": "^6.3.0",
+ "ora": "^3.4.0",
+ "read-pkg": "^5.1.1",
+ "request": "^2.88.2",
+ "semver": "^6.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ }
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "open": {
+ "version": "6.4.0",
+ "resolved": "https://registry.npmmirror.com/open/-/open-6.4.0.tgz",
+ "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+ },
+ "@vue/compiler-sfc": {
+ "version": "2.7.14",
+ "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-2.7.14.tgz",
+ "integrity": "sha512-aNmNHyLPsw+sVvlQFQ2/8sjNuLtK54TC6cuKnVzAY93ks4ZBrvwQSnkkIh7bsbNhum5hJBS00wSDipQ937f5DA==",
+ "requires": {
+ "@babel/parser": "^7.18.4",
+ "postcss": "^8.4.14",
+ "source-map": "^0.6.1"
+ }
+ },
+ "@vue/component-compiler-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/@vue/component-compiler-utils/-/component-compiler-utils-3.3.0.tgz",
+ "integrity": "sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==",
+ "dev": true,
+ "requires": {
+ "consolidate": "^0.15.1",
+ "hash-sum": "^1.0.2",
+ "lru-cache": "^4.1.2",
+ "merge-source-map": "^1.1.0",
+ "postcss": "^7.0.36",
+ "postcss-selector-parser": "^6.0.2",
+ "prettier": "^1.18.2 || ^2.0.0",
+ "source-map": "~0.6.1",
+ "vue-template-es2015-compiler": "^1.9.0"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "@vue/preload-webpack-plugin": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/@vue/preload-webpack-plugin/-/preload-webpack-plugin-1.1.2.tgz",
+ "integrity": "sha512-LIZMuJk38pk9U9Ur4YzHjlIyMuxPlACdBIHH9/nGYVTsaGKOSnSuELiE8vS9wa+dJpIYspYUOqk+L1Q4pgHQHQ==",
+ "dev": true
+ },
+ "@vue/web-component-wrapper": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
+ "integrity": "sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==",
+ "dev": true
+ },
+ "@webassemblyjs/ast": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+ "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0"
+ }
+ },
+ "@webassemblyjs/floating-point-hex-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+ "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-api-error": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+ "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-buffer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+ "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-code-frame": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+ "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "@webassemblyjs/helper-fsm": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+ "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-module-context": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+ "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0"
+ }
+ },
+ "@webassemblyjs/helper-wasm-bytecode": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+ "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
+ "dev": true
+ },
+ "@webassemblyjs/helper-wasm-section": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+ "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0"
+ }
+ },
+ "@webassemblyjs/ieee754": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+ "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+ "dev": true,
+ "requires": {
+ "@xtuc/ieee754": "^1.2.0"
+ }
+ },
+ "@webassemblyjs/leb128": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+ "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+ "dev": true,
+ "requires": {
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/utf8": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+ "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
+ "dev": true
+ },
+ "@webassemblyjs/wasm-edit": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+ "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/helper-wasm-section": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-opt": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "@webassemblyjs/wast-printer": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-gen": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+ "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-opt": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+ "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-buffer": "1.9.0",
+ "@webassemblyjs/wasm-gen": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wasm-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+ "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+ "@webassemblyjs/ieee754": "1.9.0",
+ "@webassemblyjs/leb128": "1.9.0",
+ "@webassemblyjs/utf8": "1.9.0"
+ }
+ },
+ "@webassemblyjs/wast-parser": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+ "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+ "@webassemblyjs/helper-api-error": "1.9.0",
+ "@webassemblyjs/helper-code-frame": "1.9.0",
+ "@webassemblyjs/helper-fsm": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webassemblyjs/wast-printer": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+ "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/wast-parser": "1.9.0",
+ "@xtuc/long": "4.2.2"
+ }
+ },
+ "@webpack-cli/configtest": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz",
+ "integrity": "sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg=="
+ },
+ "@webpack-cli/info": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/@webpack-cli/info/-/info-1.5.0.tgz",
+ "integrity": "sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==",
+ "requires": {
+ "envinfo": "^7.7.3"
+ }
+ },
+ "@webpack-cli/serve": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/@webpack-cli/serve/-/serve-1.7.0.tgz",
+ "integrity": "sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q=="
+ },
+ "@xtuc/ieee754": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+ "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+ "dev": true
+ },
+ "@xtuc/long": {
+ "version": "4.2.2",
+ "resolved": "https://registry.npmmirror.com/@xtuc/long/-/long-4.2.2.tgz",
+ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+ "dev": true
+ },
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
+ "abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "requires": {
+ "event-target-shim": "^5.0.0"
+ }
+ },
+ "accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmmirror.com/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "requires": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ }
+ },
+ "acorn": {
+ "version": "6.4.2",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-6.4.2.tgz",
+ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+ "dev": true
+ },
+ "acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true
+ },
+ "acorn-walk": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/acorn-walk/-/acorn-walk-7.2.0.tgz",
+ "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
+ "dev": true
+ },
+ "address": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/address/-/address-1.2.2.tgz",
+ "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA=="
+ },
+ "adler-32": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.2.0.tgz",
+ "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==",
+ "dev": true,
+ "requires": {
+ "exit-on-epipe": "~1.0.1",
+ "printj": "~1.1.0"
+ }
+ },
+ "adm-zip": {
+ "version": "0.5.10",
+ "resolved": "https://registry.npmmirror.com/adm-zip/-/adm-zip-0.5.10.tgz",
+ "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ=="
+ },
+ "agentkeepalive": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
+ "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
+ "requires": {
+ "humanize-ms": "^1.2.1"
+ }
+ },
+ "ajv": {
+ "version": "6.12.6",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz",
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-errors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/ajv-errors/-/ajv-errors-1.0.1.tgz",
+ "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+ "dev": true
+ },
+ "ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "requires": {
+ "ajv": "^8.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ }
+ }
+ },
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
+ },
+ "ali-oss": {
+ "version": "6.18.1",
+ "resolved": "https://registry.npmmirror.com/ali-oss/-/ali-oss-6.18.1.tgz",
+ "integrity": "sha512-VsptD0jX3JNc3AjiLs5a9oTP0ArfT9IYhBuY6G/SpuY6LMuiwfqywrAosY65BlHKODAdYy8VWL6kmt0mO7BUGA==",
+ "requires": {
+ "address": "^1.2.2",
+ "agentkeepalive": "^3.4.1",
+ "bowser": "^1.6.0",
+ "copy-to": "^2.0.1",
+ "dateformat": "^2.0.0",
+ "debug": "^4.3.4",
+ "destroy": "^1.0.4",
+ "end-or-error": "^1.0.1",
+ "get-ready": "^1.0.0",
+ "humanize-ms": "^1.2.0",
+ "is-type-of": "^1.4.0",
+ "js-base64": "^2.5.2",
+ "jstoxml": "^2.0.0",
+ "merge-descriptors": "^1.0.1",
+ "mime": "^2.4.5",
+ "platform": "^1.3.1",
+ "pump": "^3.0.0",
+ "sdk-base": "^2.0.1",
+ "stream-http": "2.8.2",
+ "stream-wormhole": "^1.0.4",
+ "urllib": "2.41.0",
+ "utility": "^1.18.0",
+ "xml2js": "^0.6.2"
+ }
+ },
+ "alphanum-sort": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+ "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==",
+ "dev": true
+ },
+ "amdefine": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/amdefine/-/amdefine-1.0.1.tgz",
+ "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg=="
+ },
+ "ansi-colors": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+ "dev": true
+ },
+ "ansi-escapes": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ=="
+ },
+ "ansi-html-community": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmmirror.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz",
+ "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw=="
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA=="
+ },
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA=="
+ },
+ "antlr4": {
+ "version": "4.13.1",
+ "resolved": "https://registry.npmmirror.com/antlr4/-/antlr4-4.13.1.tgz",
+ "integrity": "sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA=="
+ },
+ "any-observable": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/any-observable/-/any-observable-0.3.0.tgz",
+ "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog=="
+ },
+ "any-promise": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/any-promise/-/any-promise-1.3.0.tgz",
+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
+ },
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "aproba": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/aproba/-/aproba-1.2.0.tgz",
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
+ },
+ "arch": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/arch/-/arch-2.2.0.tgz",
+ "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+ "dev": true
+ },
+ "archiver": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/archiver/-/archiver-5.3.2.tgz",
+ "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==",
+ "requires": {
+ "archiver-utils": "^2.1.0",
+ "async": "^3.2.4",
+ "buffer-crc32": "^0.2.1",
+ "readable-stream": "^3.6.0",
+ "readdir-glob": "^1.1.2",
+ "tar-stream": "^2.2.0",
+ "zip-stream": "^4.1.0"
+ }
+ },
+ "archiver-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-2.1.0.tgz",
+ "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
+ "requires": {
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^2.0.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "are-we-there-yet": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
+ "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "arr-diff": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz",
+ "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
+ "dev": true
+ },
+ "arr-flatten": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+ "dev": true
+ },
+ "arr-union": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz",
+ "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
+ "dev": true
+ },
+ "array-buffer-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+ "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "is-array-buffer": "^3.0.1"
+ }
+ },
+ "array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw=="
+ },
+ "array-flatten": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz",
+ "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
+ },
+ "array-union": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz",
+ "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
+ "requires": {
+ "array-uniq": "^1.0.1"
+ }
+ },
+ "array-uniq": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz",
+ "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q=="
+ },
+ "array-unique": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz",
+ "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
+ "dev": true
+ },
+ "array.prototype.reduce": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/array.prototype.reduce/-/array.prototype.reduce-1.0.6.tgz",
+ "integrity": "sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "es-array-method-boxes-properly": "^1.0.0",
+ "is-string": "^1.0.7"
+ }
+ },
+ "arraybuffer.prototype.slice": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz",
+ "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==",
+ "dev": true,
+ "requires": {
+ "array-buffer-byte-length": "^1.0.0",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "get-intrinsic": "^1.2.1",
+ "is-array-buffer": "^3.0.2",
+ "is-shared-array-buffer": "^1.0.2"
+ }
+ },
+ "asn1": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmmirror.com/asn1/-/asn1-0.2.6.tgz",
+ "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
+ "requires": {
+ "safer-buffer": "~2.1.0"
+ }
+ },
+ "asn1.js": {
+ "version": "5.4.1",
+ "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-5.4.1.tgz",
+ "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "requires": {
+ "bn.js": "^4.0.0",
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0",
+ "safer-buffer": "^2.1.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ }
+ }
+ },
+ "assert": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/assert/-/assert-2.1.0.tgz",
+ "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "is-nan": "^1.3.2",
+ "object-is": "^1.1.5",
+ "object.assign": "^4.1.4",
+ "util": "^0.12.5"
+ }
+ },
+ "assert-plus": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assert-plus/-/assert-plus-1.0.0.tgz",
+ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="
+ },
+ "assign-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
+ "dev": true
+ },
+ "astral-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
+ "dev": true
+ },
+ "async": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmmirror.com/async/-/async-3.2.4.tgz",
+ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ=="
+ },
+ "async-each": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/async-each/-/async-each-1.0.6.tgz",
+ "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==",
+ "dev": true
+ },
+ "async-foreach": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmmirror.com/async-foreach/-/async-foreach-0.1.3.tgz",
+ "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA=="
+ },
+ "async-limiter": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/async-limiter/-/async-limiter-1.0.1.tgz",
+ "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+ "dev": true
+ },
+ "async-validator": {
+ "version": "1.8.5",
+ "resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-1.8.5.tgz",
+ "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+ "requires": {
+ "babel-runtime": "6.x"
+ }
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "dev": true
+ },
+ "autoprefixer": {
+ "version": "9.8.8",
+ "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-9.8.8.tgz",
+ "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.12.0",
+ "caniuse-lite": "^1.0.30001109",
+ "normalize-range": "^0.1.2",
+ "num2fraction": "^1.2.2",
+ "picocolors": "^0.2.1",
+ "postcss": "^7.0.32",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "available-typed-arrays": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+ "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
+ },
+ "aws-sign2": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA=="
+ },
+ "aws4": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmmirror.com/aws4/-/aws4-1.12.0.tgz",
+ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg=="
+ },
+ "axios": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmmirror.com/axios/-/axios-0.18.1.tgz",
+ "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
+ "requires": {
+ "follow-redirects": "1.5.10",
+ "is-buffer": "^2.0.2"
+ }
+ },
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmmirror.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==",
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ }
+ }
+ },
+ "babel-eslint": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/babel-eslint/-/babel-eslint-7.2.3.tgz",
+ "integrity": "sha512-i2yKOhjgwUbUrJ8oJm6QqRzltIoFahGNPZ0HF22lUN4H1DW03JQyJm7WSv+I1LURQWjDNhVqFo04acYa07rhOQ==",
+ "requires": {
+ "babel-code-frame": "^6.22.0",
+ "babel-traverse": "^6.23.1",
+ "babel-types": "^6.23.0",
+ "babylon": "^6.17.0"
+ }
+ },
+ "babel-helper-vue-jsx-merge-props": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+ "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
+ },
+ "babel-loader": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmmirror.com/babel-loader/-/babel-loader-8.3.0.tgz",
+ "integrity": "sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^3.3.1",
+ "loader-utils": "^2.0.0",
+ "make-dir": "^3.1.0",
+ "schema-utils": "^2.6.5"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "dev": true,
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmmirror.com/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==",
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
+ "babel-plugin-dynamic-import-node": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.0"
+ }
+ },
+ "babel-plugin-polyfill-corejs2": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.5.tgz",
+ "integrity": "sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.6",
+ "@babel/helper-define-polyfill-provider": "^0.4.2",
+ "semver": "^6.3.1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "babel-plugin-polyfill-corejs3": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.3.tgz",
+ "integrity": "sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.4.2",
+ "core-js-compat": "^3.31.0"
+ }
+ },
+ "babel-plugin-polyfill-regenerator": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.2.tgz",
+ "integrity": "sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-define-polyfill-provider": "^0.4.2"
+ }
+ },
+ "babel-plugin-syntax-dynamic-import": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmmirror.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz",
+ "integrity": "sha512-MioUE+LfjCEz65Wf7Z/Rm4XCP5k2c+TbMd2Z2JKc7U9uwjBhAfNPE48KC4GTGKhppMeYVepwDBNO/nGY6NYHBA=="
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmmirror.com/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==",
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ=="
+ },
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+ }
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmmirror.com/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==",
+ "requires": {
+ "babel-code-frame": "^6.26.0",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "debug": "^2.6.8",
+ "globals": "^9.18.0",
+ "invariant": "^2.2.2",
+ "lodash": "^4.17.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmmirror.com/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==",
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.4",
+ "to-fast-properties": "^1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmmirror.com/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
+ },
+ "balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
+ },
+ "base": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/base/-/base-0.11.2.tgz",
+ "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+ "dev": true,
+ "requires": {
+ "cache-base": "^1.0.1",
+ "class-utils": "^0.3.5",
+ "component-emitter": "^1.2.1",
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.1",
+ "mixin-deep": "^1.2.0",
+ "pascalcase": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+ },
+ "batch": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/batch/-/batch-0.6.1.tgz",
+ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw=="
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
+ "requires": {
+ "tweetnacl": "^0.14.3"
+ }
+ },
+ "bfj": {
+ "version": "6.1.2",
+ "resolved": "https://registry.npmmirror.com/bfj/-/bfj-6.1.2.tgz",
+ "integrity": "sha512-BmBJa4Lip6BPRINSZ0BPEIfB1wUY/9rwbwvIHQA1KjX9om29B6id0wnWXq7m3bn5JrUVjeOTnVuhPT1FiHwPGw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "check-types": "^8.0.3",
+ "hoopy": "^0.1.4",
+ "tryer": "^1.0.1"
+ }
+ },
+ "big-integer": {
+ "version": "1.6.51",
+ "resolved": "https://registry.npmmirror.com/big-integer/-/big-integer-1.6.51.tgz",
+ "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg=="
+ },
+ "big.js": {
+ "version": "5.2.2",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz",
+ "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ=="
+ },
+ "binary": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/binary/-/binary-0.3.0.tgz",
+ "integrity": "sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg==",
+ "requires": {
+ "buffers": "~0.1.1",
+ "chainsaw": "~0.1.0"
+ }
+ },
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
+ },
+ "bl": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz",
+ "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+ "requires": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmmirror.com/block-stream/-/block-stream-0.0.9.tgz",
+ "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==",
+ "requires": {
+ "inherits": "~2.0.0"
+ }
+ },
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="
+ },
+ "bn.js": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.1.tgz",
+ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
+ },
+ "body-parser": {
+ "version": "1.20.1",
+ "resolved": "https://registry.npmmirror.com/body-parser/-/body-parser-1.20.1.tgz",
+ "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "requires": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.4",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.1",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ }
+ }
+ },
+ "bonjour": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmmirror.com/bonjour/-/bonjour-3.5.0.tgz",
+ "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==",
+ "dev": true,
+ "requires": {
+ "array-flatten": "^2.1.0",
+ "deep-equal": "^1.0.1",
+ "dns-equal": "^1.0.0",
+ "dns-txt": "^2.0.2",
+ "multicast-dns": "^6.0.1",
+ "multicast-dns-service-types": "^1.1.0"
+ },
+ "dependencies": {
+ "dns-packet": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-1.3.4.tgz",
+ "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==",
+ "dev": true,
+ "requires": {
+ "ip": "^1.1.0",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "multicast-dns": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+ "dev": true,
+ "requires": {
+ "dns-packet": "^1.3.1",
+ "thunky": "^1.0.2"
+ }
+ }
+ }
+ },
+ "bonjour-service": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.1.1.tgz",
+ "integrity": "sha512-Z/5lQRMOG9k7W+FkeGTNjh7htqn/2LMnfOvBZ8pynNZCM9MwkQkI3zeI4oz09uWdcgmgHugVvBqxGg4VQJ5PCg==",
+ "requires": {
+ "array-flatten": "^2.1.2",
+ "dns-equal": "^1.0.0",
+ "fast-deep-equal": "^3.1.3",
+ "multicast-dns": "^7.2.5"
+ }
+ },
+ "boolbase": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
+ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
+ "dev": true
+ },
+ "bowser": {
+ "version": "1.9.4",
+ "resolved": "https://registry.npmmirror.com/bowser/-/bowser-1.9.4.tgz",
+ "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ=="
+ },
+ "brace-expansion": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "requires": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "brorand": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz",
+ "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w=="
+ },
+ "browserify-aes": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz",
+ "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+ "requires": {
+ "buffer-xor": "^1.0.3",
+ "cipher-base": "^1.0.0",
+ "create-hash": "^1.1.0",
+ "evp_bytestokey": "^1.0.3",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "browserify-cipher": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+ "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+ "requires": {
+ "browserify-aes": "^1.0.4",
+ "browserify-des": "^1.0.0",
+ "evp_bytestokey": "^1.0.0"
+ }
+ },
+ "browserify-des": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz",
+ "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "des.js": "^1.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "browserify-rsa": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+ "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+ "requires": {
+ "bn.js": "^5.0.0",
+ "randombytes": "^2.0.1"
+ }
+ },
+ "browserify-sign": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.1.tgz",
+ "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "requires": {
+ "bn.js": "^5.1.1",
+ "browserify-rsa": "^4.0.1",
+ "create-hash": "^1.2.0",
+ "create-hmac": "^1.1.7",
+ "elliptic": "^6.5.3",
+ "inherits": "^2.0.4",
+ "parse-asn1": "^5.1.5",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ }
+ },
+ "browserify-zlib": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+ "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+ "requires": {
+ "pako": "~1.0.5"
+ }
+ },
+ "browserslist": {
+ "version": "4.21.10",
+ "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.10.tgz",
+ "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001517",
+ "electron-to-chromium": "^1.4.477",
+ "node-releases": "^2.0.13",
+ "update-browserslist-db": "^1.0.11"
+ }
+ },
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ }
+ },
+ "buffer-crc32": {
+ "version": "0.2.13",
+ "resolved": "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+ "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="
+ },
+ "buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "buffer-indexof": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+ "dev": true
+ },
+ "buffer-indexof-polyfill": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz",
+ "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A=="
+ },
+ "buffer-json": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/buffer-json/-/buffer-json-2.0.0.tgz",
+ "integrity": "sha512-+jjPFVqyfF1esi9fvfUs3NqM0pH1ziZ36VP4hmA/y/Ssfo/5w5xHKfTw9BwQjoJ1w/oVtpLomqwUHKdefGyuHw==",
+ "dev": true
+ },
+ "buffer-xor": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz",
+ "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ=="
+ },
+ "buffers": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz",
+ "integrity": "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ=="
+ },
+ "builtin-status-codes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+ "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ=="
+ },
+ "bytes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw=="
+ },
+ "cacache": {
+ "version": "10.0.4",
+ "resolved": "https://registry.npmmirror.com/cacache/-/cacache-10.0.4.tgz",
+ "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==",
+ "requires": {
+ "bluebird": "^3.5.1",
+ "chownr": "^1.0.1",
+ "glob": "^7.1.2",
+ "graceful-fs": "^4.1.11",
+ "lru-cache": "^4.1.1",
+ "mississippi": "^2.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.2",
+ "ssri": "^5.2.4",
+ "unique-filename": "^1.1.0",
+ "y18n": "^4.0.0"
+ }
+ },
+ "cache-base": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz",
+ "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+ "dev": true,
+ "requires": {
+ "collection-visit": "^1.0.0",
+ "component-emitter": "^1.2.1",
+ "get-value": "^2.0.6",
+ "has-value": "^1.0.0",
+ "isobject": "^3.0.1",
+ "set-value": "^2.0.0",
+ "to-object-path": "^0.3.0",
+ "union-value": "^1.0.0",
+ "unset-value": "^1.0.0"
+ }
+ },
+ "cache-loader": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/cache-loader/-/cache-loader-4.1.0.tgz",
+ "integrity": "sha512-ftOayxve0PwKzBF/GLsZNC9fJBXl8lkZE3TOsjkboHfVHVkL39iUEs1FO07A33mizmci5Dudt38UZrrYXDtbhw==",
+ "dev": true,
+ "requires": {
+ "buffer-json": "^2.0.0",
+ "find-cache-dir": "^3.0.0",
+ "loader-utils": "^1.2.3",
+ "mkdirp": "^0.5.1",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.0.0"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
+ }
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "dev": true,
+ "requires": {
+ "semver": "^6.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "call-bind": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz",
+ "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "get-intrinsic": "^1.0.2"
+ }
+ },
+ "call-me-maybe": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
+ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
+ "dev": true
+ },
+ "caller-callsite": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz",
+ "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
+ "dev": true,
+ "requires": {
+ "callsites": "^2.0.0"
+ }
+ },
+ "caller-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/caller-path/-/caller-path-2.0.0.tgz",
+ "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
+ "dev": true,
+ "requires": {
+ "caller-callsite": "^2.0.0"
+ }
+ },
+ "callsites": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-2.0.0.tgz",
+ "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
+ "dev": true
+ },
+ "camel-case": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/camel-case/-/camel-case-3.0.0.tgz",
+ "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0",
+ "upper-case": "^1.1.1"
+ }
+ },
+ "camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true
+ },
+ "camelcase-keys": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==",
+ "requires": {
+ "camelcase": "^2.0.0",
+ "map-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz",
+ "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw=="
+ }
+ }
+ },
+ "caniuse-api": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz",
+ "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-lite": "^1.0.0",
+ "lodash.memoize": "^4.1.2",
+ "lodash.uniq": "^4.5.0"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001533",
+ "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001533.tgz",
+ "integrity": "sha512-9aY/b05NKU4Yl2sbcJhn4A7MsGwR1EPfW/nrqsnqVA0Oq50wpmPaGI+R1Z0UKlUl96oxUkGEOILWtOHck0eCWw==",
+ "dev": true
+ },
+ "case-sensitive-paths-webpack-plugin": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz",
+ "integrity": "sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==",
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "resolved": "https://registry.npmmirror.com/caseless/-/caseless-0.12.0.tgz",
+ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw=="
+ },
+ "cfb": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+ "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+ "dev": true,
+ "requires": {
+ "adler-32": "~1.3.0",
+ "crc-32": "~1.2.0"
+ },
+ "dependencies": {
+ "adler-32": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+ "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+ "dev": true
+ }
+ }
+ },
+ "chainsaw": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/chainsaw/-/chainsaw-0.1.0.tgz",
+ "integrity": "sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==",
+ "requires": {
+ "traverse": ">=0.3.0 <0.4"
+ }
+ },
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "chardet": {
+ "version": "0.7.0",
+ "resolved": "https://registry.npmmirror.com/chardet/-/chardet-0.7.0.tgz",
+ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
+ "dev": true
+ },
+ "check-types": {
+ "version": "8.0.3",
+ "resolved": "https://registry.npmmirror.com/check-types/-/check-types-8.0.3.tgz",
+ "integrity": "sha512-YpeKZngUmG65rLudJ4taU7VLkOCTMhNl/u4ctNC56LQS/zJTyNH0Lrtwm1tfTsbLlwvlfsA2d1c8vCf/Kh2KwQ==",
+ "dev": true
+ },
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "requires": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ }
+ },
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
+ },
+ "chrome-trace-event": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+ "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+ "dev": true
+ },
+ "ci-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/ci-info/-/ci-info-1.6.0.tgz",
+ "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==",
+ "dev": true
+ },
+ "cipher-base": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.4.tgz",
+ "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "class-utils": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz",
+ "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "define-property": "^0.2.5",
+ "isobject": "^3.0.0",
+ "static-extend": "^0.1.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "clean-css": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmmirror.com/clean-css/-/clean-css-4.2.4.tgz",
+ "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==",
+ "dev": true,
+ "requires": {
+ "source-map": "~0.6.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz",
+ "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
+ "requires": {
+ "restore-cursor": "^2.0.0"
+ }
+ },
+ "cli-highlight": {
+ "version": "2.1.11",
+ "resolved": "https://registry.npmmirror.com/cli-highlight/-/cli-highlight-2.1.11.tgz",
+ "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.0.0",
+ "highlight.js": "^10.7.1",
+ "mz": "^2.4.0",
+ "parse5": "^5.1.1",
+ "parse5-htmlparser2-tree-adapter": "^6.0.0",
+ "yargs": "^16.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "cli-spinners": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.0.tgz",
+ "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==",
+ "dev": true
+ },
+ "cli-truncate": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-0.2.1.tgz",
+ "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==",
+ "requires": {
+ "slice-ansi": "0.0.4",
+ "string-width": "^1.0.1"
+ }
+ },
+ "cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true
+ },
+ "clipboard": {
+ "version": "2.0.11",
+ "resolved": "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz",
+ "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==",
+ "requires": {
+ "good-listener": "^1.2.2",
+ "select": "^1.1.2",
+ "tiny-emitter": "^2.0.0"
+ }
+ },
+ "clipboardy": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz",
+ "integrity": "sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==",
+ "dev": true,
+ "requires": {
+ "arch": "^2.1.1",
+ "execa": "^1.0.0",
+ "is-wsl": "^2.1.1"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ }
+ }
+ },
+ "clone": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/clone/-/clone-1.0.4.tgz",
+ "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
+ "dev": true
+ },
+ "clone-deep": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/clone-deep/-/clone-deep-4.0.1.tgz",
+ "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
+ "requires": {
+ "is-plain-object": "^2.0.4",
+ "kind-of": "^6.0.2",
+ "shallow-clone": "^3.0.0"
+ }
+ },
+ "coa": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/coa/-/coa-2.0.2.tgz",
+ "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+ "dev": true,
+ "requires": {
+ "@types/q": "^1.5.1",
+ "chalk": "^2.4.1",
+ "q": "^1.1.2"
+ }
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA=="
+ },
+ "codepage": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz",
+ "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==",
+ "dev": true
+ },
+ "collection-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz",
+ "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
+ "dev": true,
+ "requires": {
+ "map-visit": "^1.0.0",
+ "object-visit": "^1.0.0"
+ }
+ },
+ "color": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/color/-/color-3.2.1.tgz",
+ "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.3",
+ "color-string": "^1.6.0"
+ }
+ },
+ "color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "requires": {
+ "color-name": "1.1.3"
+ }
+ },
+ "color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
+ },
+ "color-string": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/color-string/-/color-string-1.9.1.tgz",
+ "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+ "dev": true,
+ "requires": {
+ "color-name": "^1.0.0",
+ "simple-swizzle": "^0.2.2"
+ }
+ },
+ "colorette": {
+ "version": "2.0.20",
+ "resolved": "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz",
+ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="
+ },
+ "colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA=="
+ },
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
+ "commander": {
+ "version": "9.2.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz",
+ "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w=="
+ },
+ "commondir": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz",
+ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg=="
+ },
+ "component-emitter": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.0.tgz",
+ "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+ "dev": true
+ },
+ "compress-commons": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/compress-commons/-/compress-commons-4.1.2.tgz",
+ "integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==",
+ "requires": {
+ "buffer-crc32": "^0.2.13",
+ "crc32-stream": "^4.0.2",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
+ }
+ },
+ "compressible": {
+ "version": "2.0.18",
+ "resolved": "https://registry.npmmirror.com/compressible/-/compressible-2.0.18.tgz",
+ "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+ "requires": {
+ "mime-db": ">= 1.43.0 < 2"
+ }
+ },
+ "compression": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.4.tgz",
+ "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+ "requires": {
+ "accepts": "~1.3.5",
+ "bytes": "3.0.0",
+ "compressible": "~2.0.16",
+ "debug": "2.6.9",
+ "on-headers": "~1.0.2",
+ "safe-buffer": "5.1.2",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ }
+ }
+ },
+ "comutils": {
+ "version": "1.1.19",
+ "resolved": "https://registry.npmmirror.com/comutils/-/comutils-1.1.19.tgz",
+ "integrity": "sha512-JxXB67juILiwhdLwOsYyjUqwWEhHdObI0EClOPk+JDtEuTbac59s0pxGpfCBnNNQ5JommifmcMGneW/4Cg7YWw=="
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
+ },
+ "concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "connect": {
+ "version": "3.6.6",
+ "resolved": "https://registry.npmmirror.com/connect/-/connect-3.6.6.tgz",
+ "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "finalhandler": "1.1.0",
+ "parseurl": "~1.3.2",
+ "utils-merge": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "finalhandler": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.1.0.tgz",
+ "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==",
+ "dev": true,
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.1",
+ "escape-html": "~1.0.3",
+ "on-finished": "~2.3.0",
+ "parseurl": "~1.3.2",
+ "statuses": "~1.3.1",
+ "unpipe": "~1.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.3.0.tgz",
+ "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
+ "dev": true,
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "statuses": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.3.1.tgz",
+ "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==",
+ "dev": true
+ }
+ }
+ },
+ "connect-history-api-fallback": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz",
+ "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA=="
+ },
+ "console-browserify": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/console-browserify/-/console-browserify-1.2.0.tgz",
+ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ=="
+ },
+ "consolidate": {
+ "version": "0.15.1",
+ "resolved": "https://registry.npmmirror.com/consolidate/-/consolidate-0.15.1.tgz",
+ "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.1.1"
+ }
+ },
+ "constants-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/constants-browserify/-/constants-browserify-1.0.0.tgz",
+ "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ=="
+ },
+ "content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmmirror.com/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "requires": {
+ "safe-buffer": "5.2.1"
+ }
+ },
+ "content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="
+ },
+ "convert-source-map": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
+ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
+ "dev": true
+ },
+ "cookie": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/cookie/-/cookie-0.5.0.tgz",
+ "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
+ },
+ "cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "copy-concurrently": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+ "requires": {
+ "aproba": "^1.1.1",
+ "fs-write-stream-atomic": "^1.0.8",
+ "iferr": "^0.1.5",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.0"
+ }
+ },
+ "copy-descriptor": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
+ "dev": true
+ },
+ "copy-to": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/copy-to/-/copy-to-2.0.1.tgz",
+ "integrity": "sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w=="
+ },
+ "copy-webpack-plugin": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz",
+ "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==",
+ "requires": {
+ "cacache": "^10.0.4",
+ "find-cache-dir": "^1.0.0",
+ "globby": "^7.1.1",
+ "is-glob": "^4.0.0",
+ "loader-utils": "^1.1.0",
+ "minimatch": "^3.0.4",
+ "p-limit": "^1.0.0",
+ "serialize-javascript": "^1.4.0"
+ }
+ },
+ "core-js": {
+ "version": "3.32.2",
+ "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.32.2.tgz",
+ "integrity": "sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ=="
+ },
+ "core-js-compat": {
+ "version": "3.32.2",
+ "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.32.2.tgz",
+ "integrity": "sha512-+GjlguTDINOijtVRUxrQOv3kfu9rl+qPNdX2LTbJ/ZyVTuxK+ksVSAGX1nHstu4hrv1En/uPTtWgq2gI5wt4AQ==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.21.10"
+ }
+ },
+ "core-js-pure": {
+ "version": "3.32.2",
+ "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.32.2.tgz",
+ "integrity": "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ=="
+ },
+ "core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "cornerstone-core": {
+ "version": "2.6.1",
+ "resolved": "https://registry.npmmirror.com/cornerstone-core/-/cornerstone-core-2.6.1.tgz",
+ "integrity": "sha512-LAXjXwNnK2W65ZxpE7phVLjbijkYUrAQIGv5xqKjK8+dmIGlBxqvPHnyGwEqVDyKOWVrpXP6ymUPwrGGRwzgMg=="
+ },
+ "cornerstone-math": {
+ "version": "0.1.10",
+ "resolved": "https://registry.npmmirror.com/cornerstone-math/-/cornerstone-math-0.1.10.tgz",
+ "integrity": "sha512-23XSAyP7t70ANvhFyqwvva+zFd1bQ2d5GL7tg9qKE932WmImjA2Y9tiy5n0iTtnf51W/78Png8Lia2o4dCdJaQ=="
+ },
+ "cornerstone-tools": {
+ "version": "6.0.10",
+ "resolved": "https://registry.npmmirror.com/cornerstone-tools/-/cornerstone-tools-6.0.10.tgz",
+ "integrity": "sha512-FbqnuQPmGvwCV6jd4KQ5dQO8zBZH4RfpAPNLoJdcyXh5Cx8YSwB3v5w79z0LLy7GlHjb9lszphW18KMWwI1Z7Q==",
+ "requires": {
+ "@babel/runtime": "7.1.2",
+ "cornerstone-math": "0.1.10"
+ },
+ "dependencies": {
+ "@babel/runtime": {
+ "version": "7.1.2",
+ "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.1.2.tgz",
+ "integrity": "sha512-Y3SCjmhSupzFB6wcv1KmmFucH6gDVnI30WjOcicV10ju0cZjak3Jcs67YLIXBrmZYw1xCrVeJPbycFwrqNyxpg==",
+ "requires": {
+ "regenerator-runtime": "^0.12.0"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.12.1",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz",
+ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg=="
+ }
+ }
+ },
+ "cornerstone-wado-image-loader": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmmirror.com/cornerstone-wado-image-loader/-/cornerstone-wado-image-loader-3.3.2.tgz",
+ "integrity": "sha512-Yy0DtfSMlflMS5RMQhX9YnXiYYkZz99nnXG2qtBRvzvSdwqiElIpE13sKw0Ohi4mqNwrWRx0xt8utk0HKnAXyw==",
+ "requires": {
+ "dicom-parser": "^1.8.3",
+ "pako": "^1.0.10"
+ }
+ },
+ "cosmiconfig": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+ "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+ "dev": true,
+ "requires": {
+ "import-fresh": "^2.0.0",
+ "is-directory": "^0.3.1",
+ "js-yaml": "^3.13.1",
+ "parse-json": "^4.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ }
+ }
+ }
+ },
+ "crc-32": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+ "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+ },
+ "crc32-stream": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/crc32-stream/-/crc32-stream-4.0.3.tgz",
+ "integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==",
+ "requires": {
+ "crc-32": "^1.2.0",
+ "readable-stream": "^3.4.0"
+ }
+ },
+ "create-ecdh": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz",
+ "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+ "requires": {
+ "bn.js": "^4.1.0",
+ "elliptic": "^6.5.3"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ }
+ }
+ },
+ "create-hash": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz",
+ "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+ "requires": {
+ "cipher-base": "^1.0.1",
+ "inherits": "^2.0.1",
+ "md5.js": "^1.3.4",
+ "ripemd160": "^2.0.1",
+ "sha.js": "^2.4.0"
+ }
+ },
+ "create-hmac": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz",
+ "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+ "requires": {
+ "cipher-base": "^1.0.3",
+ "create-hash": "^1.1.0",
+ "inherits": "^2.0.1",
+ "ripemd160": "^2.0.0",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "requires": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ }
+ },
+ "crypto-browserify": {
+ "version": "3.12.0",
+ "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+ "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+ "requires": {
+ "browserify-cipher": "^1.0.0",
+ "browserify-sign": "^4.0.0",
+ "create-ecdh": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "create-hmac": "^1.1.0",
+ "diffie-hellman": "^5.0.0",
+ "inherits": "^2.0.1",
+ "pbkdf2": "^3.0.3",
+ "public-encrypt": "^4.0.0",
+ "randombytes": "^2.0.0",
+ "randomfill": "^1.0.3"
+ }
+ },
+ "css-color-names": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmmirror.com/css-color-names/-/css-color-names-0.0.4.tgz",
+ "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==",
+ "dev": true
+ },
+ "css-declaration-sorter": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+ "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.1",
+ "timsort": "^0.3.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "css-loader": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/css-loader/-/css-loader-3.6.0.tgz",
+ "integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "cssesc": "^3.0.0",
+ "icss-utils": "^4.1.1",
+ "loader-utils": "^1.2.3",
+ "normalize-path": "^3.0.0",
+ "postcss": "^7.0.32",
+ "postcss-modules-extract-imports": "^2.0.0",
+ "postcss-modules-local-by-default": "^3.0.2",
+ "postcss-modules-scope": "^2.2.0",
+ "postcss-modules-values": "^3.0.0",
+ "postcss-value-parser": "^4.1.0",
+ "schema-utils": "^2.7.0",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "css-select": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-2.1.0.tgz",
+ "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^3.2.1",
+ "domutils": "^1.7.0",
+ "nth-check": "^1.0.2"
+ }
+ },
+ "css-select-base-adapter": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+ "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+ "dev": true
+ },
+ "css-tree": {
+ "version": "1.0.0-alpha.28",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.28.tgz",
+ "integrity": "sha512-joNNW1gCp3qFFzj4St6zk+Wh/NBv0vM5YbEreZk0SD4S23S+1xBKb6cLDg2uj4P4k/GUMlIm6cKIDqIG+vdt0w==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "~1.1.0",
+ "source-map": "^0.5.3"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ }
+ }
+ },
+ "css-url-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/css-url-regex/-/css-url-regex-1.1.0.tgz",
+ "integrity": "sha512-hLKuvifwoKvwqpctblTp0BovBuOXzxof8JgkA8zeqxxL+vcynHQjtIqqlFfQI1gEAZAjbqKm9gFTa88fxTAX4g==",
+ "dev": true
+ },
+ "css-what": {
+ "version": "3.4.2",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-3.4.2.tgz",
+ "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==",
+ "dev": true
+ },
+ "cssesc": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+ "dev": true
+ },
+ "cssnano": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmmirror.com/cssnano/-/cssnano-4.1.11.tgz",
+ "integrity": "sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "cssnano-preset-default": "^4.0.8",
+ "is-resolvable": "^1.0.0",
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "cssnano-preset-default": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz",
+ "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==",
+ "dev": true,
+ "requires": {
+ "css-declaration-sorter": "^4.0.1",
+ "cssnano-util-raw-cache": "^4.0.1",
+ "postcss": "^7.0.0",
+ "postcss-calc": "^7.0.1",
+ "postcss-colormin": "^4.0.3",
+ "postcss-convert-values": "^4.0.1",
+ "postcss-discard-comments": "^4.0.2",
+ "postcss-discard-duplicates": "^4.0.2",
+ "postcss-discard-empty": "^4.0.1",
+ "postcss-discard-overridden": "^4.0.1",
+ "postcss-merge-longhand": "^4.0.11",
+ "postcss-merge-rules": "^4.0.3",
+ "postcss-minify-font-values": "^4.0.2",
+ "postcss-minify-gradients": "^4.0.2",
+ "postcss-minify-params": "^4.0.2",
+ "postcss-minify-selectors": "^4.0.2",
+ "postcss-normalize-charset": "^4.0.1",
+ "postcss-normalize-display-values": "^4.0.2",
+ "postcss-normalize-positions": "^4.0.2",
+ "postcss-normalize-repeat-style": "^4.0.2",
+ "postcss-normalize-string": "^4.0.2",
+ "postcss-normalize-timing-functions": "^4.0.2",
+ "postcss-normalize-unicode": "^4.0.1",
+ "postcss-normalize-url": "^4.0.1",
+ "postcss-normalize-whitespace": "^4.0.2",
+ "postcss-ordered-values": "^4.1.2",
+ "postcss-reduce-initial": "^4.0.3",
+ "postcss-reduce-transforms": "^4.0.2",
+ "postcss-svgo": "^4.0.3",
+ "postcss-unique-selectors": "^4.0.1"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "cssnano-util-get-arguments": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+ "integrity": "sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==",
+ "dev": true
+ },
+ "cssnano-util-get-match": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+ "integrity": "sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==",
+ "dev": true
+ },
+ "cssnano-util-raw-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+ "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "cssnano-util-same-parent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
+ "dev": true
+ },
+ "csso": {
+ "version": "3.5.1",
+ "resolved": "https://registry.npmmirror.com/csso/-/csso-3.5.1.tgz",
+ "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
+ "dev": true,
+ "requires": {
+ "css-tree": "1.0.0-alpha.29"
+ },
+ "dependencies": {
+ "css-tree": {
+ "version": "1.0.0-alpha.29",
+ "resolved": "https://registry.npmmirror.com/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
+ "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
+ "dev": true,
+ "requires": {
+ "mdn-data": "~1.1.0",
+ "source-map": "^0.5.3"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ }
+ }
+ },
+ "csstype": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.2.tgz",
+ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+ },
+ "currently-unhandled": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==",
+ "requires": {
+ "array-find-index": "^1.0.1"
+ }
+ },
+ "cyclist": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/cyclist/-/cyclist-1.0.2.tgz",
+ "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA=="
+ },
+ "d3-array": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-3.2.4.tgz",
+ "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==",
+ "requires": {
+ "internmap": "1 - 2"
+ }
+ },
+ "d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="
+ },
+ "d3-format": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/d3-format/-/d3-format-3.1.0.tgz",
+ "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA=="
+ },
+ "d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "requires": {
+ "d3-color": "1 - 3"
+ }
+ },
+ "d3-scale": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/d3-scale/-/d3-scale-4.0.2.tgz",
+ "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==",
+ "requires": {
+ "d3-array": "2.10.0 - 3",
+ "d3-format": "1 - 3",
+ "d3-interpolate": "1.2.0 - 3",
+ "d3-time": "2.1.1 - 3",
+ "d3-time-format": "2 - 4"
+ }
+ },
+ "d3-time": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/d3-time/-/d3-time-3.1.0.tgz",
+ "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==",
+ "requires": {
+ "d3-array": "2 - 3"
+ }
+ },
+ "d3-time-format": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/d3-time-format/-/d3-time-format-4.1.0.tgz",
+ "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==",
+ "requires": {
+ "d3-time": "1 - 3"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/dashdash/-/dashdash-1.14.1.tgz",
+ "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "date-fns": {
+ "version": "1.30.1",
+ "resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-1.30.1.tgz",
+ "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw=="
+ },
+ "dateformat": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/dateformat/-/dateformat-2.2.0.tgz",
+ "integrity": "sha512-GODcnWq3YGoTnygPfi02ygEiRxqUxpJwuRHjdhJYuxpcZmDq4rjBiXYmbCCzStxo176ixfLT6i4NPwQooRySnw=="
+ },
+ "dayjs": {
+ "version": "1.11.9",
+ "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.9.tgz",
+ "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA=="
+ },
+ "dcmjs": {
+ "version": "0.29.9",
+ "resolved": "https://registry.npmmirror.com/dcmjs/-/dcmjs-0.29.9.tgz",
+ "integrity": "sha512-T9jiM+8GlmPRP1rummEFKU1sFDlKfz8iaxVhD/VoJsIlMizURpR64br6kUFABEzj+2HZQmBZpNf4LtF+/6qeoQ==",
+ "requires": {
+ "@babel/runtime-corejs3": "^7.22.5",
+ "adm-zip": "^0.5.10",
+ "gl-matrix": "^3.1.0",
+ "lodash.clonedeep": "^4.5.0",
+ "loglevelnext": "^3.0.1",
+ "ndarray": "^1.0.19",
+ "pako": "^2.0.4"
+ },
+ "dependencies": {
+ "pako": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
+ "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug=="
+ }
+ }
+ },
+ "de-indent": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
+ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
+ "dev": true
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "requires": {
+ "ms": "2.1.2"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
+ }
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+ },
+ "decode-uri-component": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
+ "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
+ "dev": true
+ },
+ "deep-equal": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.1.tgz",
+ "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+ "dev": true,
+ "requires": {
+ "is-arguments": "^1.0.4",
+ "is-date-object": "^1.0.1",
+ "is-regex": "^1.0.4",
+ "object-is": "^1.0.1",
+ "object-keys": "^1.1.1",
+ "regexp.prototype.flags": "^1.2.0"
+ }
+ },
+ "deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true
+ },
+ "deepmerge": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.5.2.tgz",
+ "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
+ },
+ "default-gateway": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-6.0.3.tgz",
+ "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
+ "requires": {
+ "execa": "^5.0.0"
+ }
+ },
+ "default-user-agent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/default-user-agent/-/default-user-agent-1.0.0.tgz",
+ "integrity": "sha512-bDF7bg6OSNcSwFWPu4zYKpVkJZQYVrAANMYB8bc9Szem1D0yKdm4sa/rOCs2aC9+2GMqQ7KnwtZRvDhmLF0dXw==",
+ "requires": {
+ "os-name": "~1.0.3"
+ }
+ },
+ "defaults": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/defaults/-/defaults-1.0.4.tgz",
+ "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
+ "dev": true,
+ "requires": {
+ "clone": "^1.0.2"
+ }
+ },
+ "define-lazy-prop": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+ "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="
+ },
+ "define-properties": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.0.tgz",
+ "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
+ "requires": {
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "define-property": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz",
+ "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.2",
+ "isobject": "^3.0.1"
+ },
+ "dependencies": {
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "del": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/del/-/del-4.1.1.tgz",
+ "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "globby": "^6.1.0",
+ "is-path-cwd": "^2.0.0",
+ "is-path-in-cwd": "^2.0.0",
+ "p-map": "^2.0.0",
+ "pify": "^4.0.1",
+ "rimraf": "^2.6.3"
+ },
+ "dependencies": {
+ "globby": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-6.1.0.tgz",
+ "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==",
+ "dev": true,
+ "requires": {
+ "array-union": "^1.0.1",
+ "glob": "^7.0.3",
+ "object-assign": "^4.0.1",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+ "dev": true
+ }
+ }
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ }
+ }
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+ },
+ "delegate": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz",
+ "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ=="
+ },
+ "depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
+ },
+ "des.js": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz",
+ "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
+ },
+ "detect-gpu": {
+ "version": "5.0.37",
+ "resolved": "https://registry.npmmirror.com/detect-gpu/-/detect-gpu-5.0.37.tgz",
+ "integrity": "sha512-EraWs84faI4iskB4qvE39bevMIazEvd1RpoyGLOBesRLbiz6eMeJqqRPHjEFClfRByYZzi9IzU35rBXIO76oDw==",
+ "requires": {
+ "webgl-constants": "^1.1.1"
+ }
+ },
+ "detect-node": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz",
+ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="
+ },
+ "dicom-parser": {
+ "version": "1.8.21",
+ "resolved": "https://registry.npmmirror.com/dicom-parser/-/dicom-parser-1.8.21.tgz",
+ "integrity": "sha512-lYCweHQDsC8UFpXErPlg86Px2A8bay0HiUY+wzoG3xv5GzgqVHU3lziwSc/Gzn7VV7y2KeP072SzCviuOoU02w=="
+ },
+ "dicomedit": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmmirror.com/dicomedit/-/dicomedit-0.1.3.tgz",
+ "integrity": "sha512-A2dDWa4hMUmEGmYL+Eerx1G0f8l3Q1DG9DWBpmUxx2L9tCMrba+PMbzTFTlmTd31ya56EBasdCJOmqwRenrYHA==",
+ "requires": {
+ "antlr4": "^4.9.1",
+ "big-integer": "^1.6.48",
+ "dcmjs": "git+https://github.com/WoonchanCho/dcmjs.git#48325586d4a44254f875efec000f8f2bc3b3329c",
+ "debug": "^4.3.1",
+ "dicomedit-uuid": "^8.3.2",
+ "isomorphic-unfetch": "^3.1.0",
+ "lodash.clonedeep": "^4.5.0",
+ "pegjs": "^0.10.0",
+ "pegjs-backtrace": "^0.2.0"
+ },
+ "dependencies": {
+ "dcmjs": {
+ "version": "git+https://github.com/WoonchanCho/dcmjs.git#48325586d4a44254f875efec000f8f2bc3b3329c",
+ "from": "git+https://github.com/WoonchanCho/dcmjs.git#48325586d4a44254f875efec000f8f2bc3b3329c",
+ "requires": {
+ "@babel/polyfill": "^7.8.3",
+ "@babel/runtime": "^7.8.4",
+ "gl-matrix": "^3.1.0",
+ "jpeg-lossless-decoder-js": "^2.0.4",
+ "lodash.clonedeep": "^4.5.0",
+ "loglevelnext": "^3.0.1",
+ "ndarray": "^1.0.19"
+ }
+ }
+ }
+ },
+ "dicomedit-uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmmirror.com/dicomedit-uuid/-/dicomedit-uuid-8.3.2.tgz",
+ "integrity": "sha512-45aYYHOHY6gQEKrO/DnOgAWeo8Mvy1GdUO2DhHbBpA+Qm9WQ4wfqAxilIpSsgT5V3NbrVZwJ+nFWGtdehFFCJA=="
+ },
+ "diffie-hellman": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+ "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+ "requires": {
+ "bn.js": "^4.1.0",
+ "miller-rabin": "^4.0.0",
+ "randombytes": "^2.0.0"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ }
+ }
+ },
+ "digest-header": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz",
+ "integrity": "sha512-glXVh42vz40yZb9Cq2oMOt70FIoWiv+vxNvdKdU8CwjLad25qHM3trLxhl9bVjdr6WaslIXhWpn0NO8T/67Qjg=="
+ },
+ "dir-glob": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.2.2.tgz",
+ "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+ "requires": {
+ "path-type": "^3.0.0"
+ }
+ },
+ "dns-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/dns-equal/-/dns-equal-1.0.0.tgz",
+ "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg=="
+ },
+ "dns-packet": {
+ "version": "5.6.1",
+ "resolved": "https://registry.npmmirror.com/dns-packet/-/dns-packet-5.6.1.tgz",
+ "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==",
+ "requires": {
+ "@leichtgewicht/ip-codec": "^2.0.1"
+ }
+ },
+ "dns-txt": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/dns-txt/-/dns-txt-2.0.2.tgz",
+ "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==",
+ "dev": true,
+ "requires": {
+ "buffer-indexof": "^1.0.0"
+ }
+ },
+ "doctrine": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "dom-converter": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/dom-converter/-/dom-converter-0.2.0.tgz",
+ "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+ "dev": true,
+ "requires": {
+ "utila": "~0.4"
+ }
+ },
+ "dom-serializer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz",
+ "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ }
+ }
+ },
+ "domain-browser": {
+ "version": "4.22.0",
+ "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-4.22.0.tgz",
+ "integrity": "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw=="
+ },
+ "domelementtype": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz",
+ "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+ "dev": true
+ },
+ "domhandler": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz",
+ "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.2.0"
+ },
+ "dependencies": {
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ }
+ }
+ },
+ "domready": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmmirror.com/domready/-/domready-1.0.8.tgz",
+ "integrity": "sha512-uIzsOJUNk+AdGE9a6VDeessoMCzF8RrZvJCX/W8QtyfgdR6Uofn/MvRonih3OtCO79b2VDzDOymuiABrQ4z3XA==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz",
+ "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "0",
+ "domelementtype": "1"
+ }
+ },
+ "dot-prop": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
+ "dev": true,
+ "requires": {
+ "is-obj": "^2.0.0"
+ }
+ },
+ "dotenv": {
+ "version": "8.6.0",
+ "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-8.6.0.tgz",
+ "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==",
+ "dev": true
+ },
+ "dotenv-expand": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
+ "dev": true
+ },
+ "duplexer": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz",
+ "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
+ "dev": true
+ },
+ "duplexer2": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/duplexer2/-/duplexer2-0.1.4.tgz",
+ "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==",
+ "requires": {
+ "readable-stream": "^2.0.2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmmirror.com/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "requires": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "easings-css": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/easings-css/-/easings-css-1.0.0.tgz",
+ "integrity": "sha512-7Uq7NdazNfVtr0RNmPAys8it0zKCuaqxJStYKEl72D3j4gbvXhhaM7iWNbqhA4C94ygCye6VuyhzBRQC4szeBg=="
+ },
+ "easy-stack": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/easy-stack/-/easy-stack-1.0.1.tgz",
+ "integrity": "sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==",
+ "dev": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
+ "requires": {
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.1.0"
+ }
+ },
+ "echarts": {
+ "version": "4.9.0",
+ "resolved": "https://registry.npmmirror.com/echarts/-/echarts-4.9.0.tgz",
+ "integrity": "sha512-+ugizgtJ+KmsJyyDPxaw2Br5FqzuBnyOWwcxPKO6y0gc5caYcfnEUIlNStx02necw8jmKmTafmpHhGo4XDtEIA==",
+ "requires": {
+ "zrender": "4.3.2"
+ }
+ },
+ "ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "ejs": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmmirror.com/ejs/-/ejs-2.7.4.tgz",
+ "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
+ "dev": true
+ },
+ "electron-to-chromium": {
+ "version": "1.4.517",
+ "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.517.tgz",
+ "integrity": "sha512-Int8C3a83q7OYvVZYktVnezC7u8NvLsBDDKJmyJBeKD8N9VrEGqKh3JOCSQz6Os77KgHVbUpCi4TMYtkZvvtuQ==",
+ "dev": true
+ },
+ "elegant-spinner": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
+ "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ=="
+ },
+ "element-ui": {
+ "version": "2.15.14",
+ "resolved": "https://registry.npmmirror.com/element-ui/-/element-ui-2.15.14.tgz",
+ "integrity": "sha512-2v9fHL0ZGINotOlRIAJD5YuVB8V7WKxrE9Qy7dXhRipa035+kF7WuU/z+tEmLVPBcJ0zt8mOu1DKpWcVzBK8IA==",
+ "requires": {
+ "async-validator": "~1.8.1",
+ "babel-helper-vue-jsx-merge-props": "^2.0.0",
+ "deepmerge": "^1.2.0",
+ "normalize-wheel": "^1.0.1",
+ "resize-observer-polyfill": "^1.5.0",
+ "throttle-debounce": "^1.0.1"
+ }
+ },
+ "elliptic": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.5.4.tgz",
+ "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "requires": {
+ "bn.js": "^4.11.9",
+ "brorand": "^1.1.0",
+ "hash.js": "^1.0.0",
+ "hmac-drbg": "^1.0.1",
+ "inherits": "^2.0.4",
+ "minimalistic-assert": "^1.0.1",
+ "minimalistic-crypto-utils": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ }
+ }
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz",
+ "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q=="
+ },
+ "encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w=="
+ },
+ "end-of-stream": {
+ "version": "1.4.4",
+ "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz",
+ "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+ "requires": {
+ "once": "^1.4.0"
+ }
+ },
+ "end-or-error": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/end-or-error/-/end-or-error-1.0.1.tgz",
+ "integrity": "sha512-OclLMSug+k2A0JKuf494im25ANRBVW8qsjmwbgX7lQ8P82H21PQ1PWkoYwb9y5yMBS69BPlwtzdIFClo3+7kOQ=="
+ },
+ "enhanced-resolve": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
+ "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.5.0",
+ "tapable": "^1.0.0"
+ },
+ "dependencies": {
+ "memory-fs": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.5.0.tgz",
+ "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "entities": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz",
+ "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+ "dev": true
+ },
+ "envinfo": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmmirror.com/envinfo/-/envinfo-7.10.0.tgz",
+ "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw=="
+ },
+ "errno": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz",
+ "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
+ "dev": true,
+ "requires": {
+ "prr": "~1.0.1"
+ }
+ },
+ "error-ex": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
+ "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "requires": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "error-stack-parser": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz",
+ "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==",
+ "dev": true,
+ "requires": {
+ "stackframe": "^1.3.4"
+ }
+ },
+ "es-abstract": {
+ "version": "1.22.1",
+ "resolved": "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.1.tgz",
+ "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==",
+ "dev": true,
+ "requires": {
+ "array-buffer-byte-length": "^1.0.0",
+ "arraybuffer.prototype.slice": "^1.0.1",
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "es-set-tostringtag": "^2.0.1",
+ "es-to-primitive": "^1.2.1",
+ "function.prototype.name": "^1.1.5",
+ "get-intrinsic": "^1.2.1",
+ "get-symbol-description": "^1.0.0",
+ "globalthis": "^1.0.3",
+ "gopd": "^1.0.1",
+ "has": "^1.0.3",
+ "has-property-descriptors": "^1.0.0",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "internal-slot": "^1.0.5",
+ "is-array-buffer": "^3.0.2",
+ "is-callable": "^1.2.7",
+ "is-negative-zero": "^2.0.2",
+ "is-regex": "^1.1.4",
+ "is-shared-array-buffer": "^1.0.2",
+ "is-string": "^1.0.7",
+ "is-typed-array": "^1.1.10",
+ "is-weakref": "^1.0.2",
+ "object-inspect": "^1.12.3",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.4",
+ "regexp.prototype.flags": "^1.5.0",
+ "safe-array-concat": "^1.0.0",
+ "safe-regex-test": "^1.0.0",
+ "string.prototype.trim": "^1.2.7",
+ "string.prototype.trimend": "^1.0.6",
+ "string.prototype.trimstart": "^1.0.6",
+ "typed-array-buffer": "^1.0.0",
+ "typed-array-byte-length": "^1.0.0",
+ "typed-array-byte-offset": "^1.0.0",
+ "typed-array-length": "^1.0.4",
+ "unbox-primitive": "^1.0.2",
+ "which-typed-array": "^1.1.10"
+ }
+ },
+ "es-array-method-boxes-properly": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
+ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
+ "dev": true
+ },
+ "es-set-tostringtag": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
+ "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.1.3",
+ "has": "^1.0.3",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
+ "escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg=="
+ },
+ "eslint": {
+ "version": "6.8.0",
+ "resolved": "https://registry.npmmirror.com/eslint/-/eslint-6.8.0.tgz",
+ "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "ajv": "^6.10.0",
+ "chalk": "^2.1.0",
+ "cross-spawn": "^6.0.5",
+ "debug": "^4.0.1",
+ "doctrine": "^3.0.0",
+ "eslint-scope": "^5.0.0",
+ "eslint-utils": "^1.4.3",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.1.2",
+ "esquery": "^1.0.1",
+ "esutils": "^2.0.2",
+ "file-entry-cache": "^5.0.1",
+ "functional-red-black-tree": "^1.0.1",
+ "glob-parent": "^5.0.0",
+ "globals": "^12.1.0",
+ "ignore": "^4.0.6",
+ "import-fresh": "^3.0.0",
+ "imurmurhash": "^0.1.4",
+ "inquirer": "^7.0.0",
+ "is-glob": "^4.0.0",
+ "js-yaml": "^3.13.1",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "levn": "^0.3.0",
+ "lodash": "^4.17.14",
+ "minimatch": "^3.0.4",
+ "mkdirp": "^0.5.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.8.3",
+ "progress": "^2.0.0",
+ "regexpp": "^2.0.1",
+ "semver": "^6.1.2",
+ "strip-ansi": "^5.2.0",
+ "strip-json-comments": "^3.0.1",
+ "table": "^5.2.3",
+ "text-table": "^0.2.0",
+ "v8-compile-cache": "^2.0.3"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true
+ },
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true
+ }
+ }
+ },
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "globals": {
+ "version": "12.4.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-12.4.0.tgz",
+ "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.8.1"
+ }
+ },
+ "ignore": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
+ "dev": true
+ },
+ "import-fresh": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz",
+ "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
+ "dev": true,
+ "requires": {
+ "parent-module": "^1.0.0",
+ "resolve-from": "^4.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "resolve-from": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "dev": true
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "eslint-loader": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/eslint-loader/-/eslint-loader-2.2.1.tgz",
+ "integrity": "sha512-RLgV9hoCVsMLvOxCuNjdqOrUqIj9oJg8hF44vzJaYqsAHuY9G2YAeN3joQ9nxP0p5Th9iFSIpKo+SD8KISxXRg==",
+ "dev": true,
+ "requires": {
+ "loader-fs-cache": "^1.0.0",
+ "loader-utils": "^1.0.2",
+ "object-assign": "^4.0.1",
+ "object-hash": "^1.1.4",
+ "rimraf": "^2.6.1"
+ }
+ },
+ "eslint-plugin-vue": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz",
+ "integrity": "sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ==",
+ "dev": true,
+ "requires": {
+ "natural-compare": "^1.4.0",
+ "semver": "^5.6.0",
+ "vue-eslint-parser": "^7.0.0"
+ }
+ },
+ "eslint-scope": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.1.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "eslint-utils": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-1.4.3.tgz",
+ "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+ "dev": true,
+ "requires": {
+ "eslint-visitor-keys": "^1.1.0"
+ }
+ },
+ "eslint-visitor-keys": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+ "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+ "dev": true
+ },
+ "espree": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmmirror.com/espree/-/espree-6.2.1.tgz",
+ "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-jsx": "^5.2.0",
+ "eslint-visitor-keys": "^1.1.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ }
+ }
+ },
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="
+ },
+ "esquery": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz",
+ "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.1.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ }
+ }
+ },
+ "esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "requires": {
+ "estraverse": "^5.2.0"
+ },
+ "dependencies": {
+ "estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true
+ }
+ }
+ },
+ "estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true
+ },
+ "esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="
+ },
+ "etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
+ },
+ "event-pubsub": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/event-pubsub/-/event-pubsub-4.3.0.tgz",
+ "integrity": "sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==",
+ "dev": true
+ },
+ "event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
+ },
+ "eventemitter3": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+ "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="
+ },
+ "events": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/events/-/events-3.3.0.tgz",
+ "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
+ },
+ "eventsource": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-1.1.2.tgz",
+ "integrity": "sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA=="
+ },
+ "evp_bytestokey": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+ "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+ "requires": {
+ "md5.js": "^1.3.4",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "exceljs": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.3.0.tgz",
+ "integrity": "sha512-hTAeo5b5TPvf8Z02I2sKIT4kSfCnOO2bCxYX8ABqODCdAjppI3gI9VYiGCQQYVcBaBSKlFDMKlAQRqC+kV9O8w==",
+ "requires": {
+ "archiver": "^5.0.0",
+ "dayjs": "^1.8.34",
+ "fast-csv": "^4.3.1",
+ "jszip": "^3.5.0",
+ "readable-stream": "^3.6.0",
+ "saxes": "^5.0.1",
+ "tmp": "^0.2.0",
+ "unzipper": "^0.10.11",
+ "uuid": "^8.3.0"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+ }
+ }
+ },
+ "execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "requires": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ }
+ },
+ "exit-on-epipe": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+ "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+ "dev": true
+ },
+ "expand-brackets": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.3.3",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "posix-character-classes": "^0.1.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ }
+ }
+ },
+ "express": {
+ "version": "4.18.2",
+ "resolved": "https://registry.npmmirror.com/express/-/express-4.18.2.tgz",
+ "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "requires": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.1",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.5.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "dependencies": {
+ "array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
+ }
+ }
+ },
+ "extend": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz",
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+ },
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ },
+ "external-editor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/external-editor/-/external-editor-3.1.0.tgz",
+ "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
+ "dev": true,
+ "requires": {
+ "chardet": "^0.7.0",
+ "iconv-lite": "^0.4.24",
+ "tmp": "^0.0.33"
+ },
+ "dependencies": {
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
+ }
+ },
+ "extglob": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz",
+ "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+ "dev": true,
+ "requires": {
+ "array-unique": "^0.3.2",
+ "define-property": "^1.0.0",
+ "expand-brackets": "^2.1.4",
+ "extend-shallow": "^2.0.1",
+ "fragment-cache": "^0.2.1",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "extsprintf": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/extsprintf/-/extsprintf-1.3.0.tgz",
+ "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g=="
+ },
+ "fast-csv": {
+ "version": "4.3.6",
+ "resolved": "https://registry.npmmirror.com/fast-csv/-/fast-csv-4.3.6.tgz",
+ "integrity": "sha512-2RNSpuwwsJGP0frGsOmTb9oUF+VkFSM4SyLTDgwf2ciHWTarN0lQTC+F2f/t5J9QjW+c65VFIAAu85GsvMIusw==",
+ "requires": {
+ "@fast-csv/format": "4.3.5",
+ "@fast-csv/parse": "4.3.6"
+ }
+ },
+ "fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+ },
+ "fast-glob": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.1.tgz",
+ "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
+ "requires": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ }
+ },
+ "fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
+ },
+ "fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true
+ },
+ "fastest-levenshtein": {
+ "version": "1.0.16",
+ "resolved": "https://registry.npmmirror.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
+ "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg=="
+ },
+ "fastq": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.15.0.tgz",
+ "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
+ "requires": {
+ "reusify": "^1.0.4"
+ }
+ },
+ "faye-websocket": {
+ "version": "0.11.4",
+ "resolved": "https://registry.npmmirror.com/faye-websocket/-/faye-websocket-0.11.4.tgz",
+ "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==",
+ "requires": {
+ "websocket-driver": ">=0.5.1"
+ }
+ },
+ "fetch-cookie": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmmirror.com/fetch-cookie/-/fetch-cookie-0.11.0.tgz",
+ "integrity": "sha512-BQm7iZLFhMWFy5CZ/162sAGjBfdNWb7a8LEqqnzsHFhxT/X/SVj/z2t2nu3aJvjlbQkrAlTUApplPRjWyH4mhA==",
+ "requires": {
+ "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0"
+ }
+ },
+ "fflate": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.7.3.tgz",
+ "integrity": "sha512-0Zz1jOzJWERhyhsimS54VTqOteCNwRtIlh8isdL0AXLo0g7xNTfTL7oWrkmCnPhZGocKIkWHBistBrrpoNH3aw=="
+ },
+ "figgy-pudding": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmmirror.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
+ "dev": true
+ },
+ "figures": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/figures/-/figures-1.7.0.tgz",
+ "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
+ "requires": {
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
+ }
+ },
+ "file-entry-cache": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+ "dev": true,
+ "requires": {
+ "flat-cache": "^2.0.1"
+ }
+ },
+ "file-loader": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/file-loader/-/file-loader-4.3.0.tgz",
+ "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "schema-utils": "^2.5.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ }
+ }
+ }
+ },
+ "file-saver": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz",
+ "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA=="
+ },
+ "filesize": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmmirror.com/filesize/-/filesize-3.6.1.tgz",
+ "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==",
+ "dev": true
+ },
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "requires": {
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "filter-obj": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-2.0.2.tgz",
+ "integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg=="
+ },
+ "finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "requires": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
+ }
+ }
+ },
+ "find-cache-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-1.0.0.tgz",
+ "integrity": "sha512-46TFiBOzX7xq/PcSWfFwkyjpemdRnMe31UQF+os0y+1W3k95f6R4SEt02Hj4p3X0Mir9gfrkmOtshFidS0VPUg==",
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^1.0.0",
+ "pkg-dir": "^2.0.0"
+ }
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz",
+ "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
+ "requires": {
+ "locate-path": "^2.0.0"
+ }
+ },
+ "flat-cache": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/flat-cache/-/flat-cache-2.0.1.tgz",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+ "dev": true,
+ "requires": {
+ "flatted": "^2.0.0",
+ "rimraf": "2.6.3",
+ "write": "1.0.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.6.3",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz",
+ "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "flatted": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/flatted/-/flatted-2.0.2.tgz",
+ "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+ "dev": true
+ },
+ "flush-write-stream": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+ "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.3.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "follow-redirects": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.5.10.tgz",
+ "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+ "requires": {
+ "debug": "=3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.1.0.tgz",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ }
+ }
+ },
+ "for-each": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz",
+ "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+ "requires": {
+ "is-callable": "^1.1.3"
+ }
+ },
+ "for-in": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz",
+ "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/forever-agent/-/forever-agent-0.6.1.tgz",
+ "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw=="
+ },
+ "form-data": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/form-data/-/form-data-2.3.3.tgz",
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.6",
+ "mime-types": "^2.1.12"
+ }
+ },
+ "formstream": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/formstream/-/formstream-1.3.1.tgz",
+ "integrity": "sha512-FkW++ub+VbE5dpwukJVDizNWhSgp8FhmhI65pF7BZSVStBqe6Wgxe2Z9/Vhsn7l7nXCPwP+G1cyYlX8VwWOf0g==",
+ "requires": {
+ "destroy": "^1.0.4",
+ "mime": "^2.5.2",
+ "pause-stream": "~0.0.11"
+ }
+ },
+ "forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
+ },
+ "frac": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+ "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+ "dev": true
+ },
+ "fragment-cache": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
+ "dev": true,
+ "requires": {
+ "map-cache": "^0.2.2"
+ }
+ },
+ "fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmmirror.com/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="
+ },
+ "from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "fs-constants": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz",
+ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+ },
+ "fs-extra": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz",
+ "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+ "requires": {
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^4.0.0",
+ "universalify": "^0.1.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz",
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
+ }
+ }
+ },
+ "fs-monkey": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/fs-monkey/-/fs-monkey-1.0.4.tgz",
+ "integrity": "sha512-INM/fWAxMICjttnD0DX1rBvinKskj5G1w+oy/pnm9u/tSlnBrzFonJMcalKJ30P8RRsPzKcCG7Q8l0jx5Fh9YQ=="
+ },
+ "fs-write-stream-atomic": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "iferr": "^0.1.5",
+ "imurmurhash": "^0.1.4",
+ "readable-stream": "1 || 2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
+ },
+ "fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "optional": true
+ },
+ "fstream": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/fstream/-/fstream-1.0.12.tgz",
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "inherits": "~2.0.0",
+ "mkdirp": ">=0.5 0",
+ "rimraf": "2"
+ }
+ },
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+ },
+ "function.prototype.name": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz",
+ "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "functions-have-names": "^1.2.3"
+ }
+ },
+ "functional-red-black-tree": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
+ "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
+ "dev": true
+ },
+ "functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true
+ },
+ "fuzzysearch": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/fuzzysearch/-/fuzzysearch-1.0.3.tgz",
+ "integrity": "sha512-s+kNWQuI3mo9OALw0HJ6YGmMbLqEufCh2nX/zzV5CrICQ/y4AwPxM+6TIiF9ItFCHXFCyM/BfCCmN57NTIJuPg=="
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmmirror.com/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ }
+ },
+ "gaze": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/gaze/-/gaze-1.1.3.tgz",
+ "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
+ "requires": {
+ "globule": "^1.0.0"
+ }
+ },
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true
+ },
+ "get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+ },
+ "get-intrinsic": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
+ "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
+ "requires": {
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3"
+ }
+ },
+ "get-ready": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz",
+ "integrity": "sha512-mFXCZPJIlcYcth+N8267+mghfYN9h3EhsDa6JSnbA3Wrhh/XFpuowviFcsDeYZtKspQyWyJqfs4O6P8CHeTwzw=="
+ },
+ "get-stdin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz",
+ "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw=="
+ },
+ "get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
+ },
+ "get-symbol-description": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
+ "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "get-value": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz",
+ "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
+ "dev": true
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmmirror.com/getpass/-/getpass-0.1.7.tgz",
+ "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
+ "requires": {
+ "assert-plus": "^1.0.0"
+ }
+ },
+ "gl-matrix": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmmirror.com/gl-matrix/-/gl-matrix-3.4.3.tgz",
+ "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA=="
+ },
+ "glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "glob-to-regexp": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
+ "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
+ "dev": true
+ },
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmmirror.com/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
+ },
+ "globalthis": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz",
+ "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
+ "requires": {
+ "define-properties": "^1.1.3"
+ }
+ },
+ "globby": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-7.1.1.tgz",
+ "integrity": "sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==",
+ "requires": {
+ "array-union": "^1.0.1",
+ "dir-glob": "^2.0.0",
+ "glob": "^7.1.2",
+ "ignore": "^3.3.5",
+ "pify": "^3.0.0",
+ "slash": "^1.0.0"
+ }
+ },
+ "globule": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmmirror.com/globule/-/globule-1.3.4.tgz",
+ "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==",
+ "requires": {
+ "glob": "~7.1.1",
+ "lodash": "^4.17.21",
+ "minimatch": "~3.0.2"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.7",
+ "resolved": "https://registry.npmmirror.com/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.0.8.tgz",
+ "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
+ "good-listener": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz",
+ "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==",
+ "requires": {
+ "delegate": "^3.1.2"
+ }
+ },
+ "gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "requires": {
+ "get-intrinsic": "^1.1.3"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
+ },
+ "gzip-size": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/gzip-size/-/gzip-size-5.1.1.tgz",
+ "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==",
+ "dev": true,
+ "requires": {
+ "duplexer": "^0.1.1",
+ "pify": "^4.0.1"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ }
+ }
+ },
+ "hammerjs": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmmirror.com/hammerjs/-/hammerjs-2.0.8.tgz",
+ "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ=="
+ },
+ "handle-thing": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/handle-thing/-/handle-thing-2.0.1.tgz",
+ "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg=="
+ },
+ "har-schema": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/har-schema/-/har-schema-2.0.0.tgz",
+ "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q=="
+ },
+ "har-validator": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmmirror.com/har-validator/-/har-validator-5.1.5.tgz",
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
+ "requires": {
+ "ajv": "^6.12.3",
+ "har-schema": "^2.0.0"
+ }
+ },
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
+ "has-ansi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz",
+ "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "has-bigints": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz",
+ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
+ "dev": true
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw=="
+ },
+ "has-property-descriptors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
+ "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
+ "requires": {
+ "get-intrinsic": "^1.1.1"
+ }
+ },
+ "has-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
+ "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
+ },
+ "has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
+ },
+ "has-tostringtag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
+ "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ=="
+ },
+ "has-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz",
+ "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.6",
+ "has-values": "^1.0.0",
+ "isobject": "^3.0.0"
+ }
+ },
+ "has-values": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz",
+ "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz",
+ "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "hash-base": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.1.0.tgz",
+ "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+ "requires": {
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "safe-buffer": "^5.2.0"
+ }
+ },
+ "hash-sum": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz",
+ "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
+ "dev": true
+ },
+ "hash.js": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz",
+ "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "minimalistic-assert": "^1.0.1"
+ }
+ },
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+ "dev": true
+ },
+ "hex-color-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+ "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
+ "dev": true
+ },
+ "highlight.js": {
+ "version": "10.7.3",
+ "resolved": "https://registry.npmmirror.com/highlight.js/-/highlight.js-10.7.3.tgz",
+ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
+ "dev": true
+ },
+ "hmac-drbg": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+ "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==",
+ "requires": {
+ "hash.js": "^1.0.3",
+ "minimalistic-assert": "^1.0.0",
+ "minimalistic-crypto-utils": "^1.0.1"
+ }
+ },
+ "hoopy": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/hoopy/-/hoopy-0.1.4.tgz",
+ "integrity": "sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==",
+ "dev": true
+ },
+ "hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw=="
+ },
+ "hpack.js": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmmirror.com/hpack.js/-/hpack.js-2.1.6.tgz",
+ "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "obuf": "^1.0.0",
+ "readable-stream": "^2.0.1",
+ "wbuf": "^1.1.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "hsl-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/hsl-regex/-/hsl-regex-1.0.0.tgz",
+ "integrity": "sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==",
+ "dev": true
+ },
+ "hsla-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/hsla-regex/-/hsla-regex-1.0.0.tgz",
+ "integrity": "sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==",
+ "dev": true
+ },
+ "html-entities": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.4.0.tgz",
+ "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ=="
+ },
+ "html-minifier": {
+ "version": "3.5.21",
+ "resolved": "https://registry.npmmirror.com/html-minifier/-/html-minifier-3.5.21.tgz",
+ "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+ "dev": true,
+ "requires": {
+ "camel-case": "3.0.x",
+ "clean-css": "4.2.x",
+ "commander": "2.17.x",
+ "he": "1.2.x",
+ "param-case": "2.1.x",
+ "relateurl": "0.2.x",
+ "uglify-js": "3.4.x"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.17.1",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz",
+ "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+ "dev": true
+ }
+ }
+ },
+ "html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
+ "dev": true
+ },
+ "html-webpack-plugin": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+ "integrity": "sha512-Br4ifmjQojUP4EmHnRBoUIYcZ9J7M4bTMcm7u6xoIAIuq2Nte4TzXX0533owvkQKQD1WeMTTTyD4Ni4QKxS0Bg==",
+ "dev": true,
+ "requires": {
+ "html-minifier": "^3.2.3",
+ "loader-utils": "^0.2.16",
+ "lodash": "^4.17.3",
+ "pretty-error": "^2.0.2",
+ "tapable": "^1.0.0",
+ "toposort": "^1.0.0",
+ "util.promisify": "1.0.0"
+ },
+ "dependencies": {
+ "big.js": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/big.js/-/big.js-3.2.0.tgz",
+ "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+ "dev": true
+ },
+ "emojis-list": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/emojis-list/-/emojis-list-2.1.0.tgz",
+ "integrity": "sha512-knHEZMgs8BB+MInokmNTg/OyPlAddghe1YBgNwJBc5zsJi/uyIcXoSDsL/W9ymOsBoBGdPIHXYJ9+qKFwRwDng==",
+ "dev": true
+ },
+ "json5": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz",
+ "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-0.2.17.tgz",
+ "integrity": "sha512-tiv66G0SmiOx+pLWMtGEkfSEejxvb6N6uRrQjfWJIT79W9GMpgKeCAmm9aVBKtd4WEgntciI8CsGqjpDoCWJug==",
+ "dev": true,
+ "requires": {
+ "big.js": "^3.1.3",
+ "emojis-list": "^2.0.0",
+ "json5": "^0.5.0",
+ "object-assign": "^4.0.1"
+ }
+ },
+ "util.promisify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.0.tgz",
+ "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "object.getownpropertydescriptors": "^2.0.3"
+ }
+ }
+ }
+ },
+ "htmlparser2": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-6.1.0.tgz",
+ "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.0.0",
+ "domutils": "^2.5.2",
+ "entities": "^2.0.0"
+ },
+ "dependencies": {
+ "dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ }
+ }
+ },
+ "http-deceiver": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw=="
+ },
+ "http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "requires": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "dependencies": {
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
+ }
+ }
+ },
+ "http-parser-js": {
+ "version": "0.5.8",
+ "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz",
+ "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q=="
+ },
+ "http-proxy": {
+ "version": "1.18.1",
+ "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+ "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+ "requires": {
+ "eventemitter3": "^4.0.0",
+ "follow-redirects": "^1.0.0",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "http-proxy-middleware": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
+ "requires": {
+ "@types/http-proxy": "^1.17.8",
+ "http-proxy": "^1.18.1",
+ "is-glob": "^4.0.1",
+ "is-plain-obj": "^3.0.0",
+ "micromatch": "^4.0.2"
+ }
+ },
+ "http-signature": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/http-signature/-/http-signature-1.2.0.tgz",
+ "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "jsprim": "^1.2.2",
+ "sshpk": "^1.7.0"
+ }
+ },
+ "https-browserify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/https-browserify/-/https-browserify-1.0.0.tgz",
+ "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg=="
+ },
+ "human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
+ },
+ "humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "requires": {
+ "ms": "^2.0.0"
+ }
+ },
+ "iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "requires": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ }
+ },
+ "icss-utils": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/icss-utils/-/icss-utils-4.1.1.tgz",
+ "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.14"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+ },
+ "iferr": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmmirror.com/iferr/-/iferr-0.1.5.tgz",
+ "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA=="
+ },
+ "ignore": {
+ "version": "3.3.10",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug=="
+ },
+ "image-size": {
+ "version": "0.5.5",
+ "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz",
+ "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
+ "dev": true
+ },
+ "immediate": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmmirror.com/immediate/-/immediate-3.0.6.tgz",
+ "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
+ },
+ "import-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/import-cwd/-/import-cwd-2.1.0.tgz",
+ "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==",
+ "dev": true,
+ "requires": {
+ "import-from": "^2.1.0"
+ }
+ },
+ "import-fresh": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-2.0.0.tgz",
+ "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
+ "dev": true,
+ "requires": {
+ "caller-path": "^2.0.0",
+ "resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "dev": true
+ }
+ }
+ },
+ "import-from": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/import-from/-/import-from-2.1.0.tgz",
+ "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==",
+ "dev": true,
+ "requires": {
+ "resolve-from": "^3.0.0"
+ },
+ "dependencies": {
+ "resolve-from": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-3.0.0.tgz",
+ "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
+ "dev": true
+ }
+ }
+ },
+ "import-local": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/import-local/-/import-local-3.1.0.tgz",
+ "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==",
+ "requires": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+ },
+ "pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "requires": {
+ "find-up": "^4.0.0"
+ }
+ }
+ }
+ },
+ "imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="
+ },
+ "in-publish": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/in-publish/-/in-publish-2.0.1.tgz",
+ "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ=="
+ },
+ "indent-string": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-3.2.0.tgz",
+ "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ=="
+ },
+ "indexes-of": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/indexes-of/-/indexes-of-1.0.1.tgz",
+ "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==",
+ "dev": true
+ },
+ "infer-owner": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/infer-owner/-/infer-owner-1.0.4.tgz",
+ "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+ "dev": true
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "requires": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "inquirer": {
+ "version": "7.3.3",
+ "resolved": "https://registry.npmmirror.com/inquirer/-/inquirer-7.3.3.tgz",
+ "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.2.1",
+ "chalk": "^4.1.0",
+ "cli-cursor": "^3.1.0",
+ "cli-width": "^3.0.0",
+ "external-editor": "^3.0.3",
+ "figures": "^3.0.0",
+ "lodash": "^4.17.19",
+ "mute-stream": "0.0.8",
+ "run-async": "^2.4.0",
+ "rxjs": "^6.6.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.21.3"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
+ "dev": true
+ }
+ }
+ },
+ "internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "dev": true,
+ "requires": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz",
+ "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "dev": true,
+ "requires": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "default-gateway": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/default-gateway/-/default-gateway-4.2.0.tgz",
+ "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+ "dev": true,
+ "requires": {
+ "execa": "^1.0.0",
+ "ip-regex": "^2.1.0"
+ }
+ },
+ "execa": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-1.0.0.tgz",
+ "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^6.0.0",
+ "get-stream": "^4.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz",
+ "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "internal-slot": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.5.tgz",
+ "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
+ "dev": true,
+ "requires": {
+ "get-intrinsic": "^1.2.0",
+ "has": "^1.0.3",
+ "side-channel": "^1.0.4"
+ }
+ },
+ "internmap": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/internmap/-/internmap-2.0.3.tgz",
+ "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA=="
+ },
+ "invariant": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmmirror.com/invariant/-/invariant-2.2.4.tgz",
+ "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "requires": {
+ "loose-envify": "^1.0.0"
+ }
+ },
+ "iota-array": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/iota-array/-/iota-array-1.0.0.tgz",
+ "integrity": "sha512-pZ2xT+LOHckCatGQ3DcG/a+QuEqvoxqkiL7tvE8nn3uuu+f6i1TtpB5/FtWFbxUuVr5PZCx8KskuGatbJDXOWA=="
+ },
+ "ip": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmmirror.com/ip/-/ip-1.1.8.tgz",
+ "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg=="
+ },
+ "ip-regex": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/ip-regex/-/ip-regex-2.1.0.tgz",
+ "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
+ "dev": true
+ },
+ "ipaddr.js": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz",
+ "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ=="
+ },
+ "is-absolute-url": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+ "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-arguments": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.1.1.tgz",
+ "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-array-buffer": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+ "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.0",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
+ },
+ "is-bigint": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz",
+ "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+ "dev": true,
+ "requires": {
+ "has-bigints": "^1.0.1"
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-boolean-object": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+ "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-2.0.5.tgz",
+ "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ=="
+ },
+ "is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
+ },
+ "is-ci": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz",
+ "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==",
+ "dev": true,
+ "requires": {
+ "ci-info": "^1.5.0"
+ }
+ },
+ "is-class-hotfix": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmmirror.com/is-class-hotfix/-/is-class-hotfix-0.0.6.tgz",
+ "integrity": "sha512-0n+pzCC6ICtVr/WXnN2f03TK/3BfXY7me4cjCAqT8TYXEl0+JBRoqBo94JJHXcyDSLUeWbNX8Fvy5g5RJdAstQ=="
+ },
+ "is-color-stop": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-color-stop/-/is-color-stop-1.1.0.tgz",
+ "integrity": "sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==",
+ "dev": true,
+ "requires": {
+ "css-color-names": "^0.0.4",
+ "hex-color-regex": "^1.1.0",
+ "hsl-regex": "^1.0.0",
+ "hsla-regex": "^1.0.0",
+ "rgb-regex": "^1.0.1",
+ "rgba-regex": "^1.0.0"
+ }
+ },
+ "is-core-module": {
+ "version": "2.13.0",
+ "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.0.tgz",
+ "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "is-date-object": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz",
+ "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "0.1.6",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^0.1.6",
+ "is-data-descriptor": "^0.1.4",
+ "kind-of": "^5.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ }
+ }
+ },
+ "is-directory": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/is-directory/-/is-directory-0.3.1.tgz",
+ "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
+ "dev": true
+ },
+ "is-docker": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/is-docker/-/is-docker-2.2.1.tgz",
+ "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="
+ },
+ "is-extendable": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz",
+ "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="
+ },
+ "is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
+ },
+ "is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "is-generator-function": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz",
+ "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==",
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "requires": {
+ "is-extglob": "^2.1.1"
+ }
+ },
+ "is-nan": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/is-nan/-/is-nan-1.3.2.tgz",
+ "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "is-negative-zero": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
+ "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+ },
+ "is-number-object": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz",
+ "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-obj": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
+ "dev": true
+ },
+ "is-observable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-observable/-/is-observable-1.1.0.tgz",
+ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
+ "requires": {
+ "symbol-observable": "^1.1.0"
+ }
+ },
+ "is-path-cwd": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+ "dev": true
+ },
+ "is-path-in-cwd": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+ "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+ "dev": true,
+ "requires": {
+ "is-path-inside": "^2.1.0"
+ }
+ },
+ "is-path-inside": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz",
+ "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+ "dev": true,
+ "requires": {
+ "path-is-inside": "^1.0.2"
+ }
+ },
+ "is-plain-obj": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+ "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA=="
+ },
+ "is-plain-object": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "is-promise": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmmirror.com/is-promise/-/is-promise-2.2.2.tgz",
+ "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="
+ },
+ "is-regex": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz",
+ "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-resolvable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-resolvable/-/is-resolvable-1.1.0.tgz",
+ "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+ "dev": true
+ },
+ "is-shared-array-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+ "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
+ },
+ "is-string": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz",
+ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+ "dev": true,
+ "requires": {
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "is-symbol": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz",
+ "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.2"
+ }
+ },
+ "is-type-of": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/is-type-of/-/is-type-of-1.4.0.tgz",
+ "integrity": "sha512-EddYllaovi5ysMLMEN7yzHEKh8A850cZ7pykrY1aNRQGn/CDjRDE9qEWbIdt7xGEVJmjBXzU/fNnC4ABTm8tEQ==",
+ "requires": {
+ "core-util-is": "^1.0.2",
+ "is-class-hotfix": "~0.0.6",
+ "isstream": "~0.1.2"
+ }
+ },
+ "is-typed-array": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz",
+ "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+ "requires": {
+ "which-typed-array": "^1.1.11"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA=="
+ },
+ "is-url": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz",
+ "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
+ },
+ "is-utf8": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz",
+ "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q=="
+ },
+ "is-weakref": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz",
+ "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2"
+ }
+ },
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
+ "is-wsl": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-2.2.0.tgz",
+ "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+ "requires": {
+ "is-docker": "^2.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
+ },
+ "isobject": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz",
+ "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg=="
+ },
+ "isomorphic-unfetch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz",
+ "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==",
+ "requires": {
+ "node-fetch": "^2.6.1",
+ "unfetch": "^4.2.0"
+ }
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/isstream/-/isstream-0.1.2.tgz",
+ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g=="
+ },
+ "javascript-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
+ "integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
+ "dev": true
+ },
+ "jpeg-lossless-decoder-js": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/jpeg-lossless-decoder-js/-/jpeg-lossless-decoder-js-2.0.7.tgz",
+ "integrity": "sha512-tbZlhFkKmx+JaqVMkq47SKWGuXLkIaV8fTbnhO39dYEnQrSShLGuLCGb0n6ntXjtmk6oAWGiIriWOLwj9od0yQ=="
+ },
+ "js-base64": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz",
+ "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ=="
+ },
+ "js-md5": {
+ "version": "0.7.3",
+ "resolved": "https://registry.npmmirror.com/js-md5/-/js-md5-0.7.3.tgz",
+ "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
+ },
+ "js-message": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/js-message/-/js-message-1.0.7.tgz",
+ "integrity": "sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==",
+ "dev": true
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg=="
+ },
+ "js-yaml": {
+ "version": "3.14.0",
+ "resolved": "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.0.tgz",
+ "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==",
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz",
+ "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg=="
+ },
+ "jsesc": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
+ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+ "dev": true
+ },
+ "json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true
+ },
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
+ "json-schema": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/json-schema/-/json-schema-0.4.0.tgz",
+ "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
+ },
+ "json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="
+ },
+ "json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="
+ },
+ "json5": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
+ "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+ "requires": {
+ "minimist": "^1.2.0"
+ }
+ },
+ "jsonfile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz",
+ "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+ "requires": {
+ "graceful-fs": "^4.1.6"
+ }
+ },
+ "jsprim": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/jsprim/-/jsprim-1.4.2.tgz",
+ "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.3.0",
+ "json-schema": "0.4.0",
+ "verror": "1.10.0"
+ }
+ },
+ "jstoxml": {
+ "version": "2.2.9",
+ "resolved": "https://registry.npmmirror.com/jstoxml/-/jstoxml-2.2.9.tgz",
+ "integrity": "sha512-OYWlK0j+roh+eyaMROlNbS5cd5R25Y+IUpdl7cNdB8HNrkgwQzIS7L9MegxOiWNBj9dQhA/yAxiMwCC5mwNoBw=="
+ },
+ "jszip": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmmirror.com/jszip/-/jszip-3.10.1.tgz",
+ "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
+ "requires": {
+ "lie": "~3.3.0",
+ "pako": "~1.0.2",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "^1.0.5"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "killable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/killable/-/killable-1.0.1.tgz",
+ "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="
+ },
+ "launch-editor": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/launch-editor/-/launch-editor-2.6.0.tgz",
+ "integrity": "sha512-JpDCcQnyAAzZZaZ7vEiSqL690w7dAEyLao+KC96zBplnYbJS7TYNjvM3M7y3dGz+v7aIsJk3hllWuc0kWAjyRQ==",
+ "requires": {
+ "picocolors": "^1.0.0",
+ "shell-quote": "^1.7.3"
+ }
+ },
+ "launch-editor-middleware": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/launch-editor-middleware/-/launch-editor-middleware-2.6.0.tgz",
+ "integrity": "sha512-K2yxgljj5TdCeRN1lBtO3/J26+AIDDDw+04y6VAiZbWcTdBwsYN6RrZBnW5DN/QiSIdKNjKdATLUUluWWFYTIA==",
+ "dev": true,
+ "requires": {
+ "launch-editor": "^2.6.0"
+ }
+ },
+ "lazystream": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/lazystream/-/lazystream-1.0.1.tgz",
+ "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
+ "requires": {
+ "readable-stream": "^2.0.5"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "levn": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/levn/-/levn-0.3.0.tgz",
+ "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2"
+ }
+ },
+ "lie": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/lie/-/lie-3.3.0.tgz",
+ "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+ "requires": {
+ "immediate": "~3.0.5"
+ }
+ },
+ "lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true
+ },
+ "listenercount": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/listenercount/-/listenercount-1.0.1.tgz",
+ "integrity": "sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ=="
+ },
+ "listr": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmmirror.com/listr/-/listr-0.14.3.tgz",
+ "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
+ "requires": {
+ "@samverschueren/stream-to-observable": "^0.3.0",
+ "is-observable": "^1.1.0",
+ "is-promise": "^2.1.0",
+ "is-stream": "^1.1.0",
+ "listr-silent-renderer": "^1.1.1",
+ "listr-update-renderer": "^0.5.0",
+ "listr-verbose-renderer": "^0.5.0",
+ "p-map": "^2.0.0",
+ "rxjs": "^6.3.3"
+ },
+ "dependencies": {
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+ }
+ }
+ },
+ "listr-silent-renderer": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
+ "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA=="
+ },
+ "listr-update-renderer": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
+ "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
+ "requires": {
+ "chalk": "^1.1.3",
+ "cli-truncate": "^0.2.1",
+ "elegant-spinner": "^1.0.1",
+ "figures": "^1.7.0",
+ "indent-string": "^3.0.0",
+ "log-symbols": "^1.0.2",
+ "log-update": "^2.3.0",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ }
+ }
+ },
+ "listr-verbose-renderer": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
+ "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
+ "requires": {
+ "chalk": "^2.4.1",
+ "cli-cursor": "^2.1.0",
+ "date-fns": "^1.27.2",
+ "figures": "^2.0.0"
+ },
+ "dependencies": {
+ "figures": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz",
+ "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
+ "requires": {
+ "escape-string-regexp": "^1.0.5"
+ }
+ }
+ }
+ },
+ "load-json-file": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz",
+ "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0",
+ "strip-bom": "^2.0.0"
+ },
+ "dependencies": {
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
+ }
+ }
+ },
+ "loader-fs-cache": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz",
+ "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==",
+ "dev": true,
+ "requires": {
+ "find-cache-dir": "^0.1.1",
+ "mkdirp": "^0.5.1"
+ },
+ "dependencies": {
+ "find-cache-dir": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-0.1.1.tgz",
+ "integrity": "sha512-Z9XSBoNE7xQiV6MSgPuCfyMokH2K7JdpRkOYE1+mu3d4BFJtx3GW+f6Bo4q8IX6rlf5MYbLBKW0pjl2cWdkm2A==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "mkdirp": "^0.5.1",
+ "pkg-dir": "^1.0.0"
+ }
+ },
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "dev": true,
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "dev": true,
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-1.0.0.tgz",
+ "integrity": "sha512-c6pv3OE78mcZ92ckebVDqg0aWSoKhOTbwCV6qbCWMk546mAL9pZln0+QsN/yQ7fkucd4+yJPLrCBXNt8Ruk+Eg==",
+ "dev": true,
+ "requires": {
+ "find-up": "^1.0.0"
+ }
+ }
+ }
+ },
+ "loader-runner": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/loader-runner/-/loader-runner-2.4.0.tgz",
+ "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+ "dev": true
+ },
+ "loader-utils": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
+ "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^1.0.1"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz",
+ "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.21",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
+ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+ },
+ "lodash.clonedeep": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
+ },
+ "lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true
+ },
+ "lodash.defaults": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
+ "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
+ },
+ "lodash.defaultsdeep": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmmirror.com/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz",
+ "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==",
+ "dev": true
+ },
+ "lodash.difference": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.difference/-/lodash.difference-4.5.0.tgz",
+ "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA=="
+ },
+ "lodash.escaperegexp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz",
+ "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw=="
+ },
+ "lodash.flatten": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmmirror.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
+ "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
+ },
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ=="
+ },
+ "lodash.groupby": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.groupby/-/lodash.groupby-4.6.0.tgz",
+ "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw=="
+ },
+ "lodash.isboolean": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz",
+ "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg=="
+ },
+ "lodash.isequal": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+ "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+ },
+ "lodash.isfunction": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmmirror.com/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
+ "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw=="
+ },
+ "lodash.isnil": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/lodash.isnil/-/lodash.isnil-4.0.0.tgz",
+ "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng=="
+ },
+ "lodash.isplainobject": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmmirror.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+ "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
+ },
+ "lodash.isundefined": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz",
+ "integrity": "sha512-MXB1is3s899/cD8jheYYE2V9qTHwKvt+npCwpD+1Sxm3Q3cECXCiYHjeHWXNwr6Q0SOBPrYUDxendrO6goVTEA=="
+ },
+ "lodash.kebabcase": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==",
+ "dev": true
+ },
+ "lodash.mapvalues": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz",
+ "integrity": "sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==",
+ "dev": true
+ },
+ "lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true
+ },
+ "lodash.padend": {
+ "version": "4.6.1",
+ "resolved": "https://registry.npmmirror.com/lodash.padend/-/lodash.padend-4.6.1.tgz",
+ "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==",
+ "dev": true
+ },
+ "lodash.transform": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.transform/-/lodash.transform-4.6.0.tgz",
+ "integrity": "sha512-LO37ZnhmBVx0GvOU/caQuipEh4GN82TcWv3yHlebGDgOxbxiwwzW5Pcx2AcvpIv2WmvmSMoC492yQFNhy/l/UQ==",
+ "dev": true
+ },
+ "lodash.union": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmmirror.com/lodash.union/-/lodash.union-4.6.0.tgz",
+ "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw=="
+ },
+ "lodash.uniq": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
+ },
+ "log-symbols": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-1.0.2.tgz",
+ "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==",
+ "requires": {
+ "chalk": "^1.0.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ }
+ }
+ },
+ "log-update": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/log-update/-/log-update-2.3.0.tgz",
+ "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==",
+ "requires": {
+ "ansi-escapes": "^3.0.0",
+ "cli-cursor": "^2.0.0",
+ "wrap-ansi": "^3.0.1"
+ }
+ },
+ "loglevel": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/loglevel/-/loglevel-1.8.1.tgz",
+ "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==",
+ "dev": true
+ },
+ "loglevelnext": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/loglevelnext/-/loglevelnext-3.0.1.tgz",
+ "integrity": "sha512-JpjaJhIN1reaSb26SIxDGtE0uc67gPl19OMVHrr+Ggt6b/Vy60jmCtKgQBrygAH0bhRA2nkxgDvM+8QvR8r0YA=="
+ },
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
+ "loud-rejection": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==",
+ "requires": {
+ "currently-unhandled": "^0.4.1",
+ "signal-exit": "^3.0.0"
+ }
+ },
+ "lower-case": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/lower-case/-/lower-case-1.1.4.tgz",
+ "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz",
+ "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+ "requires": {
+ "pseudomap": "^1.0.2",
+ "yallist": "^2.1.2"
+ }
+ },
+ "make-dir": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-1.3.0.tgz",
+ "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "map-cache": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz",
+ "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
+ "dev": true
+ },
+ "map-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz",
+ "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg=="
+ },
+ "map-visit": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz",
+ "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
+ "dev": true,
+ "requires": {
+ "object-visit": "^1.0.0"
+ }
+ },
+ "material-colors": {
+ "version": "1.2.6",
+ "resolved": "https://registry.npmmirror.com/material-colors/-/material-colors-1.2.6.tgz",
+ "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg=="
+ },
+ "md5.js": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz",
+ "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ }
+ },
+ "mdn-data": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/mdn-data/-/mdn-data-1.1.4.tgz",
+ "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
+ "dev": true
+ },
+ "media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
+ },
+ "memfs": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmmirror.com/memfs/-/memfs-3.5.3.tgz",
+ "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
+ "requires": {
+ "fs-monkey": "^1.0.4"
+ }
+ },
+ "memory-fs": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/memory-fs/-/memory-fs-0.4.1.tgz",
+ "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==",
+ "dev": true,
+ "requires": {
+ "errno": "^0.1.3",
+ "readable-stream": "^2.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "meow": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmmirror.com/meow/-/meow-3.7.0.tgz",
+ "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==",
+ "requires": {
+ "camelcase-keys": "^2.0.0",
+ "decamelize": "^1.1.2",
+ "loud-rejection": "^1.0.0",
+ "map-obj": "^1.0.1",
+ "minimist": "^1.1.3",
+ "normalize-package-data": "^2.3.4",
+ "object-assign": "^4.0.1",
+ "read-pkg-up": "^1.0.1",
+ "redent": "^1.0.0",
+ "trim-newlines": "^1.0.0"
+ }
+ },
+ "merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "merge-options": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz",
+ "integrity": "sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.1"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true
+ }
+ }
+ },
+ "merge-source-map": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/merge-source-map/-/merge-source-map-1.1.0.tgz",
+ "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+ "dev": true,
+ "requires": {
+ "source-map": "^0.6.1"
+ }
+ },
+ "merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
+ },
+ "merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
+ },
+ "methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
+ },
+ "microargs": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/microargs/-/microargs-1.1.2.tgz",
+ "integrity": "sha512-fUrX9ozzzUX6JlDoNXmUM5i4B0uBF5xPznZ0Y/izM9wOtAaTf44V2vUCRgGBLUq/SeGIcDgfnEZDVoT92HId0g==",
+ "dev": true
+ },
+ "microcli": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/microcli/-/microcli-1.3.3.tgz",
+ "integrity": "sha512-1isRaEBpfRC8vJMJymKknAH8CdPFABuWPVc18rlRWHOCcHLYEkJxcoH7FNkX7AuTGrB4Uf1ve6B0s/FfwzGWKg==",
+ "dev": true,
+ "requires": {
+ "lodash": "4.17.11",
+ "microargs": "1.1.2"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.11",
+ "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.11.tgz",
+ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==",
+ "dev": true
+ }
+ }
+ },
+ "micromatch": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+ "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "requires": {
+ "braces": "^3.0.2",
+ "picomatch": "^2.3.1"
+ }
+ },
+ "miller-rabin": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz",
+ "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+ "requires": {
+ "bn.js": "^4.0.0",
+ "brorand": "^1.0.1"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ }
+ }
+ },
+ "mime": {
+ "version": "2.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-2.6.0.tgz",
+ "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="
+ },
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+ },
+ "mini-css-extract-plugin": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmmirror.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
+ "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "normalize-url": "1.9.1",
+ "schema-utils": "^1.0.0",
+ "webpack-sources": "^1.1.0"
+ },
+ "dependencies": {
+ "normalize-url": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-1.9.1.tgz",
+ "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.0.1",
+ "prepend-http": "^1.0.0",
+ "query-string": "^4.1.0",
+ "sort-keys": "^1.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "minimalistic-assert": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A=="
+ },
+ "minimalistic-crypto-utils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+ "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg=="
+ },
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="
+ },
+ "minipass": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/minipass/-/minipass-3.3.6.tgz",
+ "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ },
+ "dependencies": {
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
+ }
+ },
+ "mississippi": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-2.0.0.tgz",
+ "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==",
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^2.0.1",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "mitt": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/mitt/-/mitt-1.1.2.tgz",
+ "integrity": "sha512-3btxP0O9iGADGWAkteQ8mzDtEspZqu4I32y4GZYCV5BrwtzdcRpF4dQgNdJadCrbBx7Lu6Sq9AVrerMHR0Hkmw==",
+ "dev": true
+ },
+ "mixin-deep": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+ "dev": true,
+ "requires": {
+ "for-in": "^1.0.2",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "requires": {
+ "minimist": "^1.2.6"
+ }
+ },
+ "moment": {
+ "version": "2.29.4",
+ "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz",
+ "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
+ },
+ "move-concurrently": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
+ "requires": {
+ "aproba": "^1.1.1",
+ "copy-concurrently": "^1.0.0",
+ "fs-write-stream-atomic": "^1.0.8",
+ "mkdirp": "^0.5.1",
+ "rimraf": "^2.5.4",
+ "run-queue": "^1.0.3"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "multicast-dns": {
+ "version": "7.2.5",
+ "resolved": "https://registry.npmmirror.com/multicast-dns/-/multicast-dns-7.2.5.tgz",
+ "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==",
+ "requires": {
+ "dns-packet": "^5.2.2",
+ "thunky": "^1.0.2"
+ }
+ },
+ "multicast-dns-service-types": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==",
+ "dev": true
+ },
+ "mute-stream": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmmirror.com/mute-stream/-/mute-stream-0.0.8.tgz",
+ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
+ "dev": true
+ },
+ "mz": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmmirror.com/mz/-/mz-2.7.0.tgz",
+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
+ "requires": {
+ "any-promise": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "thenify-all": "^1.0.0"
+ }
+ },
+ "nan": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmmirror.com/nan/-/nan-2.18.0.tgz",
+ "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w=="
+ },
+ "nanoid": {
+ "version": "3.3.6",
+ "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz",
+ "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA=="
+ },
+ "nanomatch": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz",
+ "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "fragment-cache": "^0.2.1",
+ "is-windows": "^1.0.2",
+ "kind-of": "^6.0.2",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true
+ },
+ "ndarray": {
+ "version": "1.0.19",
+ "resolved": "https://registry.npmmirror.com/ndarray/-/ndarray-1.0.19.tgz",
+ "integrity": "sha512-B4JHA4vdyZU30ELBw3g7/p9bZupyew5a7tX1Y/gGeF2hafrPaQZhgrGQfsvgfYbgdFZjYwuEcnaobeM/WMW+HQ==",
+ "requires": {
+ "iota-array": "^1.0.0",
+ "is-buffer": "^1.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
+ }
+ }
+ },
+ "negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
+ },
+ "neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
+ },
+ "nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true
+ },
+ "no-case": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/no-case/-/no-case-2.3.2.tgz",
+ "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+ "dev": true,
+ "requires": {
+ "lower-case": "^1.1.1"
+ }
+ },
+ "node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "requires": {
+ "whatwg-url": "^5.0.0"
+ }
+ },
+ "node-forge": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/node-forge/-/node-forge-1.3.1.tgz",
+ "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="
+ },
+ "node-gyp": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmmirror.com/node-gyp/-/node-gyp-3.8.0.tgz",
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
+ "requires": {
+ "fstream": "^1.0.0",
+ "glob": "^7.0.3",
+ "graceful-fs": "^4.1.2",
+ "mkdirp": "^0.5.0",
+ "nopt": "2 || 3",
+ "npmlog": "0 || 1 || 2 || 3 || 4",
+ "osenv": "0",
+ "request": "^2.87.0",
+ "rimraf": "2",
+ "semver": "~5.3.0",
+ "tar": "^2.0.0",
+ "which": "1"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.3.0.tgz",
+ "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw=="
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ },
+ "dependencies": {
+ "assert": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/assert/-/assert-1.5.1.tgz",
+ "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==",
+ "dev": true,
+ "requires": {
+ "object.assign": "^4.1.4",
+ "util": "^0.10.4"
+ },
+ "dependencies": {
+ "util": {
+ "version": "0.10.4",
+ "resolved": "https://registry.npmmirror.com/util/-/util-0.10.4.tgz",
+ "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ }
+ }
+ },
+ "buffer": {
+ "version": "4.9.2",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-4.9.2.tgz",
+ "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.0.2",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ }
+ },
+ "domain-browser": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/domain-browser/-/domain-browser-1.2.0.tgz",
+ "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+ "dev": true
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-0.0.1.tgz",
+ "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ },
+ "dependencies": {
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true
+ },
+ "stream-browserify": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-2.0.2.tgz",
+ "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+ "dev": true,
+ "requires": {
+ "inherits": "~2.0.1",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "tty-browserify": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.0.tgz",
+ "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmmirror.com/util/-/util-0.11.1.tgz",
+ "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ }
+ }
+ },
+ "node-polyfill-webpack-plugin": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/node-polyfill-webpack-plugin/-/node-polyfill-webpack-plugin-2.0.1.tgz",
+ "integrity": "sha512-ZUMiCnZkP1LF0Th2caY6J/eKKoA0TefpoVa68m/LQU1I/mE8rGt4fNYGgNuCcK+aG8P8P43nbeJ2RqJMOL/Y1A==",
+ "requires": {
+ "assert": "^2.0.0",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^6.0.3",
+ "console-browserify": "^1.2.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.12.0",
+ "domain-browser": "^4.22.0",
+ "events": "^3.3.0",
+ "filter-obj": "^2.0.2",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "^1.0.1",
+ "process": "^0.11.10",
+ "punycode": "^2.1.1",
+ "querystring-es3": "^0.2.1",
+ "readable-stream": "^4.0.0",
+ "stream-browserify": "^3.0.0",
+ "stream-http": "^3.2.0",
+ "string_decoder": "^1.3.0",
+ "timers-browserify": "^2.0.12",
+ "tty-browserify": "^0.0.1",
+ "type-fest": "^2.14.0",
+ "url": "^0.11.0",
+ "util": "^0.12.4",
+ "vm-browserify": "^1.1.2"
+ },
+ "dependencies": {
+ "buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "readable-stream": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-4.4.2.tgz",
+ "integrity": "sha512-Lk/fICSyIhodxy1IDK2HazkeGjSmezAWX2egdtJnYhtzKEsBPJowlI6F6LPb5tqIQILrMbx22S5o3GuJavPusA==",
+ "requires": {
+ "abort-controller": "^3.0.0",
+ "buffer": "^6.0.3",
+ "events": "^3.3.0",
+ "process": "^0.11.10",
+ "string_decoder": "^1.3.0"
+ }
+ },
+ "stream-http": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-3.2.0.tgz",
+ "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==",
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.6.0",
+ "xtend": "^4.0.2"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ }
+ }
+ }
+ }
+ },
+ "node-releases": {
+ "version": "2.0.13",
+ "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz",
+ "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==",
+ "dev": true
+ },
+ "node-sass": {
+ "version": "4.14.1",
+ "resolved": "https://registry.npmmirror.com/node-sass/-/node-sass-4.14.1.tgz",
+ "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==",
+ "requires": {
+ "async-foreach": "^0.1.3",
+ "chalk": "^1.1.1",
+ "cross-spawn": "^3.0.0",
+ "gaze": "^1.0.0",
+ "get-stdin": "^4.0.1",
+ "glob": "^7.0.3",
+ "in-publish": "^2.0.0",
+ "lodash": "^4.17.15",
+ "meow": "^3.7.0",
+ "mkdirp": "^0.5.1",
+ "nan": "^2.13.2",
+ "node-gyp": "^3.8.0",
+ "npmlog": "^4.0.0",
+ "request": "^2.88.0",
+ "sass-graph": "2.2.5",
+ "stdout-stream": "^1.4.0",
+ "true-case-path": "^1.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "cross-spawn": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-3.0.1.tgz",
+ "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==",
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "which": "^1.2.9"
+ }
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "node-xlsx": {
+ "version": "0.21.2",
+ "resolved": "https://registry.npmmirror.com/node-xlsx/-/node-xlsx-0.21.2.tgz",
+ "integrity": "sha512-Hx/AQ+IEoNgiq8rjEOPtvv3F+KZ5iHZLmEO5Cf7oB6mrpzXsaLNTQvyZvJ3sEOMQ2HfGXwyks18ZVTI6+WmuQA==",
+ "dev": true,
+ "requires": {
+ "xlsx": "^0.17.4"
+ }
+ },
+ "nopt": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmmirror.com/nopt/-/nopt-3.0.6.tgz",
+ "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
+ "requires": {
+ "abbrev": "1"
+ }
+ },
+ "normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "requires": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
+ },
+ "normalize-range": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz",
+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/normalize-url/-/normalize-url-3.3.0.tgz",
+ "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+ "dev": true
+ },
+ "normalize-wheel": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+ "integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
+ },
+ "normalize.css": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize.css/-/normalize.css-7.0.0.tgz",
+ "integrity": "sha512-LYaFZxj2Q1Q9e1VJ0f6laG46Rt5s9URhKyckNaA2vZnL/0gwQHWhM7ALQkp3WBQKM5sXRLQ5Ehrfkp+E/ZiCRg=="
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
+ "nprogress": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz",
+ "integrity": "sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA=="
+ },
+ "nth-check": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-1.0.2.tgz",
+ "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+ "dev": true,
+ "requires": {
+ "boolbase": "~1.0.0"
+ }
+ },
+ "num2fraction": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/num2fraction/-/num2fraction-1.2.2.tgz",
+ "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
+ "dev": true
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ=="
+ },
+ "oauth-sign": {
+ "version": "0.9.0",
+ "resolved": "https://registry.npmmirror.com/oauth-sign/-/oauth-sign-0.9.0.tgz",
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="
+ },
+ "object-copy": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz",
+ "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
+ "dev": true,
+ "requires": {
+ "copy-descriptor": "^0.1.0",
+ "define-property": "^0.2.5",
+ "kind-of": "^3.0.3"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "object-hash": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-1.3.1.tgz",
+ "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==",
+ "dev": true
+ },
+ "object-inspect": {
+ "version": "1.12.3",
+ "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
+ "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
+ },
+ "object-is": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/object-is/-/object-is-1.1.5.tgz",
+ "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.3"
+ }
+ },
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+ },
+ "object-visit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz",
+ "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.0"
+ }
+ },
+ "object.assign": {
+ "version": "4.1.4",
+ "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz",
+ "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.1.4",
+ "has-symbols": "^1.0.3",
+ "object-keys": "^1.1.1"
+ }
+ },
+ "object.getownpropertydescriptors": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmmirror.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.7.tgz",
+ "integrity": "sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==",
+ "dev": true,
+ "requires": {
+ "array.prototype.reduce": "^1.0.6",
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1",
+ "safe-array-concat": "^1.0.0"
+ }
+ },
+ "object.pick": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz",
+ "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
+ "dev": true,
+ "requires": {
+ "isobject": "^3.0.1"
+ }
+ },
+ "object.values": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmmirror.com/object.values/-/object.values-1.1.7.tgz",
+ "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "obuf": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/obuf/-/obuf-1.1.2.tgz",
+ "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg=="
+ },
+ "omelette": {
+ "version": "0.4.5",
+ "resolved": "https://registry.npmmirror.com/omelette/-/omelette-0.4.5.tgz",
+ "integrity": "sha512-b0k9uqwF60u15KmVkneVw96VYRtZu2QCbXUQ26SgdyVUgMBzctzIfhNPKAWl4oqJEKpe52CzBYSS+HIKtiK8sw==",
+ "dev": true
+ },
+ "on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "requires": {
+ "ee-first": "1.1.1"
+ }
+ },
+ "on-headers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/on-headers/-/on-headers-1.0.2.tgz",
+ "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA=="
+ },
+ "once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "requires": {
+ "wrappy": "1"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "open": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmmirror.com/open/-/open-8.4.2.tgz",
+ "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==",
+ "requires": {
+ "define-lazy-prop": "^2.0.0",
+ "is-docker": "^2.1.1",
+ "is-wsl": "^2.2.0"
+ }
+ },
+ "opener": {
+ "version": "1.5.2",
+ "resolved": "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz",
+ "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
+ "dev": true
+ },
+ "opn": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmmirror.com/opn/-/opn-5.5.0.tgz",
+ "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+ "dev": true,
+ "requires": {
+ "is-wsl": "^1.1.0"
+ },
+ "dependencies": {
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "dev": true
+ }
+ }
+ },
+ "optionator": {
+ "version": "0.8.3",
+ "resolved": "https://registry.npmmirror.com/optionator/-/optionator-0.8.3.tgz",
+ "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+ "dev": true,
+ "requires": {
+ "deep-is": "~0.1.3",
+ "fast-levenshtein": "~2.0.6",
+ "levn": "~0.3.0",
+ "prelude-ls": "~1.1.2",
+ "type-check": "~0.3.2",
+ "word-wrap": "~1.2.3"
+ }
+ },
+ "ora": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/ora/-/ora-3.4.0.tgz",
+ "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "cli-cursor": "^2.1.0",
+ "cli-spinners": "^2.0.0",
+ "log-symbols": "^2.2.0",
+ "strip-ansi": "^5.2.0",
+ "wcwidth": "^1.0.1"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true
+ },
+ "log-symbols": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/log-symbols/-/log-symbols-2.2.0.tgz",
+ "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "os-browserify": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/os-browserify/-/os-browserify-0.3.0.tgz",
+ "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A=="
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz",
+ "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ=="
+ },
+ "os-name": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/os-name/-/os-name-1.0.3.tgz",
+ "integrity": "sha512-f5estLO2KN8vgtTRaILIgEGBoBrMnZ3JQ7W9TMZCnOIGwHe8TRGSpcagnWDo+Dfhd/z08k9Xe75hvciJJ8Qaew==",
+ "requires": {
+ "osx-release": "^1.0.0",
+ "win-release": "^1.0.0"
+ }
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g=="
+ },
+ "osenv": {
+ "version": "0.1.5",
+ "resolved": "https://registry.npmmirror.com/osenv/-/osenv-0.1.5.tgz",
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
+ "requires": {
+ "os-homedir": "^1.0.0",
+ "os-tmpdir": "^1.0.0"
+ }
+ },
+ "osx-release": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/osx-release/-/osx-release-1.1.0.tgz",
+ "integrity": "sha512-ixCMMwnVxyHFQLQnINhmIpWqXIfS2YOXchwQrk+OFzmo6nDjQ0E4KXAyyUh0T0MZgV4bUhkRrAbVqlE4yLVq4A==",
+ "requires": {
+ "minimist": "^1.1.0"
+ }
+ },
+ "p-finally": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz",
+ "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
+ "dev": true
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz",
+ "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-map": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/p-map/-/p-map-2.1.0.tgz",
+ "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw=="
+ },
+ "p-retry": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz",
+ "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==",
+ "requires": {
+ "@types/retry": "0.12.0",
+ "retry": "^0.13.1"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz",
+ "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww=="
+ },
+ "pako": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
+ },
+ "parallel-transform": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/parallel-transform/-/parallel-transform-1.2.0.tgz",
+ "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
+ "requires": {
+ "cyclist": "^1.0.1",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.1.5"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "param-case": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/param-case/-/param-case-2.1.1.tgz",
+ "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==",
+ "dev": true,
+ "requires": {
+ "no-case": "^2.2.0"
+ }
+ },
+ "parent-module": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz",
+ "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
+ "dev": true,
+ "requires": {
+ "callsites": "^3.0.0"
+ },
+ "dependencies": {
+ "callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true
+ }
+ }
+ },
+ "parse-asn1": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.6.tgz",
+ "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "requires": {
+ "asn1.js": "^5.2.0",
+ "browserify-aes": "^1.0.0",
+ "evp_bytestokey": "^1.0.0",
+ "pbkdf2": "^3.0.3",
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ }
+ },
+ "parse5": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-5.1.1.tgz",
+ "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==",
+ "dev": true
+ },
+ "parse5-htmlparser2-tree-adapter": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz",
+ "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==",
+ "dev": true,
+ "requires": {
+ "parse5": "^6.0.1"
+ },
+ "dependencies": {
+ "parse5": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/parse5/-/parse5-6.0.1.tgz",
+ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==",
+ "dev": true
+ }
+ }
+ },
+ "parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmmirror.com/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
+ },
+ "pascalcase": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz",
+ "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
+ "dev": true
+ },
+ "path-browserify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
+ "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
+ },
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
+ "dev": true
+ },
+ "path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
+ },
+ "path-is-inside": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==",
+ "dev": true
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+ },
+ "path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+ },
+ "path-to-regexp": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-2.4.0.tgz",
+ "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w=="
+ },
+ "path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "requires": {
+ "pify": "^3.0.0"
+ }
+ },
+ "pause-stream": {
+ "version": "0.0.11",
+ "resolved": "https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz",
+ "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==",
+ "requires": {
+ "through": "~2.3"
+ }
+ },
+ "pbkdf2": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz",
+ "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+ "requires": {
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
+ }
+ },
+ "pdfjs-dist": {
+ "version": "2.6.347",
+ "resolved": "https://registry.npmmirror.com/pdfjs-dist/-/pdfjs-dist-2.6.347.tgz",
+ "integrity": "sha512-QC+h7hG2su9v/nU1wEI3SnpPIrqJODL7GTDFvR74ANKGq1AFJW16PH8VWnhpiTi9YcLSFV9xLeWSgq+ckHLdVQ=="
+ },
+ "pdfobject": {
+ "version": "2.2.12",
+ "resolved": "https://registry.npmmirror.com/pdfobject/-/pdfobject-2.2.12.tgz",
+ "integrity": "sha512-D0oyD/sj8j82AMaJhoyMaY1aD5TkbpU3FbJC6w9/cpJlZRpYHqAkutXw1Ca/FKjYPZmTAu58uGIfgOEaDlbY8A=="
+ },
+ "pegjs": {
+ "version": "0.10.0",
+ "resolved": "https://registry.npmmirror.com/pegjs/-/pegjs-0.10.0.tgz",
+ "integrity": "sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow=="
+ },
+ "pegjs-backtrace": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/pegjs-backtrace/-/pegjs-backtrace-0.2.1.tgz",
+ "integrity": "sha512-rnVQiHyTE1wZG14Vl3Xk33ecrF7ZJ7ZW7jSgSlw4LdzBuhbyGVQ+oVApQ6tRi4QsII/xHgByHb6Ax68K6SPLhw=="
+ },
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow=="
+ },
+ "picocolors": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ },
+ "picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
+ },
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg=="
+ },
+ "pinkie": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz",
+ "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg=="
+ },
+ "pinkie-promise": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
+ "requires": {
+ "pinkie": "^2.0.0"
+ }
+ },
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==",
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ },
+ "platform": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmmirror.com/platform/-/platform-1.3.6.tgz",
+ "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg=="
+ },
+ "pnp-webpack-plugin": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz",
+ "integrity": "sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==",
+ "dev": true,
+ "requires": {
+ "ts-pnp": "^1.1.6"
+ }
+ },
+ "popper.js": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmmirror.com/popper.js/-/popper.js-1.16.1.tgz",
+ "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ=="
+ },
+ "portfinder": {
+ "version": "1.0.32",
+ "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz",
+ "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==",
+ "dev": true,
+ "requires": {
+ "async": "^2.6.4",
+ "debug": "^3.2.7",
+ "mkdirp": "^0.5.6"
+ },
+ "dependencies": {
+ "async": {
+ "version": "2.6.4",
+ "resolved": "https://registry.npmmirror.com/async/-/async-2.6.4.tgz",
+ "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.14"
+ }
+ },
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ }
+ }
+ },
+ "posix-character-classes": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "8.4.29",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.29.tgz",
+ "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==",
+ "requires": {
+ "nanoid": "^3.3.6",
+ "picocolors": "^1.0.0",
+ "source-map-js": "^1.0.2"
+ }
+ },
+ "postcss-calc": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-7.0.5.tgz",
+ "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.27",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.0.2"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-colormin": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
+ "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "color": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-convert-values": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+ "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-discard-comments": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
+ "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-discard-duplicates": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+ "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-discard-empty": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+ "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-discard-overridden": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+ "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-load-config": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-2.1.2.tgz",
+ "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==",
+ "dev": true,
+ "requires": {
+ "cosmiconfig": "^5.0.0",
+ "import-cwd": "^2.0.0"
+ }
+ },
+ "postcss-loader": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-loader/-/postcss-loader-3.0.0.tgz",
+ "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.1.0",
+ "postcss": "^7.0.0",
+ "postcss-load-config": "^2.0.0",
+ "schema-utils": "^1.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ }
+ }
+ },
+ "postcss-merge-longhand": {
+ "version": "4.0.11",
+ "resolved": "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
+ "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
+ "dev": true,
+ "requires": {
+ "css-color-names": "0.0.4",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "stylehacks": "^4.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-merge-rules": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
+ "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "cssnano-util-same-parent": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0",
+ "vendors": "^1.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-minify-font-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+ "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-gradients": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
+ "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "is-color-stop": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-params": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
+ "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "browserslist": "^4.0.0",
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-minify-selectors": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
+ "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "postcss-modules-extract-imports": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+ "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.5"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-modules-local-by-default": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz",
+ "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.1.1",
+ "postcss": "^7.0.32",
+ "postcss-selector-parser": "^6.0.2",
+ "postcss-value-parser": "^4.1.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-modules-scope": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
+ "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.6",
+ "postcss-selector-parser": "^6.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-modules-values": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+ "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
+ "dev": true,
+ "requires": {
+ "icss-utils": "^4.0.0",
+ "postcss": "^7.0.6"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-normalize-charset": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+ "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-normalize-display-values": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
+ "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-positions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
+ "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-repeat-style": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
+ "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-string": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
+ "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-timing-functions": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
+ "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-unicode": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+ "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-url": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+ "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+ "dev": true,
+ "requires": {
+ "is-absolute-url": "^2.0.0",
+ "normalize-url": "^3.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-normalize-whitespace": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
+ "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-ordered-values": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
+ "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-arguments": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-prefix-selector": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.0.tgz",
+ "integrity": "sha512-rdVMIi7Q4B0XbXqNUEI+Z4E+pueiu/CS5E6vRCQommzdQ/sgsS4dK42U7GX8oJR+TJOtT+Qv3GkNo6iijUMp3Q==",
+ "dev": true
+ },
+ "postcss-reduce-initial": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
+ "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "caniuse-api": "^3.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-reduce-transforms": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
+ "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+ "dev": true,
+ "requires": {
+ "cssnano-util-get-match": "^4.0.0",
+ "has": "^1.0.0",
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "6.0.13",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz",
+ "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==",
+ "dev": true,
+ "requires": {
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
+ }
+ },
+ "postcss-svgo": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-4.0.3.tgz",
+ "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==",
+ "dev": true,
+ "requires": {
+ "postcss": "^7.0.0",
+ "postcss-value-parser": "^3.0.0",
+ "svgo": "^1.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-value-parser": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+ "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+ "dev": true
+ }
+ }
+ },
+ "postcss-unique-selectors": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+ "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+ "dev": true,
+ "requires": {
+ "alphanum-sort": "^1.0.0",
+ "postcss": "^7.0.0",
+ "uniqs": "^2.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ }
+ }
+ },
+ "postcss-value-parser": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
+ "dev": true
+ },
+ "posthtml": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz",
+ "integrity": "sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==",
+ "dev": true,
+ "requires": {
+ "posthtml-parser": "^0.2.0",
+ "posthtml-render": "^1.0.5"
+ }
+ },
+ "posthtml-parser": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz",
+ "integrity": "sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==",
+ "dev": true,
+ "requires": {
+ "htmlparser2": "^3.8.3",
+ "isobject": "^2.1.0"
+ },
+ "dependencies": {
+ "domhandler": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz",
+ "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "1"
+ }
+ },
+ "entities": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz",
+ "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+ "dev": true
+ },
+ "htmlparser2": {
+ "version": "3.10.1",
+ "resolved": "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^1.3.1",
+ "domhandler": "^2.3.0",
+ "domutils": "^1.5.1",
+ "entities": "^1.1.1",
+ "inherits": "^2.0.1",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "posthtml-rename-id": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz",
+ "integrity": "sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==",
+ "dev": true,
+ "requires": {
+ "escape-string-regexp": "1.0.5"
+ }
+ },
+ "posthtml-render": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz",
+ "integrity": "sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==",
+ "dev": true
+ },
+ "posthtml-svg-mode": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz",
+ "integrity": "sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==",
+ "dev": true,
+ "requires": {
+ "merge-options": "1.0.1",
+ "posthtml": "^0.9.2",
+ "posthtml-parser": "^0.2.1",
+ "posthtml-render": "^1.0.6"
+ }
+ },
+ "prelude-ls": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.1.2.tgz",
+ "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==",
+ "dev": true
+ },
+ "prepend-http": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/prepend-http/-/prepend-http-1.0.4.tgz",
+ "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==",
+ "dev": true
+ },
+ "prettier": {
+ "version": "2.8.8",
+ "resolved": "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz",
+ "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "dev": true,
+ "optional": true
+ },
+ "pretty-error": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/pretty-error/-/pretty-error-2.1.2.tgz",
+ "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==",
+ "dev": true,
+ "requires": {
+ "lodash": "^4.17.20",
+ "renderkid": "^2.0.4"
+ }
+ },
+ "printj": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/printj/-/printj-1.1.2.tgz",
+ "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
+ "dev": true
+ },
+ "process": {
+ "version": "0.11.10",
+ "resolved": "https://registry.npmmirror.com/process/-/process-0.11.10.tgz",
+ "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="
+ },
+ "process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "progress": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+ "dev": true
+ },
+ "promise-inflight": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g=="
+ },
+ "proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "requires": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "dependencies": {
+ "ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
+ }
+ }
+ },
+ "prr": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz",
+ "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
+ "dev": true
+ },
+ "pseudomap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/pseudomap/-/pseudomap-1.0.2.tgz",
+ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ=="
+ },
+ "psl": {
+ "version": "1.9.0",
+ "resolved": "https://registry.npmmirror.com/psl/-/psl-1.9.0.tgz",
+ "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag=="
+ },
+ "public-encrypt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz",
+ "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+ "requires": {
+ "bn.js": "^4.1.0",
+ "browserify-rsa": "^4.0.0",
+ "create-hash": "^1.1.0",
+ "parse-asn1": "^5.0.0",
+ "randombytes": "^2.0.1",
+ "safe-buffer": "^5.1.2"
+ },
+ "dependencies": {
+ "bn.js": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.0.tgz",
+ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
+ }
+ }
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ },
+ "pumpify": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/pumpify/-/pumpify-1.5.1.tgz",
+ "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+ "requires": {
+ "duplexify": "^3.6.0",
+ "inherits": "^2.0.3",
+ "pump": "^2.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/pump/-/pump-2.0.1.tgz",
+ "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
+ "punycode": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz",
+ "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
+ },
+ "q": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/q/-/q-1.5.1.tgz",
+ "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
+ "dev": true
+ },
+ "qs": {
+ "version": "6.11.2",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.11.2.tgz",
+ "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
+ "requires": {
+ "side-channel": "^1.0.4"
+ }
+ },
+ "query-string": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz",
+ "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==",
+ "dev": true,
+ "requires": {
+ "object-assign": "^4.1.0",
+ "strict-uri-encode": "^1.0.0"
+ }
+ },
+ "querystring-es3": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/querystring-es3/-/querystring-es3-0.2.1.tgz",
+ "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA=="
+ },
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
+ },
+ "queue-microtask": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz",
+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
+ },
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "randomfill": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz",
+ "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+ "requires": {
+ "randombytes": "^2.0.5",
+ "safe-buffer": "^5.1.0"
+ }
+ },
+ "range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmmirror.com/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
+ },
+ "raw-body": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmmirror.com/raw-body/-/raw-body-2.5.1.tgz",
+ "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "requires": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "dependencies": {
+ "bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="
+ }
+ }
+ },
+ "raw-loader": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-4.0.2.tgz",
+ "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==",
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ }
+ }
+ },
+ "read-pkg": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-5.2.0.tgz",
+ "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
+ "dev": true,
+ "requires": {
+ "@types/normalize-package-data": "^2.4.0",
+ "normalize-package-data": "^2.5.0",
+ "parse-json": "^5.0.0",
+ "type-fest": "^0.6.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-0.6.0.tgz",
+ "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
+ "dev": true
+ }
+ }
+ },
+ "read-pkg-up": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
+ "requires": {
+ "find-up": "^1.0.0",
+ "read-pkg": "^1.0.0"
+ },
+ "dependencies": {
+ "find-up": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz",
+ "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
+ "requires": {
+ "path-exists": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-exists": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz",
+ "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
+ "requires": {
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "path-type": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz",
+ "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "pify": "^2.0.0",
+ "pinkie-promise": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="
+ },
+ "read-pkg": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz",
+ "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
+ "requires": {
+ "load-json-file": "^1.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^1.0.0"
+ }
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ }
+ },
+ "readdir-glob": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/readdir-glob/-/readdir-glob-1.1.3.tgz",
+ "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
+ "requires": {
+ "minimatch": "^5.1.0"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "minimatch": {
+ "version": "5.1.6",
+ "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
+ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ }
+ }
+ }
+ },
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "rechoir": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.6.2.tgz",
+ "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "requires": {
+ "resolve": "^1.1.6"
+ }
+ },
+ "redent": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/redent/-/redent-1.0.0.tgz",
+ "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==",
+ "requires": {
+ "indent-string": "^2.1.0",
+ "strip-indent": "^1.0.1"
+ },
+ "dependencies": {
+ "indent-string": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/indent-string/-/indent-string-2.1.0.tgz",
+ "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==",
+ "requires": {
+ "repeating": "^2.0.0"
+ }
+ },
+ "strip-indent": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-1.0.1.tgz",
+ "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==",
+ "requires": {
+ "get-stdin": "^4.0.1"
+ }
+ }
+ }
+ },
+ "regenerate": {
+ "version": "1.4.2",
+ "resolved": "https://registry.npmmirror.com/regenerate/-/regenerate-1.4.2.tgz",
+ "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
+ "dev": true
+ },
+ "regenerate-unicode-properties": {
+ "version": "10.1.0",
+ "resolved": "https://registry.npmmirror.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz",
+ "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==",
+ "dev": true,
+ "requires": {
+ "regenerate": "^1.4.2"
+ }
+ },
+ "regenerator-runtime": {
+ "version": "0.13.11",
+ "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+ "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
+ },
+ "regenerator-transform": {
+ "version": "0.15.2",
+ "resolved": "https://registry.npmmirror.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz",
+ "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.8.4"
+ }
+ },
+ "regex-not": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz",
+ "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "regexp.prototype.flags": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
+ "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "functions-have-names": "^1.2.3"
+ }
+ },
+ "regexpp": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/regexpp/-/regexpp-2.0.1.tgz",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+ "dev": true
+ },
+ "regexpu-core": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-5.3.2.tgz",
+ "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==",
+ "dev": true,
+ "requires": {
+ "@babel/regjsgen": "^0.8.0",
+ "regenerate": "^1.4.2",
+ "regenerate-unicode-properties": "^10.1.0",
+ "regjsparser": "^0.9.1",
+ "unicode-match-property-ecmascript": "^2.0.0",
+ "unicode-match-property-value-ecmascript": "^2.1.0"
+ }
+ },
+ "regjsparser": {
+ "version": "0.9.1",
+ "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.9.1.tgz",
+ "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==",
+ "dev": true,
+ "requires": {
+ "jsesc": "~0.5.0"
+ },
+ "dependencies": {
+ "jsesc": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-0.5.0.tgz",
+ "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==",
+ "dev": true
+ }
+ }
+ },
+ "relateurl": {
+ "version": "0.2.7",
+ "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz",
+ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==",
+ "dev": true
+ },
+ "remove-trailing-separator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==",
+ "dev": true
+ },
+ "renderkid": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmmirror.com/renderkid/-/renderkid-2.0.7.tgz",
+ "integrity": "sha512-oCcFyxaMrKsKcTY59qnCAtmDVSLfPbrv6A3tVbPdFMMrv5jaK10V6m40cKsoPNhAqN6rmHW9sswW4o3ruSrwUQ==",
+ "dev": true,
+ "requires": {
+ "css-select": "^4.1.3",
+ "dom-converter": "^0.2.0",
+ "htmlparser2": "^6.1.0",
+ "lodash": "^4.17.21",
+ "strip-ansi": "^3.0.1"
+ },
+ "dependencies": {
+ "css-select": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz",
+ "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0",
+ "css-what": "^6.0.1",
+ "domhandler": "^4.3.1",
+ "domutils": "^2.8.0",
+ "nth-check": "^2.0.1"
+ }
+ },
+ "css-what": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz",
+ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
+ "dev": true
+ },
+ "dom-serializer": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz",
+ "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==",
+ "dev": true,
+ "requires": {
+ "domelementtype": "^2.0.1",
+ "domhandler": "^4.2.0",
+ "entities": "^2.0.0"
+ }
+ },
+ "domelementtype": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
+ "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
+ "dev": true
+ },
+ "domutils": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz",
+ "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==",
+ "dev": true,
+ "requires": {
+ "dom-serializer": "^1.0.1",
+ "domelementtype": "^2.2.0",
+ "domhandler": "^4.2.0"
+ }
+ },
+ "nth-check": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz",
+ "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
+ "dev": true,
+ "requires": {
+ "boolbase": "^1.0.0"
+ }
+ }
+ }
+ },
+ "repeat-element": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz",
+ "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+ "dev": true
+ },
+ "repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true
+ },
+ "repeating": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/repeating/-/repeating-2.0.1.tgz",
+ "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==",
+ "requires": {
+ "is-finite": "^1.0.0"
+ }
+ },
+ "request": {
+ "version": "2.88.2",
+ "resolved": "https://registry.npmmirror.com/request/-/request-2.88.2.tgz",
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
+ "requires": {
+ "aws-sign2": "~0.7.0",
+ "aws4": "^1.8.0",
+ "caseless": "~0.12.0",
+ "combined-stream": "~1.0.6",
+ "extend": "~3.0.2",
+ "forever-agent": "~0.6.1",
+ "form-data": "~2.3.2",
+ "har-validator": "~5.1.3",
+ "http-signature": "~1.2.0",
+ "is-typedarray": "~1.0.0",
+ "isstream": "~0.1.2",
+ "json-stringify-safe": "~5.0.1",
+ "mime-types": "~2.1.19",
+ "oauth-sign": "~0.9.0",
+ "performance-now": "^2.1.0",
+ "qs": "~6.5.2",
+ "safe-buffer": "^5.1.2",
+ "tough-cookie": "~2.5.0",
+ "tunnel-agent": "^0.6.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "qs": {
+ "version": "6.5.3",
+ "resolved": "https://registry.npmmirror.com/qs/-/qs-6.5.3.tgz",
+ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA=="
+ },
+ "tough-cookie": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-2.5.0.tgz",
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "requires": {
+ "psl": "^1.1.28",
+ "punycode": "^2.1.1"
+ }
+ },
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A=="
+ }
+ }
+ },
+ "require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+ },
+ "require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
+ },
+ "require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+ },
+ "requires-port": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ=="
+ },
+ "resize-observer-polyfill": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+ },
+ "resolve": {
+ "version": "1.22.4",
+ "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.4.tgz",
+ "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
+ "requires": {
+ "is-core-module": "^2.13.0",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ }
+ },
+ "resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "requires": {
+ "resolve-from": "^5.0.0"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
+ },
+ "resolve-url": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz",
+ "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg=="
+ },
+ "restore-cursor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/restore-cursor/-/restore-cursor-2.0.0.tgz",
+ "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
+ "requires": {
+ "onetime": "^2.0.0",
+ "signal-exit": "^3.0.2"
+ },
+ "dependencies": {
+ "mimic-fn": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz",
+ "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
+ },
+ "onetime": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/onetime/-/onetime-2.0.1.tgz",
+ "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
+ "requires": {
+ "mimic-fn": "^1.0.0"
+ }
+ }
+ }
+ },
+ "ret": {
+ "version": "0.1.15",
+ "resolved": "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz",
+ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+ "dev": true
+ },
+ "retry": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz",
+ "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="
+ },
+ "reusify": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz",
+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="
+ },
+ "rgb-regex": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz",
+ "integrity": "sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==",
+ "dev": true
+ },
+ "rgba-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/rgba-regex/-/rgba-regex-1.0.0.tgz",
+ "integrity": "sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==",
+ "dev": true
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "ripemd160": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz",
+ "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+ "requires": {
+ "hash-base": "^3.0.0",
+ "inherits": "^2.0.1"
+ }
+ },
+ "run-async": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmmirror.com/run-async/-/run-async-2.4.1.tgz",
+ "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+ "dev": true
+ },
+ "run-parallel": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz",
+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
+ "requires": {
+ "queue-microtask": "^1.2.2"
+ }
+ },
+ "run-queue": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/run-queue/-/run-queue-1.0.3.tgz",
+ "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
+ "requires": {
+ "aproba": "^1.1.1"
+ }
+ },
+ "runjs": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmmirror.com/runjs/-/runjs-4.4.2.tgz",
+ "integrity": "sha512-/DB54HRJnxfGA/a9QLZMyAn8H84SMt8oVGF7Vz+OS4BMCve312DXNRpy6Z8yohLuoMctoalXQtvmpd2ChQYD4Q==",
+ "dev": true,
+ "requires": {
+ "chalk": "2.3.0",
+ "lodash.padend": "4.6.1",
+ "microcli": "1.3.3",
+ "omelette": "0.4.5"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "chalk": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-2.3.0.tgz",
+ "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.1.0",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^4.0.0"
+ }
+ },
+ "has-flag": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-2.0.0.tgz",
+ "integrity": "sha512-P+1n3MnwjR/Epg9BBo1KT8qbye2g2Ou4sFumihwt6I4tsUX7jnLcX4BTOSKg/B1ZrIYMN9FcEnG4x5a7NB8Eng==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-4.5.0.tgz",
+ "integrity": "sha512-ycQR/UbvI9xIlEdQT1TQqwoXtEldExbCEAJgRo5YXlmSKjv6ThHnP9/vwGa1gr19Gfw+LkFd7KqYMhzrRC5JYw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^2.0.0"
+ }
+ }
+ }
+ },
+ "rxjs": {
+ "version": "6.6.7",
+ "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz",
+ "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
+ "safe-array-concat": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz",
+ "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "has-symbols": "^1.0.3",
+ "isarray": "^2.0.5"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
+ }
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
+ },
+ "safe-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz",
+ "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
+ "dev": true,
+ "requires": {
+ "ret": "~0.1.10"
+ }
+ },
+ "safe-regex-test": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
+ "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.1.3",
+ "is-regex": "^1.1.4"
+ }
+ },
+ "safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "sass-graph": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmmirror.com/sass-graph/-/sass-graph-2.2.5.tgz",
+ "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==",
+ "requires": {
+ "glob": "^7.0.0",
+ "lodash": "^4.0.0",
+ "scss-tokenizer": "^0.2.3",
+ "yargs": "^13.3.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g=="
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w=="
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ },
+ "wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ }
+ },
+ "yargs": {
+ "version": "13.3.2",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-13.3.2.tgz",
+ "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "requires": {
+ "cliui": "^5.0.0",
+ "find-up": "^3.0.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^3.0.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^13.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "13.1.2",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
+ }
+ }
+ }
+ },
+ "sass-loader": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmmirror.com/sass-loader/-/sass-loader-8.0.0.tgz",
+ "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==",
+ "requires": {
+ "clone-deep": "^4.0.1",
+ "loader-utils": "^1.2.3",
+ "neo-async": "^2.6.1",
+ "schema-utils": "^2.1.0",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "requires": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
+ }
+ }
+ },
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmmirror.com/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
+ },
+ "saxes": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/saxes/-/saxes-5.0.1.tgz",
+ "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==",
+ "requires": {
+ "xmlchars": "^2.2.0"
+ }
+ },
+ "schema-utils": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz",
+ "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==",
+ "requires": {
+ "@types/json-schema": "^7.0.8",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ }
+ },
+ "screenfull": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmmirror.com/screenfull/-/screenfull-4.2.1.tgz",
+ "integrity": "sha512-PLSp6f5XdhvjCCCO8OjavRfzkSGL3Qmdm7P82bxyU8HDDDBhDV3UckRaYcRa/NDNTYt8YBpzjoLWHUAejmOjLg=="
+ },
+ "script-ext-html-webpack-plugin": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-2.1.3.tgz",
+ "integrity": "sha512-a/gqxJFw2IAs8LK/ZFBKv1YoeFysbntdiLBVdNfgHgMKWW1mMcRGY6Hm3aihSaY9tqqhcaXuQJ4nn19loNbkuQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.0"
+ }
+ },
+ "script-loader": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmmirror.com/script-loader/-/script-loader-0.7.2.tgz",
+ "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==",
+ "dev": true,
+ "requires": {
+ "raw-loader": "~0.5.1"
+ },
+ "dependencies": {
+ "raw-loader": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-0.5.1.tgz",
+ "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q==",
+ "dev": true
+ }
+ }
+ },
+ "scss-tokenizer": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmmirror.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==",
+ "requires": {
+ "js-base64": "^2.1.8",
+ "source-map": "^0.4.2"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.4.4.tgz",
+ "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==",
+ "requires": {
+ "amdefine": ">=0.0.4"
+ }
+ }
+ }
+ },
+ "sdk-base": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/sdk-base/-/sdk-base-2.0.1.tgz",
+ "integrity": "sha512-eeG26wRwhtwYuKGCDM3LixCaxY27Pa/5lK4rLKhQa7HBjJ3U3Y+f81MMZQRsDw/8SC2Dao/83yJTXJ8aULuN8Q==",
+ "requires": {
+ "get-ready": "~1.0.0"
+ }
+ },
+ "seedrandom": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmmirror.com/seedrandom/-/seedrandom-3.0.5.tgz",
+ "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg=="
+ },
+ "select": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/select/-/select-1.1.2.tgz",
+ "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA=="
+ },
+ "select-hose": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz",
+ "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg=="
+ },
+ "selfsigned": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.1.1.tgz",
+ "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==",
+ "requires": {
+ "node-forge": "^1"
+ }
+ },
+ "semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="
+ },
+ "send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmmirror.com/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "requires": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ },
+ "dependencies": {
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ }
+ }
+ },
+ "mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
+ },
+ "statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
+ }
+ }
+ },
+ "serialize-javascript": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-1.9.1.tgz",
+ "integrity": "sha512-0Vb/54WJ6k5v8sSWN09S0ora+Hnr+cX40r9F170nT+mSkaxltoE/7R3OrIdBSUv1OoiobH1QoWQbCnAO+e8J1A=="
+ },
+ "serve-index": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/serve-index/-/serve-index-1.9.1.tgz",
+ "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
+ "requires": {
+ "accepts": "~1.3.4",
+ "batch": "0.6.1",
+ "debug": "2.6.9",
+ "escape-html": "~1.0.3",
+ "http-errors": "~1.6.2",
+ "mime-types": "~2.1.17",
+ "parseurl": "~1.3.2"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "depd": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/depd/-/depd-1.1.2.tgz",
+ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ=="
+ },
+ "http-errors": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmmirror.com/http-errors/-/http-errors-1.6.3.tgz",
+ "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
+ "requires": {
+ "depd": "~1.1.2",
+ "inherits": "2.0.3",
+ "setprototypeof": "1.1.0",
+ "statuses": ">= 1.4.0 < 2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.3.tgz",
+ "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw=="
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "setprototypeof": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
+ }
+ }
+ },
+ "serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "requires": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ }
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+ },
+ "set-value": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz",
+ "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-extendable": "^0.1.1",
+ "is-plain-object": "^2.0.3",
+ "split-string": "^3.0.1"
+ }
+ },
+ "setimmediate": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
+ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="
+ },
+ "setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "sha.js": {
+ "version": "2.4.11",
+ "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz",
+ "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "shader-loader": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/shader-loader/-/shader-loader-1.3.1.tgz",
+ "integrity": "sha512-dt8F9K0x4rjmaFyHh7rNDfpt4LUiR64zhNIEwp2WbE99B3z4ALuvvmhftkElg93dUD6sTmv/aXa/z9SJiEddcA==",
+ "requires": {
+ "loader-utils": "^1.1.0"
+ }
+ },
+ "shallow-clone": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/shallow-clone/-/shallow-clone-3.0.1.tgz",
+ "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
+ "requires": {
+ "kind-of": "^6.0.2"
+ }
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
+ },
+ "shell-quote": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz",
+ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA=="
+ },
+ "shelljs": {
+ "version": "0.8.5",
+ "resolved": "https://registry.npmmirror.com/shelljs/-/shelljs-0.8.5.tgz",
+ "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "requires": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ }
+ },
+ "side-channel": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
+ "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
+ "requires": {
+ "call-bind": "^1.0.0",
+ "get-intrinsic": "^1.0.2",
+ "object-inspect": "^1.9.0"
+ }
+ },
+ "signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmmirror.com/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
+ },
+ "simple-swizzle": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmmirror.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+ "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+ "dev": true,
+ "requires": {
+ "is-arrayish": "^0.3.1"
+ },
+ "dependencies": {
+ "is-arrayish": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.3.2.tgz",
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+ "dev": true
+ }
+ }
+ },
+ "slash": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz",
+ "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg=="
+ },
+ "slice-ansi": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-0.0.4.tgz",
+ "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw=="
+ },
+ "snapdragon": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz",
+ "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+ "dev": true,
+ "requires": {
+ "base": "^0.11.1",
+ "debug": "^2.2.0",
+ "define-property": "^0.2.5",
+ "extend-shallow": "^2.0.1",
+ "map-cache": "^0.2.2",
+ "source-map": "^0.5.6",
+ "source-map-resolve": "^0.5.0",
+ "use": "^3.1.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ }
+ }
+ },
+ "snapdragon-node": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^1.0.0",
+ "isobject": "^3.0.0",
+ "snapdragon-util": "^3.0.1"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ }
+ }
+ }
+ },
+ "snapdragon-util": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.2.0"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "sockjs": {
+ "version": "0.3.24",
+ "resolved": "https://registry.npmmirror.com/sockjs/-/sockjs-0.3.24.tgz",
+ "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==",
+ "requires": {
+ "faye-websocket": "^0.11.3",
+ "uuid": "^8.3.2",
+ "websocket-driver": "^0.7.4"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+ }
+ }
+ },
+ "sockjs-client": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmmirror.com/sockjs-client/-/sockjs-client-1.6.1.tgz",
+ "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.7",
+ "eventsource": "^2.0.2",
+ "faye-websocket": "^0.11.4",
+ "inherits": "^2.0.4",
+ "url-parse": "^1.5.10"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "eventsource": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/eventsource/-/eventsource-2.0.2.tgz",
+ "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==",
+ "dev": true
+ }
+ }
+ },
+ "sort-keys": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/sort-keys/-/sort-keys-1.1.2.tgz",
+ "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==",
+ "dev": true,
+ "requires": {
+ "is-plain-obj": "^1.0.0"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
+ "dev": true
+ }
+ }
+ },
+ "sortablejs": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz",
+ "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w=="
+ },
+ "source-list-map": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/source-list-map/-/source-list-map-2.0.1.tgz",
+ "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+ "dev": true
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "source-map-js": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw=="
+ },
+ "source-map-resolve": {
+ "version": "0.5.3",
+ "resolved": "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+ "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+ "dev": true,
+ "requires": {
+ "atob": "^2.1.2",
+ "decode-uri-component": "^0.2.0",
+ "resolve-url": "^0.2.1",
+ "source-map-url": "^0.4.0",
+ "urix": "^0.1.0"
+ }
+ },
+ "source-map-support": {
+ "version": "0.5.21",
+ "resolved": "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz",
+ "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "source-map-url": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz",
+ "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
+ "dev": true
+ },
+ "spark-md5": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/spark-md5/-/spark-md5-3.0.2.tgz",
+ "integrity": "sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw=="
+ },
+ "spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "requires": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-exceptions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
+ "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A=="
+ },
+ "spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "requires": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "spdx-license-ids": {
+ "version": "3.0.13",
+ "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
+ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w=="
+ },
+ "spdy": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/spdy/-/spdy-4.0.2.tgz",
+ "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+ "requires": {
+ "debug": "^4.1.0",
+ "handle-thing": "^2.0.0",
+ "http-deceiver": "^1.2.7",
+ "select-hose": "^2.0.0",
+ "spdy-transport": "^3.0.0"
+ }
+ },
+ "spdy-transport": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+ "requires": {
+ "debug": "^4.1.0",
+ "detect-node": "^2.0.4",
+ "hpack.js": "^2.1.6",
+ "obuf": "^1.1.2",
+ "readable-stream": "^3.0.6",
+ "wbuf": "^1.7.3"
+ }
+ },
+ "split-string": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz",
+ "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^3.0.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="
+ },
+ "ssf": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+ "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+ "dev": true,
+ "requires": {
+ "frac": "~1.1.2"
+ }
+ },
+ "sshpk": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmmirror.com/sshpk/-/sshpk-1.17.0.tgz",
+ "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
+ "requires": {
+ "asn1": "~0.2.3",
+ "assert-plus": "^1.0.0",
+ "bcrypt-pbkdf": "^1.0.0",
+ "dashdash": "^1.12.0",
+ "ecc-jsbn": "~0.1.1",
+ "getpass": "^0.1.1",
+ "jsbn": "~0.1.0",
+ "safer-buffer": "^2.0.2",
+ "tweetnacl": "~0.14.0"
+ }
+ },
+ "ssri": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-5.3.0.tgz",
+ "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==",
+ "requires": {
+ "safe-buffer": "^5.1.1"
+ }
+ },
+ "stable": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz",
+ "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+ "dev": true
+ },
+ "stackframe": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmmirror.com/stackframe/-/stackframe-1.3.4.tgz",
+ "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==",
+ "dev": true
+ },
+ "static-extend": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz",
+ "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
+ "dev": true,
+ "requires": {
+ "define-property": "^0.2.5",
+ "object-copy": "^0.1.0"
+ },
+ "dependencies": {
+ "define-property": {
+ "version": "0.2.5",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz",
+ "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^0.1.0"
+ }
+ }
+ }
+ },
+ "statuses": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmmirror.com/statuses/-/statuses-1.5.0.tgz",
+ "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA=="
+ },
+ "stdout-stream": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
+ "requires": {
+ "readable-stream": "^2.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-browserify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/stream-browserify/-/stream-browserify-3.0.0.tgz",
+ "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==",
+ "requires": {
+ "inherits": "~2.0.4",
+ "readable-stream": "^3.5.0"
+ }
+ },
+ "stream-each": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmmirror.com/stream-each/-/stream-each-1.2.3.tgz",
+ "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "stream-http": {
+ "version": "2.8.2",
+ "resolved": "https://registry.npmmirror.com/stream-http/-/stream-http-2.8.2.tgz",
+ "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==",
+ "requires": {
+ "builtin-status-codes": "^3.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.3.6",
+ "to-arraybuffer": "^1.0.0",
+ "xtend": "^4.0.0"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "stream-shift": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/stream-shift/-/stream-shift-1.0.1.tgz",
+ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ=="
+ },
+ "stream-wormhole": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz",
+ "integrity": "sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew=="
+ },
+ "strict-uri-encode": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string.prototype.trim": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz",
+ "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "string.prototype.trimend": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz",
+ "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "string.prototype.trimstart": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz",
+ "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "define-properties": "^1.2.0",
+ "es-abstract": "^1.22.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ },
+ "strip-bom": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz",
+ "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
+ "requires": {
+ "is-utf8": "^0.2.0"
+ }
+ },
+ "strip-eof": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-eof/-/strip-eof-1.0.0.tgz",
+ "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+ "dev": true
+ },
+ "strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
+ },
+ "strip-indent": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz",
+ "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
+ "dev": true
+ },
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ },
+ "stylehacks": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/stylehacks/-/stylehacks-4.0.3.tgz",
+ "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
+ "dev": true,
+ "requires": {
+ "browserslist": "^4.0.0",
+ "postcss": "^7.0.0",
+ "postcss-selector-parser": "^3.0.0"
+ },
+ "dependencies": {
+ "picocolors": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-0.2.1.tgz",
+ "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==",
+ "dev": true
+ },
+ "postcss": {
+ "version": "7.0.39",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-7.0.39.tgz",
+ "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==",
+ "dev": true,
+ "requires": {
+ "picocolors": "^0.2.1",
+ "source-map": "^0.6.1"
+ }
+ },
+ "postcss-selector-parser": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
+ "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
+ "dev": true,
+ "requires": {
+ "dot-prop": "^5.2.0",
+ "indexes-of": "^1.0.1",
+ "uniq": "^1.0.1"
+ }
+ }
+ }
+ },
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g=="
+ },
+ "supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
+ },
+ "svg-baker": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz",
+ "integrity": "sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "clone": "^2.1.1",
+ "he": "^1.1.1",
+ "image-size": "^0.5.1",
+ "loader-utils": "^1.1.0",
+ "merge-options": "1.0.1",
+ "micromatch": "3.1.0",
+ "postcss": "^5.2.17",
+ "postcss-prefix-selector": "^1.6.0",
+ "posthtml-rename-id": "^1.0",
+ "posthtml-svg-mode": "^1.0.3",
+ "query-string": "^4.3.2",
+ "traverse": "^0.6.6"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
+ "dev": true
+ }
+ }
+ },
+ "clone": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz",
+ "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
+ "dev": true
+ },
+ "define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz",
+ "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
+ "dev": true,
+ "requires": {
+ "is-descriptor": "^1.0.0"
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ }
+ },
+ "has-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz",
+ "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
+ "dev": true
+ },
+ "is-accessor-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-data-descriptor": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^6.0.0"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ }
+ }
+ },
+ "is-descriptor": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+ "dev": true,
+ "requires": {
+ "is-accessor-descriptor": "^1.0.0",
+ "is-data-descriptor": "^1.0.0",
+ "kind-of": "^6.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz",
+ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+ "dev": true
+ }
+ }
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "kind-of": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz",
+ "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+ "dev": true
+ },
+ "micromatch": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz",
+ "integrity": "sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.2.2",
+ "define-property": "^1.0.0",
+ "extend-shallow": "^2.0.1",
+ "extglob": "^2.0.2",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^5.0.2",
+ "nanomatch": "^1.2.1",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.1"
+ }
+ },
+ "postcss": {
+ "version": "5.2.18",
+ "resolved": "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "js-base64": "^2.1.9",
+ "source-map": "^0.5.6",
+ "supports-color": "^3.2.3"
+ }
+ },
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz",
+ "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^1.0.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ },
+ "traverse": {
+ "version": "0.6.7",
+ "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.6.7.tgz",
+ "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==",
+ "dev": true
+ }
+ }
+ },
+ "svg-baker-runtime": {
+ "version": "1.4.7",
+ "resolved": "https://registry.npmmirror.com/svg-baker-runtime/-/svg-baker-runtime-1.4.7.tgz",
+ "integrity": "sha512-Zorfwwj5+lWjk/oxwSMsRdS2sPQQdTmmsvaSpzU+i9ZWi3zugHLt6VckWfnswphQP0LmOel3nggpF5nETbt6xw==",
+ "dev": true,
+ "requires": {
+ "deepmerge": "1.3.2",
+ "mitt": "1.1.2",
+ "svg-baker": "^1.7.0"
+ },
+ "dependencies": {
+ "deepmerge": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz",
+ "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==",
+ "dev": true
+ }
+ }
+ },
+ "svg-sprite-loader": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/svg-sprite-loader/-/svg-sprite-loader-4.1.3.tgz",
+ "integrity": "sha512-lOLDSJoyriYnOeGYc7nhxTDYj2vfdBVKpxIS/XK70//kA3VB55H89T1lct2OEClY4w5kQLZJAvDGQ41g3YTogQ==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.0",
+ "deepmerge": "1.3.2",
+ "domready": "1.0.8",
+ "escape-string-regexp": "1.0.5",
+ "html-webpack-plugin": "^3.2.0",
+ "loader-utils": "^1.1.0",
+ "svg-baker": "^1.4.0",
+ "svg-baker-runtime": "^1.4.0",
+ "url-slug": "2.0.0"
+ },
+ "dependencies": {
+ "deepmerge": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-1.3.2.tgz",
+ "integrity": "sha512-qjMjTrk+RKv/sp4RPDpV5CnKhxjFI9p+GkLBOls5A8EEElldYWCWA9zceAkmfd0xIo2aU1nxiaLFoiya2sb6Cg==",
+ "dev": true
+ }
+ }
+ },
+ "svg-tags": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/svg-tags/-/svg-tags-1.0.0.tgz",
+ "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==",
+ "dev": true
+ },
+ "svgo": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmmirror.com/svgo/-/svgo-1.2.2.tgz",
+ "integrity": "sha512-rAfulcwp2D9jjdGu+0CuqlrAUin6bBWrpoqXWwKDZZZJfXcUXQSxLJOFJCQCSA0x0pP2U0TxSlJu2ROq5Bq6qA==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.1",
+ "coa": "^2.0.2",
+ "css-select": "^2.0.0",
+ "css-select-base-adapter": "^0.1.1",
+ "css-tree": "1.0.0-alpha.28",
+ "css-url-regex": "^1.1.0",
+ "csso": "^3.5.1",
+ "js-yaml": "^3.13.1",
+ "mkdirp": "~0.5.1",
+ "object.values": "^1.1.0",
+ "sax": "~1.2.4",
+ "stable": "^0.1.8",
+ "unquote": "~1.1.1",
+ "util.promisify": "~1.0.0"
+ }
+ },
+ "symbol-observable": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
+ },
+ "table": {
+ "version": "5.4.6",
+ "resolved": "https://registry.npmmirror.com/table/-/table-5.4.6.tgz",
+ "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.10.2",
+ "lodash": "^4.17.14",
+ "slice-ansi": "^2.1.0",
+ "string-width": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^1.9.0"
+ }
+ },
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true
+ },
+ "slice-ansi": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-2.1.0.tgz",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.0",
+ "astral-regex": "^1.0.0",
+ "is-fullwidth-code-point": "^2.0.0"
+ }
+ },
+ "string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^4.1.0"
+ }
+ }
+ }
+ },
+ "tapable": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/tapable/-/tapable-1.1.3.tgz",
+ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+ "dev": true
+ },
+ "tar": {
+ "version": "2.2.2",
+ "resolved": "https://registry.npmmirror.com/tar/-/tar-2.2.2.tgz",
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
+ "requires": {
+ "block-stream": "*",
+ "fstream": "^1.0.12",
+ "inherits": "2"
+ }
+ },
+ "tar-stream": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz",
+ "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+ "requires": {
+ "bl": "^4.0.3",
+ "end-of-stream": "^1.4.1",
+ "fs-constants": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^3.1.1"
+ }
+ },
+ "terser": {
+ "version": "4.8.1",
+ "resolved": "https://registry.npmmirror.com/terser/-/terser-4.8.1.tgz",
+ "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
+ "dev": true,
+ "requires": {
+ "commander": "^2.20.0",
+ "source-map": "~0.6.1",
+ "source-map-support": "~0.5.12"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ }
+ }
+ },
+ "terser-webpack-plugin": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
+ "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
+ "dev": true,
+ "requires": {
+ "cacache": "^12.0.2",
+ "find-cache-dir": "^2.1.0",
+ "is-wsl": "^1.1.0",
+ "schema-utils": "^1.0.0",
+ "serialize-javascript": "^4.0.0",
+ "source-map": "^0.6.1",
+ "terser": "^4.1.2",
+ "webpack-sources": "^1.4.0",
+ "worker-farm": "^1.7.0"
+ },
+ "dependencies": {
+ "cacache": {
+ "version": "12.0.4",
+ "resolved": "https://registry.npmmirror.com/cacache/-/cacache-12.0.4.tgz",
+ "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+ "dev": true,
+ "requires": {
+ "bluebird": "^3.5.5",
+ "chownr": "^1.1.1",
+ "figgy-pudding": "^3.5.1",
+ "glob": "^7.1.4",
+ "graceful-fs": "^4.1.15",
+ "infer-owner": "^1.0.3",
+ "lru-cache": "^5.1.1",
+ "mississippi": "^3.0.0",
+ "mkdirp": "^0.5.1",
+ "move-concurrently": "^1.0.1",
+ "promise-inflight": "^1.0.1",
+ "rimraf": "^2.6.3",
+ "ssri": "^6.0.1",
+ "unique-filename": "^1.1.1",
+ "y18n": "^4.0.0"
+ }
+ },
+ "find-cache-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "dev": true,
+ "requires": {
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
+ }
+ },
+ "find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^3.0.0"
+ }
+ },
+ "is-wsl": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-wsl/-/is-wsl-1.1.0.tgz",
+ "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==",
+ "dev": true
+ },
+ "locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ }
+ },
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "make-dir": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz",
+ "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+ "dev": true,
+ "requires": {
+ "pify": "^4.0.1",
+ "semver": "^5.6.0"
+ }
+ },
+ "mississippi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/mississippi/-/mississippi-3.0.0.tgz",
+ "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.5.0",
+ "duplexify": "^3.4.2",
+ "end-of-stream": "^1.1.0",
+ "flush-write-stream": "^1.0.0",
+ "from2": "^2.1.0",
+ "parallel-transform": "^1.1.0",
+ "pump": "^3.0.0",
+ "pumpify": "^1.3.3",
+ "stream-each": "^1.1.0",
+ "through2": "^2.0.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.0.0"
+ }
+ },
+ "p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true
+ },
+ "pify": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz",
+ "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+ "dev": true
+ },
+ "pkg-dir": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "dev": true,
+ "requires": {
+ "find-up": "^3.0.0"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "serialize-javascript": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+ "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
+ "ssri": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmmirror.com/ssri/-/ssri-6.0.2.tgz",
+ "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
+ "dev": true,
+ "requires": {
+ "figgy-pudding": "^3.5.1"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+ },
+ "text-table": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
+ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
+ "dev": true
+ },
+ "thenify": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmmirror.com/thenify/-/thenify-3.3.1.tgz",
+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
+ "requires": {
+ "any-promise": "^1.0.0"
+ }
+ },
+ "thenify-all": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmmirror.com/thenify-all/-/thenify-all-1.6.0.tgz",
+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
+ "requires": {
+ "thenify": ">= 3.1.0 < 4"
+ }
+ },
+ "thread-loader": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmmirror.com/thread-loader/-/thread-loader-2.1.3.tgz",
+ "integrity": "sha512-wNrVKH2Lcf8ZrWxDF/khdlLlsTMczdcwPA9VEK4c2exlEPynYWxi9op3nPTo5lAnDIkE0rQEB3VBP+4Zncc9Hg==",
+ "dev": true,
+ "requires": {
+ "loader-runner": "^2.3.1",
+ "loader-utils": "^1.1.0",
+ "neo-async": "^2.6.0"
+ }
+ },
+ "throttle-debounce": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+ "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
+ },
+ "through": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/through/-/through-2.3.8.tgz",
+ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg=="
+ },
+ "through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmmirror.com/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "requires": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "thunky": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz",
+ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="
+ },
+ "timers-browserify": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmmirror.com/timers-browserify/-/timers-browserify-2.0.12.tgz",
+ "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+ "requires": {
+ "setimmediate": "^1.0.4"
+ }
+ },
+ "timsort": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/timsort/-/timsort-0.3.0.tgz",
+ "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==",
+ "dev": true
+ },
+ "tiny-emitter": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
+ "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ },
+ "tmp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz",
+ "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==",
+ "requires": {
+ "rimraf": "^3.0.0"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
+ }
+ },
+ "to-arraybuffer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+ "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA=="
+ },
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og=="
+ },
+ "to-object-path": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz",
+ "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "to-regex": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz",
+ "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+ "dev": true,
+ "requires": {
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "regex-not": "^1.0.2",
+ "safe-regex": "^1.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ }
+ },
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "requires": {
+ "is-number": "^7.0.0"
+ }
+ },
+ "toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
+ },
+ "toposort": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmmirror.com/toposort/-/toposort-1.0.7.tgz",
+ "integrity": "sha512-FclLrw8b9bMWf4QlCJuHBEVhSRsqDj6u3nIjAzPeJvgl//1hBlffdlk0MALceL14+koWEdU4ofRAXofbODxQzg==",
+ "dev": true
+ },
+ "tough-cookie": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/tough-cookie/-/tough-cookie-4.1.3.tgz",
+ "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==",
+ "requires": {
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
+ }
+ },
+ "tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "traverse": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmmirror.com/traverse/-/traverse-0.3.9.tgz",
+ "integrity": "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="
+ },
+ "trim-newlines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw=="
+ },
+ "true-case-path": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/true-case-path/-/true-case-path-1.0.3.tgz",
+ "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
+ "requires": {
+ "glob": "^7.1.2"
+ }
+ },
+ "tryer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/tryer/-/tryer-1.0.1.tgz",
+ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==",
+ "dev": true
+ },
+ "ts-pnp": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/ts-pnp/-/ts-pnp-1.2.0.tgz",
+ "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==",
+ "dev": true
+ },
+ "tslib": {
+ "version": "1.14.1",
+ "resolved": "https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz",
+ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
+ },
+ "tty-browserify": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmmirror.com/tty-browserify/-/tty-browserify-0.0.1.tgz",
+ "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw=="
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+ "requires": {
+ "safe-buffer": "^5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "resolved": "https://registry.npmmirror.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA=="
+ },
+ "type-check": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmmirror.com/type-check/-/type-check-0.3.2.tgz",
+ "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==",
+ "dev": true,
+ "requires": {
+ "prelude-ls": "~1.1.2"
+ }
+ },
+ "type-fest": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmmirror.com/type-fest/-/type-fest-2.19.0.tgz",
+ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA=="
+ },
+ "type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmmirror.com/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "requires": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ }
+ },
+ "typed-array-buffer": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
+ "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "get-intrinsic": "^1.2.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-byte-length": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
+ "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-byte-offset": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
+ "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
+ "dev": true,
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "has-proto": "^1.0.1",
+ "is-typed-array": "^1.1.10"
+ }
+ },
+ "typed-array-length": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.4.tgz",
+ "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "is-typed-array": "^1.1.9"
+ }
+ },
+ "typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ },
+ "uglify-js": {
+ "version": "3.4.10",
+ "resolved": "https://registry.npmmirror.com/uglify-js/-/uglify-js-3.4.10.tgz",
+ "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
+ "dev": true,
+ "requires": {
+ "commander": "~2.19.0",
+ "source-map": "~0.6.1"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.19.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.19.0.tgz",
+ "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+ "dev": true
+ }
+ }
+ },
+ "unbox-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
+ "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
+ "dev": true,
+ "requires": {
+ "call-bind": "^1.0.2",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.0.3",
+ "which-boxed-primitive": "^1.0.2"
+ }
+ },
+ "unescape": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/unescape/-/unescape-1.0.1.tgz",
+ "integrity": "sha512-O0+af1Gs50lyH1nUu3ZyYS1cRh01Q/kUKatTOkSs7jukXE6/NebucDVxyiDsA9AQ4JC1V1jUH9EO8JX2nMDgGQ==",
+ "requires": {
+ "extend-shallow": "^2.0.1"
+ }
+ },
+ "unfetch": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/unfetch/-/unfetch-4.2.0.tgz",
+ "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA=="
+ },
+ "unicode-canonical-property-names-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==",
+ "dev": true
+ },
+ "unicode-match-property-ecmascript": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
+ "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
+ "dev": true,
+ "requires": {
+ "unicode-canonical-property-names-ecmascript": "^2.0.0",
+ "unicode-property-aliases-ecmascript": "^2.0.0"
+ }
+ },
+ "unicode-match-property-value-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
+ "dev": true
+ },
+ "unicode-property-aliases-ecmascript": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
+ "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
+ "dev": true
+ },
+ "unidecode": {
+ "version": "0.1.8",
+ "resolved": "https://registry.npmmirror.com/unidecode/-/unidecode-0.1.8.tgz",
+ "integrity": "sha512-SdoZNxCWpN2tXTCrGkPF/0rL2HEq+i2gwRG1ReBvx8/0yTzC3enHfugOf8A9JBShVwwrRIkLX0YcDUGbzjbVCA==",
+ "dev": true
+ },
+ "union-value": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz",
+ "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+ "dev": true,
+ "requires": {
+ "arr-union": "^3.1.0",
+ "get-value": "^2.0.6",
+ "is-extendable": "^0.1.1",
+ "set-value": "^2.0.1"
+ }
+ },
+ "uniq": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/uniq/-/uniq-1.0.1.tgz",
+ "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==",
+ "dev": true
+ },
+ "uniqs": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/uniqs/-/uniqs-2.0.0.tgz",
+ "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==",
+ "dev": true
+ },
+ "unique-filename": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unique-filename/-/unique-filename-1.1.1.tgz",
+ "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+ "requires": {
+ "unique-slug": "^2.0.0"
+ }
+ },
+ "unique-slug": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/unique-slug/-/unique-slug-2.0.2.tgz",
+ "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+ "requires": {
+ "imurmurhash": "^0.1.4"
+ }
+ },
+ "universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmmirror.com/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg=="
+ },
+ "unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="
+ },
+ "unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz",
+ "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
+ "dev": true
+ }
+ }
+ },
+ "unzipper": {
+ "version": "0.10.14",
+ "resolved": "https://registry.npmmirror.com/unzipper/-/unzipper-0.10.14.tgz",
+ "integrity": "sha512-ti4wZj+0bQTiX2KmKWuwj7lhV+2n//uXEotUmGuQqrbVZSEGFMbI68+c6JCQ8aAmUWYvtHEz2A8K6wXvueR/6g==",
+ "requires": {
+ "big-integer": "^1.6.17",
+ "binary": "~0.3.0",
+ "bluebird": "~3.4.1",
+ "buffer-indexof-polyfill": "~1.0.0",
+ "duplexer2": "~0.1.4",
+ "fstream": "^1.0.12",
+ "graceful-fs": "^4.2.2",
+ "listenercount": "~1.0.1",
+ "readable-stream": "~2.3.6",
+ "setimmediate": "~1.0.4"
+ },
+ "dependencies": {
+ "bluebird": {
+ "version": "3.4.7",
+ "resolved": "https://registry.npmmirror.com/bluebird/-/bluebird-3.4.7.tgz",
+ "integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
+ "upath": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/upath/-/upath-1.2.0.tgz",
+ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+ "dev": true
+ },
+ "update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "dev": true,
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
+ "upper-case": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmmirror.com/upper-case/-/upper-case-1.1.3.tgz",
+ "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==",
+ "dev": true
+ },
+ "uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "requires": {
+ "punycode": "^2.1.0"
+ }
+ },
+ "urix": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz",
+ "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
+ "dev": true
+ },
+ "url": {
+ "version": "0.11.2",
+ "resolved": "https://registry.npmmirror.com/url/-/url-0.11.2.tgz",
+ "integrity": "sha512-7yIgNnrST44S7PJ5+jXbdIupfU1nWUdQJBFBeJRclPXiWgCvrSq5Frw8lr/i//n5sqDfzoKmBymMS81l4U/7cg==",
+ "requires": {
+ "punycode": "^1.4.1",
+ "qs": "^6.11.2"
+ },
+ "dependencies": {
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmmirror.com/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ=="
+ }
+ }
+ },
+ "url-loader": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/url-loader/-/url-loader-2.3.0.tgz",
+ "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==",
+ "dev": true,
+ "requires": {
+ "loader-utils": "^1.2.3",
+ "mime": "^2.4.4",
+ "schema-utils": "^2.5.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-2.7.1.tgz",
+ "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.5",
+ "ajv": "^6.12.4",
+ "ajv-keywords": "^3.5.2"
+ }
+ }
+ }
+ },
+ "url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmmirror.com/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
+ "url-slug": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/url-slug/-/url-slug-2.0.0.tgz",
+ "integrity": "sha512-aiNmSsVgrjCiJ2+KWPferjT46YFKoE8i0YX04BlMVDue022Xwhg/zYlnZ6V9/mP3p8Wj7LEp0myiTkC/p6sxew==",
+ "dev": true,
+ "requires": {
+ "unidecode": "0.1.8"
+ }
+ },
+ "urllib": {
+ "version": "2.41.0",
+ "resolved": "https://registry.npmmirror.com/urllib/-/urllib-2.41.0.tgz",
+ "integrity": "sha512-pNXdxEv52L67jahLT+/7QE+Fup1y2Gc6EdmrAhQ6OpQIC2rl14oWwv9hvk1GXOZqEnJNwRXHABuwgPOs1CtL7g==",
+ "requires": {
+ "any-promise": "^1.3.0",
+ "content-type": "^1.0.2",
+ "debug": "^2.6.9",
+ "default-user-agent": "^1.0.0",
+ "digest-header": "^1.0.0",
+ "ee-first": "~1.1.1",
+ "formstream": "^1.1.0",
+ "humanize-ms": "^1.2.0",
+ "iconv-lite": "^0.4.15",
+ "ip": "^1.1.5",
+ "pump": "^3.0.0",
+ "qs": "^6.4.0",
+ "statuses": "^1.3.1",
+ "utility": "^1.16.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ }
+ }
+ },
+ "use": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmmirror.com/use/-/use-3.1.1.tgz",
+ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+ "dev": true
+ },
+ "util": {
+ "version": "0.12.5",
+ "resolved": "https://registry.npmmirror.com/util/-/util-0.12.5.tgz",
+ "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==",
+ "requires": {
+ "inherits": "^2.0.3",
+ "is-arguments": "^1.0.4",
+ "is-generator-function": "^1.0.7",
+ "is-typed-array": "^1.1.3",
+ "which-typed-array": "^1.1.2"
+ }
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "util.promisify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/util.promisify/-/util.promisify-1.0.1.tgz",
+ "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.17.2",
+ "has-symbols": "^1.0.1",
+ "object.getownpropertydescriptors": "^2.1.0"
+ }
+ },
+ "utila": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmmirror.com/utila/-/utila-0.4.0.tgz",
+ "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==",
+ "dev": true
+ },
+ "utility": {
+ "version": "1.18.0",
+ "resolved": "https://registry.npmmirror.com/utility/-/utility-1.18.0.tgz",
+ "integrity": "sha512-PYxZDA+6QtvRvm//++aGdmKG/cI07jNwbROz0Ql+VzFV1+Z0Dy55NI4zZ7RHc9KKpBePNFwoErqIuqQv/cjiTA==",
+ "requires": {
+ "copy-to": "^2.0.1",
+ "escape-html": "^1.0.3",
+ "mkdirp": "^0.5.1",
+ "mz": "^2.7.0",
+ "unescape": "^1.0.1"
+ }
+ },
+ "utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="
+ },
+ "v-viewer": {
+ "version": "1.6.4",
+ "resolved": "https://registry.npmmirror.com/v-viewer/-/v-viewer-1.6.4.tgz",
+ "integrity": "sha512-LVkiUHpmsbsZXebeNXnu8krRCi5i2n07FeLFxoIVGhw8lVvTBO0ffpbDC6mLEuacCjrIh09HjIqpciwUtWE8lQ==",
+ "requires": {
+ "throttle-debounce": "^2.0.1",
+ "viewerjs": "^1.5.0"
+ },
+ "dependencies": {
+ "throttle-debounce": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-2.3.0.tgz",
+ "integrity": "sha512-H7oLPV0P7+jgvrk+6mwwwBDmxTaxnu9HMXmloNLXwnNO0ZxZ31Orah2n8lU1eMPvsaowP2CX+USCgyovXfdOFQ=="
+ }
+ }
+ },
+ "v8-compile-cache": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
+ "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
+ "dev": true
+ },
+ "validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "requires": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
+ }
+ },
+ "vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="
+ },
+ "vcrontab": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmmirror.com/vcrontab/-/vcrontab-0.3.5.tgz",
+ "integrity": "sha512-RMNrDFhsO68BEtdUwtKgtPAvaQIlXmAJ9MrqFLgWBedhlolLclm3kBwlQx4lpN8DlnascCkVcBiGDr+XXQqTpQ==",
+ "requires": {
+ "element-ui": "^2.4.11",
+ "vue": "^2.5.17"
+ }
+ },
+ "vendors": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmmirror.com/vendors/-/vendors-1.0.4.tgz",
+ "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==",
+ "dev": true
+ },
+ "verror": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmmirror.com/verror/-/verror-1.10.0.tgz",
+ "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
+ "requires": {
+ "assert-plus": "^1.0.0",
+ "core-util-is": "1.0.2",
+ "extsprintf": "^1.2.0"
+ },
+ "dependencies": {
+ "core-util-is": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.2.tgz",
+ "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="
+ }
+ }
+ },
+ "viewerjs": {
+ "version": "1.11.5",
+ "resolved": "https://registry.npmmirror.com/viewerjs/-/viewerjs-1.11.5.tgz",
+ "integrity": "sha512-nsvQkC5jnqZ/2ggFYWUH5gpUGPtFAYidsFh8Q7B7sioAdqJzSJrELvbu9ozUm0W+A2uHN5XuuiheHHB+dWiPEA=="
+ },
+ "vm-browserify": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmmirror.com/vm-browserify/-/vm-browserify-1.1.2.tgz",
+ "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
+ },
+ "vue": {
+ "version": "2.7.14",
+ "resolved": "https://registry.npmmirror.com/vue/-/vue-2.7.14.tgz",
+ "integrity": "sha512-b2qkFyOM0kwqWFuQmgd4o+uHGU7T+2z3T+WQp8UBjADfEv2n4FEMffzBmCKNP0IGzOEEfYjvtcC62xaSKeQDrQ==",
+ "requires": {
+ "@vue/compiler-sfc": "2.7.14",
+ "csstype": "^3.1.0"
+ }
+ },
+ "vue-clipboard2": {
+ "version": "0.3.3",
+ "resolved": "https://registry.npmmirror.com/vue-clipboard2/-/vue-clipboard2-0.3.3.tgz",
+ "integrity": "sha512-aNWXIL2DKgJyY/1OOeITwAQz1fHaCIGvUFHf9h8UcoQBG5a74MkdhS/xqoYe7DNZdQmZRL+TAdIbtUs9OyVjbw==",
+ "requires": {
+ "clipboard": "^2.0.0"
+ }
+ },
+ "vue-contextmenujs": {
+ "version": "1.4.11",
+ "resolved": "https://registry.npmmirror.com/vue-contextmenujs/-/vue-contextmenujs-1.4.11.tgz",
+ "integrity": "sha512-k8y0ExOL5yn7fRRCo6UDT81ekq/Ls1JBz70eBBpIgcf1p++84amDL6uCMmlt6D6WK5a9f0NhW2kc2pkCUb2bHA=="
+ },
+ "vue-count-to": {
+ "version": "1.0.13",
+ "resolved": "https://registry.npmmirror.com/vue-count-to/-/vue-count-to-1.0.13.tgz",
+ "integrity": "sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ=="
+ },
+ "vue-eslint-parser": {
+ "version": "7.11.0",
+ "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-7.11.0.tgz",
+ "integrity": "sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==",
+ "dev": true,
+ "requires": {
+ "debug": "^4.1.1",
+ "eslint-scope": "^5.1.1",
+ "eslint-visitor-keys": "^1.1.0",
+ "espree": "^6.2.1",
+ "esquery": "^1.4.0",
+ "lodash": "^4.17.21",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "requires": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ }
+ },
+ "semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true
+ }
+ }
+ },
+ "vue-hot-reload-api": {
+ "version": "2.3.4",
+ "resolved": "https://registry.npmmirror.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
+ "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
+ "dev": true
+ },
+ "vue-i18n": {
+ "version": "8.28.2",
+ "resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.28.2.tgz",
+ "integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA=="
+ },
+ "vue-loader": {
+ "version": "15.10.2",
+ "resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.2.tgz",
+ "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==",
+ "dev": true,
+ "requires": {
+ "@vue/component-compiler-utils": "^3.1.0",
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.1.0",
+ "vue-hot-reload-api": "^2.3.0",
+ "vue-style-loader": "^4.1.0"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ }
+ }
+ },
+ "vue-pdf": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/vue-pdf/-/vue-pdf-4.3.0.tgz",
+ "integrity": "sha512-zd3lJj6CbtrawgaaDDciTDjkJMUKiLWtbEmBg5CvFn9Noe9oAO/GNy/fc5c59qGuFCJ14ibIV1baw4S07e5bSQ==",
+ "requires": {
+ "babel-plugin-syntax-dynamic-import": "^6.18.0",
+ "loader-utils": "^1.4.0",
+ "pdfjs-dist": "2.6.347",
+ "raw-loader": "^4.0.2",
+ "vue-resize-sensor": "^2.0.0",
+ "worker-loader": "^2.0.0"
+ },
+ "dependencies": {
+ "schema-utils": {
+ "version": "0.4.7",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-0.4.7.tgz",
+ "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==",
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "worker-loader": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/worker-loader/-/worker-loader-2.0.0.tgz",
+ "integrity": "sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==",
+ "requires": {
+ "loader-utils": "^1.0.0",
+ "schema-utils": "^0.4.0"
+ }
+ }
+ }
+ },
+ "vue-puzzle-vcode": {
+ "version": "1.1.10",
+ "resolved": "https://registry.npmmirror.com/vue-puzzle-vcode/-/vue-puzzle-vcode-1.1.10.tgz",
+ "integrity": "sha512-gvdrYgFcQOT1aQRn+JCQ6bTJRcdhv/y0asiPxc6Wz9a7zPz++KIbGaXndzTZRmXHfCpSJwqvSrntMMayjegY6g==",
+ "requires": {
+ "vue": "^2.6.14",
+ "webpack-cli": "^4.9.0",
+ "webpack-dev-server": "^4.3.1"
+ }
+ },
+ "vue-resize-sensor": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/vue-resize-sensor/-/vue-resize-sensor-2.0.0.tgz",
+ "integrity": "sha512-W+y2EAI/BxS4Vlcca9scQv8ifeBFck56DRtSwWJ2H4Cw1GLNUYxiZxUHHkuzuI5JPW/cYtL1bPO5xPyEXx4LmQ=="
+ },
+ "vue-router": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-3.0.6.tgz",
+ "integrity": "sha512-Ox0ciFLswtSGRTHYhGvx2L44sVbTPNS+uD2kRISuo8B39Y79rOo0Kw0hzupTmiVtftQYCZl87mwldhh2L9Aquw=="
+ },
+ "vue-seamless-scroll": {
+ "version": "1.1.23",
+ "resolved": "https://registry.npmmirror.com/vue-seamless-scroll/-/vue-seamless-scroll-1.1.23.tgz",
+ "integrity": "sha512-HBjUub8WwsKJzbFCrwKPDrZn4e+SSbkKgwWtjKtfLwesiFGwSsVxP44/Z6d3kpXy94qIFOiflJH6l0/9pj7SGA==",
+ "requires": {
+ "comutils": "^1.1.9"
+ }
+ },
+ "vue-style-loader": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmmirror.com/vue-style-loader/-/vue-style-loader-4.1.3.tgz",
+ "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==",
+ "dev": true,
+ "requires": {
+ "hash-sum": "^1.0.2",
+ "loader-utils": "^1.0.2"
+ },
+ "dependencies": {
+ "hash-sum": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
+ "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+ "dev": true
+ }
+ }
+ },
+ "vue-template-compiler": {
+ "version": "2.7.14",
+ "resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
+ "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+ "dev": true,
+ "requires": {
+ "de-indent": "^1.0.2",
+ "he": "^1.2.0"
+ }
+ },
+ "vue-template-es2015-compiler": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmmirror.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
+ "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
+ "dev": true
+ },
+ "vuedraggable": {
+ "version": "2.24.3",
+ "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-2.24.3.tgz",
+ "integrity": "sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g==",
+ "requires": {
+ "sortablejs": "1.10.2"
+ },
+ "dependencies": {
+ "sortablejs": {
+ "version": "1.10.2",
+ "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.10.2.tgz",
+ "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A=="
+ }
+ }
+ },
+ "vuex": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/vuex/-/vuex-3.1.0.tgz",
+ "integrity": "sha512-mdHeHT/7u4BncpUZMlxNaIdcN/HIt1GsGG5LKByArvYG/v6DvHcOxvDCts+7SRdCoIRGllK8IMZvQtQXLppDYg=="
+ },
+ "watch-size": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/watch-size/-/watch-size-2.0.0.tgz",
+ "integrity": "sha512-M92R89dNoTPWyCD+HuUEDdhaDnh9jxPGOwlDc0u51jAgmjUvzqaEMynXSr3BaWs+QdHYk4KzibPy1TFtjLmOZQ=="
+ },
+ "watchpack": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmmirror.com/watchpack/-/watchpack-1.7.5.tgz",
+ "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
+ "dev": true,
+ "requires": {
+ "chokidar": "^3.4.1",
+ "graceful-fs": "^4.1.2",
+ "neo-async": "^2.5.0",
+ "watchpack-chokidar2": "^2.0.1"
+ }
+ },
+ "watchpack-chokidar2": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
+ "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "chokidar": "^2.1.8"
+ },
+ "dependencies": {
+ "anymatch": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-2.0.0.tgz",
+ "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "micromatch": "^3.1.4",
+ "normalize-path": "^2.1.1"
+ },
+ "dependencies": {
+ "normalize-path": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-2.1.1.tgz",
+ "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "remove-trailing-separator": "^1.0.1"
+ }
+ }
+ }
+ },
+ "binary-extensions": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-1.13.1.tgz",
+ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+ "dev": true,
+ "optional": true
+ },
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "chokidar": {
+ "version": "2.1.8",
+ "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-2.1.8.tgz",
+ "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "^2.0.0",
+ "async-each": "^1.0.1",
+ "braces": "^2.3.2",
+ "fsevents": "^1.2.7",
+ "glob-parent": "^3.1.0",
+ "inherits": "^2.0.3",
+ "is-binary-path": "^1.0.0",
+ "is-glob": "^4.0.0",
+ "normalize-path": "^3.0.0",
+ "path-is-absolute": "^1.0.0",
+ "readdirp": "^2.2.1",
+ "upath": "^1.1.1"
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "fsevents": {
+ "version": "1.2.13",
+ "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-1.2.13.tgz",
+ "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "^2.12.1"
+ }
+ },
+ "glob-parent": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
+ },
+ "dependencies": {
+ "is-glob": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-extglob": "^2.1.0"
+ }
+ }
+ }
+ },
+ "is-binary-path": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-1.0.1.tgz",
+ "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "binary-extensions": "^1.0.0"
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true,
+ "optional": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "readdirp": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-2.2.1.tgz",
+ "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "graceful-fs": "^4.1.11",
+ "micromatch": "^3.1.10",
+ "readable-stream": "^2.0.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+ "dev": true,
+ "optional": true
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "wbuf": {
+ "version": "1.7.3",
+ "resolved": "https://registry.npmmirror.com/wbuf/-/wbuf-1.7.3.tgz",
+ "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+ "requires": {
+ "minimalistic-assert": "^1.0.0"
+ }
+ },
+ "wcwidth": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/wcwidth/-/wcwidth-1.0.1.tgz",
+ "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
+ "dev": true,
+ "requires": {
+ "defaults": "^1.0.3"
+ }
+ },
+ "webgl-constants": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/webgl-constants/-/webgl-constants-1.1.1.tgz",
+ "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg=="
+ },
+ "webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "webpack": {
+ "version": "4.47.0",
+ "resolved": "https://registry.npmmirror.com/webpack/-/webpack-4.47.0.tgz",
+ "integrity": "sha512-td7fYwgLSrky3fI1EuU5cneU4+pbH6GgOfuKNS1tNPcfdGinGELAqsb/BP4nnvZyKSG2i/xFGU7+n2PvZA8HJQ==",
+ "dev": true,
+ "requires": {
+ "@webassemblyjs/ast": "1.9.0",
+ "@webassemblyjs/helper-module-context": "1.9.0",
+ "@webassemblyjs/wasm-edit": "1.9.0",
+ "@webassemblyjs/wasm-parser": "1.9.0",
+ "acorn": "^6.4.1",
+ "ajv": "^6.10.2",
+ "ajv-keywords": "^3.4.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^4.5.0",
+ "eslint-scope": "^4.0.3",
+ "json-parse-better-errors": "^1.0.2",
+ "loader-runner": "^2.4.0",
+ "loader-utils": "^1.2.3",
+ "memory-fs": "^0.4.1",
+ "micromatch": "^3.1.10",
+ "mkdirp": "^0.5.3",
+ "neo-async": "^2.6.1",
+ "node-libs-browser": "^2.2.1",
+ "schema-utils": "^1.0.0",
+ "tapable": "^1.1.3",
+ "terser-webpack-plugin": "^1.4.3",
+ "watchpack": "^1.7.4",
+ "webpack-sources": "^1.4.1"
+ },
+ "dependencies": {
+ "braces": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz",
+ "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+ "dev": true,
+ "requires": {
+ "arr-flatten": "^1.1.0",
+ "array-unique": "^0.3.2",
+ "extend-shallow": "^2.0.1",
+ "fill-range": "^4.0.0",
+ "isobject": "^3.0.1",
+ "repeat-element": "^1.1.2",
+ "snapdragon": "^0.8.1",
+ "snapdragon-node": "^2.0.1",
+ "split-string": "^3.0.2",
+ "to-regex": "^3.0.1"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "extend-shallow": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
+ "dev": true,
+ "requires": {
+ "assign-symbols": "^1.0.0",
+ "is-extendable": "^1.0.1"
+ },
+ "dependencies": {
+ "is-extendable": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz",
+ "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.4"
+ }
+ }
+ }
+ },
+ "fill-range": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz",
+ "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
+ "dev": true,
+ "requires": {
+ "extend-shallow": "^2.0.1",
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1",
+ "to-regex-range": "^2.1.0"
+ },
+ "dependencies": {
+ "extend-shallow": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
+ "dev": true,
+ "requires": {
+ "is-extendable": "^0.1.0"
+ }
+ }
+ }
+ },
+ "is-buffer": {
+ "version": "1.1.6",
+ "resolved": "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz",
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+ "dev": true
+ },
+ "is-number": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz",
+ "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
+ "micromatch": {
+ "version": "3.1.10",
+ "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.10.tgz",
+ "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+ "dev": true,
+ "requires": {
+ "arr-diff": "^4.0.0",
+ "array-unique": "^0.3.2",
+ "braces": "^2.3.1",
+ "define-property": "^2.0.2",
+ "extend-shallow": "^3.0.2",
+ "extglob": "^2.0.4",
+ "fragment-cache": "^0.2.1",
+ "kind-of": "^6.0.2",
+ "nanomatch": "^1.2.9",
+ "object.pick": "^1.3.0",
+ "regex-not": "^1.0.0",
+ "snapdragon": "^0.8.1",
+ "to-regex": "^3.0.2"
+ }
+ },
+ "schema-utils": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-1.0.0.tgz",
+ "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+ "dev": true,
+ "requires": {
+ "ajv": "^6.1.0",
+ "ajv-errors": "^1.0.0",
+ "ajv-keywords": "^3.1.0"
+ }
+ },
+ "to-regex-range": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz",
+ "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
+ "dev": true,
+ "requires": {
+ "is-number": "^3.0.0",
+ "repeat-string": "^1.6.1"
+ }
+ }
+ }
+ },
+ "webpack-aliyun-oss": {
+ "version": "0.4.9",
+ "resolved": "https://registry.npmmirror.com/webpack-aliyun-oss/-/webpack-aliyun-oss-0.4.9.tgz",
+ "integrity": "sha512-rly1wYir/NM1t/cUj0alM+Ixke8YNq6Qx8suqwBlP/ob17RXKM8lMyzfkjTtMSpsQvf+H4psLKf55hnO68H5vA==",
+ "requires": {
+ "ali-oss": "^6.10.0",
+ "colors": "^1.3.2",
+ "fs-extra": "^8.1.0",
+ "globby": "^10.0.1",
+ "listr": "^0.14.3"
+ },
+ "dependencies": {
+ "array-union": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz",
+ "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
+ },
+ "dir-glob": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
+ "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
+ "requires": {
+ "path-type": "^4.0.0"
+ }
+ },
+ "globby": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmmirror.com/globby/-/globby-10.0.2.tgz",
+ "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.0.3",
+ "glob": "^7.1.3",
+ "ignore": "^5.1.1",
+ "merge2": "^1.2.3",
+ "slash": "^3.0.0"
+ }
+ },
+ "ignore": {
+ "version": "5.2.4",
+ "resolved": "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz",
+ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ=="
+ },
+ "path-type": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
+ },
+ "slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
+ }
+ }
+ },
+ "webpack-bundle-analyzer": {
+ "version": "3.9.0",
+ "resolved": "https://registry.npmmirror.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz",
+ "integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==",
+ "dev": true,
+ "requires": {
+ "acorn": "^7.1.1",
+ "acorn-walk": "^7.1.1",
+ "bfj": "^6.1.1",
+ "chalk": "^2.4.1",
+ "commander": "^2.18.0",
+ "ejs": "^2.6.1",
+ "express": "^4.16.3",
+ "filesize": "^3.6.1",
+ "gzip-size": "^5.0.0",
+ "lodash": "^4.17.19",
+ "mkdirp": "^0.5.1",
+ "opener": "^1.5.1",
+ "ws": "^6.0.0"
+ },
+ "dependencies": {
+ "acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "dev": true
+ },
+ "commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "dev": true
+ },
+ "ws": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-6.2.2.tgz",
+ "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==",
+ "dev": true,
+ "requires": {
+ "async-limiter": "~1.0.0"
+ }
+ }
+ }
+ },
+ "webpack-chain": {
+ "version": "6.5.1",
+ "resolved": "https://registry.npmmirror.com/webpack-chain/-/webpack-chain-6.5.1.tgz",
+ "integrity": "sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==",
+ "dev": true,
+ "requires": {
+ "deepmerge": "^1.5.2",
+ "javascript-stringify": "^2.0.1"
+ }
+ },
+ "webpack-cli": {
+ "version": "4.10.0",
+ "resolved": "https://registry.npmmirror.com/webpack-cli/-/webpack-cli-4.10.0.tgz",
+ "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==",
+ "requires": {
+ "@discoveryjs/json-ext": "^0.5.0",
+ "@webpack-cli/configtest": "^1.2.0",
+ "@webpack-cli/info": "^1.5.0",
+ "@webpack-cli/serve": "^1.7.0",
+ "colorette": "^2.0.14",
+ "commander": "^7.0.0",
+ "cross-spawn": "^7.0.3",
+ "fastest-levenshtein": "^1.0.12",
+ "import-local": "^3.0.2",
+ "interpret": "^2.2.0",
+ "rechoir": "^0.7.0",
+ "webpack-merge": "^5.7.3"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz",
+ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
+ },
+ "interpret": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/interpret/-/interpret-2.2.0.tgz",
+ "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
+ },
+ "rechoir": {
+ "version": "0.7.1",
+ "resolved": "https://registry.npmmirror.com/rechoir/-/rechoir-0.7.1.tgz",
+ "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
+ "requires": {
+ "resolve": "^1.9.0"
+ }
+ }
+ }
+ },
+ "webpack-dev-middleware": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
+ "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
+ "requires": {
+ "colorette": "^2.0.10",
+ "memfs": "^3.4.3",
+ "mime-types": "^2.1.31",
+ "range-parser": "^1.2.1",
+ "schema-utils": "^4.0.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "requires": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "requires": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ }
+ }
+ }
+ },
+ "webpack-dev-server": {
+ "version": "4.15.1",
+ "resolved": "https://registry.npmmirror.com/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz",
+ "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==",
+ "requires": {
+ "@types/bonjour": "^3.5.9",
+ "@types/connect-history-api-fallback": "^1.3.5",
+ "@types/express": "^4.17.13",
+ "@types/serve-index": "^1.9.1",
+ "@types/serve-static": "^1.13.10",
+ "@types/sockjs": "^0.3.33",
+ "@types/ws": "^8.5.5",
+ "ansi-html-community": "^0.0.8",
+ "bonjour-service": "^1.0.11",
+ "chokidar": "^3.5.3",
+ "colorette": "^2.0.10",
+ "compression": "^1.7.4",
+ "connect-history-api-fallback": "^2.0.0",
+ "default-gateway": "^6.0.3",
+ "express": "^4.17.3",
+ "graceful-fs": "^4.2.6",
+ "html-entities": "^2.3.2",
+ "http-proxy-middleware": "^2.0.3",
+ "ipaddr.js": "^2.0.1",
+ "launch-editor": "^2.6.0",
+ "open": "^8.0.9",
+ "p-retry": "^4.5.0",
+ "rimraf": "^3.0.2",
+ "schema-utils": "^4.0.0",
+ "selfsigned": "^2.1.1",
+ "serve-index": "^1.9.1",
+ "sockjs": "^0.3.24",
+ "spdy": "^4.0.2",
+ "webpack-dev-middleware": "^5.3.1",
+ "ws": "^8.13.0"
+ },
+ "dependencies": {
+ "ajv": {
+ "version": "8.12.0",
+ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz",
+ "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "requires": {
+ "fast-deep-equal": "^3.1.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2",
+ "uri-js": "^4.2.2"
+ }
+ },
+ "ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "requires": {
+ "fast-deep-equal": "^3.1.3"
+ }
+ },
+ "json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+ },
+ "rimraf": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "schema-utils": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
+ "requires": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ }
+ },
+ "ws": {
+ "version": "8.14.1",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-8.14.1.tgz",
+ "integrity": "sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A=="
+ }
+ }
+ },
+ "webpack-log": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/webpack-log/-/webpack-log-2.0.0.tgz",
+ "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^3.0.0",
+ "uuid": "^3.3.2"
+ },
+ "dependencies": {
+ "uuid": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz",
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "dev": true
+ }
+ }
+ },
+ "webpack-merge": {
+ "version": "5.9.0",
+ "resolved": "https://registry.npmmirror.com/webpack-merge/-/webpack-merge-5.9.0.tgz",
+ "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==",
+ "requires": {
+ "clone-deep": "^4.0.1",
+ "wildcard": "^2.0.0"
+ }
+ },
+ "webpack-sources": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmmirror.com/webpack-sources/-/webpack-sources-1.4.3.tgz",
+ "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+ "dev": true,
+ "requires": {
+ "source-list-map": "^2.0.0",
+ "source-map": "~0.6.1"
+ }
+ },
+ "websocket-driver": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmmirror.com/websocket-driver/-/websocket-driver-0.7.4.tgz",
+ "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+ "requires": {
+ "http-parser-js": ">=0.5.1",
+ "safe-buffer": ">=5.1.0",
+ "websocket-extensions": ">=0.1.1"
+ }
+ },
+ "websocket-extensions": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmmirror.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
+ },
+ "webworker-promise": {
+ "version": "0.5.0",
+ "resolved": "https://registry.npmmirror.com/webworker-promise/-/webworker-promise-0.5.0.tgz",
+ "integrity": "sha512-14iR79jHAV7ozwvbfif+3wCaApT3I1g8Lo0rJZrwAu6wxZGx/08Y8KXz6as6ZLNUEEufeiEBBYrqyDBClXOsEw=="
+ },
+ "whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "requires": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ },
+ "which-boxed-primitive": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+ "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+ "dev": true,
+ "requires": {
+ "is-bigint": "^1.0.1",
+ "is-boolean-object": "^1.1.0",
+ "is-number-object": "^1.0.4",
+ "is-string": "^1.0.5",
+ "is-symbol": "^1.0.3"
+ }
+ },
+ "which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+ },
+ "which-typed-array": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.11.tgz",
+ "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
+ "requires": {
+ "available-typed-arrays": "^1.0.5",
+ "call-bind": "^1.0.2",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "has-tostringtag": "^1.0.0"
+ }
+ },
+ "wide-align": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmmirror.com/wide-align/-/wide-align-1.1.5.tgz",
+ "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
+ "requires": {
+ "string-width": "^1.0.2 || 2 || 3 || 4"
+ }
+ },
+ "wildcard": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.1.tgz",
+ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ=="
+ },
+ "win-release": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmmirror.com/win-release/-/win-release-1.1.1.tgz",
+ "integrity": "sha512-iCRnKVvGxOQdsKhcQId2PXV1vV3J/sDPXKA4Oe9+Eti2nb2ESEsYHRYls/UjoUW3bIc5ZDO8dTH50A/5iVN+bw==",
+ "requires": {
+ "semver": "^5.0.1"
+ }
+ },
+ "wmf": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+ "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+ "dev": true
+ },
+ "word": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+ "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+ "dev": true
+ },
+ "word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
+ "dev": true
+ },
+ "worker-farm": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmmirror.com/worker-farm/-/worker-farm-1.7.0.tgz",
+ "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+ "dev": true,
+ "requires": {
+ "errno": "~0.1.7"
+ }
+ },
+ "worker-loader": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmmirror.com/worker-loader/-/worker-loader-3.0.8.tgz",
+ "integrity": "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==",
+ "requires": {
+ "loader-utils": "^2.0.0",
+ "schema-utils": "^3.0.0"
+ },
+ "dependencies": {
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="
+ },
+ "loader-utils": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-2.0.4.tgz",
+ "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+ "requires": {
+ "big.js": "^5.2.2",
+ "emojis-list": "^3.0.0",
+ "json5": "^2.1.2"
+ }
+ }
+ }
+ },
+ "wrap-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
+ "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==",
+ "requires": {
+ "string-width": "^2.1.1",
+ "strip-ansi": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-3.0.1.tgz",
+ "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw=="
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w=="
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
+ },
+ "write": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmmirror.com/write/-/write-1.0.3.tgz",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+ "dev": true,
+ "requires": {
+ "mkdirp": "^0.5.1"
+ }
+ },
+ "ws": {
+ "version": "7.5.9",
+ "resolved": "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz",
+ "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q=="
+ },
+ "xlsx": {
+ "version": "0.17.5",
+ "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.17.5.tgz",
+ "integrity": "sha512-lXNU0TuYsvElzvtI6O7WIVb9Zar1XYw7Xb3VAx2wn8N/n0whBYrCnHMxtFyIiUU1Wjf09WzmLALDfBO5PqTb1g==",
+ "dev": true,
+ "requires": {
+ "adler-32": "~1.2.0",
+ "cfb": "^1.1.4",
+ "codepage": "~1.15.0",
+ "crc-32": "~1.2.0",
+ "ssf": "~0.11.2",
+ "wmf": "~1.0.1",
+ "word": "~0.3.0"
+ }
+ },
+ "xml2js": {
+ "version": "0.6.2",
+ "resolved": "https://registry.npmmirror.com/xml2js/-/xml2js-0.6.2.tgz",
+ "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==",
+ "requires": {
+ "sax": ">=0.6.0",
+ "xmlbuilder": "~11.0.0"
+ }
+ },
+ "xmlbuilder": {
+ "version": "11.0.1",
+ "resolved": "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
+ "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
+ },
+ "xmlbuilder2": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmmirror.com/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz",
+ "integrity": "sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw==",
+ "requires": {
+ "@oozcitak/dom": "1.15.10",
+ "@oozcitak/infra": "1.0.8",
+ "@oozcitak/util": "8.3.8",
+ "@types/node": "*",
+ "js-yaml": "3.14.0"
+ }
+ },
+ "xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmmirror.com/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw=="
+ },
+ "xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmmirror.com/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+ },
+ "yallist": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
+ "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A=="
+ },
+ "yargs": {
+ "version": "16.2.0",
+ "resolved": "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
+ "dev": true,
+ "requires": {
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.1"
+ }
+ },
+ "wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmmirror.com/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true
+ }
+ }
+ },
+ "yargs-parser": {
+ "version": "20.2.9",
+ "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz",
+ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
+ "dev": true
+ },
+ "yorkie": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmmirror.com/yorkie/-/yorkie-2.0.0.tgz",
+ "integrity": "sha512-jcKpkthap6x63MB4TxwCyuIGkV0oYP/YRyuQU5UO0Yz/E/ZAu+653/uov+phdmO54n6BcvFRyyt0RRrWdN2mpw==",
+ "dev": true,
+ "requires": {
+ "execa": "^0.8.0",
+ "is-ci": "^1.0.10",
+ "normalize-path": "^1.0.0",
+ "strip-indent": "^2.0.0"
+ },
+ "dependencies": {
+ "cross-spawn": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz",
+ "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^4.0.1",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ }
+ },
+ "execa": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmmirror.com/execa/-/execa-0.8.0.tgz",
+ "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^5.0.1",
+ "get-stream": "^3.0.0",
+ "is-stream": "^1.1.0",
+ "npm-run-path": "^2.0.0",
+ "p-finally": "^1.0.0",
+ "signal-exit": "^3.0.0",
+ "strip-eof": "^1.0.0"
+ }
+ },
+ "get-stream": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmmirror.com/get-stream/-/get-stream-3.0.0.tgz",
+ "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
+ "dev": true
+ },
+ "is-stream": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
+ "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "dev": true
+ },
+ "normalize-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-1.0.0.tgz",
+ "integrity": "sha512-7WyT0w8jhpDStXRq5836AMmihQwq2nrUVQrgjvUo/p/NZf9uy/MeJ246lBJVmWuYXMlJuG9BNZHF0hWjfTbQUA==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^2.0.0"
+ }
+ },
+ "path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^1.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true
+ },
+ "which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmmirror.com/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
+ }
+ },
+ "zip-stream": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmmirror.com/zip-stream/-/zip-stream-4.1.1.tgz",
+ "integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==",
+ "requires": {
+ "archiver-utils": "^3.0.4",
+ "compress-commons": "^4.1.2",
+ "readable-stream": "^3.6.0"
+ },
+ "dependencies": {
+ "archiver-utils": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmmirror.com/archiver-utils/-/archiver-utils-3.0.4.tgz",
+ "integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==",
+ "requires": {
+ "glob": "^7.2.3",
+ "graceful-fs": "^4.2.0",
+ "lazystream": "^1.0.0",
+ "lodash.defaults": "^4.2.0",
+ "lodash.difference": "^4.5.0",
+ "lodash.flatten": "^4.4.0",
+ "lodash.isplainobject": "^4.0.6",
+ "lodash.union": "^4.6.0",
+ "normalize-path": "^3.0.0",
+ "readable-stream": "^3.6.0"
+ }
+ }
+ }
+ },
+ "zrender": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmmirror.com/zrender/-/zrender-4.3.2.tgz",
+ "integrity": "sha512-bIusJLS8c4DkIcdiK+s13HiQ/zjQQVgpNohtd8d94Y2DnJqgM1yjh/jpDb8DoL6hd7r8Awagw8e3qK/oLaWr3g=="
+ }
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..345279c
--- /dev/null
+++ b/package.json
@@ -0,0 +1,114 @@
+{
+ "name": "EICS",
+ "version": "1.0.0",
+ "scripts": {
+ "dev": "vue-cli-service serve --open",
+ "build": "vue-cli-service build",
+ "build:prod": "vue-cli-service build --mode prod",
+ "build:uat": "vue-cli-service build --mode uat",
+ "build:usa": "vue-cli-service build --mode usa",
+ "pre": "vue-cli-service build --mode pre",
+ "i18n": "npm run i18n:zh && npm run i18n:en",
+ "i18n:zh": "node i18nGenerate.js lang=zh keyCol=5 valCol=6",
+ "i18n:en": "node i18nGenerate.js lang=en keyCol=5 valCol=7"
+ },
+ "dependencies": {
+ "@cornerstonejs/calculate-suv": "^1.1.0",
+ "@cornerstonejs/core": "^1.15.1",
+ "@cornerstonejs/dicom-image-loader": "^1.15.1",
+ "@cornerstonejs/streaming-image-volume-loader": "^1.15.1",
+ "@cornerstonejs/tools": "^1.15.1",
+ "@ffmpeg/core": "^0.10.0",
+ "@ffmpeg/ffmpeg": "^0.10.1",
+ "@kitware/vtk.js": "^26.8.0",
+ "@microsoft/signalr": "^6.0.8",
+ "@riophae/vue-treeselect": "0.4.0",
+ "ali-oss": "^6.17.1",
+ "axios": "0.18.1",
+ "babel-eslint": "7.2.3",
+ "copy-webpack-plugin": "^4.5.2",
+ "core-js": "^3.8.3",
+ "cornerstone-core": "^2.3.0",
+ "cornerstone-math": "^0.1.8",
+ "cornerstone-tools": "^6.0.8",
+ "cornerstone-wado-image-loader": "^3.1.2",
+ "dcmjs": "^0.29.9",
+ "dicom-parser": "^1.8.21",
+ "dicomedit": "^0.1.3",
+ "echarts": "^4.8.0",
+ "element-ui": "^2.15.8",
+ "exceljs": "^4.1.0",
+ "file-saver": "^2.0.5",
+ "hammerjs": "^2.0.8",
+ "js-md5": "^0.7.3",
+ "jszip": "^3.7.1",
+ "moment": "^2.27.0",
+ "node-polyfill-webpack-plugin": "^2.0.1",
+ "node-sass": "^4.14.1",
+ "normalize.css": "7.0.0",
+ "nprogress": "0.2.0",
+ "path-to-regexp": "2.4.0",
+ "pdfobject": "^2.2.8",
+ "popper.js": "^1.16.1",
+ "sass-loader": "^8.0.0",
+ "screenfull": "^4.2.0",
+ "sortablejs": "^1.15.0",
+ "v-viewer": "^1.6.4",
+ "vcrontab": "^0.3.5",
+ "vue": "^2.6.11",
+ "vue-clipboard2": "^0.3.1",
+ "vue-contextmenujs": "^1.3.13",
+ "vue-count-to": "^1.0.13",
+ "vue-i18n": "^8.7.0",
+ "vue-pdf": "^4.3.0",
+ "vue-puzzle-vcode": "^1.1.10",
+ "vue-router": "3.0.6",
+ "vue-seamless-scroll": "^1.1.21",
+ "vuedraggable": "^2.24.3",
+ "vuex": "3.1.0",
+ "webpack-aliyun-oss": "^0.4.9"
+ },
+ "devDependencies": {
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
+ "@babel/plugin-proposal-optional-chaining": "^7.21.0",
+ "@vue/cli-plugin-babel": "~4.5.4",
+ "@vue/cli-plugin-eslint": "~4.5.4",
+ "@vue/cli-service": "~4.5.4",
+ "autoprefixer": "^9.5.1",
+ "chalk": "2.4.2",
+ "connect": "3.6.6",
+ "babel-eslint": "^10.1.0",
+ "eslint": "^6.7.2",
+ "eslint-plugin-vue": "^6.2.2",
+ "html-webpack-plugin": "3.2.0",
+ "node-xlsx": "^0.21.0",
+ "runjs": "^4.3.2",
+ "script-ext-html-webpack-plugin": "2.1.3",
+ "script-loader": "0.7.2",
+ "serve-static": "^1.13.2",
+ "svg-sprite-loader": "4.1.3",
+ "svgo": "1.2.2",
+ "vue-template-compiler": "^2.6.11"
+ },
+ "eslintConfig": {
+ "root": true,
+ "env": {
+ "node": true
+ },
+ "extends": [
+ "plugin:vue/essential"
+ ],
+ "parserOptions": {
+ "parser": "babel-eslint"
+ },
+ "rules": {}
+ },
+ "engines": {
+ "node": ">=8.9",
+ "npm": ">= 3.0.0"
+ },
+ "browserslist": [
+ "> 1%",
+ "last 2 versions"
+ ]
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..6101901
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,7 @@
+// eslint-disable-next-line no-undef
+module.exports = {
+ 'plugins': {
+ // to edit target browsers: use "browserslist" field in package.json
+ 'autoprefixer': {}
+ }
+}
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..70e9d37
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..145ee3b
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+ <%= webpackConfig.name %>
+ <% if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) { %>
+
+ <% } else { %>
+
+ <% } %>
+
+
+
+
+
+
+
+
diff --git a/src/.DS_Store b/src/.DS_Store
new file mode 100644
index 0000000..5b4ee53
Binary files /dev/null and b/src/.DS_Store differ
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..ae8ae33
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/api/.DS_Store b/src/api/.DS_Store
new file mode 100644
index 0000000..1c0804d
Binary files /dev/null and b/src/api/.DS_Store differ
diff --git a/src/api/admin.js b/src/api/admin.js
new file mode 100644
index 0000000..361ec37
--- /dev/null
+++ b/src/api/admin.js
@@ -0,0 +1,279 @@
+import request from '@/utils/request'
+/** =========================user=======================**/
+export function getUserList(param) {
+ return request({
+ url: '/user/getUserList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getUserTypeList() {
+ return request({
+ url: `/UserTypeRole/getUserTypeList/0`,
+ method: 'get'
+ })
+}
+
+export function updateUserState(userId, state) {
+ return request({
+ url: `/user/updateUserState/${userId}/${state}`,
+ method: 'post'
+ })
+}
+
+export function getInstitutionList(typeId) {
+ return request({
+ url: `/institution/getInstitutionList/${typeId}`,
+ method: 'get'
+ })
+}
+
+export function addUser(param) {
+ return request({
+ url: `/user/addUser`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateUser(param) {
+ return request({
+ url: `/user/updateUser`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function getUser(userId) {
+ return request({
+ url: `/user/getUser/${userId}`,
+ method: 'get'
+ })
+}
+
+export function deleteSysUser(userId) {
+ return request({
+ url: `/user/deleteUser/${userId}`,
+ method: 'delete'
+ })
+}
+
+export function getRoleList(userId, pageIndex, pageSize) {
+ return request({
+ url: `/role/getRoleList/${userId}/${pageIndex}/${pageSize}`,
+ method: 'get'
+ })
+}
+
+export function getUserRoles(userId) {
+ return request({
+ url: `/user/getUserRoles/${userId}`,
+ method: 'get'
+ })
+}
+
+export function UpdateUserRole(param) {
+ return request({
+ url: `/role/UpdateUserRole`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function resetPassword(userId) {
+ return request({
+ url: `/user/resetPassword/${userId}`,
+ method: 'get'
+ })
+}
+
+export function modifyPassword(param) {
+ return request({
+ url: `/user/modifyPassword`,
+ method: 'post',
+ data: param
+ })
+}
+
+/** =========================role=======================**/
+export function getRolesList(pageIndex, pageSize) {
+ return request({
+ url: `/role/getRoleList/${pageIndex}/${pageSize}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateRole(param) {
+ return request({
+ url: `/role/addOrUpdateRole`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteRole(roleId) {
+ return request({
+ url: `/role/deleteRole/${roleId}`,
+ method: 'delete'
+ })
+}
+
+export function getRoleMenuFunction(roleId) {
+ return request({
+ url: `/menu/getRoleMenuFunction/${roleId}`,
+ method: 'get'
+ })
+}
+
+export function getRoleFunction(roleId, parentId) {
+ return request({
+ url: `/menu/getRoleFunction/${roleId}/${parentId}`,
+ method: 'get'
+ })
+}
+
+export function updateRoleMenu(param) {
+ return request({
+ url: `/menu/updateRoleMenu`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateRoleFunction(param) {
+ return request({
+ url: `/menu/updateRoleFunction`,
+ method: 'post',
+ data: param
+ })
+}
+/** =========================menu=======================**/
+
+export function getMenuFunction() {
+ return request({
+ url: `/menu/getMenuFunction`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateMenu(param) {
+ return request({
+ url: `/menu/addOrUpdateMenu`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteMenuFunction(menuFunctionId) {
+ return request({
+ url: `/menu/deleteMenuFunction/${menuFunctionId}`,
+ method: 'delete'
+ })
+}
+/** =========================log=======================**/
+
+export function getLogList(param) {
+ return request({
+ url: `/log/getLogList`,
+ method: 'post',
+ data: param
+ })
+}
+
+/** =========================UserType=======================**/
+export function getUserTypeRoleList(param) {
+ return request({
+ url: `/UserTypeRole/getUserTypeRoleList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateUserType(param) {
+ return request({
+ url: `/UserTypeRole/addOrUpdateUserTypeRole`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteUserTypeRole(userTypeRoleId) {
+ return request({
+ url: `/UserTypeRole/deleteUserTypeRole/${userTypeRoleId}`,
+ method: 'delete'
+ })
+}
+
+export function getUserTypeListByUserType(userType) {
+ return request({
+ url: `/UserTypeRole/getUserTypeList/${userType}`,
+ method: 'get'
+ })
+}
+
+export function initSetUserNameAndPwd(params) {
+ return request({
+ url: `/User/initSetUserNameAndPwd?NewUserName=${params.NewUserName}&UserId=${params.UserId}&NewPwd=${params.NewPwd}&access_token=${params.access_token}`,
+ method: 'get'
+ })
+}
+
+export function getPublishLogList(param) {
+ return request({
+ url: `/PublishLog/getPublishLogList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdatePublishLog(param) {
+ return request({
+ url: `/PublishLog/addOrUpdatePublishLog`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePublishLog(publishLogId) {
+ return request({
+ url: `/PublishLog/deletePublishLog/${publishLogId}`,
+ method: 'delete'
+ })
+}
+
+export function getInternationalizationList(param) {
+ return request({
+ url: `/Internationalization/getInternationalizationList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getFrontInternationalizationList() {
+ return request({
+ url: `/Internationalization/getFrontInternationalizationList`,
+ method: 'get'
+ })
+}
+export function addOrUpdateInternationalization(param) {
+ return request({
+ url: `/Internationalization/addOrUpdateInternationalization`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteInternationalization(internationalizationId) {
+ return request({
+ url: `/Internationalization/deleteInternationalization/${internationalizationId}`,
+ method: 'delete'
+ })
+}
+
+export function batchAddInternationalization(param) {
+ return request({
+ url: `/Internationalization/batchAddInternationalization`,
+ method: 'post',
+ data: param
+ })
+}
diff --git a/src/api/attachment.js b/src/api/attachment.js
new file mode 100644
index 0000000..8748283
--- /dev/null
+++ b/src/api/attachment.js
@@ -0,0 +1,58 @@
+import request from '@/utils/request'
+export function uploadFile(file, type, id) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/file/uploadFile/${type}/${id}`,
+ method: 'post',
+ data: formData
+ })
+}
+
+export function deleteAttachment(id, filePath) {
+ return request({
+ url: `/attachment/deleteAttachment`,
+ method: 'delete',
+ data: { Id: id, Path: filePath }
+ })
+}
+
+export function getAttachmentByType(doctorId, type) {
+ return request({
+ url: `/attachment/getAttachmentByType/${doctorId}/${type}`,
+ method: 'get'
+ })
+}
+
+export function saveAttachments(param) {
+ return request({
+ url: `/attachment/saveAttachments`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setOfficial(doctorId, attachmentId, language) {
+ return request({
+ url: `/attachment/setOfficial/${doctorId}/${attachmentId}/${language}`,
+ method: 'post'
+ })
+}
+
+export function uploadNonDoctorFile(file, type, config = {}) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/file/uploadNonDoctorFile/${type}`,
+ method: 'post',
+ data: formData,
+ ...config
+ })
+}
+
+export function setLanguageForResume(doctorId, attachmentId, language) {
+ return request({
+ url: `/attachment/setLanguage/${doctorId}/${attachmentId}/${language}`,
+ method: 'post'
+ })
+}
diff --git a/src/api/dashboard.js b/src/api/dashboard.js
new file mode 100644
index 0000000..7dbedf1
--- /dev/null
+++ b/src/api/dashboard.js
@@ -0,0 +1,56 @@
+import request from '@/utils/request'
+export function getReadingDataByType() {
+ return request({
+ url: '/statistics/getReadingDataByType',
+ method: 'get'
+ })
+}
+
+export function getReadingDataByMonth(monthCount) {
+ const url = `/statistics/getReadingDataByMonth/${monthCount}`
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+
+export function getReadingDataRank(topCount) {
+ const url = `/statistics/GetReadingDataRank/${topCount}`
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+
+export function getReviewersByRank() {
+ const url = `/statistics/getReviewersByRank`
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+
+export function getEnrollDataByQuarter(type, monthCount) {
+ const url = `/statistics/GetEnrollDataByQuarter/${type}/${monthCount}`
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+
+export function getTrialCountRank(topCount) {
+ const url = `/statistics/getTrialCountRank/${topCount}`
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+
+export function getLatestWorkLoadList(searchCount) {
+ const url = `/statistics/getLatestWorkLoadList/${searchCount}`
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+
diff --git a/src/api/dictionary.js b/src/api/dictionary.js
new file mode 100644
index 0000000..e06cea1
--- /dev/null
+++ b/src/api/dictionary.js
@@ -0,0 +1,962 @@
+import request from '@/utils/request'
+import requestDownload from '@/utils/request-download'
+export function getDicTree() {
+ return request({
+ url: '/dictionary/getDicTree',
+ method: 'get'
+ })
+}
+
+export function getDictionarySelectList(param) {
+ return request({
+ url: '/dictionary/getDictionarySelectList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateDictionary(param) {
+ return request({
+ url: '/dictionary/addOrUpdateDictionary',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteDictionary(id) {
+ return request({
+ url: `/dictionary/deleteDictionary/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getHospitalPageList(param) {
+ return request({
+ url: '/hospital/getHospitalPageList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateHospital(param) {
+ return request({
+ url: '/hospital/addOrUpdateHospital',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteHospital(hospitalId) {
+ return request({
+ url: `/hospital/deleteHospital/${hospitalId}`,
+ method: 'delete'
+ })
+}
+
+export function getSiteList(param) {
+ return request({
+ url: '/site/getSiteList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateSite(param) {
+ return request({
+ url: '/site/addOrUpdateSite',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSite(siteId) {
+ return request({
+ url: `/site/deleteSite/${siteId}`,
+ method: 'delete'
+ })
+}
+
+export function getCROPageList(param) {
+ return request({
+ url: '/cro/getCROList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateCro(param) {
+ return request({
+ url: '/cro/addOrUpdateCro',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteCROCompany(croCompanyId) {
+ return request({
+ url: `/cro/deleteCro/${croCompanyId}`,
+ method: 'delete'
+ })
+}
+
+export function getSponsorPageList(param) {
+ return request({
+ url: '/sponsor/getSponsorList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateSponsor(param) {
+ return request({
+ url: '/sponsor/addOrUpdateSponsor',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSponsor(sponsorId) {
+ return request({
+ url: `/sponsor/deleteSponsor/${sponsorId}`,
+ method: 'delete'
+ })
+}
+
+export function getQaTemplateList(param) {
+ return request({
+ url: '/QATemplate/GetQaTemplateList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateQATemplate(param) {
+ return request({
+ url: '/QATemplate/AddOrUpdateQATemplate',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteQATemplate(qaTemplateId) {
+ return request({
+ url: `/QATemplate/DeleteQATemplate/${qaTemplateId}`,
+ method: 'delete'
+ })
+}
+
+export function getQaTemplateConfigList(qaTemplateId, modalityId) {
+ return request({
+ url: `/QATemplate/GetQATemplateConfigedList/${qaTemplateId}/${modalityId}`,
+ method: 'get'
+ })
+}
+
+export function configQATemplateItem(param) {
+ return request({
+ url: '/QATemplate/ConfigQATemplateItem',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQATemplateItemList(param) {
+ return request({
+ url: '/QATemplate/GetQATemplateItemList',
+ method: 'post',
+ data: param
+ })
+}
+export function addOrUpdateQATemplateItem(param) {
+ return request({
+ url: '/QATemplate/AddOrUpdateQATemplateItem',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteQATemplateItem(qaTemplateItemId) {
+ return request({
+ url: `/QATemplate/DeleteQATemplateItem/${qaTemplateItemId}`,
+ method: 'delete'
+ })
+}
+
+export function getQCQuestionConfigureList(param) {
+ return request({
+ url: `/QCQuestionConfigure/getQCQuestionConfigureList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateQCQuestionConfigure(param) {
+ return request({
+ url: `/QCQuestionConfigure/addOrUpdateQCQuestionConfigure`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteQCQuestionConfigure(qcQuestionConfigureId) {
+ return request({
+ url: `/QCQuestionConfigure/deleteQCQuestionConfigure/${qcQuestionConfigureId}`,
+ method: 'delete'
+ })
+}
+export function getSystemDocumentList(param) {
+ return request({
+ url: `/SystemDocument/getSystemDocumentList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateSystemDocument(param) {
+ return request({
+ url: `/SystemDocument/addOrUpdateSystemDocument`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSystemDocument(id) {
+ return request({
+ url: `/SystemDocument/deleteSystemDocument/${id}`,
+ method: 'delete'
+ })
+}
+
+export function uploadSystemDoc(file) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/TrialDocument/UploadSystemDoc`,
+ method: 'post',
+ data: formData
+ })
+}
+
+export function getCommonDocumentList(param) {
+ return request({
+ url: `/CommonDocument/getCommonDocumentList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateCommonDocument(param) {
+ return request({
+ url: `/CommonDocument/addOrUpdateCommonDocument`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function uploadCommonDoc(file) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/CommonDocument/UploadCommonDoc`,
+ method: 'post',
+ data: formData
+ })
+}
+
+export function DownloadCommonDoc(code) {
+ return requestDownload({
+ url: `/CommonDocument/DownloadCommonDoc?code=${code}`,
+ method: 'get',
+ responseType: 'blob'
+ })
+}
+
+export function DownloadSystemClinicalFile(clinicalDataSystemSetId) {
+ return requestDownload({
+ url: `/CommonDocument/DownloadSystemClinicalFile?clinicalDataSystemSetId=${clinicalDataSystemSetId}`,
+ method: 'get',
+ responseType: 'blob'
+ })
+}
+
+export function getEmailNoticeConfigList(param) {
+ return request({
+ url: `/EmailNoticeConfig/getEmailNoticeConfigList`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteEmailNoticeConfig(id) {
+ return request({
+ url: `/EmailNoticeConfig/deleteEmailNoticeConfig/${id}`,
+ method: 'delete'
+ })
+}
+export function addOrUpdateEmailNoticeConfigList(param) {
+ return request({
+ url: `/EmailNoticeConfig/addOrUpdateEmailNoticeConfig`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getBasicDataSelect(param) {
+ return request({
+ url: `/SystemBasicData/getBasicDataSelect`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSystemBasicDataList(param) {
+ return request({
+ url: `/SystemBasicData/getSystemBasicDataList`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteSystemBasicData(id) {
+ return request({
+ url: `/SystemBasicData/deleteSystemBasicData/${id}`,
+ method: 'delete'
+ })
+}
+export function addOrUpdateSystemBasicData(param) {
+ return request({
+ url: `/SystemBasicData/addOrUpdateSystemBasicData`,
+ method: 'post',
+ data: param
+ })
+}
+export function getChildList(parentId) {
+ return request({
+ url: `/SystemBasicData/getChildList/${parentId}`,
+ method: 'get'
+ })
+}
+
+export function getSystemBasicData(code) {
+ return request({
+ url: `/SystemBasicData/getSystemBasicData/${code}`,
+ method: 'get'
+ })
+}
+
+export function getSystemAnonymizationList(param) {
+ return request({
+ url: `/SystemAnonymization/getSystemAnonymizationList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateSystemAnonymization(param) {
+ return request({
+ url: `/SystemAnonymization/addOrUpdateSystemAnonymization`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSystemAnonymization(id) {
+ return request({
+ url: `/SystemAnonymization/deleteSystemAnonymization/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getBasicDicList(param) {
+ return request({
+ url: `/Dictionary/getBasicDicList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateBasicDic(param) {
+ return request({
+ url: `/Dictionary/addOrUpdateBasicDic`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDictionaryChildList(id) {
+ return request({
+ url: `/Dictionary/getChildList/${id}`,
+ method: 'get'
+ })
+}
+
+export function getClinicalDataSetList(param) {
+ return request({
+ url: `/ClinicalDataSet/getSystemClinicalDataSystemSetList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateClinicalDataSet(param) {
+ return request({
+ url: `/ClinicalDataSet/addOrUpdateClinicalDataSystemSet`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteClinicalSetData(id) {
+ return request({
+ url: `/ClinicalDataSet/deleteClinicalSystemSetData/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getReadingQuestionCriterionSystemList(param) {
+ return request({
+ url: '/ReadingQuestion/getReadingQuestionCriterionSystemList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function setSystemReadingQuestionCriterionIsIsEnable(param) {
+ return request({
+ url: '/ReadingQuestion/setSystemReadingQuestionCriterionIsIsEnable',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingQuestionSystemList(param) {
+ return request({
+ url: '/ReadingQuestion/getReadingQuestionSystemList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateReadingQuestionSystem(param) {
+ return request({
+ url: '/ReadingQuestion/addOrUpdateReadingQuestionSystem',
+ method: 'post',
+ data: param
+ })
+}
+export function deleteReadingQuestionSystem(readingQuestionSystemId) {
+ return request({
+ url: `/ReadingQuestion/deleteReadingQuestionSystem/${readingQuestionSystemId}`,
+ method: 'delete'
+ })
+}
+
+export function getSystemCriterionOtherQuestion(param) {
+ return request({
+ url: `/ReadingQuestion/getSystemCriterionOtherQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSystemGroupNameList(param) {
+ return request({
+ url: `/ReadingQuestion/getSystemGroupNameList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setSystemReadingQuestionCriterionIsCompleteConfig(param) {
+ return request({
+ url: `/ReadingQuestion/setSystemReadingQuestionCriterionIsCompleteConfig`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingMedicineSystemQuestionList(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/getReadingMedicineSystemQuestionList`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteReadingMedicineSystemQuestion(id) {
+ return request({
+ url: `/ReadingMedicineQuestion/deleteReadingMedicineSystemQuestion/${id}`,
+ method: 'delete'
+ })
+}
+export function addOrUpdateReadingMedicineSystemQuestion(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/addOrUpdateReadingMedicineSystemQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSystemReadingQuestion(param) {
+ return request({
+ url: `/ReadingImageTask/getSystemReadingQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQCQuestionSelectList(param) {
+ return request({
+ url: `/QCQuestionConfigure/GetQCQuestionSelectList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQuestionView(param) {
+ return request({
+ url: `/QCQuestionConfigure/getQuestionView`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingMedicineSystemOtherQuestion(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/getReadingMedicineSystemOtherQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getOrganInfoList(param) {
+ return request({
+ url: `/OrganInfo/getOrganInfoList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getOrganPageList(param) {
+ return request({
+ url: `/OrganInfo/getOrganPageList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateOrganInfo(param) {
+ return request({
+ url: `/OrganInfo/addOrUpdateOrganInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteOrganInfo(id) {
+ return request({
+ url: `/OrganInfo/deleteOrganInfo/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getCriterionNidusList(param) {
+ return request({
+ url: `/OrganInfo/getCriterionNidusList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateCriterionNidus(param) {
+ return request({
+ url: `/OrganInfo/addOrUpdateCriterionNidus`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteCriterionNidus(id) {
+ return request({
+ url: `/OrganInfo/deleteCriterionNidus/${id}`,
+ method: 'delete'
+ })
+}
+
+export function copySystemCriterionData(param) {
+ return request({
+ url: `/ReadingQuestion/copySystemCriterionData`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTumorAssessmentList(param) {
+ return request({
+ url: `/ReadingQuestion/getTumorAssessmentList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTumorAssessmentPageList(param) {
+ return request({
+ url: `/ReadingQuestion/getTumorAssessmentPageList`,
+ method: 'post',
+ data: param
+ })
+}
+export function addOrUpdateTumorAssessment(param) {
+ return request({
+ url: `/ReadingQuestion/addOrUpdateTumorAssessment`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteTumorAssessment(id) {
+ return request({
+ url: `/ReadingQuestion/deleteTumorAssessment/${id}`,
+ method: 'delete'
+ })
+}
+export function addOrUpdateReadingQuestionCriterionSystem(param) {
+ return request({
+ url: `/ReadingQuestion/addOrUpdateReadingQuestionCriterionSystem`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteReadingQuestionCriterionSystem(id) {
+ return request({
+ url: `/ReadingQuestion/deleteReadingQuestionCriterionSystem/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getBasicConfigSelect(searchKey) {
+ return request({
+ url: `/Dictionary/getBasicConfigSelect?searchKey=${searchKey}`,
+ method: 'get'
+ })
+}
+
+export function getSystemCriterionSelectList(param) {
+ return request({
+ url: `/ClinicalDataSet/getSystemCriterionSelectList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getAssessType(param) {
+ return request({
+ url: `/ReadingQuestion/getAssessType`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setAssessType(param) {
+ return request({
+ url: `/ReadingQuestion/setAssessType`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setDictionaryFollowVisitUse(param) {
+ return request({
+ url: `/ReadingQuestion/setDictionaryFollowVisitUse`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setDictionaryBaseLineUse(param) {
+ return request({
+ url: `/ReadingQuestion/setDictionaryBaseLineUse`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSystemOncologyInfo(param) {
+ return request({
+ url: `/ReadingQuestion/getSystemOncologyInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setSystemOncologyInfo(param) {
+ return request({
+ url: `/ReadingQuestion/setSystemOncologyInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCriterionDictionaryList(param) {
+ return request({
+ url: `/Dictionary/getCriterionDictionaryList?SystemCriterionId=${param.SystemCriterionId}`,
+ method: 'get'
+ })
+}
+
+export function getTrialCriterionDictionaryList(param) {
+ return request({
+ url: `/Dictionary/getTrialCriterionDictionaryList?TrialCriterionId=${param.TrialCriterionId}`,
+ method: 'get'
+ })
+}
+
+export function setCriterionDictionary(params) {
+ return request({
+ url: `/ReadingQuestion/setCriterionDictionary`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function setSystemGlobalInfo(params) {
+ return request({
+ url: `/ReadingQuestion/setSystemGlobalInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSystemGlobalInfo(params) {
+ return request({
+ url: `/ReadingQuestion/getSystemGlobalInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getCriterionDictionary(params) {
+ return request({
+ url: `/Dictionary/getCriterionDictionary`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addSystemCriterionDictionaryCode(params) {
+ return request({
+ url: `/ReadingQuestion/addSystemCriterionDictionaryCode`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteSystemCriterionDictionary(params) {
+ return request({
+ url: `/ReadingQuestion/deleteSystemCriterionDictionary`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function synchronizeSystemOrgan(params) {
+ return request({
+ url: `/OrganInfo/synchronizeSystemOrgan`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function editCriterionDictionary(params) {
+ return request({
+ url: `/ReadingQuestion/editCriterionDictionary`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSystemClinicalQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getSystemClinicalQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteSystemClinicalQuestion(Id) {
+ return request({
+ url: `/ClinicalQuestion/deleteSystemClinicalQuestion/${Id}`,
+ method: 'post'
+ })
+}
+
+export function addOrUpdateSystemClinicalQuestion(params) {
+ return request({
+ url: `/ClinicalQuestion/addOrUpdateSystemClinicalQuestion`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSystemClinicalOtherQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getSystemClinicalOtherQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSystemClinicalGroupQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getSystemClinicalGroupQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSystemClinicalTableQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getSystemClinicalTableQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialClinicalTableQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getTrialClinicalTableQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteSystemClinicalTableQuestion(id) {
+ return request({
+ url: `/ClinicalQuestion/deleteSystemClinicalTableQuestion/¥{id}`,
+ method: 'post'
+ })
+}
+
+export function deleteTrialClinicalTableQuestion(id) {
+ return request({
+ url: `/ClinicalQuestion/deleteTrialClinicalTableQuestion/¥{id}`,
+ method: 'post'
+ })
+}
+
+export function addOrUpdateSystemClinicalTableQuestion(params) {
+ return request({
+ url: `/ClinicalQuestion/addOrUpdateSystemClinicalTableQuestion`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addOrUpdateTrialClinicalTableQuestion(params) {
+ return request({
+ url: `/ClinicalQuestion/addOrUpdateTrialClinicalTableQuestion`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function applySystemClinical(params) {
+ return request({
+ url: `/ClinicalDataSet/applySystemClinical`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialClinicalQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getTrialClinicalQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteTrialClinicalQuestion(id) {
+ return request({
+ url: `/ClinicalQuestion/deleteTrialClinicalQuestion/${id}`,
+ method: 'post'
+ })
+}
+
+export function applyTrialClinical(params) {
+ return request({
+ url: `/ClinicalDataSet/applyTrialClinical`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addOrUpdateTrialClinicalQuestion(params) {
+ return request({
+ url: `/ClinicalQuestion/addOrUpdateTrialClinicalQuestion`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialClinicalOtherQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getTrialClinicalOtherQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialClinicalGroupQuestionList(params) {
+ return request({
+ url: `/ClinicalQuestion/getTrialClinicalGroupQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addBasicDicAndChild(params) {
+ return request({
+ url: `/Dictionary/addBasicDicAndChild`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getClinicalCalculateQuestions(params) {
+ return request({
+ url: `/ClinicalQuestion/getClinicalCalculateQuestions`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialClinicalQuestionCalculateRelation(params) {
+ return request({
+ url: `/ClinicalQuestion/getTrialClinicalQuestionCalculateRelation`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getClinicalQuestionFormList(params) {
+ return request({
+ url: `/ClinicalAnswer/getClinicalQuestionFormList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getClinicalFormInfo(params) {
+ return request({
+ url: `/ClinicalAnswer/getClinicalFormInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function Upload(params, type) {
+ return request({
+ url: `/SystemFile/Upload?fileType=${type}`,
+ method: 'post',
+ data: params
+ })
+}
diff --git a/src/api/dictionary/checkConfig.js b/src/api/dictionary/checkConfig.js
new file mode 100644
index 0000000..af74b93
--- /dev/null
+++ b/src/api/dictionary/checkConfig.js
@@ -0,0 +1,78 @@
+import request from '@/utils/request'
+
+export function getFrontAuditConfigList(param) {
+ return request({
+ url: '/FrontAuditConfig/getFrontAuditConfigList',
+ method: 'post',
+ data: param
+ })
+}
+export function addOrUpdateFrontAuditConfig(param) {
+ return request({
+ url: `/FrontAuditConfig/addOrUpdateFrontAuditConfig`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteFrontAuditConfig(frontAuditConfigId) {
+ return request({
+ url: `/FrontAuditConfig/deleteFrontAuditConfig/${frontAuditConfigId}`,
+ method: 'delete'
+ })
+}
+
+export function copyOtherToThisItem(param) {
+ return request({
+ url: `/FrontAuditConfig/copyOtherToThisItem`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getAuditConfigChildList(param) {
+ return request({
+ url: `/FrontAuditConfig/getAuditConfigChildList?frontAuditConfigId=${param}`,
+ method: 'get'
+
+ })
+}
+
+export function changeFrontAuditSort(param) {
+ return request({
+ url: `/FrontAuditConfig/changeFrontAuditSort`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getModuleTypeDescriptionList(param) {
+ return request({
+ url: `${param === '' ? '/FrontAuditConfig/getModuleTypeDescriptionList' : '/FrontAuditConfig/getModuleTypeDescriptionList?moduleTypeId=' + param}`,
+ method: 'get'
+ })
+}
+
+export function setInspectionEnumValue(param) {
+ return request({
+ url: `/FrontAuditConfig/SetInspectionEnumValue`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function copyFrontAuditConfigItem(param) {
+ return request({
+ url: `/FrontAuditConfig/copyFrontAuditConfigItem`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function fullyReplicated(param) {
+ return request({
+ url: `/FrontAuditConfig/fullyReplicated`,
+ method: 'post',
+ data: param
+ })
+}
+
diff --git a/src/api/dictionary/dictionary.js b/src/api/dictionary/dictionary.js
new file mode 100644
index 0000000..afa647d
--- /dev/null
+++ b/src/api/dictionary/dictionary.js
@@ -0,0 +1,39 @@
+import request from '@/utils/request'
+
+export function getDictionary(param) {
+ return request({
+ url: '/Dictionary/getDictionary',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getBasicDataSelect(searchKey) {
+ return request({
+ url: `/Dictionary/getBasicDataSelect?searchKey=${searchKey}`,
+ method: 'get'
+ })
+}
+export function getBasicDataSelects(param) {
+ return request({
+ url: `/Dictionary/getBasicDataSelect`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getBasicDataAllSelect(params) {
+ return request({
+ url: params ? `/Dictionary/getBasicDataAllSelect?TrialReadingCriterionId=${params}` : `/Dictionary/getBasicDataAllSelect`,
+ method: 'get'
+ })
+}
+
+export function setCriterionDictionary(params) {
+ return request({
+ url: `/ReadingQuestion/setCriterionDictionary`,
+ method: 'post',
+ data: params
+ })
+}
+
diff --git a/src/api/export.js b/src/api/export.js
new file mode 100644
index 0000000..5ff69d8
--- /dev/null
+++ b/src/api/export.js
@@ -0,0 +1,162 @@
+import request from '@/utils/request'
+import requestDownload from '@/utils/request-download'
+
+export function cRCVisitList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/cRCVisitList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getQCChallengeList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getQCChallengeList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getSubjectList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getSubjectList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getSubjectReadingPeriod_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getSubjectReadingPeriod_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getReadingPeriodList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getReadingPeriodList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getDicomAndNoneDicomStudyList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getDicomAndNoneDicomStudyList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getConsistencyVerificationList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getConsistencyVerificationList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getReadingTaskList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getReadingTaskList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getReReadingTaskList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getReReadingTaskList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getMedicalReviewTaskList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getMedicalReviewTaskList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getSelfAnalysisTaskList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getSelfAnalysisTaskList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getGroupAnalysisTaskList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getGroupAnalysisTaskList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getTrialReadingCriterionCanExportDocumentList(param) {
+ return request({
+ url: `/ExcelExport/getTrialReadingCriterionCanExportDocumentList?TrialReadingCriterionId=${param.TrialReadingCriterionId}`,
+ method: 'get'
+ })
+}
+
+export function getOverallTumorEvaluationList_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getOverallTumorEvaluationList_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getEvaluationOfTumorEfficacy_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getEvaluationOfTumorEfficacy_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getDetailedOfEvaluatedLesion_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getDetailedOfEvaluatedLesion_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getStudyUploadMonitor_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getStudyUploadMonitor_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getSubjectProgress_Export(param) {
+ return requestDownload({
+ url: '/ExcelExport/getSubjectProgress_Export',
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
diff --git a/src/api/financials.js b/src/api/financials.js
new file mode 100644
index 0000000..8c1d6be
--- /dev/null
+++ b/src/api/financials.js
@@ -0,0 +1,282 @@
+import request from '@/utils/request'
+export function getMonthlyPaymentList(param) {
+ return request({
+ url: '/financial/getMonthlyPaymentList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReviewersPaymentDetailList(param) {
+ return request({
+ url: '/financial/getReviewersMonthlyPaymentDetail',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getMonthlyPaymentDetailList(paymentId, doctorId, yearMonth) {
+ return request({
+ url: `/financial/getMonthlyPaymentDetailList/${paymentId}/${doctorId}/${yearMonth}`,
+ method: 'post'
+ })
+}
+
+export function getMonthlyPayroll(reviewerIds) {
+ return request({
+ url: `/financial/getLaborPaymentList`,
+ method: 'post',
+ data: reviewerIds
+ })
+}
+
+export function lockMonthlyPayment(param) {
+ return request({
+ url: '/financial/lockMonthlyPayment',
+ method: 'post',
+ data: param
+ })
+}
+
+export function calculateMonthlyPayment(param) {
+ return request({
+ url: '/financial/calculateMonthlyPayment',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getRankPriceList(param) {
+ return request({
+ url: '/rankPrice/getRankPriceList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateRankPrice(param) {
+ return request({
+ url: '/rankPrice/addOrUpdateRankPrice',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteRankPrice(id) {
+ return request({
+ url: `/rankPrice/deleteRankPrice/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getvolumeRewardPriceList(param) {
+ return request({
+ url: '/volumeReward/getvolumeRewardPriceList',
+ method: 'post',
+ data: param
+ })
+}
+// data: {awardPriceList:param}
+export function addOrUpdatevolumeRewardPriceList(param) {
+ return request({
+ url: '/volumeReward/addOrUpdatevolumeRewardPriceList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReviewerPayInfoList(param) {
+ return request({
+ url: '/reviewerPayInfo/getReviewerPayInfoList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getRankDic() {
+ return request({
+ url: '/rankPrice/getRankDic',
+ method: 'get'
+ })
+}
+
+export function addOrUpdateReviewerPayInfo(param) {
+ return request({
+ url: '/reviewerPayInfo/addOrUpdateReviewerPayInfo',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialPaymentPriceList(param) {
+ return request({
+ url: '/trialPaymentPrice/getTrialPaymentPriceList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function uploadTrialSOW(param) {
+ return request({
+ url: '/trialPaymentPrice/uploadTrialSOW',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteTrialSOW(param) {
+ return request({
+ url: '/trialPaymentPrice/deleteTrialSOW',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateTrialPaymentPrice(param) {
+ return request({
+ url: '/trialPaymentPrice/addOrUpdateTrialPaymentPrice',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getRateList(param) {
+ return request({
+ url: '/exchangeRate/getExchangeRateList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateExchangeRate(param) {
+ return request({
+ url: '/exchangeRate/addOrUpdateExchangeRate',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteExchangeRate(id) {
+ return request({
+ url: `/exchangeRate/deleteExchangeRate/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getPaymentAdjustmentList(param) {
+ return request({
+ url: '/paymentAdjustment/getPaymentAdjustmentList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdatePaymentAdjustment(param) {
+ return request({
+ url: '/paymentAdjustment/addOrUpdatePaymentAdjustment',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePaymentAdjustment(id) {
+ return request({
+ url: `/paymentAdjustment/deletePaymentAdjustment/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getReviewerSelectList() {
+ return request({
+ url: '/paymentAdjustment/getReviewerSelectList',
+ method: 'get'
+ })
+}
+
+export function getPaymentHistoryList(param) {
+ return request({
+ url: '/financial/getPaymentHistoryList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getPaymentHistoryDetailList(param) {
+ return request({
+ url: '/financial/getPaymentHistoryDetailList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getRevenuesStatistics(param) {
+ return request({
+ url: '/financial/getRevenuesStatistics',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialRevenuesPriceList(param) {
+ return request({
+ url: '/trialRevenuesPrice/getTrialRevenuesPriceList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateTrialRevenuesPrice(param) {
+ return request({
+ url: '/trialRevenuesPrice/addOrUpdateTrialRevenuesPrice',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReviewerAnalysisList(param) {
+ return request({
+ url: '/financial/getReviewerAnalysisList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialAnalysisList(param) {
+ return request({
+ url: '/financial/getTrialAnalysisList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getRevenuesVerifyList(param) {
+ return request({
+ url: '/trialRevenuesPriceVerification/getRevenuesVerifyList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getAnalysisVerifyList(param) {
+ return request({
+ url: '/trialRevenuesPriceVerification/getAnalysisVerifyList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateEnroll(param) {
+ return request({
+ url: '/Enroll/addOrUpdateEnroll',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialDoctorList(param) {
+ return request({
+ url: '/Enroll/getTrialDoctorList',
+ method: 'post',
+ data: param
+ })
+}
diff --git a/src/api/global.js b/src/api/global.js
new file mode 100644
index 0000000..1b03477
--- /dev/null
+++ b/src/api/global.js
@@ -0,0 +1,57 @@
+import request from '@/utils/request'
+
+export function getAllDictionary() {
+ return request({
+ url: '/dictionary/getAllDictionary',
+ method: 'get'
+ })
+}
+
+export function getHospitalList() {
+ return request({
+ url: '/hospital/getHospitalList',
+ method: 'get'
+ })
+}
+
+export function getAllSponsorList() {
+ return request({
+ url: '/sponsor/getAllSponsorList',
+ method: 'get'
+ })
+}
+
+export function getAllCROList() {
+ return request({
+ url: '/cro/getAllCROList',
+ method: 'get'
+ })
+}
+export function getAllSiteList() {
+ return request({
+ url: '/site/getAllSiteList',
+ method: 'get'
+ })
+}
+
+export function getUserSystemNoticeList(param) {
+ return request({
+ url: '/SystemNotice/getUserSystemNoticeList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getUserNoticeList() {
+ return request({
+ url: '/SystemNotice/getUserNoticeList',
+ method: 'get'
+ })
+}
+
+export function setSystemNoticeHaveRead(systemNoticeId) {
+ return request({
+ url: `/SystemNotice/setSystemNoticeHaveRead/${systemNoticeId}`,
+ method: 'put'
+ })
+}
diff --git a/src/api/joinVerify/index.js b/src/api/joinVerify/index.js
new file mode 100644
index 0000000..e15ca96
--- /dev/null
+++ b/src/api/joinVerify/index.js
@@ -0,0 +1,24 @@
+import request from '@/utils/request'
+
+export function trialExternalUserJoinTrial(param) {
+ return request({
+ url: '/TrialExternalUser/trialExternalUserJoinTrial',
+ method: 'post',
+ data: param
+ })
+}
+
+export function trialSiteSurveyUserJoinTrial(param) {
+ return request({
+ url: '/TrialExternalUser/trialSiteSurveyUserJoinTrial',
+ method: 'post',
+ data: param
+ })
+}
+
+export function joinBasicInfo(param) {
+ return request({
+ url: `/TrialExternalUser/joinBasicInfo?Id=${param.Id}&IsExternalUser=${param.IsExternalUser}`,
+ method: 'post'
+ })
+}
diff --git a/src/api/reading.js b/src/api/reading.js
new file mode 100644
index 0000000..40748c9
--- /dev/null
+++ b/src/api/reading.js
@@ -0,0 +1,181 @@
+import request from '@/utils/request'
+
+export function addBaseLineLesion(param) {
+ return request({
+ url: '/report/addBaseLineLesion',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getBLLineLesion(trialCode, subjectCode, tpCode) {
+ return request({
+ url: `/report/getBLLineLesion/${trialCode}/${subjectCode}/${tpCode}`,
+ method: 'get'
+ })
+}
+
+export function getVisitLineLesion(trialCode, subjectCode, visitNum, tpCode) {
+ return request({
+ url: `/report/getVisitLineLesion/${trialCode}/${subjectCode}/${visitNum}/${tpCode}`,
+ method: 'get'
+ })
+}
+
+export function saveVisitReport(param) {
+ return request({
+ url: '/report/saveVisitReport',
+ method: 'post',
+ data: param
+ })
+}
+
+export function submiteReport(tpId) {
+ return request({
+ url: `/report/submiteReport/${tpId}`,
+ method: 'post'
+ })
+}
+
+export function saveImageLabelList(param) {
+ return request({
+ url: '/study/saveImageLabelList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getStudyInfo(studyId) {
+ return request({
+ url: `/Study/item/${studyId}`,
+ method: 'get'
+ })
+}
+export function getSeriesList(url) {
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+export function getInstanceList(seriesId) {
+ return request({
+ url: `/instance/list/id/${seriesId}`,
+ method: 'get'
+ })
+}
+export function getImageLabelList(tpCode) {
+ return request({
+ url: `/study/getImageLabelList/${tpCode}`,
+ method: 'get'
+ })
+}
+export function getRelationVisitList(visitNum, tpCode) {
+ return request({
+ url: `/study/getRelationVisitList/${visitNum}/${tpCode}`,
+ method: 'get'
+ })
+}
+export function getAllRelationStudyList(studyId) {
+ return request({
+ url: `/study/getAllRelationStudyList/${studyId}`,
+ method: 'get'
+ })
+}
+export function getTrialListByReviewer(param) {
+ return request({
+ url: `/trial/getTrialListByReviewer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateEnrollStatus(trialId, status) {
+ return request({
+ url: `/trial/updateEnrollStatus/${trialId}/${status}`,
+ method: 'post'
+ })
+}
+
+export function getHistoryVisitRsList(trialId, subjectId, visitNum, globalId, globalCode) {
+ return request({
+ url: `/globalReport/getHistoryVisitRsList/${trialId}/${subjectId}/${visitNum}/${globalId}/${globalCode}`,
+ method: 'get'
+ })
+}
+
+export function getHistoryGlobalRsList(trialId, subjectCode, visitNum, globalId) {
+ return request({
+ url: `/globalReport/getHistoryGlobalRsList/${trialId}/${subjectCode}/${visitNum}/${globalId}`,
+ method: 'get'
+ })
+}
+
+export function AddGlobalReport(param) {
+ return request({
+ url: `/globalReport/AddGlobalReport`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function GetAdReport(adId) {
+ return request({
+ url: `/globalReport/getAdReport/${adId}`,
+ method: 'get'
+ })
+}
+
+export function AddAdjudicationReport(param) {
+ return request({
+ url: `/globalReport/AddAdjudicationReport`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getVisitStudyList(trialId, subjectVisitId, isReading) {
+ return request({
+ url: `/SubjectVisit/getVisitStudyList/${trialId}/${subjectVisitId}/${isReading}`,
+ method: 'get'
+ })
+}
+
+export function uploadPrintscreen(param, subjectId) {
+ return request({
+ url: `/Printscreen/UploadPrintscreen/${subjectId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitCustomTag(param) {
+ return request({
+ url: `/ReadingImageTask/submitCustomTag`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteCustomTag(param) {
+ return request({
+ url: `/ReadingImageTask/deleteCustomTag/{id}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCustomTag(param) {
+ return request({
+ url: `/ReadingImageTask/getCustomTag`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getVisitTaskList(param) {
+ return request({
+ url: `/UltrasonicDicom/getVisitTaskList`,
+ method: 'post',
+ data: param
+ })
+}
diff --git a/src/api/research.js b/src/api/research.js
new file mode 100644
index 0000000..88b5e92
--- /dev/null
+++ b/src/api/research.js
@@ -0,0 +1,120 @@
+import request from '@/utils/request'
+
+export function sendVerifyCode(param) {
+ return request({
+ url: '/TrialSiteSurvey/sendVerifyCode',
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifySendCode(param) {
+ return request({
+ url: '/TrialSiteSurvey/verifySendCode',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialSurveyInitInfo(trialId) {
+ return request({
+ url: `/TrialSiteSurvey/getTrialSurveyInitInfo/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getSiteSurveyInfo(trialId, id) {
+ return request({
+ url: `/TrialSiteSurvey/getSiteSurveyInfo/${trialId}/${id}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateTrialSiteSurvey(param) {
+ return request({
+ url: '/TrialSiteSurvey/addOrUpdateTrialSiteSurvey',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialSiteUserSurveyList(trialSiteSurveyId) {
+ return request({
+ url: `/TrialSiteUserSurvey/getTrialSiteUserSurveyList/${trialSiteSurveyId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateTrialSiteUserSurvey(trialId, param) {
+ return request({
+ url: `/TrialSiteUserSurvey/addOrUpdateTrialSiteUserSurvey/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteTrialSiteUserSurvey(trialSiteUserSurveyId, trialId) {
+ return request({
+ url: `/TrialSiteUserSurvey/deleteTrialSiteUserSurvey/${trialSiteUserSurveyId}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getTrialSiteEquipmentSurveyList(trialSiteSurveyId) {
+ return request({
+ url: `/TrialSiteEquipmentSurvey/getTrialSiteEquipmentSurveyList/${trialSiteSurveyId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateTrialSiteEquipmentSurvey(trialId, param) {
+ return request({
+ url: `/TrialSiteEquipmentSurvey/addOrUpdateTrialSiteEquipmentSurvey/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteTrialSiteEquipmentSurvey(trialSiteEquipmentSurveyId, trialId) {
+ return request({
+ url: `/TrialSiteEquipmentSurvey/deleteTrialSiteEquipmentSurvey/${trialSiteEquipmentSurveyId}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+// export function trialSurveySubmmit(trialId, trialSiteSurveyId) {
+// const loginUrl = `${location.protocol}//${location.host}/#/login`
+// const joinUrl = `${location.protocol}//${location.host}/#/joinVerify`
+// return request({
+// url: `/TrialSiteSurvey/trialSurveySubmit/${trialId}/${trialSiteSurveyId}/${loginUrl}/${joinUrl}`,
+// method: 'put'
+// })
+// }
+
+export function trialSurveySubmit(param) {
+ return request({
+ url: `/TrialSiteSurvey/trialSurveySubmit`,
+ method: 'post',
+ data: param
+ })
+}
+export function submissionRejection(param) {
+ return request({
+ url: `/TrialSiteSurvey/submissionRejection`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function trialSurveyLock(trialSiteSurveyId, trialId, isLock) {
+ return request({
+ url: `/TrialSiteSurvey/trialSurveyLock/${trialSiteSurveyId}/${trialId}/${isLock}`,
+ method: 'post'
+ })
+}
+
+export function getUserTypeList(userTypeEnum) {
+ return request({
+ url: `/UserTypeRole/getUserTypeList/${userTypeEnum}`,
+ method: 'get'
+ })
+}
diff --git a/src/api/reviewers.js b/src/api/reviewers.js
new file mode 100644
index 0000000..e512273
--- /dev/null
+++ b/src/api/reviewers.js
@@ -0,0 +1,266 @@
+import request from '@/utils/request'
+export function getDoctorSearchList(param) {
+ return request({
+ url: '/doctorList/getDoctorSearchList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function downloadOfficialCV(param, language) {
+ return request({
+ url: `/file/downloadOfficialCV/${language}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getBasicInfo(id) {
+ return request({
+ url: `/doctor/getBasicInfo/${id}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateDoctorBasicInfo(param) {
+ return request({
+ url: '/doctor/addOrUpdateDoctorBasicInfo',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getEmploymentInfo(id) {
+ return request({
+ url: `/doctor/getEmploymentInfo/${id}`,
+ method: 'get'
+ })
+}
+
+export function updateEmploymentInfo(param) {
+ return request({
+ url: `/doctor/updateEmploymentInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSpecialtyInfo(id) {
+ return request({
+ url: `/doctor/getSpecialtyInfo/${id}`,
+ method: 'get'
+ })
+}
+
+export function updateSpecialtyInfo(param) {
+ return request({
+ url: `/doctor/updateSpecialtyInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getEducation(doctorId) {
+ return request({
+ url: `/education/getEducation/${doctorId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateEducationInfo(param) {
+ return request({
+ url: `/education/addOrUpdateEducationInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteEducationInfo(doctorId) {
+ return request({
+ url: `/education/deleteEducationInfo/${doctorId}`,
+ method: 'delete'
+ })
+}
+
+export function addOrUpdatePostgraduateInfo(param) {
+ return request({
+ url: `/education/addOrUpdatePostgraduateInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePostgraduateInfo(doctorId) {
+ return request({
+ url: `/education/deletePostgraduateInfo/${doctorId}`,
+ method: 'delete'
+ })
+}
+
+export function getResearchPublication(doctorId) {
+ return request({
+ url: `/researchPublication/getResearchPublication/${doctorId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateResearchPublication(param) {
+ return request({
+ url: `/researchPublication/addOrUpdateResearchPublication`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialExperience(doctorId) {
+ return request({
+ url: `/trialExperience/getTrialExperience/${doctorId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateTrialExperience(param) {
+ return request({
+ url: `/trialExperience/addOrUpdateTrialExperience`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteTrialExperience(doctorId) {
+ return request({
+ url: `/trialExperience/deleteTrialExperience/${doctorId}`,
+ method: 'delete'
+ })
+}
+
+export function updateOtherExperience(param) {
+ return request({
+ url: `/trialExperience/updateOtherExperience`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateGcpExperience(param) {
+ return request({
+ url: `/trialExperience/updateGcpExperience`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDoctorSowList(doctorId) {
+ return request({
+ url: `/doctor/getDoctorSowList/${doctorId}`,
+ method: 'get'
+ })
+}
+
+export function getDoctorAckSowList(doctorId) {
+ return request({
+ url: `/doctor/getDoctorAckSowList/${doctorId}`,
+ method: 'get'
+ })
+}
+
+export function getAuditState(doctorId) {
+ return request({
+ url: `/doctor/getAuditState/${doctorId}`,
+ method: 'get'
+ })
+}
+
+export function updateAuditResume(param) {
+ return request({
+ url: '/doctor/updateAuditResume',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getVacationList(doctorId, pageIndex, pageSize) {
+ return request({
+ url: `/vacation/getVacationList/${doctorId}/${pageIndex}/${pageSize}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateVacation(param) {
+ return request({
+ url: `/vacation/addOrUpdateVacation`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteVacation(holidayId) {
+ return request({
+ url: `/vacation/deleteVacation/${holidayId}`,
+ method: 'delete'
+ })
+}
+
+export function downloadByAttachmentId(doctorId, attachmentIds) {
+ const param = { attachmentIds: attachmentIds }
+ return request({
+ url: `/file/downloadByAttachmentId/${doctorId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDetail(doctorId) {
+ return request({
+ url: `/doctor/getDetail/${doctorId}`,
+ method: 'get'
+ })
+}
+
+export function getDoctorTrialListByStatus(param) {
+ return request({
+ url: `/trial/getReviewerTrialListByEnrollmentStatus`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addDoctorCriterionFile(param) {
+ return request({
+ url: `/Doctor/addDoctorCriterionFile`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteDoctorCriterionFile(param) {
+ return request({
+ url: `/Doctor/deleteDoctorCriterionFile`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDoctorCriterionFile(param) {
+ return request({
+ url: `/Doctor/getDoctorCriterionFile`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function sendEmialVerifyCode(param) {
+ return request({
+ url: `/TrialSiteSurvey/sendEmialVerifyCode`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyEmialGetDoctorInfo(param) {
+ return request({
+ url: `/TrialSiteSurvey/verifyEmialGetDoctorInfo`,
+ method: 'post',
+ data: param
+ })
+}
diff --git a/src/api/share.js b/src/api/share.js
new file mode 100644
index 0000000..88eeed7
--- /dev/null
+++ b/src/api/share.js
@@ -0,0 +1,15 @@
+import request from '@/utils/request'
+
+export function createImageShare(data) {
+ return request({
+ url: '/imageShare/createImageShare',
+ method: 'post',
+ data
+ })
+}
+export function verifyShareImage(resourceId, password) {
+ return request({
+ url: `/imageShare/verifyShareImage/${resourceId}/${password}`,
+ method: 'get'
+ })
+}
diff --git a/src/api/statistics.js b/src/api/statistics.js
new file mode 100644
index 0000000..bad5e89
--- /dev/null
+++ b/src/api/statistics.js
@@ -0,0 +1,39 @@
+import request from '@/utils/request'
+export function getWorkloadByTrialAndReviewer(param) {
+ return request({
+ url: '/statistics/getWorkloadByTrialAndReviewer',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getEnrollStatByReviewer(param) {
+ return request({
+ url: '/statistics/getEnrollStatByReviewer',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getEnrollStatByTrial(param) {
+ return request({
+ url: '/statistics/getEnrollStatByTrial',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getParticipateTrialStats(param) {
+ return request({
+ url: '/statistics/getParticipateTrialStat',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getParticipateTrialList(userId) {
+ return request({
+ url: `/statistics/getParticipateTrialList/${userId}`,
+ method: 'get'
+ })
+}
diff --git a/src/api/system/login.js b/src/api/system/login.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/api/system/menu.js b/src/api/system/menu.js
new file mode 100644
index 0000000..9fae60a
--- /dev/null
+++ b/src/api/system/menu.js
@@ -0,0 +1,31 @@
+import request from '@/utils/request'
+
+export function addOrUpdateMenu(param) {
+ return request({
+ url: '/Menu/addOrUpdateMenu',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getMenuTree(param) {
+ return request({
+ url: '/Menu/getMenuTree',
+ method: 'get'
+ })
+}
+
+export function getMenuList(param) {
+ return request({
+ url: `/Menu/getMenuList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteMenu(menuId) {
+ return request({
+ url: `/Menu/deleteMenu/${menuId}`,
+ method: 'delete'
+ })
+}
diff --git a/src/api/system/notice.js b/src/api/system/notice.js
new file mode 100644
index 0000000..21657f2
--- /dev/null
+++ b/src/api/system/notice.js
@@ -0,0 +1,33 @@
+import request from '@/utils/request'
+
+export function getSystemNoticeList(param) {
+ return request({
+ url: '/SystemNotice/getSystemNoticeList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateSystemNotice(param) {
+ return request({
+ url: '/SystemNotice/addOrUpdateSystemNotice',
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSystemNotice(param) {
+ return request({
+ url: `/SystemNotice/deleteSystemNotice/${param.SystemNoticeId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function uploadSystemNoticeDoc(param) {
+ return request({
+ url: `/SystemNotice/UploadSystemNoticeDoc`,
+ method: 'post',
+ data: param
+ })
+}
diff --git a/src/api/system/user.js b/src/api/system/user.js
new file mode 100644
index 0000000..5f25ae0
--- /dev/null
+++ b/src/api/system/user.js
@@ -0,0 +1,29 @@
+import request from '@/utils/request'
+
+export function sendVerificationCode(email) {
+ return request({
+ url: `/User/sendVerificationCode/${email}`,
+ method: 'get'
+ })
+}
+
+export function setNewEmail(newEmail, verificationCode) {
+ return request({
+ url: `/User/setNewEmail/${newEmail}/${verificationCode}`,
+ method: 'put'
+ })
+}
+
+export function setNewPhone(newPhone) {
+ return request({
+ url: `/User/setNewPhone/${newPhone}`,
+ method: 'put'
+ })
+}
+
+export function setNewUserName(newPhone) {
+ return request({
+ url: `/User/setNewUserName/${newPhone}`,
+ method: 'put'
+ })
+}
diff --git a/src/api/trials.js b/src/api/trials.js
new file mode 100644
index 0000000..9274b64
--- /dev/null
+++ b/src/api/trials.js
@@ -0,0 +1,3477 @@
+import request from '@/utils/request'
+import requestDownload from '@/utils/request-download'
+
+export function getTrialList(param) {
+ return request({
+ url: '/UltrasonicDicom/getTrialList',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialSelect(param) {
+ return request({
+ url: '/trial/getTrialSelect',
+ method: 'get'
+ })
+}
+
+export function getTrialInfo(trialId) {
+ return request({
+ url: `/trial/getTrialInfoAndLockState/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function abandonTrial(trialId, IsDeleted) {
+ return request({
+ url: `/TrialConfig/abandonTrial/${trialId}/${IsDeleted}`,
+ method: 'put'
+ })
+}
+
+export function ifTrialCanOngoing(trialId) {
+ return request({
+ url: `/TrialConfig/ifTrialCanOngoing/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateTrial(param) {
+ return request({
+ url: '/trial/addOrUpdateTrial',
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateTrialStatus(trialId, statusStr) {
+ return request({
+ url: `/trial/updateTrialStatus/${trialId}/${statusStr}`,
+ method: 'post'
+ })
+}
+
+export function uploadReviewerAckSOW(trialId, param) {
+ return request({
+ url: `/doctorWorkload/uploadReviewerAckSOW/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteReviewerAckSOW(trialId, doctorId, attachmentId) {
+ return request({
+ url: `/doctorWorkload/deleteReviewerAckSOW/${trialId}/${doctorId}/${attachmentId}`,
+ method: 'delete'
+ })
+}
+
+export function getTrialInfoAndMaxTrialState(trialId) {
+ return request({
+ url: `/trial/getTrialInfoAndMaxTrialState/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getSelectionReviewerList(param) {
+ return request({
+ url: `/doctorList/getSelectionReviewerList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function selectReviewers(trialId, doctorIdArray) {
+ return request({
+ url: `/enroll/selectReviewers/${trialId}`,
+ method: 'post',
+ data: doctorIdArray
+ })
+}
+
+export function getSubmissionOrApprovalReviewerList(param) {
+ return request({
+ url: `/doctorList/getSubmissionOrApprovalReviewerList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitReviewer(trialId, doctorIdArray, commitState) {
+ return request({
+ url: `/enroll/submitReviewer/${trialId}/${commitState}`,
+ method: 'post',
+ data: doctorIdArray
+ })
+}
+
+export function downloadResume(trialId, language, doctorIdArray) {
+ return request({
+ url: `/enroll/downloadResume/${trialId}/${language}`,
+ method: 'post',
+ data: doctorIdArray
+ })
+}
+
+export function approveReviewer(trialId, doctorIdArray, auditState) {
+ return request({
+ url: `/enroll/approveReviewer/${trialId}/${auditState}`,
+ method: 'post',
+ data: doctorIdArray
+ })
+}
+
+export function getConfirmationReviewerList(param) {
+ return request({
+ url: `/doctorList/getConfirmationReviewerList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function confirmReviewer(params) {
+ return request({
+ url: `/enroll/confirmReviewer`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialEnrollmentWorkloadStats(param) {
+ return request({
+ url: '/doctorWorkload/getTrialEnrollmentWorkloadStats',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDoctorWorkLoadList(param) {
+ return request({
+ url: `/doctorWorkload/getEnrollmentWorkloadStatsDetail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReviewerWorkLoadListDetail(param) {
+ return request({
+ url: `/doctorWorkload/getReviewerWorkLoadListDetail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function existWorkLoad(param) {
+ return request({
+ url: `/doctorWorkload/workloadExist`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function workLoadAddOrUpdate(param) {
+ return request({
+ url: `/doctorWorkload/workLoadAddOrUpdate`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialExpeditedState(trialId) {
+ return request({
+ url: `/Trial/getTrialExpeditedState/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function deleteWorkLoad(id, trialId) {
+ return request({
+ url: `/doctorWorkload/deleteWorkLoad/${id}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getMaintenanceList(param) {
+ return request({
+ url: `/trialMaintenance/getMaintenanceUserList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getUserSelectionList(userTypeId, institutionId) {
+ return request({
+ url: `/trialMaintenance/getUserSelectionList/${userTypeId}/${institutionId}`,
+ method: 'get'
+ })
+}
+
+export function AddOrUpdateMaintenanceUser(param) {
+ return request({
+ url: `/trialMaintenance/AddOrUpdateMaintenanceUser`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteMaintenanceUser(id, trialId, isDelete) {
+ return request({
+ url: `/trialMaintenance/deleteMaintenanceUser/${id}/${trialId}/${isDelete}`,
+ method: 'delete'
+ })
+}
+
+export function getSiteCRCList(param) {
+ return request({
+ url: `/trialMaintenance/getSiteCRCList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getInstitutionList(typeId) {
+ return request({
+ url: `/institution/getInstitutionList/${typeId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateSiteCRC(param) {
+ return request({
+ url: `/trialMaintenance/addOrUpdateSiteCRC`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSiteCRC(id, trialId, isDelete) {
+ return request({
+ url: `/trialMaintenance/deleteSiteCRC/${id}/${trialId}/${isDelete}`,
+ method: 'delete'
+ })
+}
+
+export function getTrialSiteCRCList(trialId, siteId) {
+ return request({
+ url: `/trialMaintenance/getTrialSiteCRCList/${trialId}/${siteId}`,
+ method: 'get'
+ })
+}
+
+export function trialUserListExport(param) {
+ return requestDownload({
+ url: `/ExcelExport/trialUserListExport`,
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function trialSiteUserListExport(param) {
+ return requestDownload({
+ url: `/ExcelExport/trialSiteUserListExport`,
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function trialSiteUserSummaryListExport(param) {
+ return requestDownload({
+ url: `/ExcelExport/trialSiteUserSummaryListExport`,
+ method: 'post',
+ responseType: 'blob',
+ data: param
+ })
+}
+
+export function getVisitStageList(trialId) {
+ return request({
+ url: `/visitPlan/getVisitStageList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateVisitStage(param) {
+ return request({
+ url: `/visitPlan/addOrUpdateVisitStage`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteVisitStage(id, trialId) {
+ return request({
+ url: `/visitPlan/deleteVisitStage/${id}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getAcquisitionSpecificationList(trialId) {
+ return request({
+ url: `/specification/getSpecificationList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateAcquisitionSpecification(param) {
+ return request({
+ url: `/specification/addOrUpdateSpecification`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function uploadTrialFile(file, type, trialId, config = {}) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/TrialConfig/uploadTrialFile/${trialId}/${type}`,
+ method: 'post',
+ data: formData,
+ ...config
+ })
+}
+
+export function deleteAcquisitionSpecification(id, trialId) {
+ return request({
+ url: `/specification/deleteSpecification/${id}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getTrialVisitStageSelect(trialId) {
+ return request({
+ url: `/visitPlan/getTrialVisitStageSelect/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getSubjectList(param) {
+ return request({
+ url: `/subject/getSubjectList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialSiteSelect(trialId) {
+ return request({
+ url: `/trialMaintenance/getTrialSiteSelect/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getSubjectListBySiteId(siteId, trialId) {
+ return request({
+ url: `/subject/getSubjectListBySiteId/${siteId}/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getSubjectVisitSelectList(trialId, siteId, subjectId) {
+ return request({
+ url: `/subjectVisit/getSubjectVisitSelectList/${trialId}/${siteId}/${subjectId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateSubject(param) {
+ return request({
+ url: `/subject/addOrUpdateSubject`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSubject(trialId, id) {
+ return request({
+ url: `/subject/deleteSubject/${trialId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getStudyStatList(trialId, subjectId, siteId) {
+ return request({
+ url: `/study/getStudyStatList/${trialId}/${subjectId}/${siteId}`,
+ method: 'get'
+ })
+}
+
+export function getStudyList(param) {
+ return request({
+ url: `/study/getStudyList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateStudy(param) {
+ return request({
+ url: `/study/addOrUpdateStudy`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteStudy(id, trialId) {
+ return request({
+ url: `/study/deleteStudy/${id}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getSubjectVisitList(trialId, subjectId) {
+ return request({
+ url: `/subjectVisit/getSubjectVisitList/${trialId}/${subjectId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateSubjectVisit(param) {
+ return request({
+ url: `/subjectVisit/addOrUpdateSV`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteSubjectVisit(trialId, id) {
+ return request({
+ url: `/subjectVisit/deleteSV/${trialId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function updateStudyBinding(param) {
+ return request({
+ url: `/study/updateStudyBinding`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQaTemplateSelectList() {
+ return request({
+ url: `/QATemplate/GetQaTemplateSelectList`,
+ method: 'get'
+ })
+}
+
+export function getQaTemplateItemsById(qaTemplateId) {
+ return request({
+ url: `/QATemplate/GetQaTemplateItemsById/${qaTemplateId}`,
+ method: 'get'
+ })
+}
+
+export function getQARecordList(studyId) {
+ return request({
+ url: `/QARecord/GetQARecordList/${studyId}`,
+ method: 'get'
+ })
+}
+export function getHistoryTemplateItemHasNoteList(qaRecordId) {
+ return request({
+ url: `/QARecord/GetHistoryTemplateItemHasNoteList/${qaRecordId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateQARecord(param, trialId) {
+ return request({
+ url: `/QARecord/AddOrUpdateQARecord/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteQARecord(qaQARecordId, trialId) {
+ return request({
+ url: `/QARecord/DeleteQARecord/${qaQARecordId}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getQaRecordDialogList(qaRecordId) {
+ return request({
+ url: `/QARecord/GetQaRecordDialogList/${qaRecordId}`,
+ method: 'get'
+ })
+}
+
+export function addQAReply(param, trialId) {
+ return request({
+ url: `/QARecord/AddQAReply/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteQAReplay(qaReplyId, trialId) {
+ return request({
+ url: `/QARecord/DeleteQAReply/${qaReplyId}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getReviewerList(trialId) {
+ return request({
+ url: `/study/GetReviewerList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function studyDistribution(param) {
+ return request({
+ url: `/study/studyDistribution`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateStudyStatus(param, trialId) {
+ return request({
+ url: `/study/updateStudyStatus/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getStudyStatusDetailList(studyId) {
+ return request({
+ url: `/study/getStudyStatusDetailList/${studyId}`,
+ method: 'get'
+ })
+}
+
+export function getQANoticeList(studyId) {
+ return request({
+ url: `/study/getQANoticeList/${studyId}`,
+ method: 'get'
+ })
+}
+
+export function editStudyReviewer(param) {
+ return request({
+ url: `/study/editStudyReviewer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDistributeStudyList(param) {
+ return request({
+ url: `/study/getDistributeStudyList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getWorkloadTPList(param) {
+ return request({
+ url: `/workloadDistribution/getWorkloadTPList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function distributeTP(param) {
+ return request({
+ url: `/workloadDistribution/DistributeTP`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateDistributeTP(tpId, reviewerId, studyId) {
+ return request({
+ url: `/workloadDistribution/UpdateDistributeTP/${tpId}/${reviewerId}/${studyId}`,
+ method: 'post'
+ })
+}
+
+export function getWorkloadADList(param) {
+ return request({
+ url: `/workloadDistribution/getWorkloadADList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function distributeAD(param) {
+ return request({
+ url: `/workloadDistribution/distributeAD`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateDistributeAD(tpId, reviewerId) {
+ return request({
+ url: `/workloadDistribution/updateDistributeAD/${tpId}/${reviewerId}`,
+ method: 'post'
+
+ })
+}
+
+export function getWorkloadGlobalList(param) {
+ return request({
+ url: `/workloadDistribution/getWorkloadGlobalList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function distributeGlobal(param) {
+ return request({
+ url: `/workloadDistribution/distributeGlobal`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateDistributeGlobal(tpId, reviewerId, subjectId, visitNum) {
+ return request({
+ url: `/workloadDistribution/updateDistributeGlobal/${tpId}/${reviewerId}/${subjectId}/${visitNum}`,
+ method: 'post'
+ })
+}
+
+export function getWorkloadDetailList(workloadId) {
+ return request({
+ url: `/workloadDistribution/GetWorkloadDetailList/${workloadId}`,
+ method: 'get'
+ })
+}
+
+export function getWorkloadList(param) {
+ return request({
+ url: `/reading/getWorkloadList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateReviewerReadingType(trialId, doctorId, reviewerReadingType) {
+ return request({
+ url: `/doctorWorkload/updateReviewerReadingType/${trialId}/${doctorId}/${reviewerReadingType}`,
+ method: 'post'
+ })
+}
+
+export function dicomAnonymize(studyId, trialId) {
+ return request({
+ url: `/study/dicomAnonymize/${studyId}/${trialId}`,
+ method: 'post'
+ })
+}
+
+export function verifyStudyAllowUpload(trialId, studyInstanceUid, abandonStudyId) {
+ var url = ''
+ if (abandonStudyId) {
+ url = `/study/verifyStudyAllowUpload/${trialId}/${studyInstanceUid}/${abandonStudyId}`
+ } else {
+ url = `/study/verifyStudyAllowUpload/${trialId}/${studyInstanceUid}`
+ }
+ return request({
+ url: url,
+ method: 'get'
+ })
+}
+
+export function batchVerifyStudyAllowUpload(param) {
+ return request({
+ url: `/study/verifyStudyAllowUpload`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function VerifySignature(userName, password) {
+ return request({
+ url: `/user/VerifySignature/${userName}/${password}`,
+ method: 'get'
+ })
+}
+
+export function getSeriesList(studyId) {
+ return request({
+ url: `/series/list/${studyId}`,
+ method: 'get'
+ })
+}
+
+export function getVisitList(param) {
+ return request({
+ url: `/subjectVisit/getVisitList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function forwardStudy(studyId, trialId) {
+ return request({
+ url: `/study/forwardStudy/${studyId}/${trialId}`,
+ method: 'get'
+ })
+}
+export function deleteTrial(trialId) {
+ return request({
+ url: `/trial/deleteTrial/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getTrialUserScreeningList(param) {
+ return request({
+ url: `/trialMaintenance/getTrialUserScreeningList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addTrialUsers(param) {
+ return request({
+ url: `/trialMaintenance/addTrialUsers`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateTrialUser(param) {
+ return request({
+ url: `/trialMaintenance/updateTrialUser`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function getSiteCRCSimpleList(param) {
+ return request({
+ url: `/trialMaintenance/getSiteCRCSimpleList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialSiteScreeningList(param) {
+ return request({
+ url: `/trialMaintenance/getTrialSiteScreeningList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addTrialSites(param) {
+ return request({
+ url: `/trialMaintenance/addTrialSites`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSiteCRCScreeningList(param) {
+ return request({
+ url: `/trialMaintenance/getSiteCRCScreeningList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function assignSiteCRC(param) {
+ return request({
+ url: `/trialMaintenance/assignSiteCRC`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function editTrialSite(param) {
+ return request({
+ url: `/TrialMaintenance/editTrialSite`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function deleteTrialSite(id, trialId) {
+ return request({
+ url: `/trialMaintenance/deleteTrialSite/${id}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function getTrialVisitPlanConfirmed(trialId) {
+ return request({
+ url: `/trial/getTrialVisitPlanConfirmed/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getTrialQATemplateList(params) {
+ return request({
+ url: `/TrialQATemplate/GetTrialQATemplateList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSystemQATemplateList(modalityId) {
+ return request({
+ url: `/TrialQATemplate/GetSystemQATemplateList/${modalityId}`,
+ method: 'get'
+ })
+}
+
+export function getTemplateItemInitList(params) {
+ return request({
+ url: `/TrialQATemplate/GetTemplateItemInitList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addOrUpdateTrialQATemplate(params) {
+ return request({
+ url: `/TrialQATemplate/AddOrUpdateTrialQATemplate`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteTrialQATemplate(qaTrialTemplateId, trialId) {
+ return request({
+ url: `/TrialQATemplate/DeleteTrialQATemplate/${qaTrialTemplateId}/${trialId}`,
+ method: 'delete'
+ })
+}
+
+export function deleteTrialQATemplateItem(templateItemId) {
+ return request({
+ url: `/TrialQATemplate/deleteTrialQATemplateItem/${templateItemId}`,
+ method: 'delete'
+ })
+}
+
+export function getAuditList(params) {
+ return request({
+ url: `/log/getAuditList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getOptUserList(trialId) {
+ return request({
+ url: `/log/getOptUserList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getTrialModalityList(trialId) {
+ return request({
+ url: `/trial/getTrialModalityList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function enrollBackOrOut(trialId, doctorId, optType, outEnrollTime) {
+ return request({
+ url: `/enroll/enrollBackOrOut/${trialId}/${doctorId}/${optType}`,
+ method: 'post',
+ params: outEnrollTime ? { outEnrollTime: outEnrollTime } : {}
+ })
+}
+
+export function uploadDTF(trialId, siteId, subjectId, subjectVisitId, studyId, file, config = {}) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/file/UploadDTF/${trialId}/${siteId}/${subjectId}/${subjectVisitId}/${studyId}`,
+ method: 'post',
+ data: formData,
+ ...config
+ })
+}
+
+export function getStudyDTFList(trialId, studyId) {
+ return request({
+ url: `/StudyDTF/getStudyDtfList/${trialId}/${studyId}`,
+ method: 'get'
+ })
+}
+
+export function deleteStudyDTF(trialId, studyDTFId) {
+ return request({
+ url: `/StudyDTF/deleteStudyDTF/${trialId}/${studyDTFId}`,
+ method: 'delete'
+ })
+}
+
+export function getTrialConfigInfo(trialId) {
+ return request({
+ url: `/TrialConfig/getTrialConfigInfo/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function configTrial(param) {
+ return request({
+ url: `/TrialConfig/configTrial`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQuestionTypeList(trialId) {
+ return request({
+ url: `/TrialQATemplate/getQuestionTypeList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getTrialQCQuestionConfigureList(param) {
+ return request({
+ url: `/TrialQCQuestionConfigure/getTrialQCQuestionConfigureList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteTrialQCQuestionConfigure(trialId, id) {
+ return request({
+ url: `/TrialQCQuestionConfigure/deleteTrialQCQuestionConfigure/${trialId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function batchAddTrialQCQuestionConfigure(trialId, param) {
+ return request({
+ url: `/TrialQCQuestionConfigure/batchAddTrialQCQuestionConfigure/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateTrialQCQuestionConfigure(param) {
+ return request({
+ url: `/TrialQCQuestionConfigure/addOrUpdateTrialQCQuestionConfigure`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function takeOrReleaseQCTask(trialId, subjectVisitId, obtainOrCancel) {
+ return request({
+ url: `/QCOperation/obtainOrCancelQCTask/${trialId}/${subjectVisitId}/${obtainOrCancel}`,
+ method: 'put'
+ })
+}
+export function replaceQCTaskActionUser(trialId, subjectVisitId) {
+ return request({
+ url: `/QCOperation/replaceQCTaskActionUser/${trialId}/${subjectVisitId}`,
+ method: 'put'
+ })
+}
+
+export function verifyReuploadIsCanJump(trialId, qcChallengeId) {
+ return request({
+ url: `/QCOperation/verifyReuploadIsCanJump/${trialId}/${qcChallengeId}`,
+ method: 'get'
+ })
+}
+
+export function currentUserCanQC(subjectVisitId) {
+ return request({
+ url: `/SubjectVisit/currentUserCanQC/${subjectVisitId}`,
+ method: 'post'
+ })
+}
+
+export function updateSubjectVisitState(trialId, subjectVisitId, postVisitState) {
+ return request({
+ url: `/SubjectVisit/updateSubjectVisitState/${trialId}/${subjectVisitId}/${postVisitState}`,
+ method: 'post'
+ })
+}
+
+export function getCRCVisitList(param) {
+ return request({
+ url: `/QCList/getCRCVisitList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyCRCRequestToQC(param) {
+ return request({
+ url: `/QCOperation/verifyCRCRequestToQC`,
+ method: 'post',
+ data: param
+ })
+}
+export function cRCBulkRequestToQC(param) {
+ return request({
+ url: `/QCOperation/cRCRequestToQC`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCRCChallengeList(param) {
+ return request({
+ url: `/QCList/getCRCChallengeList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQCVisitList(param) {
+ return request({
+ url: `/QCList/getQCVisitList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQCChallengeList(param) {
+ return request({
+ url: `/QCList/getQCChallengeList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getVisitQCInfo(subjectVisitId, trialQCProcess, currentQCType) {
+ return request({
+ url: `/QCList/getVisitQCInfo/${subjectVisitId}/${trialQCProcess}/${currentQCType}`,
+ method: 'get'
+ })
+}
+
+export function getQCQuestionAnswerList(trialId, subjectVisitId, trialQCProcess, currentQCType) {
+ return request({
+ url: `/QCList/getQCQuestionAnswerList/${trialId}/${subjectVisitId}/${trialQCProcess}/${currentQCType}`,
+ method: 'get'
+ })
+}
+
+export function getQCQuestionAnswer(param) {
+ return request({
+ url: `/QCList/getQCQuestionAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateQCQuestionAnswerList(trialId, subjectVisitId, trialQCProcess, currentQCType, param) {
+ return request({
+ url: `/QCOperation/addOrUpdateQCQuestionAnswerList/${trialId}/${subjectVisitId}/${trialQCProcess}/${currentQCType}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setSeriesStatus(trialId, subjectVisitId, studyId, seriesId, state) {
+ return request({
+ url: `/QCOperation/setSeriesState/${trialId}/${subjectVisitId}/${studyId}/${seriesId}/${state}`,
+ method: 'put'
+ })
+}
+
+export function getVisitQCStudyAndSeriesList(subjectVisitId) {
+ return request({
+ url: `/QCList/getVisitQCStudyAndSeriesList/${subjectVisitId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateQCChallenge(trialId, trialQCProcess, currentQCType, param) {
+ return request({
+ url: `/QCOperation/addOrUpdateQCChallenge/${trialId}/${trialQCProcess}/${currentQCType}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getHistoryChallengeList(subjectVisitId, trialQCProcess, currentQCType) {
+ return request({
+ url: `/QCList/getHistoryChallengeList/${subjectVisitId}/${trialQCProcess}/${currentQCType}`,
+ method: 'get'
+ })
+}
+
+export function getQCChallengeDialogList(qaChallengeId) {
+ return request({
+ url: `/QCList/getQCChallengeDialogList/${qaChallengeId}`,
+ method: 'get'
+ })
+}
+
+export function addQCChallengeReply(trialId, param) {
+ return request({
+ url: `/QCOperation/addQCChallengeReply/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function qCCheckPassedOrFailed(trialId, subjectVisitId, signCodeId, auditState) {
+ return request({
+ url: `/QCOperation/qCPassedOrFailed/${trialId}/${subjectVisitId}/${signCodeId}/${auditState}`,
+ method: 'post'
+ })
+}
+
+export function closeQCChallenge(param) {
+ return request({
+ url: `/QCOperation/closeQCChallenge`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function getSubjectVisitUploadedStudyList(subjectVisitId) {
+ return request({
+ url: `/QCList/getSubjectVisitUploadedStudyList/${subjectVisitId}`,
+ method: 'get'
+ })
+}
+
+export function deleteStudyList(trialId, subjectVisitId, param) {
+ return request({
+ url: `/QCOperation/deleteStudyList/${trialId}/${subjectVisitId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateModality(trialId, param) {
+ return request({
+ url: `/QCOperation/updateModality/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getConsistencyVerificationList(param) {
+ return request({
+ url: `/QCList/getConsistencyVerificationList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCheckChallengeDialogList(subjectVisitId) {
+ return request({
+ url: `/QCList/getCheckChallengeDialogList/${subjectVisitId}`,
+ method: 'get'
+ })
+}
+
+export function addCheckChallengeReply(trialId, param) {
+ return request({
+ url: `/QCOperation/addCheckChallengeReply/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function closeCheckChallenge(trialId, param) {
+ return request({
+ url: `/QCOperation/closeCheckChallenge/${trialId}`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function setCheckPass(trialId, param) {
+ return request({
+ url: `/QCOperation/setCheckPass/${trialId}`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function checkBack(trialId, signId, subjectVisitId) {
+ return request({
+ url: `/QCOperation/checkBack/${trialId}/${signId}/${subjectVisitId}`,
+ method: 'put'
+ })
+}
+
+export function cRCRequstCheckBack(trialId, subjectVisitId) {
+ return request({
+ url: `/QCOperation/cRCRequstCheckBack/${trialId}/${subjectVisitId}`,
+ method: 'put'
+ })
+}
+
+export function getCRCVisitChallengeAndDialog(subjectVisitId, trialQCProcess) {
+ return request({
+ url: `/QCList/getCRCVisitChallengeAndDialog/${subjectVisitId}/${trialQCProcess}`,
+ method: 'get'
+ })
+}
+
+export function uploadVisitCheckExcel(trialId, file) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/QCOperation/UploadVisitCheckExcel/${trialId}`,
+ method: 'post',
+ data: formData
+ })
+}
+
+export function getSubjectClinicalData(subjectVisitId) {
+ return request({
+ url: `/ClinicalData/getSubjectVisitClinicalData/${subjectVisitId}`,
+ method: 'get'
+ })
+}
+
+export function uploadVisitClinicalData(trialId, subjectVisitId, file) {
+ return request({
+ url: `/ClinicalData/uploadVisitClinicalData/${trialId}/${subjectVisitId}`,
+ method: 'post',
+ data: file
+ })
+}
+
+export function addOrUpdatePreviousHistory(trialId, param) {
+ return request({
+ url: `/ClinicalData/addOrUpdatePreviousHistory/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePreviousHistory(trialId, subjectVisitId, previousHistoryId) {
+ return request({
+ url: `/ClinicalData/deletePreviousHistory/${trialId}/${subjectVisitId}/${previousHistoryId}`,
+ method: 'delete'
+ })
+}
+
+export function addOrUpdatePreviousOther(trialId, param) {
+ return request({
+ url: `/ClinicalData/addOrUpdatePreviousOther/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePreviousOther(trialId, subjectVisitId, previousOtherId) {
+ return request({
+ url: `/ClinicalData/deletePreviousOther/${trialId}/${subjectVisitId}/${previousOtherId}`,
+ method: 'delete'
+ })
+}
+
+export function addOrUpdatePreviousSurgery(trialId, param) {
+ return request({
+ url: `/ClinicalData/addOrUpdatePreviousSurgery/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePreviousSurgery(trialId, subjectVisitId, id) {
+ return request({
+ url: `/ClinicalData/deletePreviousSurgery/${trialId}/${subjectVisitId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function deletePreviousPDF(trialId, subjectVisitId, id) {
+ return request({
+ url: `/ClinicalData/deletePreviousPDF/${trialId}/${subjectVisitId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function signClinicalData(trialId, subjectVisitId) {
+ return request({
+ url: `/ClinicalData/signClinicalData/${trialId}/${subjectVisitId}`,
+ method: 'put'
+ })
+}
+
+export function setNeedReupload(trialId, subjectVisitId, qaChallengeId) {
+ return request({
+ url: `/QCOperation/setNeedReupload/${trialId}/${subjectVisitId}/${qaChallengeId}`,
+ method: 'put'
+ })
+}
+
+export function cRCRequestReUpload(trialId, subjectVisitId, qaChallengeId) {
+ return request({
+ url: `/QCOperation/cRCRequestReUpload/${trialId}/${subjectVisitId}/${qaChallengeId}`,
+ method: 'put'
+ })
+}
+
+export function setVisitUrgent(trialId, subjectVisitId, setOrCancel) {
+ return request({
+ url: `/QCOperation/setVisitUrgent/${trialId}/${subjectVisitId}/${setOrCancel}`,
+ method: 'put'
+ })
+}
+
+export function getQCChallengeCreatorList(trialId) {
+ return request({
+ url: `/QCList/getQCChallengeCreatorList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function updateSubjectAndSVInfo(trialId, param) {
+ return request({
+ url: `/QCOperation/updateSubjectAndSVInfo/${trialId}`,
+ method: 'put',
+ data: param
+ })
+}
+export function getSubjectVisitSelectOptions(subjectId) {
+ return request({
+ url: `/QCList/getSubjectVisitSelectList/${subjectId}`,
+ method: 'get'
+ })
+}
+
+export function verifyCanQCPassedOrFailed(trialId, subjectvisitId) {
+ return request({
+ url: `/QCOperation/verifyCanQCPassedOrFailed/${trialId}/${subjectvisitId}`,
+ method: 'get'
+ })
+}
+
+export function setReuploadFinished(param) {
+ return request({
+ url: `/QCOperation/setReuploadFinished`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getForwardList(param) {
+ return request({
+ url: `/QCList/getForwardList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getNoneDicomStudyList(subjectVisitId, sudyId = '') {
+ return request({
+ url: `/NoneDicomStudy/getNoneDicomStudyList?subjectVisitId=${subjectVisitId}&nonedicomStudyId=${sudyId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateNoneDicomStudy(param) {
+ return request({
+ url: `/NoneDicomStudy/addOrUpdateNoneDicomStudy`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteNoneDicomStudy(trialId, subjectVisitId, id) {
+ return request({
+ url: `/NoneDicomStudy/deleteNoneDicomStudy/${trialId}/${subjectVisitId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getNoneDicomStudyFileList(nonDicomStudyId) {
+ return request({
+ url: `/NoneDicomStudy/getNoneDicomStudyFileList/${nonDicomStudyId}`,
+ method: 'get'
+ })
+}
+
+export function getVisitNoneDicomStudyFileList(subjectVisitId) {
+ return request({
+ url: `/NoneDicomStudy/getVisitNoneDicomStudyFileList/${subjectVisitId}`,
+ method: 'get'
+ })
+}
+
+export function uploadNoneDicomFile(trialId, subjectVisitId, nonDicomStudyId, fileData, studyMonitorId) {
+ return request({
+ url: `/NoneDicomStudy/uploadNoneDicomFile/${trialId}/${subjectVisitId}/${nonDicomStudyId}/${studyMonitorId}`,
+ method: 'post',
+ data: fileData
+ })
+}
+
+export function deleteNoneDicomStudyFile(trialId, subjectVisitId, id) {
+ return request({
+ url: `/NoneDicomStudy/deleteNoneDicomStudyFile/${trialId}/${subjectVisitId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getGenerateTrialCodeDic() {
+ return request({
+ url: `/Dictionary/getGenerateTrialCodeDic`,
+ method: 'get'
+ })
+}
+
+export function getQCParticipantList(trialId) {
+ return request({
+ url: `/QCList/getQCParticipantList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getUserTypeList(type) {
+ return request({
+ url: `/UserTypeRole/getUserTypeList${type ? '/' + type : ''}`,
+ method: 'get'
+ })
+}
+
+export function confirmTrialVisitPlan(trialId) {
+ return request({
+ url: `/VisitPlan/confirmTrialVisitPlan/${trialId}`,
+ method: 'post'
+ })
+}
+export function getInfluenceHistoryList(trialId) {
+ return request({
+ url: `/VisitPlan/getInfluenceHistoryList/${trialId}`,
+ method: 'get'
+ })
+}
+export function downloadInflunceStudyList(id) {
+ return requestDownload({
+ url: `/VisitPlan/downloadInflunceStudyList/${id}`,
+ method: 'get',
+ responseType: 'blob'
+ })
+}
+
+export function getTrialSiteSurveyList(param) {
+ return request({
+ url: `/TrialSiteSurvey/getTrialSiteSurveyList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function trialSiteSurveyUserList(param) {
+ return request({
+ url: `/TrialSiteSurvey/trialSiteSurveyUserList`,
+ method: 'post',
+ data: param
+ })
+}
+export function sendInviteEmails(param) {
+ return request({
+ url: `/TrialSiteSurvey/sendInviteEmail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function sendSiteSurveyUserJoinEmail(param) {
+ return request({
+ url: `/TrialSiteSurvey/sendSiteSurveyUserJoinEmail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function abandonSiteSurvey(trialId, trialSiteSurveyId) {
+ return request({
+ url: `/TrialSiteSurvey/abandonSiteSurvey/${trialId}/${trialSiteSurveyId}`,
+ method: 'put'
+ })
+}
+
+export function getTrialDocumentList(param) {
+ return request({
+ url: `/TrialDocument/getTrialDocumentList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateTrialDocument(param) {
+ return request({
+ url: `/TrialDocument/addOrUpdateTrialDocument`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteTrialDocument(trialId, id) {
+ return request({
+ url: `/TrialDocument/deleteTrialDocument/${trialId}/${id}`,
+ method: 'delete'
+ })
+}
+
+export function userConfirm(param) {
+ return request({
+ url: `/TrialDocument/userConfirm`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setFirstViewDocumentTime(trialId, trialDocumentId, isSystemDoc) {
+ return request({
+ url: `/TrialDocument/setFirstViewDocumentTime/${trialId}/${trialDocumentId}/${isSystemDoc}`,
+ method: 'put'
+ })
+}
+
+export function setSystemDocFirstViewTime(documentId) {
+ return request({
+ url: `/TrialDocument/setSystemDocFirstViewTime/${documentId}`,
+ method: 'put'
+ })
+}
+
+export function uploadTrialDoc(trialId, file) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/TrialDocument/UploadTrialDoc/${trialId}`,
+ method: 'post',
+ data: formData
+ })
+}
+
+export function getTrialDocuments(trialId) {
+ return request({
+ url: `/TrialDocument/getTrialDocumentList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function addSystemDocuments(trialId, param) {
+ return request({
+ url: `/TrialDocument/addSystemDocuments/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialUserTypeList() {
+ return request({
+ url: `/UserTypeRole/getTrialUserTypeList`,
+ method: 'get'
+ })
+}
+
+export function getUserDocumentList(param) {
+ return request({
+ url: `/TrialDocument/getUserDocumentList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDocumentConfirmList(param) {
+ return request({
+ url: `/TrialDocument/getDocumentConfirmList`,
+ method: 'post',
+ data: param
+ })
+}
+export function getTrialUserSelect(trialId) {
+ return request({
+ url: `/TrialDocument/getTrialUserSelect/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getTrialDocAndSystemDocType(trialId) {
+ return request({
+ url: `/TrialDocument/getTrialDocAndSystemDocType/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function updateSubjectStatus(param) {
+ return request({
+ url: `/Subject/updateSubjectStatus`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function userAbandonDoc(documentId, isSystemDoc) {
+ return request({
+ url: `/TrialDocument/userAbandonDoc/${documentId}/${isSystemDoc}`,
+ method: 'put'
+ })
+}
+
+export function verifyQCCanAddChallenge(trialId, subjectVisitId, currentQCType) {
+ return request({
+ url: `/QCOperation/VerifyQCCanAddChallenge/${trialId}/${subjectVisitId}/${currentQCType}`,
+ method: 'get'
+ })
+}
+
+export function setSubjectVisitUrgent(trialId, subjectVisitId, isUrgent) {
+ return request({
+ url: `/SubjectVisit/SetSubjectVisitUrgent/${trialId}/${subjectVisitId}/${isUrgent}`,
+ method: 'put'
+ })
+}
+
+export function configTrialBasicInfo(param) {
+ return request({
+ url: `/TrialConfig/configTrialBasicInfo`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function configTrialProcessInfo(param) {
+ return request({
+ url: `/TrialConfig/configTrialProcessInfo`,
+ method: 'put',
+ data: param
+ })
+}
+export function configTrialUrgentInfo(param) {
+ return request({
+ url: `/TrialConfig/configTrialUrgentInfo`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function getTrialQCQuestionSelectList(param) {
+ return request({
+ url: `/TrialQCQuestionConfigure/getTrialQCQuestionSelectList`,
+ method: 'post',
+ data: param
+ })
+}
+export function getSignText(signCode) {
+ return request({
+ url: `/TrialConfig/getSignText/${signCode}`,
+ method: 'get'
+ })
+}
+export function verifySignature(param) {
+ return request({
+ url: `/TrialConfig/verifySignature`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function confirmQCQuestion(trialId) {
+ return request({
+ url: `/TrialConfig/confirmQCQuestion/${trialId}`,
+ method: 'put'
+ })
+}
+
+export function updateTrialState(trialId, trialStatusStr, reason) {
+ return request({
+ url: `/TrialConfig/updateTrialState/${trialId}/${trialStatusStr}/${reason}`,
+ method: 'put'
+ })
+}
+
+export function trialConfigSignatureConfirm(param) {
+ return request({
+ url: `/TrialConfig/trialConfigSignatureConfirm`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getUserIsHaveDocumentNeedSign(trialId) {
+ return request({
+ url: `/TrialDocument/getUserIsHaveDocumentNeedSign/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getDicomAndNoneDicomStudyList(param) {
+ return request({
+ url: `/study/getDicomAndNoneDicomStudyList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialExternalUserList(param) {
+ return request({
+ url: `/TrialExternalUser/getTrialExternalUserList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateTrialExternalUser(param) {
+ return request({
+ url: `/TrialExternalUser/addOrUpdateTrialExternalUser`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyUserIsCanAddOrUpdate(param) {
+ return request({
+ url: `/TrialExternalUser/verifyUserIsCanAddOrUpdate`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function sendInviteEmail(param) {
+ return request({
+ url: `/TrialExternalUser/sendInviteEmail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteTrialExternalUser(id) {
+ return request({
+ url: `/TrialExternalUser/deleteTrialExternalUser/${id}`,
+ method: 'delete'
+ })
+}
+export function getBasicStat() {
+ return request({
+ url: `/PersonalWorkstation/getBasicStat`,
+ method: 'get'
+ })
+}
+
+export function getTrialDocStatList(param) {
+ return request({
+ url: `/PersonalWorkstation/getTrialDocStatList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSiteSurveyApprovalList(param) {
+ return request({
+ url: `/PersonalWorkstation/getSiteSurveyApprovalList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getWaitSignSysDocList(param) {
+ return request({
+ url: `/SystemDocument/getWaitSignSysDocList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function forwardSVDicomImage(trialId, param) {
+ return request({
+ url: `/QCOperation/forwardSVDicomImage/${trialId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDicomAndNoneDicomStudyMonitorList(param) {
+ return request({
+ url: `/Study/getDicomAndNoneDicomStudyMonitorList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function isQCCanOpt(subjectVisitId) {
+ return request({
+ url: `/QCOperation/isQCCanOpt?subjectVisitId=${subjectVisitId}`,
+ method: 'get'
+ })
+}
+
+export function rejectCheckBack(trialId, subjectVisitId) {
+ return request({
+ url: `/QCOperation/rejectCheckBack/${trialId}/${subjectVisitId}`,
+ method: 'put'
+ })
+}
+
+export function sendExternalUserJoinEmail(param) {
+ return request({
+ url: `/TrialExternalUser/sendExternalUserJoinEmail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadModuleList(param) {
+ return request({
+ url: `/ReadModule/getReadModuleList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingPeriodSetList(param) {
+ return request({
+ url: `/ReadingPeriodSet/getReadingPeriodSetList`,
+ method: 'post',
+ data: param
+ })
+}
+export function addOrUpdateReadingPeriodSet(param) {
+ return request({
+ url: `/ReadingPeriodSet/addOrUpdateReadingPeriodSet`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteReadingPeriodSet(id) {
+ return request({
+ url: `/ReadingPeriodSet/deleteReadingPeriodSet/${id}`,
+ method: 'delete'
+ })
+}
+export function getClinicalDataList(param) {
+ return request({
+ url: `/ClinicalData/getClinicalDataList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function uploadClinicalDataFile(trialId, id, isVisit, file) {
+ const formData = new FormData()
+ formData.append('file', file)
+ return request({
+ url: `/ClinicalData/UploadClinicalData/${trialId}/${id}/${isVisit}`,
+ method: 'post',
+ data: formData
+ })
+}
+
+// export function addOrUpdateReadingPreviousPDF(param) {
+// return request({
+// url: `/PreviousPDF/addOrUpdateReadingPreviousPDF`,
+// method: 'post',
+// data: param
+// })
+// }
+
+// export function getPreviousPDFList(param) {
+// return request({
+// url: `/PreviousPDF/getPreviousPDFList`,
+// method: 'post',
+// data: param
+// })
+// }
+
+export function getReadingClinicalDataList(param) {
+ return request({
+ url: `/ReadingClinicalData/getReadingClinicalDataList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateReadingClinicalData(param) {
+ return request({
+ url: `/ReadingClinicalData/addOrUpdateReadingClinicalData`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteReadingClinicalData(id) {
+ return request({
+ url: `/ReadingClinicalData/deleteReadingClinicalData/${id}`,
+ method: 'delete'
+ })
+}
+
+export function deleteReadingClinicalDataPDF(id) {
+ return request({
+ url: `/ReadingClinicalData/deleteReadingClinicalDataPDF/${id}`,
+ method: 'delete'
+ })
+}
+
+export function ReadClinicalDataSign(param) {
+ return request({
+ url: `/Inspection/ReadClinicalData/ReadClinicalDataSign`,
+ method: 'post',
+ data: param
+ })
+}
+export function uploadClinicalData(trialId, subjectId, readingId, param) {
+ return request({
+ url: `/ClinicalData/UploadClinicalData/${trialId}/${subjectId}/${readingId}`,
+ method: 'post',
+ data: param
+ })
+}
+export function setReadingPeriodSetEffect(param) {
+ return request({
+ url: `/ReadingPeriodSet/setReadingPeriodSetEffect`,
+ method: 'put',
+ data: param
+ })
+}
+export function deleteReadModule(id) {
+ return request({
+ url: `/ReadModule/deleteReadModule/${id}`,
+ method: 'delete'
+ })
+}
+export function addReadModule(param) {
+ return request({
+ url: `/ReadModule/addReadModule`,
+ method: 'post',
+ data: param
+ })
+}
+export function getPreviewTheReadingList(param) {
+ return request({
+ url: `/ReadingPeriodSet/getPreviewTheReadingList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getPreviewTheReadingPlanList(param) {
+ return request({
+ url: `/ReadingPeriodSet/getPreviewTheReadingPlanList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function generateReadingTask(param) {
+ return request({
+ url: `/ReadingPeriodSet/generateReadingTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSubjectReadVisitList(id, subjectId, TrialReadingCriterionId) {
+ return request({
+ url: `/ReadModule/getSubjectReadVisitList?ReadingSetType=${id}&SubjectId=${subjectId}&TrialReadingCriterionId=${TrialReadingCriterionId}`,
+ method: 'get'
+ })
+}
+
+export function getReadModule(param) {
+ return request({
+ url: `/ReadModule/getReadModule`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getVisitTaskList(param) {
+ return request({
+ url: `/VisitTask/getVisitTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingVisitList(param) {
+ return request({
+ url: `/ReadingPeriodSet/getReadingVisitList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialClinicalDataTrialSetList(param) {
+ return request({
+ url: `/ClinicalDataSet/getTrialClinicalDataTrialSetList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateClinicalDataTrialSet(param) {
+ return request({
+ url: `/ClinicalDataSet/addOrUpdateClinicalDataTrialSet`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteClinicalTrialSetData(id) {
+ return request({
+ url: `/ClinicalDataSet/deleteClinicalTrialSetData/${id}`,
+ method: 'delete'
+ })
+}
+
+export function setClinicalDataCheckd(param) {
+ return request({
+ url: `/ClinicalDataSet/setClinicalDataCheckd`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialClinicalDataSelect(param) {
+ return request({
+ url: `/ReadingClinicalData/getTrialClinicalDataSelect`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateReadingQuestionCriterionTrial(param) {
+ return request({
+ url: `/ReadingQuestion/addOrUpdateReadingQuestionCriterionTrial`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingQuestionCriterionTrialList(param) {
+ return request({
+ url: `/ReadingQuestion/getReadingQuestionCriterionTrialList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteReadingQuestionCriterionTrial(id) {
+ return request({
+ url: `/ReadingQuestion/deleteReadingQuestionCriterionTrial/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getReadingQuestionTrialList(param) {
+ return request({
+ url: `/ReadingQuestion/getReadingQuestionTrialList`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteReadingQuestionTrial(id) {
+ return request({
+ url: `/ReadingQuestion/deleteReadingQuestionTrial/${id}`,
+ method: 'delete'
+ })
+}
+
+export function addOrUpdateReadingQuestionTrial(param) {
+ return request({
+ url: `/ReadingQuestion/addOrUpdateReadingQuestionTrial`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialCriterionOtherQuestion(param) {
+ return request({
+ url: `/ReadingQuestion/getTrialCriterionOtherQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getIRUnReadSubjectTaskList(param) {
+ return request({
+ url: `/VisitTask/getIRUnReadSubjectTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setTrialReadingQuestionCriterionIsIsCompleteConfig(param) {
+ return request({
+ url: `/ReadingQuestion/setTrialReadingQuestionCriterionIsIsCompleteConfig`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialGroupNameList(param) {
+ return request({
+ url: `/ReadingQuestion/getTrialGroupNameList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getIRHaveReadTaskList(param) {
+ return request({
+ url: `/VisitTask/getIRHaveReadTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getIRReReadingTaskList(param) {
+ return request({
+ url: `/VisitTask/getIRReReadingTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingImageFile(param) {
+ return request({
+ url: `/ReadingImageTask/getReadingImageFile`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialConfirmCriterionList(param) {
+ return request({
+ url: `/ReadingImageTask/getTrialConfirmCriterionList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialReadingQuestion(param) {
+ return request({
+ url: `/ReadingImageTask/getTrialReadingQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitVisitTaskQuestionsInDto(param) {
+ return request({
+ url: `/Inspection/ReadingImageTask/SubmitVisitTaskQuestions`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function saveVisitTaskQuestions(param) {
+ return request({
+ url: `/ReadingImageTask/saveVisitTaskQuestions`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getJudgeReadingInfo(param) {
+ return request({
+ url: `/ReadingImageTask/getJudgeReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function saveJudgeVisitTaskResult(param) {
+ return request({
+ url: `/ReadingImageTask/SaveJudgeVisitTaskResult`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitJudgeVisitTaskResult(param) {
+ return request({
+ url: `/Inspection/ReadingImageTask/SubmitJudgeVisitTaskResult`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingPastResultList(param) {
+ return request({
+ url: `/ReadingImageTask/getReadingPastResultList`,
+ method: 'post',
+ data: param
+ })
+}
+export function uploadClinicalTemplate(file, trialId) {
+ const formData = new FormData()
+ formData.append('file', file)
+
+ return request({
+ url: trialId ? `/ClinicalData/UploadClinicalTemplate?trialId=${trialId}` : `/ClinicalData/UploadClinicalTemplate`,
+ method: 'post',
+ data: formData
+ })
+}
+
+export function getCRCClinicalData(param) {
+ return request({
+ url: `/ReadingClinicalData/getCRCClinicalData`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function DownloadTrialClinicalFile(clinicalDataTrialSetId) {
+ return requestDownload({
+ url: `/CommonDocument/DownloadTrialClinicalFile?clinicalDataTrialSetId=${clinicalDataTrialSetId}`,
+ method: 'get',
+ responseType: 'blob'
+ })
+}
+
+export function getMIMMedicalReviewTaskList(param) {
+ return request({
+ url: `/TaskMedicalReview/getMIMMedicalReviewTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingMedicineTrialQuestionList(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/getReadingMedicineTrialQuestionList`,
+ method: 'post',
+ data: param
+ })
+}
+export function addTrialDataFromSystem(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/addTrialDataFromSystem`,
+ method: 'post',
+ data: param
+ })
+}
+export function getReadingMedicineTrialOtherQuestion(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/getReadingMedicineTrialOtherQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+export function addOrUpdateReadingMedicineTrialQuestion(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/addOrUpdateReadingMedicineTrialQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteReadingMedicineTrialQuestion(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/deleteReadingMedicineTrialQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+export function getReadingOrTaskClinicalDataList(param) {
+ return request({
+ url: `/ReadingClinicalData/getReadingOrTaskClinicalDataList`,
+ method: 'post',
+ data: param
+ })
+}
+export function getMedicineQuestionPreview(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/getMedicineQuestionPreview`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function confirmReadingMedicineQuestion(param) {
+ return request({
+ url: `/Inspection/ReadingMedicineQuestion/ConfirmReadingMedicineQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getMedicalReviewReadingTask(param) {
+ return request({
+ url: `/ReadingMedicalReview/getMedicalReviewReadingTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function saveMedicineQuestion(param) {
+ return request({
+ url: `/ReadingMedicalReview/saveMedicineQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+export function saveMedicalReviewInfo(param) {
+ return request({
+ url: `/ReadingMedicalReview/saveMedicalReviewInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function UploadMedicalReviewImage(trialId, taskMedicalReviewId, param) {
+ return request({
+ url: `/TaskMedicalReview/UploadMedicalReviewImage/${trialId}/${taskMedicalReviewId}`,
+ method: 'post',
+ data: param
+ })
+}
+export function FinishMedicalReview(param) {
+ return request({
+ url: `/Inspection/ReadingMedicalReview/FinishMedicalReview`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getMedicalReviewDialog(param) {
+ return request({
+ url: `/ReadingMedicalReview/getMedicalReviewDialog`,
+ method: 'post',
+ data: param
+ })
+}
+export function sendMedicalReviewDialog(param) {
+ return request({
+ url: `/ReadingMedicalReview/sendMedicalReviewDialog`,
+ method: 'post',
+ data: param
+ })
+}
+export function iRConfirmMedicalReview(param) {
+ return request({
+ url: `/ReadingMedicalReview/iRConfirmMedicalReview`,
+ method: 'post',
+ data: param
+ })
+}
+export function getIRMedicalFeedbackList(param) {
+ return request({
+ url: `/ReadingMedicalReview/getIRMedicalFeedbackList`,
+ method: 'post',
+ data: param
+ })
+}
+export function closedMedicalReviewDialog(param) {
+ return request({
+ url: `/ReadingMedicalReview/closedMedicalReviewDialog`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function iRSendMedicalReviewDialog(param) {
+ return request({
+ url: `/ReadingMedicalReview/iRSendMedicalReviewDialog`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getNextTask(param) {
+ return request({
+ url: `/ReadingImageTask/getNextTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setEnrollReadingCategory(param) {
+ return request({
+ url: `/DoctorWorkload/setEnrollReadingCategory`,
+ method: 'post',
+ data: param
+ })
+}
+export function uploadJudgeTaskImage(trialId, visitTaskId, param) {
+ return request({
+ url: `/VisitTask/UploadJudgeTaskImage/${trialId}/${visitTaskId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCriterionReadingInfo(param) {
+ return request({
+ url: `/TrialConfig/getCriterionReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setCriterionReadingInfo(param) {
+ return request({
+ url: `/TrialConfig/setCriterionReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialCriterionList(trialId, isHaveSigned) {
+ return request({
+ url: isHaveSigned === false ? `/VisitTask/getTrialCriterionList?TrialId=${trialId}&isHaveSigned=${isHaveSigned}` : `/VisitTask/getTrialCriterionList?TrialId=${trialId}`,
+ method: 'get'
+ })
+}
+export function getTrialCriterionList2(trialId, isHaveSigned) {
+ return request({
+ url: isHaveSigned === false ? `/VisitTask/getTrialCriterionList?TrialId=${trialId}&IsAutoCreate=${isHaveSigned}` : `/VisitTask/getTrialCriterionList?TrialId=${trialId}`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateReadingCriterionPage(param) {
+ return request({
+ url: `/ReadingQuestion/addOrUpdateReadingCriterionPage`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setTrialReadingCriterion(param) {
+ return request({
+ url: `/TrialConfig/setTrialReadingCriterion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialReadingCriterionInfo(param) {
+ return request({
+ url: `/TrialConfig/getTrialReadingCriterionInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingCriterionPageList(param) {
+ return request({
+ url: `/TrialConfig/getReadingCriterionPageList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteReadingCriterionPage(id) {
+ return request({
+ url: `/ReadingQuestion/deleteReadingCriterionPage/${id}`,
+ method: 'delete'
+ })
+}
+export function trialReadingInfoSign(param) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/TrialReadingInfoSign`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getGlobalReadingInfo(param) {
+ return request({
+ url: `/ReadingImageTask/getGlobalReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function saveGlobalReadingInfo(param) {
+ return request({
+ url: `/ReadingImageTask/saveGlobalReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getHistoryGlobalInfo(param) {
+ return request({
+ url: `/ReadingImageTask/getHistoryGlobalInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitGlobalReadingInfo(param) {
+ return request({
+ url: `/Inspection/ReadingImageTask/SubmitGlobalReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function trialReadingInfoSignVerify(param) {
+ return request({
+ url: `/TrialConfig/trialReadingInfoSignVerify`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getOncologySet(param) {
+ return request({
+ url: `/TrialConfig/getOncologySet`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setOncologySet(param) {
+ return request({
+ url: `/TrialConfig/setOncologySet`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getOncologyReadingInfo(param) {
+ return request({
+ url: `/ReadingImageTask/getOncologyReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setOncologyReadingInfo(param) {
+ return request({
+ url: `/ReadingImageTask/setOncologyReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitOncologyReadingInfo(param) {
+ return request({
+ url: `/Inspection/ReadingImageTask/SubmitOncologyReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function uploadReadingAnswerImage(trialId, visitTaskId, param) {
+ return request({
+ url: `/VisitTask/UploadReadingAnswerImage/${trialId}/${visitTaskId}`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyeCriterionNeedSynchronize(param) {
+ return request({
+ url: `/ReadingQuestion/verifyeCriterionNeedSynchronize`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function synchronizeCriterion(param) {
+ return request({
+ url: `/ReadingQuestion/synchronizeCriterion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingTableQuestionSystemList(param) {
+ return request({
+ url: `/ReadingQuestion/getReadingTableQuestionSystemList`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteReadingTableQuestionSystem(id) {
+ return request({
+ url: `/ReadingQuestion/deleteReadingTableQuestionSystem/${id}`,
+ method: 'delete'
+ })
+}
+
+export function addOrUpdateReadingTableQuestionSystem(param) {
+ return request({
+ url: `/ReadingQuestion/addOrUpdateReadingTableQuestionSystem`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingTableOtherQuestionSystem(param) {
+ return request({
+ url: `/ReadingQuestion/getReadingTableOtherQuestionSystem`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyReadingMedicineQuestion(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/verifyReadingMedicineQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyTrialConfigSignatureConfirm(param) {
+ return request({
+ url: `/TrialConfig/verifyTrialConfigSignatureConfirm`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialOrganList(param) {
+ return request({
+ url: `/OrganInfo/getTrialOrganList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialCheckOrganList(param) {
+ return request({
+ url: `/OrganInfo/getTrialCheckOrganList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteTrialOrganInfo(id) {
+ return request({
+ url: `/OrganInfo/deleteTrialOrganInfo/${id}`,
+ method: 'delete'
+ })
+}
+
+export function batchAddTrialOrgan(param) {
+ return request({
+ url: `/OrganInfo/batchAddTrialOrgan`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSystemCriterionList() {
+ return request({
+ url: `/ReadingQuestion/getSystemCriterionList`,
+ method: 'post'
+ })
+}
+
+export function synchronizeSystemOrganToTrial(param) {
+ return request({
+ url: `/OrganInfo/synchronizeSystemOrganToTrial`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setOrganIsEnable(param) {
+ return request({
+ url: `/OrganInfo/setOrganIsEnable`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCriterionLesionType(param) {
+ return request({
+ url: `/OrganInfo/getCriterionLesionType`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingTableQuestionTrialList(param) {
+ return request({
+ url: `/ReadingQuestion/getReadingTableQuestionTrialList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateReadingTableQuestionTrial(param) {
+ return request({
+ url: `/ReadingQuestion/addOrUpdateReadingTableQuestionTrial`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteReadingTableQuestionTrial(id) {
+ return request({
+ url: `/ReadingQuestion/deleteReadingTableQuestionTrial/${id}`,
+ method: 'delete'
+ })
+}
+
+export function getReadingTableOtherQuestionTrial(param) {
+ return request({
+ url: `/ReadingQuestion/getReadingTableOtherQuestionTrial`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getRelatedVisitTask(param) {
+ return request({
+ url: `/ReadingImageTask/getRelatedVisitTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getReadingQuestionAndAnswer(param) {
+ return request({
+ url: `/ReadingImageTask/getReadingQuestionAndAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitTableQuestion(param) {
+ return request({
+ url: `/ReadingImageTask/submitTableQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTableAnswerRowInfoList(visitTaskId) {
+ return request({
+ url: `/ReadingImageTask/getTableAnswerRowInfoList?visitTaskId=${visitTaskId}`,
+ method: 'get'
+ })
+}
+
+export function getReadingReportEvaluation(param) {
+ return request({
+ url: `/ReadingImageTask/getReadingReportEvaluation`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitDicomVisitTask(param) {
+ return request({
+ url: `/Inspection/ReadingImageTask/SubmitDicomVisitTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDicomReadingQuestionAnswer(param) {
+ return request({
+ url: `/ReadingImageTask/getDicomReadingQuestionAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function changeDicomReadingQuestionAnswer(param) {
+ return request({
+ url: `/ReadingImageTask/changeDicomReadingQuestionAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function saveImageQuality(param) {
+ return request({
+ url: `/ReadingImageTask/saveImageQuality`,
+ method: 'post',
+ data: param
+ })
+}
+export function deleteReadingRowAnswer(param) {
+ return request({
+ url: `/ReadingImageTask/deleteReadingRowAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyVisitTaskQuestions(param) {
+ return request({
+ url: `/ReadingImageTask/verifyVisitTaskQuestions`,
+ method: 'post',
+ data: param
+ })
+}
+export function getSystemCriterionSelectList() {
+ return request({
+ url: `/ReadingQuestion/getSystemCriterionSelectList`,
+ method: 'post'
+ })
+}
+
+export function splitLesion(param) {
+ return request({
+ url: `/ReadingImageTask/splitLesion`,
+ method: 'post',
+ data: param
+ })
+}
+export function getReadingTool(param) {
+ return request({
+ url: `/ReadingImageTask/getReadingTool`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialCriterionSelectList(param) {
+ return request({
+ url: `/ClinicalDataSet/getTrialCriterionSelectList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setGlobalReadingInfo(param) {
+ return request({
+ url: `/TrialConfig/setGlobalReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialConfigGlobalReadingInfo(param) {
+ return request({
+ url: `/TrialConfig/getGlobalReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function asyncTrialCriterionDictionary(param) {
+ return request({
+ url: `/TrialConfig/asyncTrialCriterionDictionary`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialEmailNoticeConfigList(param) {
+ return request({
+ url: `/TrialEmailNoticeConfig/getTrialEmailNoticeConfigList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateTrialEmailNoticeConfig(param) {
+ return request({
+ url: `/TrialEmailNoticeConfig/addOrUpdateTrialEmailNoticeConfig`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialUserTypeSelectList(trialId) {
+ return request({
+ url: `/TrialEmailNoticeConfig/getTrialUserTypeSelectList?trialId=${trialId}`,
+ method: 'get'
+ })
+}
+
+export function resetTrialCriterionAsyncState(TrialReadingCriterionId) {
+ return request({
+ url: `/ReadingQuestion/resetTrialCriterionAsyncState?TrialReadingCriterionId=${TrialReadingCriterionId}`,
+ method: 'post'
+ })
+}
+
+export function getReadingVisitStudyList(trialId, sujectVisitId, visitTaskId) {
+ return request({
+ url: `/SubjectVisit/getReadingVisitStudyList`,
+ method: 'post',
+ data: {
+ trialId,
+ sujectVisitId,
+ visitTaskId
+ }
+ })
+}
+export function localFilePreview(relativePath) {
+ return request({
+ url: `/Common/LocalFilePreview?relativePath=${relativePath}`,
+ method: 'get'
+ })
+}
+
+export function getReadingOrganList(param) {
+ return request({
+ url: `/OrganInfo/getReadingOrganList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCalculateQuestions(param) {
+ return request({
+ url: `/ReadingQuestion/getCalculateQuestions`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCalculateTableQuestions(param) {
+ return request({
+ url: `/ReadingQuestion/getCalculateTableQuestions`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function readClinicalData(param) {
+ return request({
+ url: `/ReadingImageTask/readClinicalData`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCustomQuestionPreview(param) {
+ return request({
+ url: `/ReadingQuestion/getCustomQuestionPreview`,
+ method: 'post',
+ data: param
+ })
+}
+export function getCustomTableQuestionPreview(param) {
+ return request({
+ url: `/ReadingQuestion/GetCustomTableQuestionPreview`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyReadingRestTime(param) {
+ return request({
+ url: `/ReadingImageTask/verifyReadingRestTime`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getInstanceList(seriesId) {
+ return request({
+ url: `/Instance/list/${seriesId}`,
+ method: 'get'
+ })
+}
+
+export function getQuestionCalculateRelation(param) {
+ return request({
+ url: `/ReadingQuestion/getQuestionCalculateRelation`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCustomTableQuestionAnswer(param) {
+ return request({
+ url: `/ReadingImageTask/getCustomTableQuestionAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function verifyDefaultQuestionBeAnswer(param) {
+ return request({
+ url: `/ReadingImageTask/verifyDefaultQuestionBeAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateVisitBlindName(param) {
+ return request({
+ url: `/VisitPlan/updateVisitBlindName`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function getNextMedicalReviewTask(param) {
+ return request({
+ url: `/TaskMedicalReview/getNextMedicalReviewTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function batchSubmitGlobalReadingInfo(param) {
+ return request({
+ url: `/ReadingImageTask/batchSubmitGlobalReadingInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function aIRReReading(param) {
+ return request({
+ url: `/VisitTask/aIRReReading`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function changeCalculationAnswer(param) {
+ return request({
+ url: `/ReadingImageTask/changeCalculationAnswer`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialEmail(param) {
+ return request({
+ url: `/TrialEmailNoticeConfig/getTrialEmail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setTrialEmail(param) {
+ return request({
+ url: `/TrialEmailNoticeConfig/setTrialEmail`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setTaskUrgent(param) {
+ return request({
+ url: `/VisitTask/setTaskUrgent`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getNextQCInfo(param) {
+ return request({
+ url: `/QCList/getNextQCInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function manualGenerateEmailFile(param) {
+ return request({
+ url: `/TrialEmailNoticeConfig/manualGenerateEmailFile`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function manualSendEmail(param) {
+ return request({
+ url: `/TrialEmailNoticeConfig/manualSendEmail?VisitTaskId=${param.VisitTaskId}&SendFileRelativePath=${param.SendFileRelativePath}`,
+ method: 'put'
+ })
+}
+
+export function preArchiveStudy(param) {
+ return request({
+ url: `/Study/preArchiveStudy`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function preArchiveDicomStudy(param) {
+ return request({
+ url: `/Study/preArchiveDicomStudy`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialCriterionAdditionalAssessmentOptionList(TrialReadingCriterionId) {
+ return request({
+ url: `/TrialConfig/getTrialCriterionAdditionalAssessmentOptionList?TrialReadingCriterionId=${TrialReadingCriterionId}`,
+ method: 'get'
+ })
+}
+
+export function setTrialCriterionAdditionalAssessment(param) {
+ return request({
+ url: `/TrialConfig/setTrialCriterionAdditionalAssessment`,
+ method: 'post',
+ data: param
+ })
+}
+export function getTaskAdditionalQuestion(param) {
+ return request({
+ url: `/ReadingImageTask/getTaskAdditionalQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitTaskAdditionalQuestion(param) {
+ return request({
+ url: `/ReadingImageTask/submitTaskAdditionalQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSubjectCriteriaEvaluationList(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/getSubjectCriteriaEvaluationList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateArchiveStudy(param) {
+ return request({
+ url: `/Study/addOrUpdateArchiveStudy`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getManualList(param) {
+ return request({
+ url: `/ReadingImageTask/getManualList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function dicomUploadInProgress(param) {
+ return request({
+ url: `/Study/dicomUploadInProgress?TrialId=${param.trialId}&StudyInstanceUid=${param.studyInstanceUid}`,
+ method: 'get'
+ })
+}
+
+export function getCanChangeReadVisitList(param) {
+ return request({
+ url: `/ReadModule/getCanChangeReadVisitList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function changeCutOffVisit(param) {
+ return request({
+ url: `/ReadModule/changeCutOffVisit`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function batchDeteteCriterionMedicineQuestion(param) {
+ return request({
+ url: `/ReadingMedicineQuestion/batchDeteteCriterionMedicineQuestion`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialToBeDoneList(param) {
+ return request({
+ url: `/UltrasonicDicom/getTrialList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialUserToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getTrialUserToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCheckToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getCheckToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getImageClinicalDataToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getImageClinicalDataToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCRCSubjectClinicalList(param) {
+ return request({
+ url: `/ClinicalAnswer/getCRCSubjectClinicalList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialClinicalQuestionPreview(param) {
+ return request({
+ url: `/ClinicalQuestion/getTrialClinicalQuestionPreview`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function submitClinicalForm(param) {
+ return request({
+ url: `/ClinicalAnswer/submitClinicalForm`,
+ method: 'post',
+ data: param
+ })
+}
+export function getReReadingApplyToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getReReadingApplyToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteClinicalForm(param) {
+ return request({
+ url: `/ClinicalAnswer/deleteClinicalForm`,
+ method: 'post',
+ data: param
+ })
+}
+export function getPM_ReviewerSelectToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getPM_ReviewerSelectToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCRCConfirmList(param) {
+ return request({
+ url: `/ClinicalAnswer/getCRCConfirmList`,
+ method: 'post',
+ data: param
+ })
+}
+export function getSPM_ReviewerSelectToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getSPM_ReviewerSelectToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSPMReReadingApprovalToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getSPMReReadingApprovalToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCRCImageQuestionToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getCRCImageQuestionToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getImageCheckQuestionToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getImageCheckQuestionToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getImageReUploadToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getImageReUploadToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+export function getImageSubmittedToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getImageSubmittedToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+export function getImageQualityToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getImageQualityToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getQCImageQuestionToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getQCImageQuestionToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getIRImageReadingToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getIRImageReadingToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getIRMedicalCommentsToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getIRMedicalCommentsToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+export function getMIMMedicalCommentsToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getMIMMedicalCommentsToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getImageClinicalDataToBeConfirmList(param) {
+ return request({
+ url: `/PersonalWorkstation/GetImageClinicalDataToBeConfirmList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCRCBeConfirmList(param) {
+ return request({
+ url: `/ClinicalAnswer/getCRCBeConfirmList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function cRCCancelConfirmClinical(param) {
+ return request({
+ url: `/Inspection/ClinicalAnswer/cRCCancelConfirmClinical`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function cRCConfirmClinical(param) {
+ return request({
+ url: `/Inspection/ClinicalAnswer/cRCConfirmClinical`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getClinicalTableList(param) {
+ return request({
+ url: `/ClinicalAnswer/getClinicalTableList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getClinicalDateList(param) {
+ return request({
+ url: `/ClinicalAnswer/getClinicalDateList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function CRCSignClinicalData(param) {
+ return request({
+ url: `/Inspection/ClinicalAnswer/CRCSignClinicalData`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getPMClinicalDataToBeDoneList(param) {
+ return request({
+ url: `/PersonalWorkstation/getPMClinicalDataToBeDoneList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getPMConfirmList(param) {
+ return request({
+ url: `/ClinicalAnswer/getPMConfirmList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function PMConfirmClinical(param) {
+ return request({
+ url: `/Inspection/ClinicalAnswer/PMConfirmClinical`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function SubmitClinicalFormAndSign(param) {
+ return request({
+ url: `/Inspection/ClinicalAnswer/SubmitClinicalFormAndSign`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSystemClinicalQuestionPreview(param) {
+ return request({
+ url: `/ClinicalQuestion/getSystemClinicalQuestionPreview`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteCustomTag(id) {
+ return request({
+ url: `/ReadingImageTask/deleteCustomTag/${id}`,
+ method: 'post'
+ })
+}
+
+export function getNextUnSignDocument(param) {
+ return request({
+ url: `/TrialDocument/getNextUnSignDocument`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function collectNextIQCQuality(param) {
+ return request({
+ url: `/QCOperation/collectNextIQCQuality`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getNextIQCQuality(param) {
+ return request({
+ url: `/QCOperation/getNextIQCQuality`,
+ method: 'post',
+ data: param
+ })
+}
+
diff --git a/src/api/trials/attachment.js b/src/api/trials/attachment.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/api/trials/enrolled-reviewer.js b/src/api/trials/enrolled-reviewer.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/api/trials/inspection.js b/src/api/trials/inspection.js
new file mode 100644
index 0000000..5150eb5
--- /dev/null
+++ b/src/api/trials/inspection.js
@@ -0,0 +1,16 @@
+import request from '@/utils/request'
+
+export function getInspectionList(param) {
+ return request({
+ url: `/Inspection/getInspectionList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getInspectionJsonDataList(trialId, id) {
+ return request({
+ url: `/FrontAuditConfig/getInspectionJsonDataList?TrialId=${trialId}&Id=${id}`,
+ method: 'get'
+ })
+}
diff --git a/src/api/trials/reading.js b/src/api/trials/reading.js
new file mode 100644
index 0000000..cbcb058
--- /dev/null
+++ b/src/api/trials/reading.js
@@ -0,0 +1,505 @@
+import request from '@/utils/request'
+
+export function getTaskAllocationRuleList(params) {
+ return request({
+ url: `/TaskAllocationRule/getTaskAllocationRuleList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addOrUpdateTaskAllocationRule(params) {
+ return request({
+ url: `/TaskAllocationRule/addOrUpdateTaskAllocationRule`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteTaskAllocationRule(taskAllocationRuleId) {
+ return request({
+ url: `/TaskAllocationRule/deleteTaskAllocationRule/${taskAllocationRuleId}`,
+ method: 'delete'
+ })
+}
+
+export function getDoctorUserSelectList(trialId) {
+ return request({
+ url: `/TaskAllocationRule/getDoctorUserSelectList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function configTrialTaskInfo(params) {
+ return request({
+ url: `/TrialConfig/configTrialTaskInfo`,
+ method: 'put',
+ data: params
+ })
+}
+
+export function getSubjectAssignList(params) {
+ return request({
+ url: `/VisitTask/getSubjectAssignList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function assignSubjectDoctor(params) {
+ return request({
+ url: `/VisitTask/assignSubjectDoctor`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function cancelSubjectAssignDoctor(params) {
+ return request({
+ url: `/VisitTask/cancelSubjectAssignDoctor`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function manualAssignDoctorApplyTask(params) {
+ return request({
+ url: `/VisitTask/manualAssignDoctorApplyTask`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function autoSubjectAssignDoctor(params) {
+ return request({
+ url: `/VisitTask/autoSubjectAssignDoctor`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function assignSubjectTaskToDoctor(params) {
+ return request({
+ url: `/VisitTask/assignSubjectTaskToDoctor`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getReadingTaskList(params) {
+ return request({
+ url: `/VisitTask/getReadingTaskList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getReReadingTaskList(params) {
+ return request({
+ url: `/VisitTask/getReReadingTaskList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSubjectApplyDoctorTaskStatList(params) {
+ return request({
+ url: `/TaskAllocationRule/getSubjectApplyDoctorTaskStatList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function configTrialReadingTaskViewRule(params) {
+ return request({
+ url: `/TrialConfig/configTrialReadingTaskViewRule`,
+ method: 'put',
+ data: params
+ })
+}
+
+export function getTrialConfirmCriterionList(params) {
+ return request({
+ url: `/ReadingImageTask/getTrialConfirmCriterionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialCriterionJudgeQuestionList(params) {
+ return request({
+ url: `/ReadingImageTask/getTrialCriterionJudgeQuestionList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function setTrialCriterionJudgeQuestionAnswerGroup(params) {
+ return request({
+ url: `/ReadingImageTask/setTrialCriterionJudgeQuestionAnswerGroup`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getJudgeVisitTaskList(params) {
+ return request({
+ url: `/VisitTask/getJudgeVisitTaskList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function applyReReading(params) {
+ return request({
+ url: `/VisitTask/applyReReading`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getMedicalReviewTaskList(params) {
+ return request({
+ url: `/TaskMedicalReview/getMedicalReviewTaskList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getMIMUserList(trialId) {
+ return request({
+ url: `/TaskMedicalReview/getMIMUserList/${trialId}`,
+ method: 'get'
+ })
+}
+
+export function getTaskMedicalReviewRuleList(params) {
+ return request({
+ url: `/TaskMedicalReviewRule/getTaskMedicalReviewRuleList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addOrUpdateTaskMedicalReviewRule(params) {
+ return request({
+ url: `/TaskMedicalReviewRule/addOrUpdateTaskMedicalReviewRule`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteTaskMedicalReviewRule(taskMedicalReviewRuleId) {
+ return request({
+ url: `/TaskMedicalReviewRule/deleteTaskMedicalReviewRule/${taskMedicalReviewRuleId}`,
+ method: 'delete'
+ })
+}
+
+export function generateMedicalReviewTask(params) {
+ return request({
+ url: `/TaskMedicalReview/generateMedicalReviewTask`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function assignMedicalReviewTask(params) {
+ return request({
+ url: `/TaskMedicalReview/assignMedicalReviewTask`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getAnalysisTaskList(params) {
+ return request({
+ url: `/TaskConsistentRule/getAnalysisTaskList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getDoctorConsistentRuleSubjectList(params) {
+ return request({
+ url: `/TaskConsistentRule/getDoctorConsistentRuleSubjectList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function confirmGenerateConsistentTask(params) {
+ return request({
+ url: `/TaskConsistentRule/confirmGenerateConsistentTask`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTaskConsistentRuleList(params) {
+ return request({
+ url: `/TaskConsistentRule/getTaskConsistentRuleList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addOrUpdateTaskConsistentRule(params) {
+ return request({
+ url: `/TaskConsistentRule/addOrUpdateTaskConsistentRule`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteTaskConsistentRule(taskConsistentRuleId) {
+ return request({
+ url: `/TaskConsistentRule/deleteTaskConsistentRule/${taskConsistentRuleId}`,
+ method: 'delete'
+ })
+}
+
+export function getSPMReReadingTaskList(params) {
+ return request({
+ url: `/VisitTask/getSPMReReadingTaskList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getGenerateMedicalReviewTaskList(params) {
+ return request({
+ url: `/TaskMedicalReview/getGenerateMedicalReviewTaskList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function manuallyGeneratedAndAssignedMedicalReview(params) {
+ return request({
+ url: `/TaskMedicalReview/manuallyGeneratedAndAssignedMedicalReview`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSelfConsistentRuleList(params) {
+ return request({
+ url: `/TaskConsistentRule/getSelfConsistentRuleList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getDoctorSelfConsistentRuleSubjectList(params) {
+ return request({
+ url: `/TaskConsistentRule/getDoctorSelfConsistentRuleSubjectList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function confirmGenerateSelfConsistentTask(params) {
+ return request({
+ url: `/TaskConsistentRule/confirmGenerateSelfConsistentTask`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSelfConsistentDoctorStatList(params) {
+ return request({
+ url: `/TaskConsistentRule/getSelfConsistentDoctorStatList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getGroupConsistentRuleSubjectList(params) {
+ return request({
+ url: `/TaskConsistentRule/getGroupConsistentRuleSubjectList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getConsistentRule(params) {
+ return request({
+ url: `/TaskConsistentRule/getConsistentRule`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function confirmGenerateGroupConsistentTask(params) {
+ return request({
+ url: `/TaskConsistentRule/confirmGenerateGroupConsistentTask`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getReReadingOrBackInfluenceTaskList(taskId, isReReading, applyId) {
+ return request({
+ url: applyId ? `/VisitTask/getReReadingOrBackInfluenceTaskList/${taskId}/${isReReading}?applyId=${applyId}` : `/VisitTask/getReReadingOrBackInfluenceTaskList/${taskId}/${isReReading}`,
+ method: 'get'
+ })
+}
+
+export function PMSetTaskBack(trialId, taskId) {
+ return request({
+ url: `/VisitTask/PMSetTaskBack/${trialId}/${taskId}`,
+ method: 'put'
+ })
+}
+
+export function confirmReReading(params) {
+ return request({
+ url: `/Inspection/VisitTask/ConfirmReReading`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getInfluencedTaskList(taskId) {
+ return request({
+ url: `/VisitTask/getInfluencedTaskList?taskId=${taskId}`,
+ method: 'get'
+ })
+}
+
+export function getDoctorPlanAllocationRuleList(params) {
+ return request({
+ url: `/TaskAllocationRule/getDoctorPlanAllocationRuleList?TrialId=${params.TrialId}`,
+ method: 'get'
+ })
+}
+
+export function getSubjectAssignAndTaskStatList(params) {
+ return request({
+ url: `/VisitTask/getSubjectAssignAndTaskStatList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function batchAssignDoctorToSubject(params) {
+ return request({
+ url: `/VisitTask/batchAssignDoctorToSubject`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getDoctorSubjectStat(TrialId, TrialReadingCriterionId) {
+ return request({
+ url: `/VisitTask/getDoctorSubjectStat?TrialId=${TrialId}&TrialReadingCriterionId=${TrialReadingCriterionId}`,
+ method: 'get'
+ })
+}
+
+export function getDoctorSelectList(params) {
+ return request({
+ url: `/TaskAllocationRule/getDoctorSelectList`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialSiteCodeSelect(TrialId) {
+ return request({
+ url: `/TrialMaintenance/getTrialSiteCodeSelect?TrialId=${TrialId}`,
+ method: 'get'
+ })
+}
+
+export function getSubjectAssignedDoctorList(SubjectId, TrialReadingCriterionId) {
+ return request({
+ url: `/VisitTask/getSubjectAssignedDoctorList?SubjectId=${SubjectId}&TrialReadingCriterionId=${TrialReadingCriterionId}`,
+ method: 'get'
+ })
+}
+
+export function cancelSubjectAssignedDoctor(params) {
+ return request({
+ url: `/VisitTask/cancelSubjectAssignedDoctor`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addSubjectCancelDoctorNote(params) {
+ return request({
+ url: `/TaskAllocationRule/addSubjectCancelDoctorNote`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getSubjectCancelDoctorHistoryList(SubjectId) {
+ return request({
+ url: `/TaskAllocationRule/getSubjectCancelDoctorHistoryList?SubjectId=${SubjectId}`,
+ method: 'get'
+ })
+}
+
+export function setAnalysisTaskInvalid(params) {
+ return request({
+ url: `/TaskConsistentRule/setAnalysisTaskInvalid`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function setMedicalReviewInvalid(params) {
+ return request({
+ url: `/TaskMedicalReview/setMedicalReviewInvalid`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialCriterionList(trialId) {
+ return request({
+ url: `/VisitTask/getTrialCriterionList?TrialId=${trialId}`,
+ method: 'get'
+ })
+}
+
+export function updateTrialReviewerState(params) {
+ return request({
+ url: `/DoctorWorkload/updateTrialReviewerState`,
+ method: 'put',
+ data: params
+ })
+}
+
+export function getVisitTaskList(param) {
+ return request({
+ url: `/UltrasonicDicom/getVisitTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getDicomAndNoneDicomStudyList(param) {
+ return request({
+ url: `/UltrasonicDicom/getDicomAndNoneDicomStudyList?VisiTaskId=${param.Id}`,
+ method: 'get',
+ })
+}
+
+export function getStudyModalityList(param) {
+ return request({
+ url: `/UltrasonicDicom/getStudyModalityList?VisiTaskId=${param.Id}`,
+ method: 'get',
+ })
+}
+
+export function getStudyModalityOSSPath(param) {
+ return request({
+ url: `/UltrasonicDicom/getStudyModalityOSSPath`,
+ method: 'post',
+ data: param
+ })
+}
diff --git a/src/api/trials/setting.js b/src/api/trials/setting.js
new file mode 100644
index 0000000..1df89e8
--- /dev/null
+++ b/src/api/trials/setting.js
@@ -0,0 +1,97 @@
+import request from '@/utils/request'
+
+export function deleteTrialExternalUser(trialExternalUserId, isSystemUser, systemUserId) {
+ return request({
+ url: `/TrialExternalUser/deleteTrialExternalUser/${trialExternalUserId}/${isSystemUser}/${systemUserId}`,
+ method: 'delete'
+ })
+}
+
+export function configTrialBasicInfo(params) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/configTrialBasicInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function configTrialProcessInfo(params) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/configTrialProcessInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function configTrialUrgentInfo(params) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/ConfigTrialUrgentInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function addOrUpdateVisitStage(params) {
+ return request({
+ url: `/Inspection/VisitPlan/AddOrUpdateVisitStage`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function confirmTrialVisitPlan(params) {
+ return request({
+ url: `/Inspection/VisitPlan/ConfirmTrialVisitPlan`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function trialConfigSignatureConfirm(params) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/TrialConfigSignatureConfirm`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function ConfigTrialBasicInfoConfirm(params) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/ConfigTrialBasicInfoConfirm`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function ConfigTrialProcessInfoConfirm(params) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/ConfigTrialProcessInfoConfirm`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function ConfigTrialUrgentInfoConfirm(params) {
+ return request({
+ url: `/Inspection/configTrialBasicInfo/ConfigTrialUrgentInfoConfirm`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function setTrialJudgyInfo(params) {
+ return request({
+ url: `/ReadingQuestion/setTrialJudgyInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getTrialJudgyInfo(params) {
+ return request({
+ url: `/ReadingQuestion/getTrialJudgyInfo`,
+ method: 'post',
+ data: params
+ })
+}
+
diff --git a/src/api/trials/site.js b/src/api/trials/site.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/api/trials/study.js b/src/api/trials/study.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/api/trials/subject.js b/src/api/trials/subject.js
new file mode 100644
index 0000000..d379743
--- /dev/null
+++ b/src/api/trials/subject.js
@@ -0,0 +1,105 @@
+import request from '@/utils/request'
+
+export function addOrUpdateSubject(param) {
+ return request({
+ url: '/Inspection/Subject/AddOrUpdateSubject',
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateSubjectStatus(param) {
+ return request({
+ url: `/Inspection/Subject/UpdateSubjectStatus`,
+ method: 'put',
+ data: param
+ })
+}
+export function deleteSubject(param) {
+ return request({
+ url: `/Inspection/Subject/DeleteSubject`,
+ method: 'delete',
+ data: param
+ })
+}
+
+export function PMClinicalDataConfirm(param) {
+ return request({
+ url: `/ReadingClinicalData/PMClinicalDataConfirm`,
+ method: 'put',
+ data: param
+ })
+}
+
+export function getSubjectCriteriaEvaluationList(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/getSubjectCriteriaEvaluationList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function batchAddOrUpdateSubjectCriteriaEvaluation(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/batchAddOrUpdateSubjectCriteriaEvaluation`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getSubjectCriteriaEvaluationVisitFilterList(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/getSubjectCriteriaEvaluationVisitFilterList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getHaveGeneratedTaskList(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/getHaveGeneratedTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function batchGenerateTask(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/batchGenerateTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getVisitStudyAndSeriesList(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/getVisitStudyAndSeriesList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function batchAddSubjectCriteriaEvaluationVisitStudyFilter(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/batchAddSubjectCriteriaEvaluationVisitStudyFilter`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getCriteriaVisitBackInfluenceTaskList(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/getCriteriaVisitBackInfluenceTaskList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function confirmBackCriteriaVisitTask(param) {
+ return request({
+ url: `/SubjectCriteriaEvaluation/confirmBackCriteriaVisitTask`,
+ method: 'post',
+ data: param
+ })
+}
+
diff --git a/src/api/trials/trial-information.js b/src/api/trials/trial-information.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/api/trials/trials.js b/src/api/trials/trials.js
new file mode 100644
index 0000000..4256314
--- /dev/null
+++ b/src/api/trials/trials.js
@@ -0,0 +1,32 @@
+import request from '@/utils/request'
+
+export function addOrUpdateTrial(param) {
+ return request({
+ url: '/Inspection/trial/addOrUpdateTrial',
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateTrialState(param) {
+ return request({
+ url: '/Inspection/TrialConfig/updateTrialState',
+ method: 'post',
+ data: param
+ })
+}
+
+export function userConfirm(param) {
+ return request({
+ url: '/Inspection/TrialDocument/userConfirm',
+ method: 'post',
+ data: param
+ })
+}
+
+export function getTrialCriterionList(trialId) {
+ return request({
+ url: `/VisitTask/getTrialCriterionList?TrialId=${trialId}`,
+ method: 'get'
+ })
+}
diff --git a/src/api/trials/visit.js b/src/api/trials/visit.js
new file mode 100644
index 0000000..c27c397
--- /dev/null
+++ b/src/api/trials/visit.js
@@ -0,0 +1,290 @@
+import request from '@/utils/request'
+
+export function addOrUpdateSubjectVisit(param) {
+ return request({
+ url: `/Inspection/subjectVisit/addOrUpdateSV`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteSubjectVisit(param) {
+ return request({
+ url: `/Inspection/subjectVisit/deleteSV`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteStudyList(param) {
+ return request({
+ url: `/Inspection/QCOperation/deleteStudyList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateSubjectAndSVInfo(param) {
+ return request({
+ url: `/Inspection/QCOperation/updateSubjectAndSVInfo`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateNoneDicomStudy(param) {
+ return request({
+ url: `/Inspection/noneDicomStudy/addOrUpdateNoneDicomStudy`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteNoneDicomStudy(param) {
+ return request({
+ url: `/Inspection/noneDicom/DeleteNoneDicomStudy`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdatePreviousHistory(param) {
+ return request({
+ url: `/Inspection/clinicalData/AddOrUpdatePreviousHistory`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePreviousHistory(param) {
+ return request({
+ url: `/Inspection/clinicalData/DeletePreviousHistory`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdatePreviousSurgery(param) {
+ return request({
+ url: `/Inspection/clinicalData/AddOrUpdatePreviousSurgery`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePreviousSurgery(param) {
+ return request({
+ url: `/Inspection/clinicalData/DeletePreviousSurgery`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdatePreviousOther(param) {
+ return request({
+ url: `/Inspection/clinicalData/AddOrUpdatePreviousOther`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deletePreviousOther(param) {
+ return request({
+ url: `/Inspection/clinicalData/DeletePreviousOther`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function newUploadNoneDicomFile(param) {
+ return request({
+ url: `/NoneDicomStudy/newUploadNoneDicomFile`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function deleteNoneDicomStudyFile(param) {
+ return request({
+ url: `/Inspection/noneDicom/deleteNoneDicomStudyFile`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function cRCRequestToQC(param) {
+ return request({
+ url: `/Inspection/QCOperation/CRCRequestToQC`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function obtainOrCancelQCTask(param) {
+ return request({
+ url: `/Inspection/QCOperation/ObtainOrCancelQCTask`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateQCQuestionAnswerList(param) {
+ return request({
+ url: `/Inspection/QCOperation/AddOrUpdateQCQuestionAnswerList`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addOrUpdateQCChallenge(param) {
+ return request({
+ url: `/Inspection/QCOperation/AddOrUpdateQCChallenge`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addQCChallengeReply(param) {
+ return request({
+ url: `/Inspection/QCOperation/AddQCChallengeReply`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function closeQCChallenge(param) {
+ return request({
+ url: `/Inspection/QCOperation/CloseQCChallenge`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function seleteQCChallenge(param) {
+ return request({
+ url: `/Inspection/QCOperation/DeleteQCChallenge`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function sddCheckChallengeReply(param) {
+ return request({
+ url: `/Inspection/QCOperation/AddCheckChallengeReply`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function closeCheckChallenge(param) {
+ return request({
+ url: `/Inspection/QCOperation/CloseCheckChallenge`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setCheckPass(param) {
+ return request({
+ url: `/Inspection/QCOperation/SetCheckPass`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function cRCRequstCheckBack(param) {
+ return request({
+ url: `/Inspection/QCOperation/CRCRequstCheckBack`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function checkBack(param) {
+ return request({
+ url: `/Inspection/QCOperation/CheckBack`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function cRCRequestReUpload(param) {
+ return request({
+ url: `/Inspection/QCOperation/CRCRequestReUpload`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setNeedReupload(param) {
+ return request({
+ url: `/Inspection/QCOperation/SetNeedReupload`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setReuploadFinished(param) {
+ return request({
+ url: `/Inspection/QCOperation/SetReuploadFinished`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function updateModality(param) {
+ return request({
+ url: `/Inspection/QCOperation/UpdateModality`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function qCPassedOrFailed(param) {
+ return request({
+ url: `/Inspection/QCOperation/QCPassedOrFailed`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setSeriesState(param) {
+ return request({
+ url: `/Inspection/QCOperation/SetSeriesState`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function setSubjectVisitUrgent(param) {
+ return request({
+ url: `/Inspection/subjectVisit/SetSubjectVisitUrgent`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function uploadVisitCheckExcel(param) {
+ return request({
+ url: `/Inspection/QCOperation/UploadVisitCheckExcel`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function addCheckChallengeReply(param) {
+ return request({
+ url: `/Inspection/QCOperation/AddCheckChallengeReply`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function forwardSVDicomImage(param) {
+ return request({
+ url: `/Inspection/QCOperation/ForwardSVDicomImage`,
+ method: 'post',
+ data: param
+ })
+}
+
diff --git a/src/api/user.js b/src/api/user.js
new file mode 100644
index 0000000..5646916
--- /dev/null
+++ b/src/api/user.js
@@ -0,0 +1,168 @@
+import request from '@/utils/request'
+
+export function login(data) {
+ return request({
+ url: '/user/login',
+ method: 'post',
+ data
+ })
+}
+
+export function getAllDictionary() {
+ return request({
+ url: '/dictionary/getAllDictionary',
+ method: 'get'
+ })
+}
+
+export function getHospitalList() {
+ return request({
+ url: '/hospital/hospitalList',
+ method: 'get'
+ })
+}
+
+export function sendVerificationCode(emailOrPhone) {
+ return request({
+ url: `/user/sendVerificationCode/${emailOrPhone}`,
+ method: 'get'
+ })
+}
+export function anonymousSendVerificationCode(emailOrPhone) {
+ return request({
+ url: `/user/anonymousSendVerificationCode/${emailOrPhone}`,
+ method: 'get'
+ })
+}
+
+export function verifyAnonymousVerifyCode(email, verifyCode) {
+ return request({
+ url: `/User/verifyAnonymousVerifyCode/${email}/${verifyCode}`,
+ method: 'get'
+ })
+}
+
+export function anonymousSetPassword(userId, newPwd) {
+ return request({
+ url: `/User/anonymousSetPassword/${userId}/${newPwd}`,
+ method: 'get'
+ })
+}
+export function setNewPassword(param) {
+ return request({
+ url: `/user/setNewPassword`,
+ method: 'post',
+ data: param
+ })
+}
+
+export function getUserMenuTree() {
+ return request({
+ url: `/Menu/getUserMenuTree`,
+ method: 'get'
+ })
+}
+
+export function getUserPermissions() {
+ return request({
+ url: `/Menu/getUserPermissions`,
+ method: 'get'
+ })
+}
+
+export function getDoctorShortcutKey(params) {
+ return request({
+ url: `/ShortcutKey/getDoctorShortcutKey`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function setShortcutKey(params) {
+ return request({
+ url: `/ShortcutKey/setShortcutKey`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function restoreDefaultShortcutKey(params) {
+ return request({
+ url: `/ShortcutKey/restoreDefaultShortcutKey`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function getUserWLTemplateList() {
+ return request({
+ url: `/UserWLTemplate/getUserWLTemplateList`,
+ method: 'get'
+ })
+}
+
+export function addOrUpdateUserWLTemplate(params) {
+ return request({
+ url: `/UserWLTemplate/addOrUpdateUserWLTemplate`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function deleteUserWLTemplate(userWLTemplateId) {
+ return request({
+ url: `/UserWLTemplate/deleteUserWLTemplate/${userWLTemplateId}`,
+ method: 'delete'
+ })
+}
+
+export function getAutoCutNextTask(params) {
+ return request({
+ url: `/UserWLTemplate/getAutoCutNextTask`,
+ method: 'post',
+ data: params
+ })
+}
+export function setAutoCutNextTask(params) {
+ return request({
+ url: `/UserWLTemplate/setAutoCutNextTask`,
+ method: 'post',
+ data: params
+ })
+}
+
+export function GenerateSTS(params) {
+ return request({
+ url: `/user/GenerateSTS`,
+ method: 'get'
+ })
+}
+export function GetObjectStoreToken(params) {
+ return request({
+ url: `/user/GetObjectStoreToken`,
+ method: 'get'
+ })
+}
+// 获取公钥
+export function getPublicKey() {
+ return request({
+ url: `/user/getPublicKey`,
+ method: 'get',
+ })
+}
+// 登陆获取角色
+export function getUserLoginRoleList(data) {
+ return request({
+ url: `/User/getUserLoginRoleList`,
+ method: 'post',
+ data,
+ })
+}
+// 登陆角色id获取token
+export function loginSelectUserRole(params) {
+ return request({
+ url: `/User/loginSelectUserRole`,
+ method: 'get',
+ params,
+ })
+}
diff --git a/src/assets/.DS_Store b/src/assets/.DS_Store
new file mode 100644
index 0000000..5ca7516
Binary files /dev/null and b/src/assets/.DS_Store differ
diff --git a/src/assets/404_images/404.png b/src/assets/404_images/404.png
new file mode 100644
index 0000000..3d8e230
Binary files /dev/null and b/src/assets/404_images/404.png differ
diff --git a/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png
new file mode 100644
index 0000000..c6281d0
Binary files /dev/null and b/src/assets/404_images/404_cloud.png differ
diff --git a/src/assets/Admin.png b/src/assets/Admin.png
new file mode 100644
index 0000000..ff55a5c
Binary files /dev/null and b/src/assets/Admin.png differ
diff --git a/src/assets/CRC.png b/src/assets/CRC.png
new file mode 100644
index 0000000..fa3e264
Binary files /dev/null and b/src/assets/CRC.png differ
diff --git a/src/assets/IR.png b/src/assets/IR.png
new file mode 100644
index 0000000..1e012b8
Binary files /dev/null and b/src/assets/IR.png differ
diff --git a/src/assets/MIM.png b/src/assets/MIM.png
new file mode 100644
index 0000000..14606fc
Binary files /dev/null and b/src/assets/MIM.png differ
diff --git a/src/assets/PM.png b/src/assets/PM.png
new file mode 100644
index 0000000..dc657c5
Binary files /dev/null and b/src/assets/PM.png differ
diff --git a/src/assets/QC.png b/src/assets/QC.png
new file mode 100644
index 0000000..965da6a
Binary files /dev/null and b/src/assets/QC.png differ
diff --git a/src/assets/avatar.png b/src/assets/avatar.png
new file mode 100644
index 0000000..467b219
Binary files /dev/null and b/src/assets/avatar.png differ
diff --git a/src/assets/bg.jpg b/src/assets/bg.jpg
new file mode 100644
index 0000000..fcedb0e
Binary files /dev/null and b/src/assets/bg.jpg differ
diff --git a/src/assets/css/iconfont/index.css b/src/assets/css/iconfont/index.css
new file mode 100644
index 0000000..a29bbea
--- /dev/null
+++ b/src/assets/css/iconfont/index.css
@@ -0,0 +1,34 @@
+/*@font-face {*/
+/* font-family: 'iconfont'; !* Project id 3270795 *!*/
+/* src: url('//at.alicdn.com/t/font_3270795_x0vmvmv3h.woff2?t=1648018931344') format('woff2'),*/
+/* url('//at.alicdn.com/t/font_3270795_x0vmvmv3h.woff?t=1648018931344') format('woff'),*/
+/* url('//at.alicdn.com/t/font_3270795_x0vmvmv3h.ttf?t=1648018931344') format('truetype');*/
+/*}*/
+
+
+@font-face {
+ font-family: "iconfont"; /* Project id 3270795 */
+ src: url('//at.alicdn.com/t/c/font_3270795_fcd739rubku.woff2?t=1673580130618') format('woff2'),
+ url('//at.alicdn.com/t/c/font_3270795_fcd739rubku.woff?t=1673580130618') format('woff'),
+ url('//at.alicdn.com/t/c/font_3270795_fcd739rubku.ttf?t=1673580130618') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 20px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-24gl-split:before {
+ content: "\eb73";
+}
+
+.icon-anjianfengexian:before {
+ content: "\e680";
+}
+
+.icon-back:before {
+ content: "\e670";
+}
diff --git a/src/assets/css/myViewer.css b/src/assets/css/myViewer.css
new file mode 100644
index 0000000..fc33e29
--- /dev/null
+++ b/src/assets/css/myViewer.css
@@ -0,0 +1,447 @@
+/*!
+ * Viewer.js v1.11.1
+ * https://fengyuanchen.github.io/viewerjs
+ *
+ * Copyright 2015-present Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2022-11-06T05:18:17.414Z
+ */
+
+.viewer-zoom-in::before, .viewer-zoom-out::before, .viewer-one-to-one::before, .viewer-reset::before, .viewer-prev::before, .viewer-play::before, .viewer-next::before, .viewer-rotate-left::before, .viewer-rotate-right::before, .viewer-flip-horizontal::before, .viewer-flip-vertical::before, .viewer-fullscreen::before, .viewer-fullscreen-exit::before, .viewer-close::before {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAAUCAYAAABWOyJDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAQPSURBVHic7Zs/iFxVFMa/0U2UaJGksUgnIVhYxVhpjDbZCBmLdAYECxsRFBTUamcXUiSNncgKQbSxsxH8gzAP3FU2jY0kKKJNiiiIghFlccnP4p3nPCdv3p9778vsLOcHB2bfveeb7955c3jvvNkBIMdxnD64a94GHMfZu3iBcRynN7zAOI7TG15gHCeeNUkr8zaxG2lbYDYsdgMbktBsP03jdQwljSXdtBhLOmtjowC9Mg9L+knSlcD8TNKpSA9lBpK2JF2VdDSR5n5J64m0qli399hNFMUlpshQii5jbXTbHGviB0nLNeNDSd9VO4A2UdB2fp+x0eCnaXxWXGA2X0au/3HgN9P4LFCjIANOJdrLr0zzZ+BEpNYDwKbpnQMeAw4m8HjQtM6Z9qa917zPQwFr3M5KgA6J5rTJCdFZJj9/lyvGhsDvwFNVuV2MhhjrK6b9bFiE+j1r87eBl4HDwCF7/U/k+ofAX5b/EXBv5JoLMuILzf3Ap6Z3EzgdqHMCuF7hcQf4HDgeoHnccncqdK/TvSDWffFXI/exICY/xZyqc6XLWF1UFZna4gJ7q8BsRvgd2/xXpo6P+D9dfT7PpECtA3cnWPM0GXGFZh/wgWltA+cDNC7X+AP4GzjZQe+k5dRxuYPeiuXU7e1qwLpDz7dFjXKRaSwuMLvAlG8zZlG+YmiK1HoFqT7wP2z+4Q45TfEGcMt01xLoNZEBTwRqD4BLpnMLeC1A41UmVxsXgXeBayV/Wx20rpTyrpnWRft7p6O/FdqzGrDukPNtkaMoMo3FBdBSQMOnYBCReyf05s126fU9ytfX98+mY54Kxnp7S9K3kj6U9KYdG0h6UdLbkh7poFXMfUnSOyVvL0h6VtIXHbS6nOP+s/Zm9mvyXW1uuC9ohZ72E9uDmXWLJOB1GxsH+DxPftsB8B6wlGDN02TAkxG6+4D3TWsbeC5CS8CDFce+AW500LhhOW2020TRjK3b21HEmgti9m0RonxbdMZeVzV+/4tF3cBpP7E9mKHNL5q8h5g0eYsCMQz0epq8gQrwMXAgcs0FGXGFRcB9wCemF9PkbYqM/Bas7fxLwNeJPdTdpo4itQti8lPMqTpXuozVRVXPpbHI3KkNTB1NfkL81j2mvhDp91HgV9MKuRIqrykj3WPq4rHyL+axj8/qGPmTqi6F9YDlHOvJU6oYcTsh/TYSzWmTE6JT19CtLTJt32D6CmHe0eQn1O8z5AXgT4sx4Vcu0/EQecMydB8z0hUWkTd2t4CrwNEePqMBcAR4mrBbwyXLPWJa8zrXmmLEhNBmfpkuY2102xxrih+pb+ieAb6vGhuA97UcJ5KR8gZ77K+99xxeYBzH6Q3/Z0fHcXrDC4zjOL3hBcZxnN74F+zlvXFWXF9PAAAAAElFTkSuQmCC");
+ background-repeat: no-repeat;
+ background-size: 280px;
+ color: transparent;
+ display: block;
+ font-size: 0;
+ height: 20px;
+ line-height: 0;
+ width: 20px;
+}
+
+.viewer-zoom-in::before {
+ background-position: 0 0;
+ content: "Zoom In";
+}
+
+.viewer-zoom-out::before {
+ background-position: -20px 0;
+ content: "Zoom Out";
+}
+
+.viewer-one-to-one::before {
+ background-position: -40px 0;
+ content: "One to One";
+}
+
+.viewer-reset::before {
+ background-position: -60px 0;
+ content: "Reset";
+}
+
+.viewer-prev::before {
+ background-position: -80px 0;
+ content: "Previous";
+}
+
+.viewer-play::before {
+ background-position: -100px 0;
+ content: "Play";
+}
+
+.viewer-next::before {
+ background-position: -120px 0;
+ content: "Next";
+}
+
+.viewer-rotate-left::before {
+ background-position: -140px 0;
+ content: "Rotate Left";
+}
+
+.viewer-rotate-right::before {
+ background-position: -160px 0;
+ content: "Rotate Right";
+}
+
+.viewer-flip-horizontal::before {
+ background-position: -180px 0;
+ content: "Flip Horizontal";
+}
+
+.viewer-flip-vertical::before {
+ background-position: -200px 0;
+ content: "Flip Vertical";
+}
+
+.viewer-fullscreen::before {
+ background-position: -220px 0;
+ content: "Enter Full Screen";
+}
+
+.viewer-fullscreen-exit::before {
+ background-position: -240px 0;
+ content: "Exit Full Screen";
+}
+
+.viewer-close::before {
+ background-position: -260px 0;
+ content: "Close";
+}
+
+.viewer-fixed.viewer-container {
+ z-index: 20000!important;
+ bottom: 0;
+ direction: ltr;
+ font-size: 0;
+ left: 0;
+ line-height: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ -webkit-tap-highlight-color: transparent;
+ top: 0;
+ -ms-touch-action: none;
+ touch-action: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.viewer-container::-moz-selection, .viewer-container *::-moz-selection {
+ background-color: transparent;
+}
+
+.viewer-container::selection,
+.viewer-container *::selection {
+ background-color: transparent;
+}
+
+.viewer-container:focus {
+ outline: 0;
+}
+
+.viewer-container img {
+ display: block;
+ height: auto;
+ max-height: none !important;
+ max-width: none !important;
+ min-height: 0 !important;
+ min-width: 0 !important;
+ width: 100%;
+}
+
+.viewer-canvas {
+ bottom: 0;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.viewer-canvas > img {
+ height: auto;
+ margin: 15px auto;
+ max-width: 90% !important;
+ width: auto;
+}
+
+.viewer-footer {
+ bottom: 0;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ text-align: center;
+}
+
+.viewer-navbar {
+ background-color: rgba(0, 0, 0, 50%);
+ overflow: hidden;
+}
+
+.viewer-list {
+ box-sizing: content-box;
+ height: 50px;
+ margin: 0;
+ overflow: hidden;
+ padding: 1px 0;
+}
+
+.viewer-list > li {
+ color: transparent;
+ cursor: pointer;
+ float: left;
+ font-size: 0;
+ height: 50px;
+ line-height: 0;
+ opacity: 0.5;
+ overflow: hidden;
+ transition: opacity 0.15s;
+ width: 30px;
+}
+
+.viewer-list > li:focus,
+.viewer-list > li:hover {
+ opacity: 0.75;
+}
+
+.viewer-list > li:focus {
+ outline: 0;
+}
+
+.viewer-list > li + li {
+ margin-left: 1px;
+}
+
+.viewer-list > .viewer-loading {
+ position: relative;
+}
+
+.viewer-list > .viewer-loading::after {
+ border-width: 2px;
+ height: 20px;
+ margin-left: -10px;
+ margin-top: -10px;
+ width: 20px;
+}
+
+.viewer-list > .viewer-active,
+.viewer-list > .viewer-active:focus,
+.viewer-list > .viewer-active:hover {
+ opacity: 1;
+}
+
+.viewer-player {
+ background-color: #000;
+ bottom: 0;
+ cursor: none;
+ display: none;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1;
+}
+
+.viewer-player > img {
+ left: 0;
+ position: absolute;
+ top: 0;
+}
+
+.viewer-toolbar > ul {
+ display: inline-block;
+ margin: 0 auto 5px;
+ overflow: hidden;
+ padding: 6px 3px;
+}
+
+.viewer-toolbar > ul > li {
+ background-color: rgba(0, 0, 0, 50%);
+ border-radius: 50%;
+ cursor: pointer;
+ float: left;
+ height: 24px;
+ overflow: hidden;
+ transition: background-color 0.15s;
+ width: 24px;
+}
+
+.viewer-toolbar > ul > li:focus,
+.viewer-toolbar > ul > li:hover {
+ background-color: rgba(0, 0, 0, 80%);
+}
+
+.viewer-toolbar > ul > li:focus {
+ box-shadow: 0 0 3px #fff;
+ outline: 0;
+ position: relative;
+ z-index: 1;
+}
+
+.viewer-toolbar > ul > li::before {
+ margin: 2px;
+}
+
+.viewer-toolbar > ul > li + li {
+ margin-left: 1px;
+}
+
+.viewer-toolbar > ul > .viewer-small {
+ height: 18px;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ width: 18px;
+}
+
+.viewer-toolbar > ul > .viewer-small::before {
+ margin: -1px;
+}
+
+.viewer-toolbar > ul > .viewer-large {
+ height: 30px;
+ margin-bottom: -3px;
+ margin-top: -3px;
+ width: 30px;
+}
+
+.viewer-toolbar > ul > .viewer-large::before {
+ margin: 5px;
+}
+
+.viewer-tooltip {
+ background-color: rgba(0, 0, 0, 80%);
+ border-radius: 10px;
+ color: #fff;
+ display: none;
+ font-size: 12px;
+ height: 20px;
+ left: 50%;
+ line-height: 20px;
+ margin-left: -25px;
+ margin-top: -10px;
+ position: absolute;
+ text-align: center;
+ top: 50%;
+ width: 50px;
+}
+
+.viewer-title {
+ color: #ccc;
+ display: inline-block;
+ font-size: 12px;
+ line-height: 1.2;
+ margin: 5px 5%;
+ max-width: 90%;
+ min-height: 14px;
+ opacity: 0.8;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ transition: opacity 0.15s;
+ white-space: nowrap;
+}
+
+.viewer-title:hover {
+ opacity: 1;
+}
+
+.viewer-button {
+ -webkit-app-region: no-drag;
+ background-color: rgba(0, 0, 0, 50%);
+ border-radius: 50%;
+ cursor: pointer;
+ height: 80px;
+ overflow: hidden;
+ position: absolute;
+ right: -40px;
+ top: -40px;
+ transition: background-color 0.15s;
+ width: 80px;
+}
+
+.viewer-button:focus,
+.viewer-button:hover {
+ background-color: rgba(0, 0, 0, 80%);
+}
+
+.viewer-button:focus {
+ box-shadow: 0 0 3px #fff;
+ outline: 0;
+}
+
+.viewer-button::before {
+ bottom: 15px;
+ left: 15px;
+ position: absolute;
+}
+
+.viewer-fixed {
+ position: fixed;
+}
+
+.viewer-open {
+ overflow: hidden;
+}
+
+.viewer-show {
+ display: block;
+}
+
+.viewer-hide {
+ display: none;
+}
+
+.viewer-backdrop {
+ background-color: rgba(0, 0, 0, 50%);
+}
+
+.viewer-invisible {
+ visibility: hidden;
+}
+
+.viewer-move {
+ cursor: move;
+ cursor: grab;
+}
+
+.viewer-fade {
+ opacity: 0;
+}
+
+.viewer-in {
+ opacity: 1;
+}
+
+.viewer-transition {
+ transition: all 0.3s;
+}
+
+@keyframes viewer-spinner {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+.viewer-loading::after {
+ animation: viewer-spinner 1s linear infinite;
+ border: 4px solid rgba(255, 255, 255, 10%);
+ border-left-color: rgba(255, 255, 255, 50%);
+ border-radius: 50%;
+ content: "";
+ display: inline-block;
+ height: 40px;
+ left: 50%;
+ margin-left: -20px;
+ margin-top: -20px;
+ position: absolute;
+ top: 50%;
+ width: 40px;
+ z-index: 1;
+}
+
+@media (max-width: 767px) {
+ .viewer-hide-xs-down {
+ display: none;
+ }
+}
+
+@media (max-width: 991px) {
+ .viewer-hide-sm-down {
+ display: none;
+ }
+}
+
+@media (max-width: 1199px) {
+ .viewer-hide-md-down {
+ display: none;
+ }
+}
diff --git a/src/assets/css/theme-blue/color-green.css b/src/assets/css/theme-blue/color-green.css
new file mode 100644
index 0000000..9ce904c
--- /dev/null
+++ b/src/assets/css/theme-blue/color-green.css
@@ -0,0 +1,29 @@
+.header{
+ background-color: #07c4a8;
+}
+.login-wrap{
+ background: rgba(56, 157, 170, 0.82);;
+}
+.plugins-tips{
+ background: #f2f2f2;
+}
+.plugins-tips a{
+ color: #428bca;
+}
+.el-upload--text em {
+ color: #428bca;
+}
+.pure-button{
+ background: #428bca;
+}
+.pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, .pagination > .active > span, .pagination > .active > span:hover, .pagination > .active > span:focus {
+ background-color: #428bca !important;
+ border-color: #428bca !important;
+}
+.tags-li.active {
+ border: 1px solid #428bca;
+ background-color: #428bca;
+}
+.collapse-btn:hover{
+ background: #428bca;
+}
diff --git a/src/assets/css/theme-blue/fonts/element-icons.ttf b/src/assets/css/theme-blue/fonts/element-icons.ttf
new file mode 100644
index 0000000..91b74de
Binary files /dev/null and b/src/assets/css/theme-blue/fonts/element-icons.ttf differ
diff --git a/src/assets/css/theme-blue/fonts/element-icons.woff b/src/assets/css/theme-blue/fonts/element-icons.woff
new file mode 100644
index 0000000..02b9a25
Binary files /dev/null and b/src/assets/css/theme-blue/fonts/element-icons.woff differ
diff --git a/src/assets/css/theme-blue/index.css b/src/assets/css/theme-blue/index.css
new file mode 100644
index 0000000..d70243a
--- /dev/null
+++ b/src/assets/css/theme-blue/index.css
@@ -0,0 +1 @@
+@charset "UTF-8";.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}@font-face{font-family:element-icons;src:url("fonts/element-icons.woff") format("woff"),url("fonts/element-icons.ttf") format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-select-dropdown{position:absolute;z-index:1001;border:solid 1px #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#428bca;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-tag{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#428bca;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#428bca}.el-tag .el-tag__close{color:#428bca}.el-tag .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca}.el-tag.el-tag--success.is-hit{border-color:#428bca}.el-tag.el-tag--success .el-tag__close{color:#428bca}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.is-hit{border-color:#428bca}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#428bca}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.is-hit{border-color:#428bca}.el-tag--plain .el-tag__close{color:#428bca}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.el-tag--success.is-hit{border-color:#428bca}.el-tag--plain.el-tag--success .el-tag__close{color:#428bca}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#428bca;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#428bca}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#428bca}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;-ms-flex-negative:0;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#428bca}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat;background-size:16px;background-color:#fff;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor{height:22px}.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#428bca}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev:disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#428bca}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#428bca;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;display:inline-block;vertical-align:top;font-size:0;padding:0;margin:0}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;vertical-align:top;display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;margin:0}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pager li.btn-quicknext:hover{cursor:pointer}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#428bca}.el-pager li.active{color:#428bca;cursor:default}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px;padding-bottom:10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#428bca}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:20px;padding-top:10px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.highlighted{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#428bca;border-color:#c6dcef;background-color:#ecf3fa}.el-button:active{color:#3b7db6;border-color:#3b7db6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#428bca;color:#428bca}.el-button.is-plain:active{background:#fff;border-color:#3b7db6;color:#3b7db6;outline:0}.el-button.is-active{color:#3b7db6;border-color:#3b7db6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--primary:focus,.el-button--primary:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--primary:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--primary.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--primary.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--success{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--success:focus,.el-button--success:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--success:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--success.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--success.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#428bca;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#68a2d5;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3b7db6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled)::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf3fa;color:#68a2d5}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover{background-color:#fff}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #428bca;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #428bca;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #e4e7ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{height:56px;line-height:56px;font-size:14px;color:#303133;padding:0 20px;list-style:none;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf3fa}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#428bca}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:#303133;padding:0 20px;list-style:none;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf3fa}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf3fa}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#428bca}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#428bca}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#428bca}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px 0}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-radio{color:#606266;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;margin-right:30px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#428bca}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__label{font-size:12px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#428bca;background:#428bca}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#428bca}.el-radio__input.is-focus .el-radio__inner{border-color:#428bca}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#428bca}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #428bca;box-shadow:0 0 2px 2px #428bca}.el-radio__label{font-size:14px;padding-left:10px}.el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#428bca}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #428bca;box-shadow:-1px 0 0 0 #428bca}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #428bca;box-shadow:0 0 2px 2px #428bca}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#428bca}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#428bca}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#428bca}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#428bca}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #8eb9df;box-shadow:-1px 0 0 0 #8eb9df}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#428bca}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#428bca}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#428bca}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#dcdfe6;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#428bca;background-color:#428bca}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-select-dropdown{position:absolute;z-index:1001;border:solid 1px #e4e7ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#428bca;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-tag{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#428bca;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#428bca}.el-tag .el-tag__close{color:#428bca}.el-tag .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca}.el-tag.el-tag--success.is-hit{border-color:#428bca}.el-tag.el-tag--success .el-tag__close{color:#428bca}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.is-hit{border-color:#428bca}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#428bca}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.is-hit{border-color:#428bca}.el-tag--plain .el-tag__close{color:#428bca}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.el-tag--success.is-hit{border-color:#428bca}.el-tag--plain.el-tag--success .el-tag__close{color:#428bca}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#428bca;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#428bca}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#c0c4cc;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-select .el-input.is-focus .el-input__inner{border-color:#428bca}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:-webkit-box;display:-ms-flexbox;display:flex;max-width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;-ms-flex-negative:0;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#428bca;border-color:#c6dcef;background-color:#ecf3fa}.el-button:active{color:#3b7db6;border-color:#3b7db6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#428bca;color:#428bca}.el-button.is-plain:active{background:#fff;border-color:#3b7db6;color:#3b7db6;outline:0}.el-button.is-active{color:#3b7db6;border-color:#3b7db6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--primary:focus,.el-button--primary:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--primary:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--primary.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--primary.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--success{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--success:focus,.el-button--success:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--success:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--success.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--success.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#428bca;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#68a2d5;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3b7db6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#428bca}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#428bca}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#428bca}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#428bca}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #8eb9df;box-shadow:-1px 0 0 0 #8eb9df}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#428bca}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#428bca}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-tag{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#428bca;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#428bca}.el-tag .el-tag__close{color:#428bca}.el-tag .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca}.el-tag.el-tag--success.is-hit{border-color:#428bca}.el-tag.el-tag--success .el-tag__close{color:#428bca}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.is-hit{border-color:#428bca}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#428bca}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.is-hit{border-color:#428bca}.el-tag--plain .el-tag__close{color:#428bca}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.el-tag--success.is-hit{border-color:#428bca}.el-tag--plain.el-tag--success .el-tag__close{color:#428bca}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;background-color:#fff;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell{background-color:#fff}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#f5f7fa}.el-table .el-table__cell{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#fff}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff}.el-table th.el-table__cell>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#428bca}.el-table th.el-table__cell.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#ebeef5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell{border-right:1px solid #ebeef5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:1px solid #ebeef5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff;border-bottom:1px solid #ebeef5}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:solid 5px transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#428bca}.el-table .descending .sort-caret.descending{border-top-color:#428bca}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:#ecf3fa}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#f5f7fa}.el-table__body tr.current-row>td.el-table__cell{background-color:#ecf3fa}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#428bca}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#428bca}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#428bca}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#428bca}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #8eb9df;box-shadow:-1px 0 0 0 #8eb9df}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#428bca}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#428bca}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-tag{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#428bca;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#428bca}.el-tag .el-tag__close{color:#428bca}.el-tag .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca}.el-tag.el-tag--success.is-hit{border-color:#428bca}.el-tag.el-tag--success .el-tag__close{color:#428bca}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.is-hit{border-color:#428bca}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#428bca}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.is-hit{border-color:#428bca}.el-tag--plain .el-tag__close{color:#428bca}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.el-tag--success.is-hit{border-color:#428bca}.el-tag--plain.el-tag--success .el-tag__close{color:#428bca}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:solid 1px #ebeef5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf3fa;color:#68a2d5}.el-table-filter__list-item.is-active{background-color:#428bca;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-table-filter__bottom button:hover{color:#428bca}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#f2f6fc}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table.is-week-mode .el-date-table__row.current div{background-color:#f2f6fc}.el-date-table td{width:32px;height:30px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#428bca;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#428bca}.el-date-table td.in-range div{background-color:#f2f6fc}.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#428bca}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#428bca}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#428bca;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #ebeef5}.el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#428bca;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#428bca}.el-month-table td.in-range div{background-color:#f2f6fc}.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#428bca}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#428bca}.el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#428bca;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover{color:#428bca}.el-year-table td.current:not(.disabled) .cell{color:#428bca}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#428bca}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active{border-color:#428bca}.el-range-editor.is-active:hover{border-color:#428bca}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#428bca}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#428bca}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#428bca}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label:hover{color:#428bca}.el-date-picker__header-label.active{color:#428bca}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-time-panel{margin:5px 0;border:solid 1px #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#428bca}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active{border-color:#428bca}.el-range-editor.is-active:hover{border-color:#428bca}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#428bca}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#428bca}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#428bca}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label:hover{color:#428bca}.el-date-picker__header-label.active{color:#428bca}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#428bca;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::-ms-input-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active{border-color:#428bca}.el-range-editor.is-active:hover{border-color:#428bca}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#428bca}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#428bca}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#428bca}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#428bca}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:solid 1px #e4e7ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#428bca}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover:focus,.el-popover:focus:active{outline-width:0}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#428bca;border-color:#c6dcef;background-color:#ecf3fa}.el-button:active{color:#3b7db6;border-color:#3b7db6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#428bca;color:#428bca}.el-button.is-plain:active{background:#fff;border-color:#3b7db6;color:#3b7db6;outline:0}.el-button.is-active{color:#3b7db6;border-color:#3b7db6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--primary:focus,.el-button--primary:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--primary:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--primary.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--primary.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--success{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--success:focus,.el-button--success:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--success:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--success.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--success.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#428bca;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#68a2d5;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3b7db6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px;padding-bottom:10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#428bca}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__input input.invalid{border-color:#f56c6c}.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#428bca}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#428bca;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px 0}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--medium .el-form-item__content{line-height:36px}.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__content{line-height:32px}.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__content{line-height:28px}.el-form-item--mini.el-form-item{margin-bottom:18px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus{border-color:#f56c6c}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#428bca;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645, .045, .355, 1);transition:-webkit-transform .3s cubic-bezier(.645, .045, .355, 1);transition:transform .3s cubic-bezier(.645, .045, .355, 1);transition:transform .3s cubic-bezier(.645, .045, .355, 1),-webkit-transform .3s cubic-bezier(.645, .045, .355, 1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#428bca}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #428bca inset;box-shadow:0 0 2px 2px #428bca inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#428bca}.el-tabs__item:hover{color:#428bca;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;-webkit-transition:color .3s cubic-bezier(.645, .045, .355, 1),padding .3s cubic-bezier(.645, .045, .355, 1);transition:color .3s cubic-bezier(.645, .045, .355, 1),padding .3s cubic-bezier(.645, .045, .355, 1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#428bca;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#428bca}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__nav-wrap.is-left::after{left:auto;right:0}.el-tabs--left .el-tabs__active-bar.is-left{right:0;left:auto}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tag{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#428bca;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#428bca}.el-tag .el-tag__close{color:#428bca}.el-tag .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca}.el-tag.el-tag--success.is-hit{border-color:#428bca}.el-tag.el-tag--success .el-tag__close{color:#428bca}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.is-hit{border-color:#428bca}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#428bca}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.is-hit{border-color:#428bca}.el-tag--plain .el-tag__close{color:#428bca}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.el-tag--success.is-hit{border-color:#428bca}.el-tag--plain.el-tag--success .el-tag__close{color:#428bca}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#428bca}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#428bca}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#428bca}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#428bca}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #8eb9df;box-shadow:-1px 0 0 0 #8eb9df}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#428bca}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#428bca}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#428bca}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#428bca;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#f5f7fa}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f6fb}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn{color:#fff}.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#ecf3fa;color:#428bca}.el-alert--success.is-light .el-alert__description{color:#428bca}.el-alert--success.is-dark{background-color:#428bca;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#428bca}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-notification-fade-leave-active{opacity:0}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#428bca}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#428bca}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px 0}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-slider::after,.el-slider::before{display:table;content:""}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1)}.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging{cursor:not-allowed}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#428bca;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:normal}.el-slider__button-wrapper::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-slider__button-wrapper .el-tooltip{vertical-align:middle;display:inline-block}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:solid 2px #428bca;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#428bca}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#428bca;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#428BCA;stroke-linecap:round}.el-loading-spinner i{color:#428bca}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table;content:""}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-top{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-col-0{display:none}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{position:relative;left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{position:relative;right:4.16667%}.el-col-push-1{position:relative;left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{position:relative;right:8.33333%}.el-col-push-2{position:relative;left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{position:relative;left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{position:relative;right:16.66667%}.el-col-push-4{position:relative;left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{position:relative;right:20.83333%}.el-col-push-5{position:relative;left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{position:relative;left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{position:relative;right:29.16667%}.el-col-push-7{position:relative;left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{position:relative;right:33.33333%}.el-col-push-8{position:relative;left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{position:relative;left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{position:relative;right:41.66667%}.el-col-push-10{position:relative;left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{position:relative;right:45.83333%}.el-col-push-11{position:relative;left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{position:relative;left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{position:relative;right:54.16667%}.el-col-push-13{position:relative;left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{position:relative;right:58.33333%}.el-col-push-14{position:relative;left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{position:relative;left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{position:relative;right:66.66667%}.el-col-push-16{position:relative;left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{position:relative;right:70.83333%}.el-col-push-17{position:relative;left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{position:relative;left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{position:relative;right:79.16667%}.el-col-push-19{position:relative;left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{position:relative;right:83.33333%}.el-col-push-20{position:relative;left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{position:relative;left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{position:relative;right:91.66667%}.el-col-push-22{position:relative;left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{position:relative;right:95.83333%}.el-col-push-23{position:relative;left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{position:relative;left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none}.el-col-xs-0{width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none}.el-col-sm-0{width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none}.el-col-md-0{width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none}.el-col-lg-0{width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none}.el-col-xl-0{width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#428bca}.el-progress.is-success .el-progress__text{color:#428bca}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#428bca;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover{border-color:#428bca;color:#428bca}.el-upload:focus{border-color:#428bca;color:#428bca}.el-upload:focus .el-upload-dragger{border-color:#428bca}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#428bca;font-style:normal}.el-upload-dragger:hover{border-color:#428bca}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #428bca}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55, 0, .1, 1);transition:all .5s cubic-bezier(.55, 0, .1, 1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#428bca}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#428bca}.el-upload-list__item:hover{background-color:#f5f7fa}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#428bca;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#428bca}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);margin-top:60px}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#428bca}.el-progress.is-success .el-progress__text{color:#428bca}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#428bca;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#ecf3fa;border-color:#d9e8f4}.el-message--success .el-message__content{color:#428bca}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#428bca}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#f56c6c;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#428bca}.el-badge__content--success{background-color:#428bca}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{display:inline-block;position:relative;font-size:0;vertical-align:middle}.el-rate__icon{position:relative;display:inline-block;font-size:18px;margin-right:6px;color:#c0c4cc;-webkit-transition:.3s;transition:.3s}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__icon .path2{position:absolute;left:0;top:0}.el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#428bca;border-color:#428bca}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#428bca;border-color:#428bca}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#428bca}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#428bca}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#428bca}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#428bca}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head{text-align:center}.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55, 0, .1, 1);transition:all .3s cubic-bezier(.55, 0, .1, 1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1);transition:transform .3s cubic-bezier(.23, 1, .32, 1),opacity .3s cubic-bezier(.23, 1, .32, 1),-webkit-transform .3s cubic-bezier(.23, 1, .32, 1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55, 0, .1, 1);transition:opacity .3s cubic-bezier(.55, 0, .1, 1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#428bca}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0,0,0,0.03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#428bca;border-width:1px;border-style:solid;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#428bca}.el-tag .el-tag__close{color:#428bca}.el-tag .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#ecf3fa;border-color:#d9e8f4;color:#428bca}.el-tag.el-tag--success.is-hit{border-color:#428bca}.el-tag.el-tag--success .el-tag__close{color:#428bca}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.is-hit{border-color:#428bca}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#428bca;border-color:#428bca;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#428bca}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#68a2d5}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.is-hit{border-color:#428bca}.el-tag--plain .el-tag__close{color:#428bca}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#b3d1ea;color:#428bca}.el-tag--plain.el-tag--success.is-hit{border-color:#428bca}.el-tag--plain.el-tag--success .el-tag__close{color:#428bca}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#428bca}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#428bca}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#428bca}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#428bca}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#428bca}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #8eb9df;box-shadow:-1px 0 0 0 #8eb9df}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#428bca}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#428bca}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio{color:#606266;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;margin-right:30px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#428bca}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__label{font-size:12px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#428bca;background:#428bca}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#428bca}.el-radio__input.is-focus .el-radio__inner{border-color:#428bca}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#428bca}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #428bca;box-shadow:0 0 2px 2px #428bca}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:solid 1px #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#428bca;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-input__inner:focus{border-color:#428bca}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader .el-input.is-focus .el-input__inner{border-color:#428bca}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:solid 1px #e4e7ed;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#428bca;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#c0c4cc}.el-cascader__search-input::-moz-placeholder{color:#c0c4cc}.el-cascader__search-input::-ms-input-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #428bca;box-shadow:0 0 3px 2px #428bca}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#428bca;border-color:#428bca}.el-color-dropdown__link-btn{cursor:pointer;color:#428bca;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#428bca,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;color:#999;position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;position:absolute;width:100%;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#fff;text-align:center;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1)}.el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#428bca}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645, .045, .355, 1);transition:color .2s cubic-bezier(.645, .045, .355, 1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645, .045, .355, 1);transition:border-color .2s cubic-bezier(.645, .045, .355, 1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input__inner:focus{outline:0;border-color:#428bca}.el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#c0c4cc;-webkit-transition:all .3s;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__inner{outline:0;border-color:#428bca}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#428bca;border-color:#c6dcef;background-color:#ecf3fa}.el-button:active{color:#3b7db6;border-color:#3b7db6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#428bca;color:#428bca}.el-button.is-plain:active{background:#fff;border-color:#3b7db6;color:#3b7db6;outline:0}.el-button.is-active{color:#3b7db6;border-color:#3b7db6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--primary:focus,.el-button--primary:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--primary:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--primary.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--primary.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--success{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--success:focus,.el-button--success:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--success:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--success.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--success.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#428bca;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#68a2d5;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3b7db6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#428bca}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#428bca}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#428bca}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#428bca}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #8eb9df;box-shadow:-1px 0 0 0 #8eb9df}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#428bca}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#428bca}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#428bca;font-size:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#428bca}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#428bca}.el-timeline-item__node--success{background-color:#428bca}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;cursor:pointer;padding:0;font-size:14px;font-weight:500}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #428bca}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#428bca}.el-link.el-link--default:after{border-color:#428bca}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#428bca}.el-link.el-link--primary:hover{color:#68a2d5}.el-link.el-link--primary:after{border-color:#428bca}.el-link.el-link--primary.is-disabled{color:#a1c5e5}.el-link.el-link--primary.is-underline:hover:after{border-color:#428bca}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--danger.is-underline:hover:after{border-color:#f56c6c}.el-link.el-link--success{color:#428bca}.el-link.el-link--success:hover{color:#68a2d5}.el-link.el-link--success:after{border-color:#428bca}.el-link.el-link--success.is-disabled{color:#a1c5e5}.el-link.el-link--success.is-underline:hover:after{border-color:#428bca}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--warning.is-underline:hover:after{border-color:#e6a23c}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-link.el-link--info.is-underline:hover:after{border-color:#909399}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;font-weight:500;color:#303133;font-size:14px}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__placeholder{background:#f5f7fa}.el-image__error{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;background:#f5f7fa;color:#c0c4cc;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__prev{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;left:40px}.el-image-viewer__next{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-color:#dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button.is-round{padding:12px 20px}.el-button:focus,.el-button:hover{color:#428bca;border-color:#c6dcef;background-color:#ecf3fa}.el-button:active{color:#3b7db6;border-color:#3b7db6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#428bca;color:#428bca}.el-button.is-plain:active{background:#fff;border-color:#3b7db6;color:#3b7db6;outline:0}.el-button.is-active{color:#3b7db6;border-color:#3b7db6}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--primary:focus,.el-button--primary:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--primary:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--primary.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--primary.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--success{color:#fff;background-color:#428bca;border-color:#428bca}.el-button--success:focus,.el-button--success:hover{background:#68a2d5;border-color:#68a2d5;color:#fff}.el-button--success:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-active{background:#3b7db6;border-color:#3b7db6;color:#fff}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#a1c5e5;border-color:#a1c5e5}.el-button--success.is-plain{color:#428bca;background:#ecf3fa;border-color:#b3d1ea}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#428bca;border-color:#428bca;color:#fff}.el-button--success.is-plain:active{background:#3b7db6;border-color:#3b7db6;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#8eb9df;background-color:#ecf3fa;border-color:#d9e8f4}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#428bca;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#68a2d5;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3b7db6;border-color:transparent;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover{border-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-top-right-radius:4px;border-bottom-right-radius:4px;border-top-left-radius:4px;border-bottom-left-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-button.is-active{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table td.is-today{color:#428bca}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;color:#428bca;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{display:-webkit-box;display:-ms-flexbox;display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#dcdfe6}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#428bca}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#428bca}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#428bca;border-color:#428bca}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46);transition:border-color .25s cubic-bezier(.71, -.46, .29, 1.46),background-color .25s cubic-bezier(.71, -.46, .29, 1.46)}.el-checkbox__inner:hover{border-color:#428bca}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button{position:relative;display:inline-block}.el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645, .045, .355, 1);transition:all .3s cubic-bezier(.645, .045, .355, 1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#428bca}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#428bca;border-color:#428bca;-webkit-box-shadow:-1px 0 0 0 #8eb9df;box-shadow:-1px 0 0 0 #8eb9df}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#428bca}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#428bca}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio{color:#606266;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;margin-right:30px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#428bca}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__label{font-size:12px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed;cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#428bca;background:#428bca}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#428bca}.el-radio__input.is-focus .el-radio__inner{border-color:#428bca}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#428bca}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #428bca;box-shadow:0 0 2px 2px #428bca}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:solid 1px #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#428bca;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:-webkit-box;display:-ms-flexbox;display:flex;margin-bottom:32px;padding:20px;padding-bottom:0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb{width:100%;left:0;right:0}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer__container{position:relative;left:0;right:0;top:0;bottom:0;height:100%;width:100%}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#DCDDE0;width:22%;height:22%}@-webkit-keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}@keyframes el-skeleton-loading{0%{background-position:100% 50%}100%{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:-webkit-gradient(linear,left top,right top,color-stop(25%,#f2f2f2),color-stop(37%,#e6e6e6),color-stop(63%,#f2f2f2));background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;-webkit-animation:el-skeleton-loading 1.4s ease infinite;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#DCDDE0;width:22%;height:22%}.el-empty{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%;height:100%;vertical-align:top;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#DCDDE0;width:100%;height:100%;vertical-align:top}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom{margin-top:20px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:-webkit-box;display:-ms-flexbox;display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-descriptions-item__label.has-colon::after{content:':';position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-descriptions{-webkit-box-sizing:border-box;box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions__body{color:#606266;background-color:#fff}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #ebeef5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small{font-size:12px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini{font-size:12px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:-webkit-box;display:-ms-flexbox;display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-descriptions-item__label.has-colon::after{content:':';position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title{margin-top:20px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#428BCA}.el-result .icon-error{fill:#F56C6C}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#E6A23C}
\ No newline at end of file
diff --git a/src/assets/css/theme-green/color-green.css b/src/assets/css/theme-green/color-green.css
new file mode 100644
index 0000000..837d179
--- /dev/null
+++ b/src/assets/css/theme-green/color-green.css
@@ -0,0 +1,29 @@
+.header{
+ background-color: #07c4a8;
+}
+.login-wrap{
+ background: rgba(56, 157, 170, 0.82);;
+}
+.plugins-tips{
+ background: #f2f2f2;
+}
+.plugins-tips a{
+ color: #00d1b2;
+}
+.el-upload--text em {
+ color: #00d1b2;
+}
+.pure-button{
+ background: #00d1b2;
+}
+.pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, .pagination > .active > span, .pagination > .active > span:hover, .pagination > .active > span:focus {
+ background-color: #00d1b2 !important;
+ border-color: #00d1b2 !important;
+}
+.tags-li.active {
+ border: 1px solid #00d1b2;
+ background-color: #00d1b2;
+}
+.collapse-btn:hover{
+ background: #00d1b2;
+}
\ No newline at end of file
diff --git a/src/assets/css/theme-green/fonts/element-icons.ttf b/src/assets/css/theme-green/fonts/element-icons.ttf
new file mode 100644
index 0000000..91b74de
Binary files /dev/null and b/src/assets/css/theme-green/fonts/element-icons.ttf differ
diff --git a/src/assets/css/theme-green/fonts/element-icons.woff b/src/assets/css/theme-green/fonts/element-icons.woff
new file mode 100644
index 0000000..02b9a25
Binary files /dev/null and b/src/assets/css/theme-green/fonts/element-icons.woff differ
diff --git a/src/assets/css/theme-green/index.css b/src/assets/css/theme-green/index.css
new file mode 100644
index 0000000..b695db4
--- /dev/null
+++ b/src/assets/css/theme-green/index.css
@@ -0,0 +1 @@
+@charset "UTF-8";.el-pagination--small .arrow.disabled,.el-table .hidden-columns,.el-table td.is-hidden>*,.el-table th.is-hidden>*,.el-table--hidden{visibility:hidden}.el-input__suffix,.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing),.el-message__closeBtn:focus,.el-message__content:focus,.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing),.el-rate:active,.el-rate:focus,.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing),.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}@font-face{font-family:element-icons;src:url(fonts/element-icons.woff) format("woff"),url(fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{-webkit-animation:rotating 2s linear infinite;animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@-webkit-keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}@keyframes rotating{0%{-webkit-transform:rotateZ(0);transform:rotateZ(0)}100%{-webkit-transform:rotateZ(360deg);transform:rotateZ(360deg)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination::after,.el-pagination::before{display:table;content:""}.el-pagination::after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#00D1B2}.el-pagination button:disabled{color:#C0C4CC;background-color:#FFF;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:center center no-repeat #FFF;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#C0C4CC;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .more::before,.el-pagination--small li.more::before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#00D1B2}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#C0C4CC}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#00D1B2}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#00D1B2;color:#FFF}.el-dialog,.el-pager li{background:#FFF;-webkit-box-sizing:border-box}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;font-size:0}.el-date-table,.el-table th{-webkit-user-select:none;-moz-user-select:none}.el-pager .more::before{line-height:30px}.el-pager li{padding:0 4px;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-menu--collapse .el-menu .el-submenu,.el-menu--popup{min-width:200px}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#C0C4CC}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#00D1B2}.el-pager li.active{color:#00D1B2;cursor:default}@-webkit-keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}.el-dialog{position:relative;margin:0 auto 50px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#00D1B2}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #E4E7ED;-webkit-box-sizing:border-box;box-sizing:border-box;background-color:#FFF}.el-dropdown-menu,.el-menu--collapse .el-submenu .el-menu{z-index:10;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#F5F7FA}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#FFF}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default::before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown-menu{position:absolute;top:0;left:0;padding:10px 0;margin:5px 0;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#606266;cursor:pointer;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#e6faf7;color:#428bca}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #EBEEF5}.el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#FFF}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#FFF}.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu::after,.el-menu::before{display:table;content:""}.el-menu::after{clear:both}.el-menu.el-menu--horizontal{border-bottom:solid 1px #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #00D1B2;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#FFF;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #00D1B2;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-submenu{position:relative}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;border:1px solid #E4E7ED;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;position:relative;-webkit-box-sizing:border-box;white-space:nowrap;list-style:none}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.el-menu--popup{z-index:100;border:none;padding:5px 0;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#e6faf7}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#00D1B2}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#e6faf7}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#e6faf7}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#00D1B2}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{white-space:nowrap;background:#FFF;border:1px solid #DCDFE6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#00D1B2}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#FFF;background-color:#00D1B2;border-color:#00D1B2;-webkit-box-shadow:-1px 0 0 0 #00D1B2;box-shadow:-1px 0 0 0 #00D1B2}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#F2F6FC}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-popover,.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){-webkit-box-shadow:0 0 2px 2px #00D1B2;box-shadow:0 0 2px 2px #00D1B2}.el-switch{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#00D1B2}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #DCDFE6;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#DCDFE6;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:all .3s;transition:all .3s;width:16px;height:16px;background-color:#FFF}.el-switch.is-checked .el-switch__core{border-color:#00D1B2;background-color:#00D1B2}.el-switch.is-checked .el-switch__core::after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #E4E7ED;border-radius:4px;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#00D1B2;background-color:#FFF}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#F5F7FA}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#FFF}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#F5F7FA}.el-select-dropdown__item.selected{color:#00D1B2;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#E4E7ED}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#C0C4CC}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#00D1B2}.el-select .el-input .el-select__caret{color:#C0C4CC;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#C0C4CC;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#E4E7ED}.el-select .el-input.is-focus .el-input__inner{border-color:#00D1B2}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#C0C4CC;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-select .el-tag__close{margin-top:-2px}.el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5}.el-select .el-tag__close.el-icon-close{background-color:#C0C4CC;right:-7px;top:0;color:#FFF}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#FFF}.el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table--mini,.el-table--small,.el-table__expand-icon{font-size:12px}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit td.gutter,.el-table--fit th.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th{background:#F5F7FA}.el-table th,.el-table tr{background-color:#FFF}.el-table td,.el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table td.is-center,.el-table th.is-center{text-align:center}.el-table td.is-right,.el-table th.is-right{text-align:right}.el-table td.gutter,.el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table--medium td,.el-table--medium th{padding:10px 0}.el-table--small td,.el-table--small th{padding:5px 0}.el-table--mini td,.el-table--mini th{padding:6px 0}.el-table .cell,.el-table--border td:first-child .cell,.el-table--border th:first-child .cell{padding-left:10px}.el-table tr input[type=checkbox]{margin:0}.el-table td,.el-table th.is-leaf{border-bottom:1px solid #EBEEF5}.el-table th.is-sortable{cursor:pointer}.el-table th{overflow:hidden;-ms-user-select:none;user-select:none}.el-table th>.cell{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th>.cell.highlight{color:#00D1B2}.el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.el-table td.gutter{width:0}.el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #EBEEF5}.el-table--border::after,.el-table--group::after,.el-table::before{content:'';position:absolute;background-color:#EBEEF5;z-index:1}.el-table--border::after,.el-table--group::after{top:0;right:0;width:1px;height:100%}.el-table::before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border td,.el-table--border th,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #EBEEF5}.el-table--border th.gutter:last-of-type{border-bottom:1px solid #EBEEF5;border-bottom-width:1px}.el-table--border th,.el-table__fixed-right-patch{border-bottom:1px solid #EBEEF5}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right::before,.el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#EBEEF5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#FFF}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td{border-top:1px solid #EBEEF5;background-color:#F5F7FA;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td{border-top:1px solid #EBEEF5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td,.el-table__header-wrapper tbody td{background-color:#F5F7FA;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.el-picker-panel,.el-table-filter{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #EBEEF5}.el-table .caret-wrapper{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#C0C4CC;top:5px}.el-table .sort-caret.descending{border-top-color:#C0C4CC;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#00D1B2}.el-table .descending .sort-caret.descending{border-top-color:#00D1B2}.el-table .hidden-columns{position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td{background:#FAFAFA}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#e6faf7}.el-table__body tr.hover-row.current-row>td,.el-table__body tr.hover-row.el-table__row--striped.current-row>td,.el-table__body tr.hover-row.el-table__row--striped>td,.el-table__body tr.hover-row>td{background-color:#F5F7FA}.el-table__body tr.current-row>td{background-color:#e6faf7}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #EBEEF5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#F5F7FA}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #EBEEF5;border-radius:2px;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.el-date-table td,.el-date-table td div{height:30px;-webkit-box-sizing:border-box}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#e6faf7;color:#428bca}.el-table-filter__list-item.is-active{background-color:#00D1B2;color:#FFF}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #EBEEF5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table td.in-range div,.el-date-table td.in-range div:hover,.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#F2F6FC}.el-table-filter__bottom button:hover{color:#00D1B2}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-ms-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#C0C4CC}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#00D1B2;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#FFF}.el-date-table td.available:hover{color:#00D1B2}.el-date-table td.current:not(.disabled) span{color:#FFF;background-color:#00D1B2}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#FFF}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#00D1B2}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#F5F7FA;opacity:1;cursor:not-allowed;color:#C0C4CC}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#F2F6FC;border-radius:15px}.el-date-table td.selected div:hover{background-color:#F2F6FC}.el-date-table td.selected span{background-color:#00D1B2;color:#FFF;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:solid 1px #EBEEF5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-month-table td.today .cell{color:#00D1B2;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#FFF}.el-month-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-month-table td.disabled .cell:hover{color:#C0C4CC}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#00D1B2}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#F2F6FC}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#FFF}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#FFF;background-color:#00D1B2}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#00D1B2}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#00D1B2;font-weight:700}.el-year-table td.disabled .cell{background-color:#F5F7FA;cursor:not-allowed;color:#C0C4CC}.el-year-table td.disabled .cell:hover{color:#C0C4CC}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#00D1B2}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#FFF}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #EBEEF5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#00D1B2}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#00D1B2;font-weight:700}.time-select-item.disabled{color:#E4E7ED;cursor:not-allowed}.time-select-item:hover{background-color:#F5F7FA;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#C0C4CC;float:left;line-height:32px}.el-date-editor .el-range-input,.el-date-editor .el-range-separator{height:100%;margin:0;text-align:center;display:inline-block;font-size:14px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;padding:0;width:39%;color:#606266}.el-date-editor .el-range-input::-webkit-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::-ms-input-placeholder{color:#C0C4CC}.el-date-editor .el-range-input::placeholder{color:#C0C4CC}.el-date-editor .el-range-separator{padding:0 5px;line-height:32px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#C0C4CC;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor.is-active,.el-range-editor.is-active:hover{border-color:#00D1B2}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#E4E7ED}.el-range-editor.is-disabled input{background-color:#F5F7FA;color:#C0C4CC;cursor:not-allowed}.el-range-editor.is-disabled input::-webkit-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::-ms-input-placeholder{color:#C0C4CC}.el-range-editor.is-disabled input::placeholder{color:#C0C4CC}.el-range-editor.is-disabled .el-range-separator{color:#C0C4CC}.el-picker-panel{color:#606266;border:1px solid #E4E7ED;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#FFF;border-radius:4px;line-height:30px;margin:5px 0}.el-popover,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-picker-panel__body-wrapper::after,.el-picker-panel__body::after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#FFF;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#00D1B2}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#00D1B2}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#00D1B2}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#FFF;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#FFF;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#00D1B2}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list::after,.el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#F5F7FA;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#C0C4CC;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #E4E7ED;background-color:#FFF;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-sizing:content-box;box-sizing:content-box}.el-slider__button,.el-slider__button-wrapper{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content::after,.el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #E4E7ED;border-bottom:1px solid #E4E7ED}.el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#00D1B2}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #E4E7ED}.el-popover{position:absolute;background:#FFF;min-width:150px;border:1px solid #EBEEF5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#FFF;border-radius:4px;border:1px solid #EBEEF5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#F56C6C}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#00D1B2}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.el-message-box__status::before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67C23A}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#E6A23C}.el-message-box__status.el-icon-error{color:#F56C6C}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#F56C6C;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb::after,.el-breadcrumb::before{display:table;content:""}.el-breadcrumb::after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#C0C4CC}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{font-weight:700;text-decoration:none;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:#00D1B2;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#606266;cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item::after,.el-form-item::before{display:table;content:""}.el-form-item::after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content::after,.el-form-item__content::before{display:table;content:""}.el-form-item__content::after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#F56C6C;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:'*';color:#F56C6C;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#F56C6C}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#00D1B2;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.el-collapse-item__arrow,.el-tabs__nav{-webkit-transition:-webkit-transform .3s}.el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#00D1B2}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#E4E7ED;z-index:1}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after,.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:-webkit-box;display:-ms-flexbox;display:flex}.el-tabs__nav.is-stretch>*{-webkit-box-flex:1;-ms-flex:1;flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){-webkit-box-shadow:0 0 2px 2px #00D1B2 inset;box-shadow:0 0 2px 2px #00D1B2 inset;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:#C0C4CC;color:#FFF}.el-tabs__item.is-active{color:#00D1B2}.el-tabs__item:hover{color:#00D1B2;cursor:pointer}.el-tabs__item.is-disabled{color:#C0C4CC;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #E4E7ED}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #E4E7ED;border-bottom:none;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #E4E7ED;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#FFF}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--border-card{background:#FFF;border:1px solid #DCDFE6;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#F5F7FA;border-bottom:1px solid #E4E7ED;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#00D1B2;background-color:#FFF;border-right-color:#DCDFE6;border-left-color:#DCDFE6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#00D1B2}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#C0C4CC}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #DCDFE6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left::after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left::after,.el-tabs--left .el-tabs__nav-wrap.is-right::after,.el-tabs--right .el-tabs__nav-wrap.is-left::after,.el-tabs--right .el-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #E4E7ED;border-bottom:none;border-top:1px solid #E4E7ED;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #E4E7ED;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #E4E7ED;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #E4E7ED;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right::after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #E4E7ED}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #E4E7ED;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #E4E7ED;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #E4E7ED;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#FFF;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#00D1B2}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#F5F7FA}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#00D1B2;color:#fff}.el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:#F5F7FA}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#C0C4CC;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#C0C4CC}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#ebfbf9}.el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#FFF;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#C0C4CC}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#FFF}.el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67C23A}.el-alert--success.is-light .el-alert__description{color:#67C23A}.el-alert--success.is-dark{background-color:#67C23A;color:#FFF}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#FFF}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#E6A23C}.el-alert--warning.is-light .el-alert__description{color:#E6A23C}.el-alert--warning.is-dark{background-color:#E6A23C;color:#FFF}.el-alert--error.is-light{background-color:#fef0f0;color:#F56C6C}.el-alert--error.is-light .el-alert__description{color:#F56C6C}.el-alert--error.is-dark{background-color:#F56C6C;color:#FFF}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active{opacity:0}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #EBEEF5;position:fixed;background-color:#FFF;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67C23A}.el-notification .el-icon-error{color:#F56C6C}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#E6A23C}.el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#F5F7FA;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#00D1B2}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#00D1B2}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #DCDFE6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #DCDFE6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#E4E7ED;color:#E4E7ED}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#E4E7ED;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #DCDFE6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #DCDFE6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-progress-bar__inner::after,.el-row::after,.el-row::before,.el-slider::after,.el-slider::before,.el-slider__button-wrapper::after,.el-upload-cover::after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#FFF}.el-tooltip__popper.is-light{background:#FFF;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#FFF}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#FFF}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#FFF}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#FFF}.el-slider::after,.el-slider::before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper::after{vertical-align:middle;display:inline-block}.el-slider::after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#E4E7ED;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button{border-color:#C0C4CC}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#00D1B2;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;user-select:none;line-height:normal}.el-slider__button-wrapper::after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #00D1B2;background-color:#FFF;border-radius:50%;-webkit-transition:.2s;transition:.2s;user-select:none}.el-image-viewer__btn,.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#FFF;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #DCDFE6;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#C0C4CC}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#00D1B2}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-10,.el-col-pull-11,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-2,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-push-0,.el-col-push-1,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-2,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-row{position:relative}.el-loading-spinner .el-loading-text{color:#00D1B2;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#00D1B2;stroke-linecap:round}.el-loading-spinner i{color:#00D1B2}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{-webkit-box-sizing:border-box;box-sizing:border-box}.el-row::after,.el-row::before{display:table}.el-row::after{clear:both}.el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}[class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.el-upload--picture-card,.el-upload-dragger{-webkit-box-sizing:border-box;cursor:pointer}.el-col-0{width:0%}.el-col-offset-0{margin-left:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0%}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0%}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0%}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0%}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0%}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#00D1B2;color:#00D1B2}.el-upload:focus .el-upload-dragger{border-color:#00D1B2}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;position:relative;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#C0C4CC;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #DCDFE6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#00D1B2;font-style:normal}.el-upload-dragger:hover{border-color:#00D1B2}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #00D1B2}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67C23A}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#00D1B2}.el-upload-list__item:hover{background-color:#F5F7FA}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#00D1B2;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#00D1B2}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#FFF}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#FFF}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover::after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#FFF;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#FFF;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#FFF;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress-bar,.el-progress-bar__inner::after,.el-progress-bar__innerText,.el-spinner{display:inline-block;vertical-align:middle}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67C23A}.el-progress.is-success .el-progress__text{color:#67C23A}.el-progress.is-warning .el-progress-bar__inner{background-color:#E6A23C}.el-progress.is-warning .el-progress__text{color:#E6A23C}.el-progress.is-exception .el-progress-bar__inner{background-color:#F56C6C}.el-progress.is-exception .el-progress__text{color:#F56C6C}.el-progress-bar{padding-right:50px;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#EBEEF5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#00D1B2;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;-webkit-transition:width .6s ease;transition:width .6s ease}.el-card,.el-message{border-radius:4px;overflow:hidden}.el-progress-bar__inner::after{height:100%}.el-progress-bar__innerText{color:#FFF;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EBEEF5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,top .4s,-webkit-transform .4s;transition:opacity .3s,transform .4s,top .4s;transition:opacity .3s,transform .4s,top .4s,-webkit-transform .4s;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67C23A}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#E6A23C}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#F56C6C}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#C0C4CC;font-size:16px}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67C23A}.el-message .el-icon-error{color:#F56C6C}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#E6A23C}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#F56C6C;border-radius:10px;color:#FFF;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #FFF}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#00D1B2}.el-badge__content--success{background-color:#67C23A}.el-badge__content--warning{background-color:#E6A23C}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#F56C6C}.el-card{border:1px solid #EBEEF5;background-color:#FFF;color:#303133;-webkit-transition:.3s;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box}.el-card__body{padding:20px}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#C0C4CC;-webkit-transition:.3s;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-webkit-box;display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#F5F7FA}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#C0C4CC;border-color:#C0C4CC}.el-step__head.is-success{color:#67C23A;border-color:#67C23A}.el-step__head.is-error{color:#F56C6C;border-color:#F56C6C}.el-step__head.is-finish{color:#00D1B2;border-color:#00D1B2}.el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#FFF;-webkit-transition:.15s ease-out;transition:.15s ease-out}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{display:inline-block;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#C0C4CC}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#C0C4CC}.el-step__title.is-success{color:#67C23A}.el-step__title.is-error{color:#F56C6C}.el-step__title.is-finish{color:#00D1B2}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#C0C4CC}.el-step__description.is-success{color:#67C23A}.el-step__description.is-error{color:#F56C6C}.el-step__description.is-finish{color:#00D1B2}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.el-step.is-simple .el-step__arrow::after,.el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#C0C4CC}.el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#FFF;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#C0C4CC;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#FFF;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;top:0;left:0;position:absolute}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#FFF;opacity:.24;-webkit-transition:.2s;transition:.2s}.el-fade-in-enter,.el-fade-in-leave-active,.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1),-webkit-transform .3s cubic-bezier(.23,1,.32,1);-webkit-transform-origin:top left;transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #EBEEF5;border-bottom:1px solid #EBEEF5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:48px;line-height:48px;background-color:#FFF;color:#303133;cursor:pointer;border-bottom:1px solid #EBEEF5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#00D1B2}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#FFF;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #EBEEF5}.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.el-popper .popper__arrow::after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#EBEEF5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#FFF;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#EBEEF5}.el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#FFF}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#EBEEF5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#FFF;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#EBEEF5}.el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#FFF}.el-tag{background-color:#e6faf7;border-color:#ccf6f0;display:inline-block;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#00D1B2;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#00D1B2}.el-tag .el-tag__close{color:#00d1b2}.el-tag .el-tag__close:hover{color:#FFF;background-color:#00d1b2}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67C23A}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close::before{display:block}.el-tag--dark{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.el-tag--dark.is-hit{border-color:#00D1B2}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#FFF;background-color:#428bca}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67C23A}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#99ede0;color:#00d1b2}.el-tag--plain.is-hit{border-color:#00D1B2}.el-tag--plain .el-tag__close{color:#00d1b2}.el-tag--plain .el-tag__close:hover{color:#FFF;background-color:#00d1b2}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#FFF;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67C23A}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#FFF;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#E6A23C}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#FFF;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#F56C6C}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#FFF;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#C0C4CC}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#00D1B2}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#C0C4CC}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#FFF;border:1px solid #E4E7ED;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{-webkit-box-flex:0;-ms-flex:none;flex:none;background-color:#C0C4CC;color:#FFF}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#F5F7FA}.el-cascader__suggestion-item.is-checked{color:#00D1B2;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#C0C4CC}.el-cascader__search-input{-webkit-box-flex:1;-ms-flex:1;flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;-webkit-box-sizing:border-box;box-sizing:border-box}.el-cascader__search-input::-webkit-input-placeholder{color:#C0C4CC}.el-cascader__search-input::-ms-input-placeholder{color:#C0C4CC}.el-cascader__search-input::placeholder{color:#C0C4CC}.el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #00D1B2;box-shadow:0 0 3px 2px #00D1B2}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#00D1B2;border-color:#00D1B2}.el-color-dropdown__link-btn{cursor:pointer;color:#00D1B2;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#00D1B2,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-textarea{position:relative;display:inline-block;width:100%;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#FFF;background-image:none;border:1px solid #DCDFE6;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea__inner:hover{border-color:#C0C4CC}.el-textarea__inner:focus{outline:0;border-color:#00D1B2}.el-textarea .el-input__count{color:#909399;background:#FFF;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#C0C4CC}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#C0C4CC}.el-textarea.is-exceed .el-textarea__inner{border-color:#F56C6C}.el-textarea.is-exceed .el-input__count{color:#F56C6C}.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner{background:#fff}.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#C0C4CC;font-size:14px;cursor:pointer;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#909399;font-size:12px}.el-input .el-input__count .el-input__count-inner{background:#FFF;line-height:initial;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#FFF;background-image:none;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;display:inline-block;font-size:inherit;height:40px;line-height:40px;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__prefix,.el-input__suffix{position:absolute;top:0;-webkit-transition:all .3s;height:100%;color:#C0C4CC;text-align:center}.el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input__inner::placeholder{color:#C0C4CC}.el-input__inner:hover{border-color:#C0C4CC}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#00D1B2;outline:0}.el-input__suffix{right:5px;transition:all .3s}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#F5F7FA;border-color:#E4E7ED;color:#C0C4CC;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__inner::placeholder{color:#C0C4CC}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#F56C6C}.el-input.is-exceed .el-input__suffix .el-input__count{color:#F56C6C}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#F5F7FA;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #DCDFE6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#FFF;background-color:#00D1B2;font-size:0}.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #DCDFE6;background-color:#F5F7FA;color:#C0C4CC}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer-panel{border:1px solid #EBEEF5;border-radius:4px;overflow:hidden;background:#FFF;display:inline-block;vertical-align:middle;width:200px;max-height:100%;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#00D1B2}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#F5F7FA;margin:0;padding-left:15px;border-bottom:1px solid #EBEEF5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-divider__text,.el-link{font-weight:500;font-size:14px}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#FFF;margin:0;padding:0;border-top:1px solid #EBEEF5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-webkit-box;display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.el-container{display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-sizing:border-box;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer{-webkit-box-orient:vertical;-webkit-box-direction:normal}.el-aside,.el-header{-webkit-box-sizing:border-box}.el-container.is-vertical{-ms-flex-direction:column;flex-direction:column}.el-header{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-aside{overflow:auto;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-footer,.el-main{-webkit-box-sizing:border-box}.el-main{display:block;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-preferred-size:auto;flex-basis:auto;overflow:auto;box-sizing:border-box;padding:20px}.el-footer{padding:0 20px;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0}.el-timeline{margin:0;font-size:14px;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #E4E7ED}.el-timeline-item__icon{color:#FFF;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#E4E7ED;border-radius:50%;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-webkit-box;display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#00D1B2}.el-timeline-item__node--success{background-color:#67C23A}.el-timeline-item__node--warning{background-color:#E6A23C}.el-timeline-item__node--danger{background-color:#F56C6C}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0}.el-link.is-underline:hover:after{content:"";position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #00D1B2}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#00D1B2}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#00D1B2}.el-link.el-link--default.is-disabled{color:#C0C4CC}.el-link.el-link--primary{color:#00D1B2}.el-link.el-link--primary:hover{color:#428bca}.el-link.el-link--primary.is-disabled{color:#80e8d9}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#F56C6C}.el-link.el-link--danger{color:#F56C6C}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67C23A}.el-link.el-link--success{color:#67C23A}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#E6A23C}.el-link.el-link--warning{color:#E6A23C}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#DCDFE6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#FFF;padding:0 20px;color:#303133}.el-image__error,.el-image__placeholder{background:#F5F7FA}.el-divider__text.is-left{left:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-divider__text.is-center{left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:14px;color:#C0C4CC;vertical-align:middle}.el-image__preview{cursor:pointer}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:50%;opacity:.8;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;user-select:none}.el-button,.el-checkbox{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:40px}.el-image-viewer__canvas{width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-pack:distribute;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{top:50%;width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff}.el-image-viewer__prev{-webkit-transform:translateY(-50%);transform:translateY(-50%);left:40px}.el-image-viewer__next{-webkit-transform:translateY(-50%);transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{-webkit-animation:viewer-fade-in .3s;animation:viewer-fade-in .3s}.viewer-fade-leave-active{-webkit-animation:viewer-fade-out .3s;animation:viewer-fade-out .3s}@-webkit-keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes viewer-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes viewer-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button{margin-left:10px}.el-button:focus,.el-button:hover{color:#00D1B2;border-color:#b3f1e8;background-color:#e6faf7}.el-button:active{color:#00bca0;border-color:#00bca0;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#FFF;border-color:#00D1B2;color:#00D1B2}.el-button.is-active,.el-button.is-plain:active{color:#00bca0;border-color:#00bca0}.el-button.is-plain:active{background:#FFF;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#FFF;border-color:#EBEEF5;color:#C0C4CC}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#FFF;background-color:#00D1B2;border-color:#00D1B2}.el-button--primary:focus,.el-button--primary:hover{background:#428bca;border-color:#428bca;color:#FFF}.el-button--primary.is-active,.el-button--primary:active{background:#00bca0;border-color:#00bca0;color:#FFF}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#FFF;background-color:#80e8d9;border-color:#80e8d9}.el-button--primary.is-plain{color:#00D1B2;background:#e6faf7;border-color:#99ede0}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#00D1B2;border-color:#00D1B2;color:#FFF}.el-button--primary.is-plain:active{background:#00bca0;border-color:#00bca0;color:#FFF;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#66e3d1;background-color:#e6faf7;border-color:#ccf6f0}.el-button--success{color:#FFF;background-color:#67C23A;border-color:#67C23A}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#FFF}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#FFF}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#FFF;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67C23A;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67C23A;border-color:#67C23A;color:#FFF}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#FFF;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#FFF;background-color:#E6A23C;border-color:#E6A23C}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#FFF}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#FFF}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#FFF;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#E6A23C;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#E6A23C;border-color:#E6A23C;color:#FFF}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#FFF;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#FFF;background-color:#F56C6C;border-color:#F56C6C}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#FFF}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#FFF}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#FFF;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#F56C6C;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#F56C6C;border-color:#F56C6C;color:#FFF}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#FFF;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#FFF;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#FFF}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#FFF}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#FFF;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#FFF}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#FFF;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--text,.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--mini,.el-button--small{font-size:12px;border-radius:3px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small,.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini.is-circle{padding:7px}.el-button--text{color:#00D1B2;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#428bca;border-color:transparent;background-color:transparent}.el-button--text:active{color:#00bca0;background-color:transparent}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group::after,.el-button-group::before{display:table;content:""}.el-button-group::after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0;border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.el-calendar{background-color:#fff}.el-calendar__header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #EBEEF5}.el-backtop,.el-page-header{display:-webkit-box;display:-ms-flexbox}.el-calendar__title{color:#000;-ms-flex-item-align:center;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#C0C4CC}.el-backtop,.el-calendar-table td.is-today{color:#00D1B2}.el-calendar-table td{border-bottom:1px solid #EBEEF5;border-right:1px solid #EBEEF5;vertical-align:top;-webkit-transition:background-color .2s ease;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#F2F8FE}.el-calendar-table tr:first-child td{border-top:1px solid #EBEEF5}.el-calendar-table tr td:first-child{border-left:1px solid #EBEEF5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#F2F8FE}.el-backtop{position:fixed;background-color:#FFF;width:40px;height:40px;border-radius:50%;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;font-size:20px;-webkit-box-shadow:0 0 6px rgba(0,0,0,.12);box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#F2F6FC}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:-webkit-box;display:-ms-flexbox;display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left::after{content:"";position:absolute;width:1px;height:16px;right:-20px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background-color:#DCDFE6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;-ms-flex-item-align:center;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;user-select:none;margin-right:30px}.el-checkbox-button__inner,.el-radio{font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#00D1B2}.el-checkbox.is-bordered.is-disabled{border-color:#EBEEF5;cursor:not-allowed}.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#DCDFE6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#C0C4CC}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#C0C4CC}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#F2F6FC;border-color:#DCDFE6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#C0C4CC;border-color:#C0C4CC}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#00D1B2;border-color:#00D1B2}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#C0C4CC;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#00D1B2}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#00D1B2}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#FFF;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #DCDFE6;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#FFF;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#00D1B2}.el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #FFF;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s ease-in .05s;transition:-webkit-transform .15s ease-in .05s;transition:transform .15s ease-in .05s;transition:transform .15s ease-in .05s,-webkit-transform .15s ease-in .05s;-webkit-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#FFF;border:1px solid #DCDFE6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#00D1B2}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-radio,.el-radio__input{line-height:1;outline:0;white-space:nowrap}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#FFF;background-color:#00D1B2;border-color:#00D1B2;-webkit-box-shadow:-1px 0 0 0 #66e3d1;box-shadow:-1px 0 0 0 #66e3d1}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#00D1B2}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#C0C4CC;cursor:not-allowed;background-image:none;background-color:#FFF;border-color:#EBEEF5;-webkit-box-shadow:none;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#EBEEF5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #DCDFE6;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#00D1B2}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-radio,.el-radio--medium.is-bordered .el-radio__label{font-size:14px}.el-radio{color:#606266;cursor:pointer;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #DCDFE6;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px}.el-radio.is-bordered.is-checked{border-color:#00D1B2}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#EBEEF5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#F5F7FA;border-color:#E4E7ED}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{cursor:pointer;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#F5F7FA}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#C0C4CC}.el-radio__input.is-disabled+span.el-radio__label{color:#C0C4CC;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#00D1B2;background:#00D1B2}.el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#00D1B2}.el-radio__input.is-focus .el-radio__inner{border-color:#00D1B2}.el-radio__inner{border:1px solid #DCDFE6;border-radius:100%;width:14px;height:14px;background-color:#FFF;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.el-radio__inner:hover{border-color:#00D1B2}.el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#FFF;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s ease-in;transition:-webkit-transform .15s ease-in;transition:transform .15s ease-in;transition:transform .15s ease-in,-webkit-transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #00D1B2;box-shadow:0 0 2px 2px #00D1B2}.el-radio__label{font-size:14px;padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:-webkit-box;display:-ms-flexbox;display:flex;border-radius:4px;font-size:14px}.el-cascader-panel.is-bordered{border:1px solid #E4E7ED;border-radius:4px}.el-cascader-menu{min-width:180px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#606266;border-right:solid 1px #E4E7ED}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;-webkit-box-sizing:border-box;box-sizing:border-box}.el-avatar,.el-drawer{-webkit-box-sizing:border-box;overflow:hidden}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);text-align:center;color:#C0C4CC}.el-cascader-node{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#00D1B2;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#F5F7FA}.el-cascader-node.is-disabled{color:#C0C4CC;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;color:#fff;background:#C0C4CC;width:40px;height:40px;line-height:40px;font-size:14px}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-drawer,.el-drawer__header{display:-webkit-box;display:-ms-flexbox}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{left:0;right:0;width:100%}.el-drawer.ltr,.el-drawer.rtl,.el-drawer__container{top:0;bottom:0;height:100%}@-webkit-keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes el-drawer-fade-in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes rtl-drawer-in{0%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@keyframes rtl-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(100%,0);transform:translate(100%,0)}}@-webkit-keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ltr-drawer-in{0%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@keyframes ltr-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(-100%,0);transform:translate(-100%,0)}}@-webkit-keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes ttb-drawer-in{0%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@keyframes ttb-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,-100%);transform:translate(0,-100%)}}@-webkit-keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@keyframes btt-drawer-in{0%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}100%{-webkit-transform:translate(0,0);transform:translate(0,0)}}@-webkit-keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}@keyframes btt-drawer-out{0%{-webkit-transform:translate(0,0);transform:translate(0,0)}100%{-webkit-transform:translate(0,100%);transform:translate(0,100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#FFF;display:flex;-ms-flex-direction:column;flex-direction:column;-webkit-box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.el-drawer.rtl{-webkit-animation:rtl-drawer-out .3s;animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{-webkit-animation:rtl-drawer-in .3s 1ms;animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{-webkit-animation:ltr-drawer-out .3s;animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{-webkit-animation:ltr-drawer-in .3s 1ms;animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{-webkit-animation:ttb-drawer-out .3s;animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{-webkit-animation:ttb-drawer-in .3s 1ms;animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{-webkit-animation:btt-drawer-out .3s;animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{-webkit-animation:btt-drawer-in .3s 1ms;animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__title{margin:0;-webkit-box-flex:1;-ms-flex:1;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{-webkit-box-flex:1;-ms-flex:1;flex:1}.el-drawer__body>*{-webkit-box-sizing:border-box;box-sizing:border-box}.el-drawer__container{position:relative}.el-drawer-fade-enter-active{-webkit-animation:el-drawer-fade-in .3s;animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-popconfirm__main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}
diff --git a/src/assets/css/viewer.css b/src/assets/css/viewer.css
new file mode 100644
index 0000000..2716fdb
--- /dev/null
+++ b/src/assets/css/viewer.css
@@ -0,0 +1,461 @@
+/*!
+ * Viewer.js v1.11.1
+ * https://fengyuanchen.github.io/viewerjs
+ *
+ * Copyright 2015-present Chen Fengyuan
+ * Released under the MIT license
+ *
+ * Date: 2022-11-06T05:18:17.414Z
+ */
+
+.viewer-zoom-in::before, .viewer-zoom-out::before, .viewer-one-to-one::before, .viewer-reset::before, .viewer-prev::before, .viewer-play::before, .viewer-next::before, .viewer-rotate-left::before, .viewer-rotate-right::before, .viewer-flip-horizontal::before, .viewer-flip-vertical::before, .viewer-fullscreen::before, .viewer-fullscreen-exit::before, .viewer-close::before {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARgAAAAUCAYAAABWOyJDAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTNui8sowAAAQPSURBVHic7Zs/iFxVFMa/0U2UaJGksUgnIVhYxVhpjDbZCBmLdAYECxsRFBTUamcXUiSNncgKQbSxsxH8gzAP3FU2jY0kKKJNiiiIghFlccnP4p3nPCdv3p9778vsLOcHB2bfveeb7955c3jvvNkBIMdxnD64a94GHMfZu3iBcRynN7zAOI7TG15gHCeeNUkr8zaxG2lbYDYsdgMbktBsP03jdQwljSXdtBhLOmtjowC9Mg9L+knSlcD8TNKpSA9lBpK2JF2VdDSR5n5J64m0qli399hNFMUlpshQii5jbXTbHGviB0nLNeNDSd9VO4A2UdB2fp+x0eCnaXxWXGA2X0au/3HgN9P4LFCjIANOJdrLr0zzZ+BEpNYDwKbpnQMeAw4m8HjQtM6Z9qa917zPQwFr3M5KgA6J5rTJCdFZJj9/lyvGhsDvwFNVuV2MhhjrK6b9bFiE+j1r87eBl4HDwCF7/U/k+ofAX5b/EXBv5JoLMuILzf3Ap6Z3EzgdqHMCuF7hcQf4HDgeoHnccncqdK/TvSDWffFXI/exICY/xZyqc6XLWF1UFZna4gJ7q8BsRvgd2/xXpo6P+D9dfT7PpECtA3cnWPM0GXGFZh/wgWltA+cDNC7X+AP4GzjZQe+k5dRxuYPeiuXU7e1qwLpDz7dFjXKRaSwuMLvAlG8zZlG+YmiK1HoFqT7wP2z+4Q45TfEGcMt01xLoNZEBTwRqD4BLpnMLeC1A41UmVxsXgXeBayV/Wx20rpTyrpnWRft7p6O/FdqzGrDukPNtkaMoMo3FBdBSQMOnYBCReyf05s126fU9ytfX98+mY54Kxnp7S9K3kj6U9KYdG0h6UdLbkh7poFXMfUnSOyVvL0h6VtIXHbS6nOP+s/Zm9mvyXW1uuC9ohZ72E9uDmXWLJOB1GxsH+DxPftsB8B6wlGDN02TAkxG6+4D3TWsbeC5CS8CDFce+AW500LhhOW2020TRjK3b21HEmgti9m0RonxbdMZeVzV+/4tF3cBpP7E9mKHNL5q8h5g0eYsCMQz0epq8gQrwMXAgcs0FGXGFRcB9wCemF9PkbYqM/Bas7fxLwNeJPdTdpo4itQti8lPMqTpXuozVRVXPpbHI3KkNTB1NfkL81j2mvhDp91HgV9MKuRIqrykj3WPq4rHyL+axj8/qGPmTqi6F9YDlHOvJU6oYcTsh/TYSzWmTE6JT19CtLTJt32D6CmHe0eQn1O8z5AXgT4sx4Vcu0/EQecMydB8z0hUWkTd2t4CrwNEePqMBcAR4mrBbwyXLPWJa8zrXmmLEhNBmfpkuY2102xxrih+pb+ieAb6vGhuA97UcJ5KR8gZ77K+99xxeYBzH6Q3/Z0fHcXrDC4zjOL3hBcZxnN74F+zlvXFWXF9PAAAAAElFTkSuQmCC");
+ background-repeat: no-repeat;
+ background-size: 280px;
+ color: transparent;
+ display: block;
+ font-size: 0;
+ height: 20px;
+ line-height: 0;
+ width: 20px;
+}
+
+.viewer-zoom-in::before {
+ background-position: 0 0;
+ content: "Zoom In";
+}
+
+.viewer-zoom-out::before {
+ background-position: -20px 0;
+ content: "Zoom Out";
+}
+
+.viewer-one-to-one::before {
+ background-position: -40px 0;
+ content: "One to One";
+}
+
+.viewer-reset::before {
+ background-position: -60px 0;
+ content: "Reset";
+}
+
+.viewer-prev::before {
+ background-position: -80px 0;
+ content: "Previous";
+}
+
+.viewer-play::before {
+ background-position: -100px 0;
+ content: "Play";
+}
+
+.viewer-next::before {
+ background-position: -120px 0;
+ content: "Next";
+}
+
+.viewer-rotate-left::before {
+ background-position: -140px 0;
+ content: "Rotate Left";
+}
+
+.viewer-rotate-right::before {
+ background-position: -160px 0;
+ content: "Rotate Right";
+}
+
+.viewer-flip-horizontal::before {
+ background-position: -180px 0;
+ content: "Flip Horizontal";
+}
+
+.viewer-flip-vertical::before {
+ background-position: -200px 0;
+ content: "Flip Vertical";
+}
+
+.viewer-fullscreen::before {
+ background-position: -220px 0;
+ content: "Enter Full Screen";
+}
+
+.viewer-fullscreen-exit::before {
+ background-position: -240px 0;
+ content: "Exit Full Screen";
+}
+
+.viewer-close::before {
+ background-position: -260px 0;
+ content: "Close";
+}
+
+.viewer-fixed.viewer-container {
+ z-index: 20000!important;
+ bottom: 0;
+ direction: ltr;
+ font-size: 0;
+ left: 0;
+ line-height: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ -webkit-tap-highlight-color: transparent;
+ top: 0;
+ -ms-touch-action: none;
+ touch-action: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.viewer-container::-moz-selection, .viewer-container *::-moz-selection {
+ background-color: transparent;
+}
+
+.viewer-container::selection,
+.viewer-container *::selection {
+ background-color: transparent;
+}
+
+.viewer-container:focus {
+ outline: 0;
+}
+
+.viewer-prev{
+ position: fixed!important;
+ top: 50%!important;
+ left: 100px!important;
+ transform: scale(2) translateY(-50%)!important;
+}
+
+.viewer-next{
+ position: fixed!important;
+ top: 50%!important;
+ right: 100px!important;
+ transform: scale(2) translateY(-50%)!important;
+}
+
+.viewer-container img {
+ display: block;
+ height: auto;
+ max-height: none !important;
+ max-width: none !important;
+ min-height: 0 !important;
+ min-width: 0 !important;
+ width: 100%;
+}
+
+.viewer-canvas {
+ bottom: 0;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.viewer-canvas > img {
+ height: auto;
+ margin: 15px auto;
+ max-width: 90% !important;
+ width: auto;
+}
+
+.viewer-footer {
+ bottom: 0;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ text-align: center;
+}
+
+.viewer-navbar {
+ background-color: rgba(0, 0, 0, 50%);
+ overflow: hidden;
+}
+
+.viewer-list {
+ box-sizing: content-box;
+ height: 50px;
+ margin: 0;
+ overflow: hidden;
+ padding: 1px 0;
+}
+
+.viewer-list > li {
+ color: transparent;
+ cursor: pointer;
+ float: left;
+ font-size: 0;
+ height: 50px;
+ line-height: 0;
+ opacity: 0.5;
+ overflow: hidden;
+ transition: opacity 0.15s;
+ width: 30px;
+}
+
+.viewer-list > li:focus,
+.viewer-list > li:hover {
+ opacity: 0.75;
+}
+
+.viewer-list > li:focus {
+ outline: 0;
+}
+
+.viewer-list > li + li {
+ margin-left: 1px;
+}
+
+.viewer-list > .viewer-loading {
+ position: relative;
+}
+
+.viewer-list > .viewer-loading::after {
+ border-width: 2px;
+ height: 20px;
+ margin-left: -10px;
+ margin-top: -10px;
+ width: 20px;
+}
+
+.viewer-list > .viewer-active,
+.viewer-list > .viewer-active:focus,
+.viewer-list > .viewer-active:hover {
+ opacity: 1;
+}
+
+.viewer-player {
+ background-color: #000;
+ bottom: 0;
+ cursor: none;
+ display: none;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1;
+}
+
+.viewer-player > img {
+ left: 0;
+ position: absolute;
+ top: 0;
+}
+
+.viewer-toolbar > ul {
+ display: inline-block;
+ margin: 0 auto 5px;
+ overflow: hidden;
+ padding: 6px 3px;
+}
+
+.viewer-toolbar > ul > li {
+ background-color: rgba(0, 0, 0, 50%);
+ border-radius: 50%;
+ cursor: pointer;
+ float: left;
+ height: 24px;
+ overflow: hidden;
+ transition: background-color 0.15s;
+ width: 24px;
+}
+
+.viewer-toolbar > ul > li:focus,
+.viewer-toolbar > ul > li:hover {
+ background-color: rgba(0, 0, 0, 80%);
+}
+
+.viewer-toolbar > ul > li:focus {
+ box-shadow: 0 0 3px #fff;
+ outline: 0;
+ position: relative;
+ z-index: 1;
+}
+
+.viewer-toolbar > ul > li::before {
+ margin: 2px;
+}
+
+.viewer-toolbar > ul > li + li {
+ margin-left: 1px;
+}
+
+.viewer-toolbar > ul > .viewer-small {
+ height: 18px;
+ margin-bottom: 3px;
+ margin-top: 3px;
+ width: 18px;
+}
+
+.viewer-toolbar > ul > .viewer-small::before {
+ margin: -1px;
+}
+
+.viewer-toolbar > ul > .viewer-large {
+ height: 30px;
+ margin-bottom: -3px;
+ margin-top: -3px;
+ width: 30px;
+}
+
+.viewer-toolbar > ul > .viewer-large::before {
+ margin: 5px;
+}
+
+.viewer-tooltip {
+ background-color: rgba(0, 0, 0, 80%);
+ border-radius: 10px;
+ color: #fff;
+ display: none;
+ font-size: 12px;
+ height: 20px;
+ left: 50%;
+ line-height: 20px;
+ margin-left: -25px;
+ margin-top: -10px;
+ position: absolute;
+ text-align: center;
+ top: 50%;
+ width: 50px;
+}
+
+.viewer-title {
+ color: #ccc;
+ display: inline-block;
+ font-size: 12px;
+ line-height: 1.2;
+ margin: 5px 5%;
+ max-width: 90%;
+ min-height: 14px;
+ opacity: 0.8;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ transition: opacity 0.15s;
+ white-space: nowrap;
+}
+
+.viewer-title:hover {
+ opacity: 1;
+}
+
+.viewer-button {
+ -webkit-app-region: no-drag;
+ background-color: rgba(0, 0, 0, 50%);
+ border-radius: 50%;
+ cursor: pointer;
+ height: 80px;
+ overflow: hidden;
+ position: absolute;
+ right: -40px;
+ top: -40px;
+ transition: background-color 0.15s;
+ width: 80px;
+}
+
+.viewer-button:focus,
+.viewer-button:hover {
+ background-color: rgba(0, 0, 0, 80%);
+}
+
+.viewer-button:focus {
+ box-shadow: 0 0 3px #fff;
+ outline: 0;
+}
+
+.viewer-button::before {
+ bottom: 15px;
+ left: 15px;
+ position: absolute;
+}
+
+.viewer-fixed {
+ position: fixed;
+}
+
+.viewer-open {
+ overflow: hidden;
+}
+
+.viewer-show {
+ display: block;
+}
+
+.viewer-hide {
+ display: none;
+}
+
+.viewer-backdrop {
+ background-color: rgba(0, 0, 0, 50%);
+}
+
+.viewer-invisible {
+ visibility: hidden;
+}
+
+.viewer-move {
+ cursor: move;
+ cursor: grab;
+}
+
+.viewer-fade {
+ opacity: 0;
+}
+
+.viewer-in {
+ opacity: 1;
+}
+
+.viewer-transition {
+ transition: all 0.3s;
+}
+
+@keyframes viewer-spinner {
+ 0% {
+ transform: rotate(0deg);
+ }
+
+ 100% {
+ transform: rotate(360deg);
+ }
+}
+
+.viewer-loading::after {
+ animation: viewer-spinner 1s linear infinite;
+ border: 4px solid rgba(255, 255, 255, 10%);
+ border-left-color: rgba(255, 255, 255, 50%);
+ border-radius: 50%;
+ content: "";
+ display: inline-block;
+ height: 40px;
+ left: 50%;
+ margin-left: -20px;
+ margin-top: -20px;
+ position: absolute;
+ top: 50%;
+ width: 40px;
+ z-index: 1;
+}
+
+@media (max-width: 767px) {
+ .viewer-hide-xs-down {
+ display: none;
+ }
+}
+
+@media (max-width: 991px) {
+ .viewer-hide-sm-down {
+ display: none;
+ }
+}
+
+@media (max-width: 1199px) {
+ .viewer-hide-md-down {
+ display: none;
+ }
+}
diff --git a/src/assets/filing.png b/src/assets/filing.png
new file mode 100644
index 0000000..9f76394
Binary files /dev/null and b/src/assets/filing.png differ
diff --git a/src/assets/head_bg.png b/src/assets/head_bg.png
new file mode 100644
index 0000000..a2e45f6
Binary files /dev/null and b/src/assets/head_bg.png differ
diff --git a/src/assets/icons/index.js b/src/assets/icons/index.js
new file mode 100644
index 0000000..2c6b309
--- /dev/null
+++ b/src/assets/icons/index.js
@@ -0,0 +1,9 @@
+import Vue from 'vue'
+import SvgIcon from '@/components/SvgIcon'// svg component
+
+// register globally
+Vue.component('svg-icon', SvgIcon)
+
+const req = require.context('./svg', false, /\.svg$/)
+const requireAll = requireContext => requireContext.keys().map(requireContext)
+requireAll(req)
diff --git a/src/assets/icons/svg/404.svg b/src/assets/icons/svg/404.svg
new file mode 100644
index 0000000..6df5019
--- /dev/null
+++ b/src/assets/icons/svg/404.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/bug.svg b/src/assets/icons/svg/bug.svg
new file mode 100644
index 0000000..05a150d
--- /dev/null
+++ b/src/assets/icons/svg/bug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/build.svg b/src/assets/icons/svg/build.svg
new file mode 100644
index 0000000..97c4688
--- /dev/null
+++ b/src/assets/icons/svg/build.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/chart.svg b/src/assets/icons/svg/chart.svg
new file mode 100644
index 0000000..27728fb
--- /dev/null
+++ b/src/assets/icons/svg/chart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/clipboard.svg b/src/assets/icons/svg/clipboard.svg
new file mode 100644
index 0000000..90923ff
--- /dev/null
+++ b/src/assets/icons/svg/clipboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/component.svg b/src/assets/icons/svg/component.svg
new file mode 100644
index 0000000..207ada3
--- /dev/null
+++ b/src/assets/icons/svg/component.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/dashboard.svg b/src/assets/icons/svg/dashboard.svg
new file mode 100644
index 0000000..5317d37
--- /dev/null
+++ b/src/assets/icons/svg/dashboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/date.svg b/src/assets/icons/svg/date.svg
new file mode 100644
index 0000000..2a28112
--- /dev/null
+++ b/src/assets/icons/svg/date.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/dict.svg b/src/assets/icons/svg/dict.svg
new file mode 100644
index 0000000..4849377
--- /dev/null
+++ b/src/assets/icons/svg/dict.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/documentation.svg b/src/assets/icons/svg/documentation.svg
new file mode 100644
index 0000000..7043122
--- /dev/null
+++ b/src/assets/icons/svg/documentation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/download.svg b/src/assets/icons/svg/download.svg
new file mode 100644
index 0000000..c896951
--- /dev/null
+++ b/src/assets/icons/svg/download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/drag.svg b/src/assets/icons/svg/drag.svg
new file mode 100644
index 0000000..4185d3c
--- /dev/null
+++ b/src/assets/icons/svg/drag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/druid.svg b/src/assets/icons/svg/druid.svg
new file mode 100644
index 0000000..a2b4b4e
--- /dev/null
+++ b/src/assets/icons/svg/druid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/edit.svg b/src/assets/icons/svg/edit.svg
new file mode 100644
index 0000000..d26101f
--- /dev/null
+++ b/src/assets/icons/svg/edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/education.svg b/src/assets/icons/svg/education.svg
new file mode 100644
index 0000000..7bfb01d
--- /dev/null
+++ b/src/assets/icons/svg/education.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/email.svg b/src/assets/icons/svg/email.svg
new file mode 100644
index 0000000..74d25e2
--- /dev/null
+++ b/src/assets/icons/svg/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/example.svg b/src/assets/icons/svg/example.svg
new file mode 100644
index 0000000..46f42b5
--- /dev/null
+++ b/src/assets/icons/svg/example.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/excel.svg b/src/assets/icons/svg/excel.svg
new file mode 100644
index 0000000..74d97b8
--- /dev/null
+++ b/src/assets/icons/svg/excel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/exit-fullscreen.svg b/src/assets/icons/svg/exit-fullscreen.svg
new file mode 100644
index 0000000..485c128
--- /dev/null
+++ b/src/assets/icons/svg/exit-fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/eye-open.svg b/src/assets/icons/svg/eye-open.svg
new file mode 100644
index 0000000..88dcc98
--- /dev/null
+++ b/src/assets/icons/svg/eye-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/eye.svg b/src/assets/icons/svg/eye.svg
new file mode 100644
index 0000000..16ed2d8
--- /dev/null
+++ b/src/assets/icons/svg/eye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/form.svg b/src/assets/icons/svg/form.svg
new file mode 100644
index 0000000..dcbaa18
--- /dev/null
+++ b/src/assets/icons/svg/form.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/fullscreen.svg b/src/assets/icons/svg/fullscreen.svg
new file mode 100644
index 0000000..0e86b6f
--- /dev/null
+++ b/src/assets/icons/svg/fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/guide.svg b/src/assets/icons/svg/guide.svg
new file mode 100644
index 0000000..b271001
--- /dev/null
+++ b/src/assets/icons/svg/guide.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/icon.svg b/src/assets/icons/svg/icon.svg
new file mode 100644
index 0000000..82be8ee
--- /dev/null
+++ b/src/assets/icons/svg/icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/international.svg b/src/assets/icons/svg/international.svg
new file mode 100644
index 0000000..e9b56ee
--- /dev/null
+++ b/src/assets/icons/svg/international.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/job.svg b/src/assets/icons/svg/job.svg
new file mode 100644
index 0000000..2a93a25
--- /dev/null
+++ b/src/assets/icons/svg/job.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/language.svg b/src/assets/icons/svg/language.svg
new file mode 100644
index 0000000..0082b57
--- /dev/null
+++ b/src/assets/icons/svg/language.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/link.svg b/src/assets/icons/svg/link.svg
new file mode 100644
index 0000000..48197ba
--- /dev/null
+++ b/src/assets/icons/svg/link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/list.svg b/src/assets/icons/svg/list.svg
new file mode 100644
index 0000000..20259ed
--- /dev/null
+++ b/src/assets/icons/svg/list.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/lock.svg b/src/assets/icons/svg/lock.svg
new file mode 100644
index 0000000..74fee54
--- /dev/null
+++ b/src/assets/icons/svg/lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/log.svg b/src/assets/icons/svg/log.svg
new file mode 100644
index 0000000..d879d33
--- /dev/null
+++ b/src/assets/icons/svg/log.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/logininfor.svg b/src/assets/icons/svg/logininfor.svg
new file mode 100644
index 0000000..267f844
--- /dev/null
+++ b/src/assets/icons/svg/logininfor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/message.svg b/src/assets/icons/svg/message.svg
new file mode 100644
index 0000000..14ca817
--- /dev/null
+++ b/src/assets/icons/svg/message.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/money.svg b/src/assets/icons/svg/money.svg
new file mode 100644
index 0000000..c1580de
--- /dev/null
+++ b/src/assets/icons/svg/money.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/monitor.svg b/src/assets/icons/svg/monitor.svg
new file mode 100644
index 0000000..bc308cb
--- /dev/null
+++ b/src/assets/icons/svg/monitor.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/nested.svg b/src/assets/icons/svg/nested.svg
new file mode 100644
index 0000000..06713a8
--- /dev/null
+++ b/src/assets/icons/svg/nested.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/online.svg b/src/assets/icons/svg/online.svg
new file mode 100644
index 0000000..330a202
--- /dev/null
+++ b/src/assets/icons/svg/online.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/password.svg b/src/assets/icons/svg/password.svg
new file mode 100644
index 0000000..e291d85
--- /dev/null
+++ b/src/assets/icons/svg/password.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/pdf.svg b/src/assets/icons/svg/pdf.svg
new file mode 100644
index 0000000..957aa0c
--- /dev/null
+++ b/src/assets/icons/svg/pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/people.svg b/src/assets/icons/svg/people.svg
new file mode 100644
index 0000000..2bd54ae
--- /dev/null
+++ b/src/assets/icons/svg/people.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/peoples.svg b/src/assets/icons/svg/peoples.svg
new file mode 100644
index 0000000..aab852e
--- /dev/null
+++ b/src/assets/icons/svg/peoples.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/phone.svg b/src/assets/icons/svg/phone.svg
new file mode 100644
index 0000000..ab8e8c4
--- /dev/null
+++ b/src/assets/icons/svg/phone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/post.svg b/src/assets/icons/svg/post.svg
new file mode 100644
index 0000000..2922c61
--- /dev/null
+++ b/src/assets/icons/svg/post.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/qq.svg b/src/assets/icons/svg/qq.svg
new file mode 100644
index 0000000..ee13d4e
--- /dev/null
+++ b/src/assets/icons/svg/qq.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/row.svg b/src/assets/icons/svg/row.svg
new file mode 100644
index 0000000..0780992
--- /dev/null
+++ b/src/assets/icons/svg/row.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/search.svg b/src/assets/icons/svg/search.svg
new file mode 100644
index 0000000..84233dd
--- /dev/null
+++ b/src/assets/icons/svg/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/server.svg b/src/assets/icons/svg/server.svg
new file mode 100644
index 0000000..ca37b00
--- /dev/null
+++ b/src/assets/icons/svg/server.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/shopping.svg b/src/assets/icons/svg/shopping.svg
new file mode 100644
index 0000000..87513e7
--- /dev/null
+++ b/src/assets/icons/svg/shopping.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/size.svg b/src/assets/icons/svg/size.svg
new file mode 100644
index 0000000..ddb25b8
--- /dev/null
+++ b/src/assets/icons/svg/size.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/skill.svg b/src/assets/icons/svg/skill.svg
new file mode 100644
index 0000000..a3b7312
--- /dev/null
+++ b/src/assets/icons/svg/skill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/star.svg b/src/assets/icons/svg/star.svg
new file mode 100644
index 0000000..6cf86e6
--- /dev/null
+++ b/src/assets/icons/svg/star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/swagger.svg b/src/assets/icons/svg/swagger.svg
new file mode 100644
index 0000000..05d4e7b
--- /dev/null
+++ b/src/assets/icons/svg/swagger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/system.svg b/src/assets/icons/svg/system.svg
new file mode 100644
index 0000000..dba28cf
--- /dev/null
+++ b/src/assets/icons/svg/system.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/tab.svg b/src/assets/icons/svg/tab.svg
new file mode 100644
index 0000000..b4b48e4
--- /dev/null
+++ b/src/assets/icons/svg/tab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/table.svg b/src/assets/icons/svg/table.svg
new file mode 100644
index 0000000..0e3dc9d
--- /dev/null
+++ b/src/assets/icons/svg/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/theme.svg b/src/assets/icons/svg/theme.svg
new file mode 100644
index 0000000..5982a2f
--- /dev/null
+++ b/src/assets/icons/svg/theme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/tool.svg b/src/assets/icons/svg/tool.svg
new file mode 100644
index 0000000..c813067
--- /dev/null
+++ b/src/assets/icons/svg/tool.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/tree-table.svg b/src/assets/icons/svg/tree-table.svg
new file mode 100644
index 0000000..8aafdb8
--- /dev/null
+++ b/src/assets/icons/svg/tree-table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/tree.svg b/src/assets/icons/svg/tree.svg
new file mode 100644
index 0000000..dd4b7dd
--- /dev/null
+++ b/src/assets/icons/svg/tree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/user.svg b/src/assets/icons/svg/user.svg
new file mode 100644
index 0000000..0ba0716
--- /dev/null
+++ b/src/assets/icons/svg/user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/validCode.svg b/src/assets/icons/svg/validCode.svg
new file mode 100644
index 0000000..cfb1021
--- /dev/null
+++ b/src/assets/icons/svg/validCode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/wechat.svg b/src/assets/icons/svg/wechat.svg
new file mode 100644
index 0000000..c586e55
--- /dev/null
+++ b/src/assets/icons/svg/wechat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svg/zip.svg b/src/assets/icons/svg/zip.svg
new file mode 100644
index 0000000..f806fc4
--- /dev/null
+++ b/src/assets/icons/svg/zip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/svgo.yml b/src/assets/icons/svgo.yml
new file mode 100644
index 0000000..ce5d0a9
--- /dev/null
+++ b/src/assets/icons/svgo.yml
@@ -0,0 +1,7 @@
+
+plugins:
+
+- removeAttrs:
+ attrs:
+ - 'fill'
+ - 'fill-rule'
diff --git a/src/assets/line.png b/src/assets/line.png
new file mode 100644
index 0000000..05db7f8
Binary files /dev/null and b/src/assets/line.png differ
diff --git a/src/assets/login-bg.png b/src/assets/login-bg.png
new file mode 100644
index 0000000..81a23c8
Binary files /dev/null and b/src/assets/login-bg.png differ
diff --git a/src/assets/login-logo.png b/src/assets/login-logo.png
new file mode 100644
index 0000000..1e25599
Binary files /dev/null and b/src/assets/login-logo.png differ
diff --git a/src/assets/logo.png b/src/assets/logo.png
new file mode 100644
index 0000000..9bfd3bc
Binary files /dev/null and b/src/assets/logo.png differ
diff --git a/src/assets/pic-1.png b/src/assets/pic-1.png
new file mode 100644
index 0000000..bf1a78c
Binary files /dev/null and b/src/assets/pic-1.png differ
diff --git a/src/assets/zzlogo.png b/src/assets/zzlogo.png
new file mode 100644
index 0000000..5eb7884
Binary files /dev/null and b/src/assets/zzlogo.png differ
diff --git a/src/assets/zzlogo2.png b/src/assets/zzlogo2.png
new file mode 100644
index 0000000..3cbd82a
Binary files /dev/null and b/src/assets/zzlogo2.png differ
diff --git a/src/assets/zzlogo3.png b/src/assets/zzlogo3.png
new file mode 100644
index 0000000..a2fefc7
Binary files /dev/null and b/src/assets/zzlogo3.png differ
diff --git a/src/components/Affix/index.vue b/src/components/Affix/index.vue
new file mode 100644
index 0000000..7aea99b
--- /dev/null
+++ b/src/components/Affix/index.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/BaseContainer/index.vue b/src/components/BaseContainer/index.vue
new file mode 100644
index 0000000..eeb7c1e
--- /dev/null
+++ b/src/components/BaseContainer/index.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
diff --git a/src/components/BaseForm/search-form.vue b/src/components/BaseForm/search-form.vue
new file mode 100644
index 0000000..dfaadf4
--- /dev/null
+++ b/src/components/BaseForm/search-form.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ ra.label }}
+
+
+
+ {{ ra.label }}
+
+
+
+ {{ ch.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
diff --git a/src/components/BaseModel/index.vue b/src/components/BaseModel/index.vue
new file mode 100644
index 0000000..ac3d730
--- /dev/null
+++ b/src/components/BaseModel/index.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
diff --git a/src/components/BaseTable/index.vue b/src/components/BaseTable/index.vue
new file mode 100644
index 0000000..1df28e4
--- /dev/null
+++ b/src/components/BaseTable/index.vue
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ operate.name }}
+
+
+
+ {{ scope.row[column.prop] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/BoxContent/index.vue b/src/components/BoxContent/index.vue
new file mode 100644
index 0000000..886fd3d
--- /dev/null
+++ b/src/components/BoxContent/index.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
diff --git a/src/components/Breadcrumb/index.vue b/src/components/Breadcrumb/index.vue
new file mode 100644
index 0000000..50c958b
--- /dev/null
+++ b/src/components/Breadcrumb/index.vue
@@ -0,0 +1,76 @@
+
+
+
+
+ {{ item.meta.title }}
+ {{ item.meta.title }}
+ {{ item.meta.title }}
+
+
+
+
+
+
+
+
diff --git a/src/components/ChatForm/index.vue b/src/components/ChatForm/index.vue
new file mode 100644
index 0000000..186b4d5
--- /dev/null
+++ b/src/components/ChatForm/index.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+

+
+
+ {{ record.userName }}
+ ({{ record.chatTime }})
+
+
{{ record.contactText }}
+
+
+
+
+
+
+ {{ record.userName }}
+ ({{ record.chatTime }})
+
+
{{ record.contactText }}
+
+
+

+
+
+
+
+
+ 发送
+
+
+
+
+
diff --git a/src/components/Dicom/CustomWwwcForm.vue b/src/components/Dicom/CustomWwwcForm.vue
new file mode 100644
index 0000000..8e1f4c4
--- /dev/null
+++ b/src/components/Dicom/CustomWwwcForm.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Dicom/DicomCanvas.vue b/src/components/Dicom/DicomCanvas.vue
new file mode 100644
index 0000000..b5f9304
--- /dev/null
+++ b/src/components/Dicom/DicomCanvas.vue
@@ -0,0 +1,1160 @@
+
+
+
+
Series #{{ dicomInfo.series }}
+
Image #{{ dicomInfo.frame }}
+
{{ dicomInfo.modality }}
+
+
+
+
+
+ Pos: {{ mousePosition.x?mousePosition.x.toFixed(0):'' }}, {{ mousePosition.y?mousePosition.y.toFixed(0):'' }}
+
+
+ HU: {{ mousePosition.mo }}
+
+
+ SUVbw(g/ml): {{ mousePosition.suv.toFixed(3) }}
+
+
+ Density: {{ mousePosition.mo }}
+
+
+ W*H: {{ dicomInfo.size }}
+
+
+
Zoom: {{ dicomInfo.zoom }}
+
+
+
+
{{ stack.description }}
+
+
+
+
+
+
+
+
+
+ {{ markers.top }}
+
+
+ {{ markers.right }}
+
+
+
+ {{ markers.bottom }}
+
+
+ {{ markers.left }}
+
+
+
+
+
Location: {{ dicomInfo.location }}
+
Slice Thickness: {{ dicomInfo.thick }}mm
+
WW/WL: {{ dicomInfo.wwwc }}
+
+
+
+
+
+
+
+
diff --git a/src/components/Dicom/DicomPreview.vue b/src/components/Dicom/DicomPreview.vue
new file mode 100644
index 0000000..62d67a8
--- /dev/null
+++ b/src/components/Dicom/DicomPreview.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/src/components/Dicom/DicomViewer.vue b/src/components/Dicom/DicomViewer.vue
new file mode 100644
index 0000000..db5a9b6
--- /dev/null
+++ b/src/components/Dicom/DicomViewer.vue
@@ -0,0 +1,892 @@
+
+
+
+
+
+
+
diff --git a/src/components/DictData/index.js b/src/components/DictData/index.js
new file mode 100644
index 0000000..c56c082
--- /dev/null
+++ b/src/components/DictData/index.js
@@ -0,0 +1,21 @@
+import Vue from 'vue'
+import DataDict from '@/utils/dict'
+import { getBasicDataSelect } from '@/api/dictionary/dictionary'
+
+function install() {
+ Vue.use(DataDict, {
+ metas: {
+ '*': {
+ labelField: 'dictLabel',
+ valueField: 'dictValue',
+ request(dictMeta) {
+ return getBasicDataSelect(dictMeta.type).then(res => res.Result)
+ }
+ }
+ }
+ })
+}
+
+export default {
+ install
+}
diff --git a/src/components/DictTag/index.vue b/src/components/DictTag/index.vue
new file mode 100644
index 0000000..2989dee
--- /dev/null
+++ b/src/components/DictTag/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+ {{ item.label }}
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
diff --git a/src/components/Global/index.vue b/src/components/Global/index.vue
new file mode 100644
index 0000000..7468e23
--- /dev/null
+++ b/src/components/Global/index.vue
@@ -0,0 +1,13 @@
+
diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue
new file mode 100644
index 0000000..368b002
--- /dev/null
+++ b/src/components/Hamburger/index.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue
new file mode 100644
index 0000000..b0ec9fa
--- /dev/null
+++ b/src/components/IconSelect/index.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/IconSelect/requireIcons.js b/src/components/IconSelect/requireIcons.js
new file mode 100644
index 0000000..99e5c54
--- /dev/null
+++ b/src/components/IconSelect/requireIcons.js
@@ -0,0 +1,11 @@
+
+const req = require.context('../../assets/icons/svg', false, /\.svg$/)
+const requireAll = requireContext => requireContext.keys()
+
+const re = /\.\/(.*)\.svg/
+
+const icons = requireAll(req).map(i => {
+ return i.match(re)[1]
+})
+
+export default icons
diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue
new file mode 100644
index 0000000..3199e64
--- /dev/null
+++ b/src/components/Pagination/index.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
diff --git a/src/components/PreviewFile/index.vue b/src/components/PreviewFile/index.vue
new file mode 100644
index 0000000..1c62ea2
--- /dev/null
+++ b/src/components/PreviewFile/index.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:message:downloadFile') }}
+ {{ $t('common:button:download') }}
+
+
+
+
+
diff --git a/src/components/Screenfull/index.vue b/src/components/Screenfull/index.vue
new file mode 100644
index 0000000..260c90d
--- /dev/null
+++ b/src/components/Screenfull/index.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/SignForm/index.vue b/src/components/SignForm/index.vue
new file mode 100644
index 0000000..b923896
--- /dev/null
+++ b/src/components/SignForm/index.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
diff --git a/src/components/Sticky/index.vue b/src/components/Sticky/index.vue
new file mode 100644
index 0000000..97ce0e9
--- /dev/null
+++ b/src/components/Sticky/index.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue
new file mode 100644
index 0000000..dbca903
--- /dev/null
+++ b/src/components/SvgIcon/index.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/TrialsSelect/index.vue b/src/components/TrialsSelect/index.vue
new file mode 100644
index 0000000..2761ed5
--- /dev/null
+++ b/src/components/TrialsSelect/index.vue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
{{$t('trials:trials-list:table:researchNumber')}}
+
{{ $t('trials:trials-list:table:experimentName') }}
+
+
+
+
+ {{$t('trials:trials-list:table:researchNumber')}}: {{ item.ResearchProgramNo }}
+
+ {{ $t('trials:trials-list:table:experimentName') }}: {{ item.ExperimentName }}
+
+
+
+ {{ item.ResearchProgramNo }}
+
+
+ {{ item.ExperimentName }}
+
+
+
+
+
+
+
+ {{$t('trials:trials-list:table:researchNumber')}}: {{ options.find(v => { return v.Id === tabTrialsId}) ? options.find(v => { return v.Id === tabTrialsId}).ResearchProgramNo : '' }}
+
+ {{ $t('trials:trials-list:table:experimentName') }}: {{ options.find(v => { return v.Id === tabTrialsId}) ? options.find(v => { return v.Id === tabTrialsId}).ExperimentName : '' }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/TrialsTab/index.vue b/src/components/TrialsTab/index.vue
new file mode 100644
index 0000000..c686bca
--- /dev/null
+++ b/src/components/TrialsTab/index.vue
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:trials:title:back') }}
+
+
+
+
+
+
diff --git a/src/components/Upload/index.vue b/src/components/Upload/index.vue
new file mode 100644
index 0000000..e1c594e
--- /dev/null
+++ b/src/components/Upload/index.vue
@@ -0,0 +1,105 @@
+
+
+
+
+ Upload
+ (must be in pdf format)
+
+
+
+
+
diff --git a/src/components/UploadFile/index.vue b/src/components/UploadFile/index.vue
new file mode 100644
index 0000000..14b48db
--- /dev/null
+++ b/src/components/UploadFile/index.vue
@@ -0,0 +1,168 @@
+
+
+
+
+ Upload
+ (must be in pdf format)
+
+
+
+
+
diff --git a/src/components/UploadFiles/index.vue b/src/components/UploadFiles/index.vue
new file mode 100644
index 0000000..c7cbd53
--- /dev/null
+++ b/src/components/UploadFiles/index.vue
@@ -0,0 +1,189 @@
+
+
+
+
+ Upload
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/QuestionFormItem.vue b/src/components/clinicalDataQuestions/components/QuestionFormItem.vue
new file mode 100644
index 0000000..9e8fc41
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/QuestionFormItem.vue
@@ -0,0 +1,592 @@
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/QuestionTableFormItem.vue b/src/components/clinicalDataQuestions/components/QuestionTableFormItem.vue
new file mode 100644
index 0000000..58b0276
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/QuestionTableFormItem.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+ {{ item.label }}
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+ {{ val }}
+
+
+
+ {{question.Unit}}
+
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/QuestionsForm.vue b/src/components/clinicalDataQuestions/components/QuestionsForm.vue
new file mode 100644
index 0000000..8b8bf1c
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/QuestionsForm.vue
@@ -0,0 +1,395 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/previousFiles.vue b/src/components/clinicalDataQuestions/components/previousFiles.vue
new file mode 100644
index 0000000..cef4c22
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/previousFiles.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:uploadClinicalData:button:uploadFile') }}
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/previousOther.vue b/src/components/clinicalDataQuestions/components/previousOther.vue
new file mode 100644
index 0000000..ba15ecb
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/previousOther.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/previousRadiotherapy.vue b/src/components/clinicalDataQuestions/components/previousRadiotherapy.vue
new file mode 100644
index 0000000..80e124d
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/previousRadiotherapy.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/previousSurgery.vue b/src/components/clinicalDataQuestions/components/previousSurgery.vue
new file mode 100644
index 0000000..81fbd11
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/previousSurgery.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/components/uploadClinicalData.vue b/src/components/clinicalDataQuestions/components/uploadClinicalData.vue
new file mode 100644
index 0000000..a37d0c7
--- /dev/null
+++ b/src/components/clinicalDataQuestions/components/uploadClinicalData.vue
@@ -0,0 +1,574 @@
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastTreatment') }}
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('IsPdEnum', scope.row.IsPD) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastSurgery') }}
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.OperationTime?moment(scope.row.OperationTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:others') }}
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:uploadClinicalData:button:downloadTemplate') }}
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/clinicalDataQuestions/index.vue b/src/components/clinicalDataQuestions/index.vue
new file mode 100644
index 0000000..19529c5
--- /dev/null
+++ b/src/components/clinicalDataQuestions/index.vue
@@ -0,0 +1,170 @@
+
+
+
+
{}">
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/components/element-ui/upload/index.js b/src/components/element-ui/upload/index.js
new file mode 100644
index 0000000..d53883b
--- /dev/null
+++ b/src/components/element-ui/upload/index.js
@@ -0,0 +1,8 @@
+import Upload from './src';
+
+/* istanbul ignore next */
+Upload.install = function(Vue) {
+ Vue.component(Upload.name, Upload);
+};
+
+export default Upload;
diff --git a/src/components/element-ui/upload/src/ajax.js b/src/components/element-ui/upload/src/ajax.js
new file mode 100644
index 0000000..e5744c4
--- /dev/null
+++ b/src/components/element-ui/upload/src/ajax.js
@@ -0,0 +1,85 @@
+function getError(action, option, xhr) {
+ let msg;
+ if (xhr.response) {
+ msg = `${xhr.response.error || xhr.response}`;
+ } else if (xhr.responseText) {
+ msg = `${xhr.responseText}`;
+ } else {
+ msg = `fail to post ${action} ${xhr.status}`;
+ }
+
+ const err = new Error(msg);
+ err.status = xhr.status;
+ err.method = 'post';
+ err.url = action;
+ return err;
+}
+
+function getBody(xhr) {
+ const text = xhr.responseText || xhr.response;
+ if (!text) {
+ return text;
+ }
+
+ try {
+ return JSON.parse(text);
+ } catch (e) {
+ return text;
+ }
+}
+
+export default function upload(option) {
+ if (typeof XMLHttpRequest === 'undefined') {
+ return;
+ }
+
+ const xhr = new XMLHttpRequest();
+ const action = option.action;
+
+ if (xhr.upload) {
+ xhr.upload.onprogress = function progress(e) {
+ if (e.total > 0) {
+ e.percent = e.loaded / e.total * 100;
+ }
+ option.onProgress(e);
+ };
+ }
+
+ const formData = new FormData();
+
+ if (option.data) {
+ Object.keys(option.data).forEach(key => {
+ formData.append(key, option.data[key]);
+ });
+ }
+
+ formData.append(option.filename, option.file, option.file.name);
+
+ xhr.onerror = function error(e) {
+ option.onError(e);
+ };
+
+ xhr.onload = function onload() {
+ if (xhr.status < 200 || xhr.status >= 300) {
+ return option.onError(getError(action, option, xhr));
+ }
+
+ option.onSuccess(getBody(xhr));
+ };
+
+ xhr.open('post', action, true);
+
+ if (option.withCredentials && 'withCredentials' in xhr) {
+ xhr.withCredentials = true;
+ }
+
+ const headers = option.headers || {};
+
+ for (let item in headers) {
+ if (headers.hasOwnProperty(item) && headers[item] !== null) {
+ xhr.setRequestHeader(item, headers[item]);
+ }
+ }
+ xhr.send(formData);
+ return xhr;
+}
diff --git a/src/components/element-ui/upload/src/index.vue b/src/components/element-ui/upload/src/index.vue
new file mode 100644
index 0000000..7d00568
--- /dev/null
+++ b/src/components/element-ui/upload/src/index.vue
@@ -0,0 +1,340 @@
+
diff --git a/src/components/element-ui/upload/src/upload-dragger.vue b/src/components/element-ui/upload/src/upload-dragger.vue
new file mode 100644
index 0000000..b3293c6
--- /dev/null
+++ b/src/components/element-ui/upload/src/upload-dragger.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
diff --git a/src/components/element-ui/upload/src/upload-list.vue b/src/components/element-ui/upload/src/upload-list.vue
new file mode 100644
index 0000000..11a22a6
--- /dev/null
+++ b/src/components/element-ui/upload/src/upload-list.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+ {{file.name}}
+
+
+
+ {{ t('el.upload.deleteTip') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/element-ui/upload/src/upload.vue b/src/components/element-ui/upload/src/upload.vue
new file mode 100644
index 0000000..200ca0a
--- /dev/null
+++ b/src/components/element-ui/upload/src/upload.vue
@@ -0,0 +1,211 @@
+
diff --git a/src/components/toggleRole/index.vue b/src/components/toggleRole/index.vue
new file mode 100644
index 0000000..71132fc
--- /dev/null
+++ b/src/components/toggleRole/index.vue
@@ -0,0 +1,126 @@
+
+
+
+
+
+ {{ item.UserTypeShortName }}
+
+
+
+
+
+ {{ $t('toggleRole:tip:noRole') }}
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:confirm') }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/videoPlayer/index.vue b/src/components/videoPlayer/index.vue
new file mode 100644
index 0000000..30d10e7
--- /dev/null
+++ b/src/components/videoPlayer/index.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
diff --git a/src/components/videos/index.vue b/src/components/videos/index.vue
new file mode 100644
index 0000000..2f13a13
--- /dev/null
+++ b/src/components/videos/index.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+ 请选择视频文件
+
+
+
+
+
+ 选择文件
+ 转码
+ 上传
+
+
+
+
+
+
diff --git a/src/const/check/index.js b/src/const/check/index.js
new file mode 100644
index 0000000..8b2ea22
--- /dev/null
+++ b/src/const/check/index.js
@@ -0,0 +1,12 @@
+import { SubjectCheckConfig } from './module/Subject'
+
+console.log(SubjectCheckConfig.moduleType)
+export const checkConfig = {
+ ModuleType: {
+ ...SubjectCheckConfig.ModuleType
+ },
+ OptType: {
+ ...SubjectCheckConfig.OptType
+ },
+ ChildrenType: ['基本信息', '状态']
+}
diff --git a/src/const/check/module/Subject.js b/src/const/check/module/Subject.js
new file mode 100644
index 0000000..dc3c4c2
--- /dev/null
+++ b/src/const/check/module/Subject.js
@@ -0,0 +1,9 @@
+export const SubjectCheckConfig = {
+ ModuleType: {
+ 'Subject': '受试者模块'
+ },
+ OptType: {
+ 'addSubject': '新增受试者',
+ 'updateSubject': '修改受试者'
+ }
+}
diff --git a/src/const/sign-code.vue b/src/const/sign-code.vue
new file mode 100644
index 0000000..4c30984
--- /dev/null
+++ b/src/const/sign-code.vue
@@ -0,0 +1,32 @@
+
diff --git a/src/directive/adaptive/adaptive.js b/src/directive/adaptive/adaptive.js
new file mode 100644
index 0000000..fe949b3
--- /dev/null
+++ b/src/directive/adaptive/adaptive.js
@@ -0,0 +1,42 @@
+import {
+ addResizeListener,
+ removeResizeListener
+} from 'element-ui/src/utils/resize-event'
+
+// 设置表格高度
+const doResize = async(el, binding, vnode) => {
+ // 获取表格Dom对象
+ const { componentInstance: $table } = await vnode
+ // 获取调用传递过来的数据
+ const { value } = binding
+ // 获取距底部距离(用于展示页码等信息)
+ const bottomOffset = (value && value.bottomOffset) || 40
+ if (!$table) return
+ // 计算列表高度并设置
+ const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset
+ // $table.layout.setMaxHeight(height)
+ $table.layout.setHeight(height)
+ // $table.maxHeight = height
+ $table.doLayout()
+}
+
+export default {
+ // 初始化设置
+ bind(el, binding, vnode) {
+ // 设置resize监听方法
+ el.resizeListener = async() => {
+ await doResize(el, binding, vnode)
+ }
+ // 绑定监听方法到addResizeListener
+ addResizeListener(window.document.body, el.resizeListener)
+ },
+ // // 绑定默认高度
+ async inserted(el, binding, vnode) {
+ await doResize(el, binding, vnode)
+ },
+ // // 销毁时设置
+ unbind(el) {
+ // 移除resize监听
+ removeResizeListener(el, el.resizeListener)
+ }
+}
diff --git a/src/directive/adaptive/index.js b/src/directive/adaptive/index.js
new file mode 100644
index 0000000..09cf542
--- /dev/null
+++ b/src/directive/adaptive/index.js
@@ -0,0 +1,16 @@
+import adaptive from './adaptive'
+
+const install = function(Vue) {
+ // 绑定v-adaptive指令
+ Vue.directive('adaptive', adaptive)
+}
+
+if (window.Vue) {
+ window['adaptive'] = adaptive
+ // eslint-disable-next-line no-undef
+ Vue.use(install)
+}
+
+adaptive.install = install
+
+export default adaptive
diff --git a/src/directive/dialogDrag.js b/src/directive/dialogDrag.js
new file mode 100644
index 0000000..ac3e7dd
--- /dev/null
+++ b/src/directive/dialogDrag.js
@@ -0,0 +1,80 @@
+import Vue from 'vue'
+
+// v-dialogDrag: 弹窗拖拽属性
+const dialogDrag = Vue.directive('dialogDrag', {
+ bind(el, binding, vnode, oldVnode) {
+ const dialogHeaderEl = el.querySelector('.el-dialog__header')
+ const dragDom = el.querySelector('.el-dialog')
+ // dialogHeaderEl.style.cursor = 'move';
+ dialogHeaderEl.style.cssText += ';cursor:move;'
+ dragDom.style.cssText += ';top:0px;'
+
+ // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+ const sty = (function() {
+ if (window.document.currentStyle) {
+ return (dom, attr) => dom.currentStyle[attr]
+ } else {
+ return (dom, attr) => getComputedStyle(dom, false)[attr]
+ }
+ })()
+
+ dialogHeaderEl.onmousedown = (e) => {
+ // 鼠标按下,计算当前元素距离可视区的距离
+ const disX = e.clientX - dialogHeaderEl.offsetLeft
+ const disY = e.clientY - dialogHeaderEl.offsetTop
+
+ const screenWidth = document.body.clientWidth // body当前宽度
+ // const screenHeight = document.documentElement.clientHeight // 可见区域高度(应为body高度,可某些环境下无法获取)
+
+ const dragDomWidth = dragDom.offsetWidth // 对话框宽度
+ // const dragDomheight = dragDom.offsetHeight // 对话框高度
+
+ const minDragDomLeft = dragDom.offsetLeft
+ const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth
+
+ // const minDragDomTop = dragDom.offsetTop
+ // const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight
+
+ // 获取到的值带px 正则匹配替换
+ let styL = sty(dragDom, 'left')
+ let styT = sty(dragDom, 'top')
+
+ // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+ if (styL.includes('%')) {
+ styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100)
+ styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100)
+ } else {
+ styL = +styL.replace(/\px/g, '')
+ styT = +styT.replace(/\px/g, '')
+ }
+
+ document.onmousemove = function(e) {
+ // 通过事件委托,计算移动的距离
+ let left = e.clientX - disX
+ const top = e.clientY - disY
+
+ // 边界处理
+ if (-(left) > minDragDomLeft) {
+ left = -(minDragDomLeft)
+ } else if (left > maxDragDomLeft) {
+ left = maxDragDomLeft
+ }
+
+ // if (-(top) > minDragDomTop) {
+ // top = -(minDragDomTop);
+ // } else if (top > maxDragDomTop) {
+ // top = maxDragDomTop + dragDomheight * 0.8;
+ // }
+
+ // 移动当前元素
+ dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`
+ }
+
+ document.onmouseup = function(e) {
+ document.onmousemove = null
+ document.onmouseup = null
+ }
+ }
+ }
+})
+export default dialogDrag
diff --git a/src/directive/loading/index.js b/src/directive/loading/index.js
new file mode 100644
index 0000000..6d28faf
--- /dev/null
+++ b/src/directive/loading/index.js
@@ -0,0 +1,11 @@
+import directive from './src/directive';
+import service from './src/index';
+
+export default {
+ install(Vue) {
+ Vue.use(directive);
+ Vue.prototype.$loading = service;
+ },
+ directive,
+ service
+};
diff --git a/src/directive/loading/src/directive.js b/src/directive/loading/src/directive.js
new file mode 100644
index 0000000..b16b030
--- /dev/null
+++ b/src/directive/loading/src/directive.js
@@ -0,0 +1,133 @@
+import Vue from 'vue';
+import Loading from './loading.vue';
+import { addClass, removeClass, getStyle } from 'element-ui/src/utils/dom';
+import { PopupManager } from 'element-ui/src/utils/popup';
+import afterLeave from 'element-ui/src/utils/after-leave';
+const Mask = Vue.extend(Loading);
+
+const loadingDirective = {};
+loadingDirective.install = Vue => {
+ if (Vue.prototype.$isServer) return;
+ const toggleLoading = (el, binding) => {
+ if (binding.value) {
+ Vue.nextTick(() => {
+ if (binding.modifiers.fullscreen) {
+ el.originalPosition = getStyle(document.body, 'position');
+ el.originalOverflow = getStyle(document.body, 'overflow');
+ el.maskStyle.zIndex = PopupManager.nextZIndex();
+
+ addClass(el.mask, 'is-fullscreen');
+ insertDom(document.body, el, binding);
+ } else {
+ removeClass(el.mask, 'is-fullscreen');
+
+ if (binding.modifiers.body) {
+ el.originalPosition = getStyle(document.body, 'position');
+
+ ['top', 'left'].forEach(property => {
+ const scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
+ el.maskStyle[property] = el.getBoundingClientRect()[property] +
+ document.body[scroll] +
+ document.documentElement[scroll] -
+ parseInt(getStyle(document.body, `margin-${ property }`), 10) +
+ 'px';
+ });
+ ['height', 'width'].forEach(property => {
+ el.maskStyle[property] = el.getBoundingClientRect()[property] + 'px';
+ });
+
+ insertDom(document.body, el, binding);
+ } else {
+ el.originalPosition = getStyle(el, 'position');
+ insertDom(el, el, binding);
+ }
+ }
+ });
+ } else {
+ afterLeave(el.instance, _ => {
+ if (!el.instance.hiding) return;
+ el.domVisible = false;
+ const target = binding.modifiers.fullscreen || binding.modifiers.body
+ ? document.body
+ : el;
+ removeClass(target, 'el-loading-parent--relative');
+ removeClass(target, 'el-loading-parent--hidden');
+ el.instance.hiding = false;
+ }, 300, true);
+ el.instance.visible = false;
+ el.instance.hiding = true;
+ }
+ };
+ const insertDom = (parent, el, binding) => {
+ if (!el.domVisible && getStyle(el, 'display') !== 'none' && getStyle(el, 'visibility') !== 'hidden') {
+ Object.keys(el.maskStyle).forEach(property => {
+ el.mask.style[property] = el.maskStyle[property];
+ });
+
+ if (el.originalPosition !== 'absolute' && el.originalPosition !== 'fixed') {
+ addClass(parent, 'el-loading-parent--relative');
+ }
+ if (binding.modifiers.fullscreen && binding.modifiers.lock) {
+ addClass(parent, 'el-loading-parent--hidden');
+ }
+ el.domVisible = true;
+
+ parent.appendChild(el.mask);
+ Vue.nextTick(() => {
+ if (el.instance.hiding) {
+ el.instance.$emit('after-leave');
+ } else {
+ el.instance.visible = true;
+ }
+ });
+ el.domInserted = true;
+ } else if (el.domVisible && el.instance.hiding === true) {
+ el.instance.visible = true;
+ el.instance.hiding = false;
+ }
+ };
+
+ Vue.directive('loading', {
+ bind: function(el, binding, vnode) {
+ const textExr = el.getAttribute('element-loading-text');
+ const spinnerExr = el.getAttribute('element-loading-spinner');
+ const backgroundExr = el.getAttribute('element-loading-background');
+ const customClassExr = el.getAttribute('element-loading-custom-class');
+ const vm = vnode.context;
+ const mask = new Mask({
+ el: document.createElement('div'),
+ data: {
+ text: '拼命加载中',
+ spinner: 'el-icon-loading',
+ background: 'rgb(0, 0, 0, .3)',
+ customClass: vm && vm[customClassExr] || customClassExr,
+ fullscreen: !!binding.modifiers.fullscreen
+ }
+ });
+ el.instance = mask;
+ el.mask = mask.$el;
+ el.maskStyle = {};
+
+ binding.value && toggleLoading(el, binding);
+ },
+
+ update: function(el, binding) {
+ el.instance.setText(el.getAttribute('element-loading-text'));
+ if (binding.oldValue !== binding.value) {
+ toggleLoading(el, binding);
+ }
+ },
+
+ unbind: function(el, binding) {
+ if (el.domInserted) {
+ el.mask &&
+ el.mask.parentNode &&
+ el.mask.parentNode.removeChild(el.mask);
+ toggleLoading(el, { value: false, modifiers: binding.modifiers });
+ }
+ el.instance && el.instance.$destroy();
+ }
+ });
+};
+
+export default loadingDirective;
diff --git a/src/directive/loading/src/index.js b/src/directive/loading/src/index.js
new file mode 100644
index 0000000..a89c8b3
--- /dev/null
+++ b/src/directive/loading/src/index.js
@@ -0,0 +1,110 @@
+import Vue from 'vue';
+import loadingVue from './loading.vue';
+import { addClass, removeClass, getStyle } from 'element-ui/src/utils/dom';
+import { PopupManager } from 'element-ui/src/utils/popup';
+import afterLeave from 'element-ui/src/utils/after-leave';
+import merge from 'element-ui/src/utils/merge';
+
+const LoadingConstructor = Vue.extend(loadingVue);
+
+const defaults = {
+ text: '拼命加载中',
+ spinner: 'el-icon-loading',
+ background: 'rgb(0, 0, 0, .3)',
+ fullscreen: true,
+ body: false,
+ lock: false,
+ customClass: ''
+};
+
+let fullscreenLoading;
+
+LoadingConstructor.prototype.originalPosition = '';
+LoadingConstructor.prototype.originalOverflow = '';
+
+LoadingConstructor.prototype.close = function() {
+ if (this.fullscreen) {
+ fullscreenLoading = undefined;
+ }
+ afterLeave(this, _ => {
+ const target = this.fullscreen || this.body
+ ? document.body
+ : this.target;
+ removeClass(target, 'el-loading-parent--relative');
+ removeClass(target, 'el-loading-parent--hidden');
+ if (this.$el && this.$el.parentNode) {
+ this.$el.parentNode.removeChild(this.$el);
+ }
+ this.$destroy();
+ }, 300);
+ this.visible = false;
+};
+
+const addStyle = (options, parent, instance) => {
+ let maskStyle = {};
+ if (options.fullscreen) {
+ instance.originalPosition = getStyle(document.body, 'position');
+ instance.originalOverflow = getStyle(document.body, 'overflow');
+ maskStyle.zIndex = PopupManager.nextZIndex();
+ } else if (options.body) {
+ instance.originalPosition = getStyle(document.body, 'position');
+ ['top', 'left'].forEach(property => {
+ let scroll = property === 'top' ? 'scrollTop' : 'scrollLeft';
+ maskStyle[property] = options.target.getBoundingClientRect()[property] +
+ document.body[scroll] +
+ document.documentElement[scroll] +
+ 'px';
+ });
+ ['height', 'width'].forEach(property => {
+ maskStyle[property] = options.target.getBoundingClientRect()[property] + 'px';
+ });
+ } else {
+ instance.originalPosition = getStyle(parent, 'position');
+ }
+ Object.keys(maskStyle).forEach(property => {
+ instance.$el.style[property] = maskStyle[property];
+ });
+};
+
+const Loading = (options = {}) => {
+ if (Vue.prototype.$isServer) return;
+ options = merge({}, defaults, {text: '拼命加载中',
+ spinner: 'el-icon-loading',
+ background: 'rgb(0, 0, 0, .3)',});
+ if (typeof options.target === 'string') {
+ options.target = document.querySelector(options.target);
+ }
+ options.target = options.target || document.body;
+ if (options.target !== document.body) {
+ options.fullscreen = false;
+ } else {
+ options.body = true;
+ }
+ if (options.fullscreen && fullscreenLoading) {
+ return fullscreenLoading;
+ }
+
+ let parent = options.body ? document.body : options.target;
+ let instance = new LoadingConstructor({
+ el: document.createElement('div'),
+ data: options
+ });
+
+ addStyle(options, parent, instance);
+ if (instance.originalPosition !== 'absolute' && instance.originalPosition !== 'fixed') {
+ addClass(parent, 'el-loading-parent--relative');
+ }
+ if (options.fullscreen && options.lock) {
+ addClass(parent, 'el-loading-parent--hidden');
+ }
+ parent.appendChild(instance.$el);
+ Vue.nextTick(() => {
+ instance.visible = true;
+ });
+ if (options.fullscreen) {
+ fullscreenLoading = instance;
+ }
+ return instance;
+};
+
+export default Loading;
diff --git a/src/directive/loading/src/loading.vue b/src/directive/loading/src/loading.vue
new file mode 100644
index 0000000..c56e566
--- /dev/null
+++ b/src/directive/loading/src/loading.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
diff --git a/src/directive/permission/hasPermi.js b/src/directive/permission/hasPermi.js
new file mode 100644
index 0000000..058df33
--- /dev/null
+++ b/src/directive/permission/hasPermi.js
@@ -0,0 +1,22 @@
+import store from '@/store'
+
+export default {
+ inserted(el, binding, vnode) {
+ const { value } = binding
+ const all_permission = '*:*:*'
+ const permissions = store.getters && store.getters.permissions
+ if (value && value instanceof Array && value.length > 0) {
+ const permissionFlag = value
+
+ const hasPermissions = permissions.some(permission => {
+ return all_permission === permission || permissionFlag.includes(permission)
+ })
+
+ if (!hasPermissions) {
+ el.parentNode && el.parentNode.removeChild(el)
+ }
+ } else {
+ throw new Error(`请设置操作权限标签值`)
+ }
+ }
+}
diff --git a/src/directive/permission/hasRole.js b/src/directive/permission/hasRole.js
new file mode 100644
index 0000000..3ed4810
--- /dev/null
+++ b/src/directive/permission/hasRole.js
@@ -0,0 +1,23 @@
+import store from '@/store'
+
+export default {
+ inserted(el, binding, vnode) {
+ const { value } = binding
+ const super_admin = 'admin'
+ const roles = store.getters && store.getters.roles
+
+ if (value && value instanceof Array && value.length > 0) {
+ const roleFlag = value
+
+ const hasRole = roles.some(role => {
+ return super_admin === role || roleFlag.includes(role)
+ })
+
+ if (!hasRole) {
+ el.parentNode && el.parentNode.removeChild(el)
+ }
+ } else {
+ throw new Error(`请设置角色权限标签值"`)
+ }
+ }
+}
diff --git a/src/directive/permission/index.js b/src/directive/permission/index.js
new file mode 100644
index 0000000..e3d76d3
--- /dev/null
+++ b/src/directive/permission/index.js
@@ -0,0 +1,15 @@
+import hasRole from './hasRole'
+import hasPermi from './hasPermi'
+
+const install = function(Vue) {
+ Vue.directive('hasRole', hasRole)
+ Vue.directive('hasPermi', hasPermi)
+}
+
+if (window.Vue) {
+ window['hasRole'] = hasRole
+ window['hasPermi'] = hasPermi
+ Vue.use(install); // eslint-disable-line
+}
+
+export default install
diff --git a/src/icons/index.js b/src/icons/index.js
new file mode 100644
index 0000000..6e39ed0
--- /dev/null
+++ b/src/icons/index.js
@@ -0,0 +1,10 @@
+import Vue from 'vue'
+import SvgIcon from '@/components/SvgIcon'// svg component
+
+// register globally
+Vue.component('svg-icon', SvgIcon)
+
+// eslint-disable-next-line no-undef
+const req = require.context('./svg', false, /\.svg$/)
+const requireAll = requireContext => requireContext.keys().map(requireContext)
+requireAll(req)
diff --git a/src/icons/svg/404.svg b/src/icons/svg/404.svg
new file mode 100644
index 0000000..6df5019
--- /dev/null
+++ b/src/icons/svg/404.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/admin.svg b/src/icons/svg/admin.svg
new file mode 100644
index 0000000..c53cf18
--- /dev/null
+++ b/src/icons/svg/admin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/angle.svg b/src/icons/svg/angle.svg
new file mode 100644
index 0000000..055309c
--- /dev/null
+++ b/src/icons/svg/angle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/arrow.svg b/src/icons/svg/arrow.svg
new file mode 100644
index 0000000..c5192b1
--- /dev/null
+++ b/src/icons/svg/arrow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/bidirection.svg b/src/icons/svg/bidirection.svg
new file mode 100644
index 0000000..290623e
--- /dev/null
+++ b/src/icons/svg/bidirection.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/bug.svg b/src/icons/svg/bug.svg
new file mode 100644
index 0000000..05a150d
--- /dev/null
+++ b/src/icons/svg/bug.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/build.svg b/src/icons/svg/build.svg
new file mode 100644
index 0000000..97c4688
--- /dev/null
+++ b/src/icons/svg/build.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/chart.svg b/src/icons/svg/chart.svg
new file mode 100644
index 0000000..27728fb
--- /dev/null
+++ b/src/icons/svg/chart.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/clear.svg b/src/icons/svg/clear.svg
new file mode 100644
index 0000000..3d09e94
--- /dev/null
+++ b/src/icons/svg/clear.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/clipboard.svg b/src/icons/svg/clipboard.svg
new file mode 100644
index 0000000..90923ff
--- /dev/null
+++ b/src/icons/svg/clipboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/close.svg b/src/icons/svg/close.svg
new file mode 100644
index 0000000..6ca52cf
--- /dev/null
+++ b/src/icons/svg/close.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/cobb.svg b/src/icons/svg/cobb.svg
new file mode 100644
index 0000000..0c94154
--- /dev/null
+++ b/src/icons/svg/cobb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/component.svg b/src/icons/svg/component.svg
new file mode 100644
index 0000000..207ada3
--- /dev/null
+++ b/src/icons/svg/component.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/dClose.svg b/src/icons/svg/dClose.svg
new file mode 100644
index 0000000..a31ee1e
--- /dev/null
+++ b/src/icons/svg/dClose.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/dashboard.svg b/src/icons/svg/dashboard.svg
new file mode 100644
index 0000000..5317d37
--- /dev/null
+++ b/src/icons/svg/dashboard.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/date.svg b/src/icons/svg/date.svg
new file mode 100644
index 0000000..2a28112
--- /dev/null
+++ b/src/icons/svg/date.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/dict.svg b/src/icons/svg/dict.svg
new file mode 100644
index 0000000..4849377
--- /dev/null
+++ b/src/icons/svg/dict.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/dictionary.svg b/src/icons/svg/dictionary.svg
new file mode 100644
index 0000000..e4ca111
--- /dev/null
+++ b/src/icons/svg/dictionary.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/documentation.svg b/src/icons/svg/documentation.svg
new file mode 100644
index 0000000..7043122
--- /dev/null
+++ b/src/icons/svg/documentation.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/download.svg b/src/icons/svg/download.svg
new file mode 100644
index 0000000..c896951
--- /dev/null
+++ b/src/icons/svg/download.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/drag.svg b/src/icons/svg/drag.svg
new file mode 100644
index 0000000..4185d3c
--- /dev/null
+++ b/src/icons/svg/drag.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/druid.svg b/src/icons/svg/druid.svg
new file mode 100644
index 0000000..a2b4b4e
--- /dev/null
+++ b/src/icons/svg/druid.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/edit.svg b/src/icons/svg/edit.svg
new file mode 100644
index 0000000..d26101f
--- /dev/null
+++ b/src/icons/svg/edit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/education.svg b/src/icons/svg/education.svg
new file mode 100644
index 0000000..7bfb01d
--- /dev/null
+++ b/src/icons/svg/education.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/email.svg b/src/icons/svg/email.svg
new file mode 100644
index 0000000..74d25e2
--- /dev/null
+++ b/src/icons/svg/email.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/example.svg b/src/icons/svg/example.svg
new file mode 100644
index 0000000..46f42b5
--- /dev/null
+++ b/src/icons/svg/example.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/excel.svg b/src/icons/svg/excel.svg
new file mode 100644
index 0000000..74d97b8
--- /dev/null
+++ b/src/icons/svg/excel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/exit-fullscreen.svg b/src/icons/svg/exit-fullscreen.svg
new file mode 100644
index 0000000..485c128
--- /dev/null
+++ b/src/icons/svg/exit-fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/eye-open.svg b/src/icons/svg/eye-open.svg
new file mode 100644
index 0000000..88dcc98
--- /dev/null
+++ b/src/icons/svg/eye-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/eye.svg b/src/icons/svg/eye.svg
new file mode 100644
index 0000000..16ed2d8
--- /dev/null
+++ b/src/icons/svg/eye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/financials.svg b/src/icons/svg/financials.svg
new file mode 100644
index 0000000..7fc420b
--- /dev/null
+++ b/src/icons/svg/financials.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/firstframe.svg b/src/icons/svg/firstframe.svg
new file mode 100644
index 0000000..dcb0289
--- /dev/null
+++ b/src/icons/svg/firstframe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/fitToImage.svg b/src/icons/svg/fitToImage.svg
new file mode 100644
index 0000000..3bf71f3
--- /dev/null
+++ b/src/icons/svg/fitToImage.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/fitToWindow.svg b/src/icons/svg/fitToWindow.svg
new file mode 100644
index 0000000..cd26c61
--- /dev/null
+++ b/src/icons/svg/fitToWindow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/form.svg b/src/icons/svg/form.svg
new file mode 100644
index 0000000..dcbaa18
--- /dev/null
+++ b/src/icons/svg/form.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/fullscreen.svg b/src/icons/svg/fullscreen.svg
new file mode 100644
index 0000000..0e86b6f
--- /dev/null
+++ b/src/icons/svg/fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/fusion.svg b/src/icons/svg/fusion.svg
new file mode 100644
index 0000000..e20f585
--- /dev/null
+++ b/src/icons/svg/fusion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/guide.svg b/src/icons/svg/guide.svg
new file mode 100644
index 0000000..b271001
--- /dev/null
+++ b/src/icons/svg/guide.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/hidden.svg b/src/icons/svg/hidden.svg
new file mode 100644
index 0000000..a19a56f
--- /dev/null
+++ b/src/icons/svg/hidden.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/highlight.svg b/src/icons/svg/highlight.svg
new file mode 100644
index 0000000..b1cae6b
--- /dev/null
+++ b/src/icons/svg/highlight.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/icon.svg b/src/icons/svg/icon.svg
new file mode 100644
index 0000000..82be8ee
--- /dev/null
+++ b/src/icons/svg/icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/image.svg b/src/icons/svg/image.svg
new file mode 100644
index 0000000..cddc508
--- /dev/null
+++ b/src/icons/svg/image.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/international.svg b/src/icons/svg/international.svg
new file mode 100644
index 0000000..e9b56ee
--- /dev/null
+++ b/src/icons/svg/international.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/job.svg b/src/icons/svg/job.svg
new file mode 100644
index 0000000..2a93a25
--- /dev/null
+++ b/src/icons/svg/job.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/label.svg b/src/icons/svg/label.svg
new file mode 100644
index 0000000..1c9104d
--- /dev/null
+++ b/src/icons/svg/label.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/language.svg b/src/icons/svg/language.svg
new file mode 100644
index 0000000..0082b57
--- /dev/null
+++ b/src/icons/svg/language.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/lastframe.svg b/src/icons/svg/lastframe.svg
new file mode 100644
index 0000000..f04d188
--- /dev/null
+++ b/src/icons/svg/lastframe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/layout.svg b/src/icons/svg/layout.svg
new file mode 100644
index 0000000..a3b03dc
--- /dev/null
+++ b/src/icons/svg/layout.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/length.svg b/src/icons/svg/length.svg
new file mode 100644
index 0000000..de58131
--- /dev/null
+++ b/src/icons/svg/length.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/link.svg b/src/icons/svg/link.svg
new file mode 100644
index 0000000..48197ba
--- /dev/null
+++ b/src/icons/svg/link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/list.svg b/src/icons/svg/list.svg
new file mode 100644
index 0000000..20259ed
--- /dev/null
+++ b/src/icons/svg/list.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/lock.svg b/src/icons/svg/lock.svg
new file mode 100644
index 0000000..74fee54
--- /dev/null
+++ b/src/icons/svg/lock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/log.svg b/src/icons/svg/log.svg
new file mode 100644
index 0000000..d879d33
--- /dev/null
+++ b/src/icons/svg/log.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/logininfor.svg b/src/icons/svg/logininfor.svg
new file mode 100644
index 0000000..267f844
--- /dev/null
+++ b/src/icons/svg/logininfor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/magnifier.svg b/src/icons/svg/magnifier.svg
new file mode 100644
index 0000000..e26033a
--- /dev/null
+++ b/src/icons/svg/magnifier.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/message.svg b/src/icons/svg/message.svg
new file mode 100644
index 0000000..14ca817
--- /dev/null
+++ b/src/icons/svg/message.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/money.svg b/src/icons/svg/money.svg
new file mode 100644
index 0000000..c1580de
--- /dev/null
+++ b/src/icons/svg/money.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/monitor.svg b/src/icons/svg/monitor.svg
new file mode 100644
index 0000000..bc308cb
--- /dev/null
+++ b/src/icons/svg/monitor.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/more.svg b/src/icons/svg/more.svg
new file mode 100644
index 0000000..ca3a35a
--- /dev/null
+++ b/src/icons/svg/more.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/move.svg b/src/icons/svg/move.svg
new file mode 100644
index 0000000..a19fc0c
--- /dev/null
+++ b/src/icons/svg/move.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/multiframe.svg b/src/icons/svg/multiframe.svg
new file mode 100644
index 0000000..115f148
--- /dev/null
+++ b/src/icons/svg/multiframe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/nested.svg b/src/icons/svg/nested.svg
new file mode 100644
index 0000000..06713a8
--- /dev/null
+++ b/src/icons/svg/nested.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/nextframe.svg b/src/icons/svg/nextframe.svg
new file mode 100644
index 0000000..c950f5f
--- /dev/null
+++ b/src/icons/svg/nextframe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/online.svg b/src/icons/svg/online.svg
new file mode 100644
index 0000000..330a202
--- /dev/null
+++ b/src/icons/svg/online.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/oval.svg b/src/icons/svg/oval.svg
new file mode 100644
index 0000000..4cbcf68
--- /dev/null
+++ b/src/icons/svg/oval.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/password.svg b/src/icons/svg/password.svg
new file mode 100644
index 0000000..e291d85
--- /dev/null
+++ b/src/icons/svg/password.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/pdf.svg b/src/icons/svg/pdf.svg
new file mode 100644
index 0000000..957aa0c
--- /dev/null
+++ b/src/icons/svg/pdf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/people.svg b/src/icons/svg/people.svg
new file mode 100644
index 0000000..2bd54ae
--- /dev/null
+++ b/src/icons/svg/people.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/peoples.svg b/src/icons/svg/peoples.svg
new file mode 100644
index 0000000..aab852e
--- /dev/null
+++ b/src/icons/svg/peoples.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/phone.svg b/src/icons/svg/phone.svg
new file mode 100644
index 0000000..ab8e8c4
--- /dev/null
+++ b/src/icons/svg/phone.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/pixel.svg b/src/icons/svg/pixel.svg
new file mode 100644
index 0000000..10f2fad
--- /dev/null
+++ b/src/icons/svg/pixel.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/play.svg b/src/icons/svg/play.svg
new file mode 100644
index 0000000..e5625f3
--- /dev/null
+++ b/src/icons/svg/play.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/polygon.svg b/src/icons/svg/polygon.svg
new file mode 100644
index 0000000..4784792
--- /dev/null
+++ b/src/icons/svg/polygon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/post.svg b/src/icons/svg/post.svg
new file mode 100644
index 0000000..2922c61
--- /dev/null
+++ b/src/icons/svg/post.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/previousframe.svg b/src/icons/svg/previousframe.svg
new file mode 100644
index 0000000..3cb5f47
--- /dev/null
+++ b/src/icons/svg/previousframe.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/qq.svg b/src/icons/svg/qq.svg
new file mode 100644
index 0000000..ee13d4e
--- /dev/null
+++ b/src/icons/svg/qq.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/rectangle.svg b/src/icons/svg/rectangle.svg
new file mode 100644
index 0000000..2ffeeb2
--- /dev/null
+++ b/src/icons/svg/rectangle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/refresh.svg b/src/icons/svg/refresh.svg
new file mode 100644
index 0000000..631fb49
--- /dev/null
+++ b/src/icons/svg/refresh.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/reverse.svg b/src/icons/svg/reverse.svg
new file mode 100644
index 0000000..d944532
--- /dev/null
+++ b/src/icons/svg/reverse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/reversecolor.svg b/src/icons/svg/reversecolor.svg
new file mode 100644
index 0000000..126d9c0
--- /dev/null
+++ b/src/icons/svg/reversecolor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/rotate.svg b/src/icons/svg/rotate.svg
new file mode 100644
index 0000000..d6c1e13
--- /dev/null
+++ b/src/icons/svg/rotate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/row.svg b/src/icons/svg/row.svg
new file mode 100644
index 0000000..0780992
--- /dev/null
+++ b/src/icons/svg/row.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/search.svg b/src/icons/svg/search.svg
new file mode 100644
index 0000000..84233dd
--- /dev/null
+++ b/src/icons/svg/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/server.svg b/src/icons/svg/server.svg
new file mode 100644
index 0000000..ca37b00
--- /dev/null
+++ b/src/icons/svg/server.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/shopping.svg b/src/icons/svg/shopping.svg
new file mode 100644
index 0000000..87513e7
--- /dev/null
+++ b/src/icons/svg/shopping.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/show.svg b/src/icons/svg/show.svg
new file mode 100644
index 0000000..7198b65
--- /dev/null
+++ b/src/icons/svg/show.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/size.svg b/src/icons/svg/size.svg
new file mode 100644
index 0000000..ddb25b8
--- /dev/null
+++ b/src/icons/svg/size.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/skill.svg b/src/icons/svg/skill.svg
new file mode 100644
index 0000000..a3b7312
--- /dev/null
+++ b/src/icons/svg/skill.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/speaker.svg b/src/icons/svg/speaker.svg
new file mode 100644
index 0000000..456624f
--- /dev/null
+++ b/src/icons/svg/speaker.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/spin.svg b/src/icons/svg/spin.svg
new file mode 100644
index 0000000..6c44034
--- /dev/null
+++ b/src/icons/svg/spin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/star.svg b/src/icons/svg/star.svg
new file mode 100644
index 0000000..6cf86e6
--- /dev/null
+++ b/src/icons/svg/star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/statistics.svg b/src/icons/svg/statistics.svg
new file mode 100644
index 0000000..2190e6d
--- /dev/null
+++ b/src/icons/svg/statistics.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/stop.svg b/src/icons/svg/stop.svg
new file mode 100644
index 0000000..eeb20cc
--- /dev/null
+++ b/src/icons/svg/stop.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/swagger.svg b/src/icons/svg/swagger.svg
new file mode 100644
index 0000000..05d4e7b
--- /dev/null
+++ b/src/icons/svg/swagger.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/system.svg b/src/icons/svg/system.svg
new file mode 100644
index 0000000..dba28cf
--- /dev/null
+++ b/src/icons/svg/system.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/tab.svg b/src/icons/svg/tab.svg
new file mode 100644
index 0000000..b4b48e4
--- /dev/null
+++ b/src/icons/svg/tab.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/table.svg b/src/icons/svg/table.svg
new file mode 100644
index 0000000..0e3dc9d
--- /dev/null
+++ b/src/icons/svg/table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/theme.svg b/src/icons/svg/theme.svg
new file mode 100644
index 0000000..5982a2f
--- /dev/null
+++ b/src/icons/svg/theme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/tool.svg b/src/icons/svg/tool.svg
new file mode 100644
index 0000000..d684718
--- /dev/null
+++ b/src/icons/svg/tool.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/tree-table.svg b/src/icons/svg/tree-table.svg
new file mode 100644
index 0000000..8aafdb8
--- /dev/null
+++ b/src/icons/svg/tree-table.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/tree.svg b/src/icons/svg/tree.svg
new file mode 100644
index 0000000..dd4b7dd
--- /dev/null
+++ b/src/icons/svg/tree.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/trial.svg b/src/icons/svg/trial.svg
new file mode 100644
index 0000000..a0fc89c
--- /dev/null
+++ b/src/icons/svg/trial.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/user.svg b/src/icons/svg/user.svg
new file mode 100644
index 0000000..0ba0716
--- /dev/null
+++ b/src/icons/svg/user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/validCode.svg b/src/icons/svg/validCode.svg
new file mode 100644
index 0000000..cfb1021
--- /dev/null
+++ b/src/icons/svg/validCode.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/view.svg b/src/icons/svg/view.svg
new file mode 100644
index 0000000..ad7308c
--- /dev/null
+++ b/src/icons/svg/view.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/wechat.svg b/src/icons/svg/wechat.svg
new file mode 100644
index 0000000..c586e55
--- /dev/null
+++ b/src/icons/svg/wechat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/wwwcRegion.svg b/src/icons/svg/wwwcRegion.svg
new file mode 100644
index 0000000..decb351
--- /dev/null
+++ b/src/icons/svg/wwwcRegion.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/zip.svg b/src/icons/svg/zip.svg
new file mode 100644
index 0000000..f806fc4
--- /dev/null
+++ b/src/icons/svg/zip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svg/zoom.svg b/src/icons/svg/zoom.svg
new file mode 100644
index 0000000..183cde4
--- /dev/null
+++ b/src/icons/svg/zoom.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/icons/svgo.yml b/src/icons/svgo.yml
new file mode 100644
index 0000000..d11906a
--- /dev/null
+++ b/src/icons/svgo.yml
@@ -0,0 +1,22 @@
+# replace default config
+
+# multipass: true
+# full: true
+
+plugins:
+
+ # - name
+ #
+ # or:
+ # - name: false
+ # - name: true
+ #
+ # or:
+ # - name:
+ # param1: 1
+ # param2: 2
+
+- removeAttrs:
+ attrs:
+ - 'fill'
+ - 'fill-rule'
diff --git a/src/lang/en.js b/src/lang/en.js
new file mode 100644
index 0000000..49709f3
--- /dev/null
+++ b/src/lang/en.js
@@ -0,0 +1,2320 @@
+/* eslint-disable */
+export default {
+ 'common:button:search': `Search`,
+ 'common:button:reset': `Reset`,
+ 'common:button:save': `Save`,
+ 'common:button:cancel': `Cancel`,
+ 'common:button:new': `New`,
+ 'common:button:add': `Add`,
+ 'common:button:edit': `Edit`,
+ 'common:button:delete': `Delete`,
+ 'common:button:remove': `Remove`,
+ 'common:button:sign': `Sign`,
+ 'common:button:export': `Export`,
+ 'common:button:submit': `Submit`,
+ 'common:button:download': `Download`,
+ 'common:button:confirm': `Confirm`,
+ 'common:button:close': `Close`,
+ 'common:button:batchDelete': `Batch Delete`,
+ 'common:button:preview': `Preview`,
+ 'common:action:action': `Action`,
+ 'common:ruleMessage:specify': `Please specify!`,
+ 'common:ruleMessage:select': `Please select!`,
+ 'common:ruleMessage:maxLength': `The maximum length is`,
+ 'common:message:savedSuccessfully': `Saved successfully!`,
+ 'common:message:deletedSuccessfully': `Deleted successfully!`,
+ 'common:message:removedSuccessfully': `Removed successfully!`,
+ 'common:message:addedSuccessfully': `Added successfully!`,
+ 'common:message:updatedSuccessfully': `Updated successfully!`,
+ 'common:message:signSuccessfully': `Signed successfully!`,
+ 'common:message:signTip': `Please read the document carefully before signing.`,
+ 'common:dialogTitle:sign': `Sign`,
+ 'common:label:sign': `Current User ID:`,
+ 'common:form:sign:userName': `User ID`,
+ 'common:form:sign:password': `Password`,
+ 'common:message:signWarning': `Incorrect user ID!`,
+ 'common:message:downloadFile': `This file cannot be previewed online.`,
+ 'common:placeholder:selectorsearch': `Select or Search`,
+ 'common:placeholder:select': `Select`,
+ 'common:title:languageType': `Language`,
+ 'common:title:error': `Error`,
+ 'common:title:goHome': `Return`,
+ 'trials:trials-list:table:trialId': `Trial ID`,
+ 'trials:trials-list:table:experimentName': `Study Name`,
+ 'trials:trials-list:table:researchNumber': `Protocol ID`,
+ 'trials:trials-list:table:sponsor': `Sponsor`,
+ 'trials:trials-list:table:isDeleted': `Confirm to delete?`,
+ 'trials:trials-list:table:status': `Status`,
+ 'trials:trials-list:table:createDate': `Date Created`,
+ 'trials:trials-list:table:ExpetiedTaskCount': `Expedited`,
+ 'trials:trials-list:table:ReReadingApprovalCount': `Re-Read Approval`,
+ 'trials:trials-list:table:PendingReconciliationCount': `Pending Reconciliation`,
+ 'trials:trials-list:table:PendingResponseCount': `Pending Response`,
+ 'trials:trials-list:action:panel': `Details`,
+ 'trials:trials-list:action:edit': `Edit`,
+ 'trials:trials-list:action:status': `Status`,
+ 'trials:trials-list:action:abolition': `Delete`,
+ 'trials:trials-list:dialogTitle:new': `New`,
+ 'trials:trials-list:dialogTitle:edit': `Edit`,
+ 'trials:trials-list:dialogTitle:doneTitle': `Pending Details`,
+ 'trials:trials-list:PendingDetails:Role': `Role`,
+ 'trials:trials-list:PendingDetails:UserID': `User ID`,
+ 'trials:trials-list:PendingDetails:ReviewerSelection': `Reviewer Selection`,
+ 'trials:trials-list:PendingDetails:ReviewerApproval': `Reviewer Approval`,
+ 'trials:trials-list:PendingDetails:ReviewerConfirm': `Reviewer Confirm`,
+ 'trials:trials-list:PendingDetails:ImageUpload': `Image Upload`,
+ 'trials:trials-list:PendingDetails:ImageReUpload': `Image Re-Upload`,
+ 'trials:trials-list:PendingDetails:ExpeditedImageSubmission': `Expedited Image Submission`,
+ 'trials:trials-list:PendingDetails:QC': `QC`,
+ 'trials:trials-list:PendingDetails:PendingClaim': `Pending Claim`,
+ 'trials:trials-list:PendingDetails:Unfinished': `Unfinished`,
+ 'trials:trials-list:PendingDetails:QueryPendingIQC to-do': `Query Pending IQC to-do`,
+ 'trials:trials-list:PendingDetails:QueryPendingCRCto-do': `Query Pending CRC to-do`,
+ 'trials:trials-list:PendingDetails:DateReconciliation': `Date Reconciliation`,
+ 'trials:trials-list:PendingDetails:PendingCRCto-do': `Pending CRC to-do`,
+ 'trials:trials-list:PendingDetails:PendingPMto-do': `Pending PM to-do`,
+ 'trials:trials-list:PendingDetails:Reads': `Reads`,
+ 'trials:trials-list:PendingDetails:PendingRead': `Pending Read`,
+ 'trials:trials-list:PendingDetails:Re-ReadApproval': `Re-Read Approval`,
+ 'trials:trials-list:PendingDetails:MedicalReview': `Medical Review`,
+ 'trials:trials-list:PendingDetails:PedingReview': `Peding Review`,
+ 'trials:trials-list:PendingDetails:PendingMIMto-do': `Pending MIM to-do`,
+ 'trials:trials-list:PendingDetails:PendingIRResponse': `Pending IR Response`,
+ 'trials:trials-list:form:trialId': `Trial ID`,
+ 'trials:trials-list:form:trialType': `Trial Type`,
+ 'trials:trials-list:form:experimentName': `Study Name`,
+ 'trials:trials-list:form:researchNumber': `Protocol ID`,
+ 'trials:trials-list:form:researchUnit': `Leading Study Site`,
+ 'trials:trials-list:form:pi': `Principal Investigator`,
+ 'trials:trials-list:form:sponsor': `Sponsor`,
+ 'trials:trials-list:form:cro': `CRO`,
+ 'trials:trials-list:form:declarationType': `Type of Application`,
+ 'trials:trials-list:form:phase': `Phase`,
+ 'trials:trials-list:form:indicationType': `Type of Indication`,
+ 'trials:trials-list:form:indication': `Indication`,
+ 'trials:trials-list:form:siteCount': `No. of Sites`,
+ 'trials:trials-list:form:visitCount': `Total Visits`,
+ 'trials:trials-list:form:patientsNum': `No. of Subjects`,
+ 'trials:trials-list:form:timePointsPerPatient': `Avg No. of Visits Per Subject`,
+ 'trials:trials-list:form:modality': `Modality`,
+ 'trials:trials-list:form:criterion': `Review Criteria`,
+ 'trials:trials-list:form:reviewType': `Review Type`,
+ 'trials:trials-list:form:reviewMode': `Read Mode`,
+ 'trials:trials-list:form:expedited': `Real-time Reading`,
+ 'trials:trials-list:form:projectCycle': `Trial Period (month)`,
+ 'trials:trials-list:form:totalReviewers': `No. of Reviewers`,
+ 'trials:trials-list:form:typeofReviewers': `Type of Reviewers`,
+ 'trials:trials-list:form:save': `Save`,
+ 'trials:trials-list:form:cancel': `Cancel`,
+ 'trials:trials-list:message:addedSuccessfully': `Added successfully!`,
+ 'trials:trials-list:message:updatedSuccessfully': `Updated successfully!`,
+ 'trials:trials-list:message:abolition': `Confirm to delete?`,
+ 'trials:trials-list:message:abolitionSuccessfully': `Deleted successfully!`,
+ 'trials:trials-list:button:abolitionCancel': `Cancel`,
+ 'trials:trials-list:button:abolitionConfirm': `Confirm`,
+ 'trials:trials-list:dialogTitle:changeStatus': `Change of Trial Status`,
+ 'trials:trials-list:label:reason': `Reason`,
+ 'trials:trials-list:button:changeStatusCancel': `Cancel`,
+ 'trials:trials-list:button:changeStatusConfirm': `Confirm`,
+ 'trials:trials-list:message:changeStatusMes1': `Once the trial status changes to Ongoing, certain configurations cannot be modified anymore.`,
+ 'trials:trials-list:message:changeStatusMes2': `Data cannot be modified if a trial is completed! `,
+ 'trials:trials-list:message:changeStatusMes3': `Data cannot be modified if a trial is paused! `,
+ 'trials:tab:recordsManage': `Sign & Approve`,
+ 'trials:tab:selfAttachment': `Document Signing`,
+ 'trials:self-attachment:table:fileType': `Document Type`,
+ 'trials:self-attachment:table:fileName': `File Name`,
+ 'trials:self-attachment:table:isDeleted': `Revoked`,
+ 'trials:self-attachment:table:uploadTime': `Time Uploaded`,
+ 'trials:self-attachment:table:isSign': `Signed `,
+ 'trials:self-attachment:table:signTime': `Time Signed`,
+ 'trials:self-attachment:action:preview': `Preview`,
+ 'trials:self-attachment:action:sign': `Sign`,
+ 'trials:tab:signRecords': `Signing Records`,
+ 'trials:signRecords:table:fileType': `Document Type`,
+ 'trials:signRecords:table:fileName': `File Name`,
+ 'trials:signRecords:table:fileLevel': `Document Level`,
+ 'trials:signRecords:table:isDeleted': `Revoked`,
+ 'trials:signRecords:table:uploadTime': `Time Uploaded`,
+ 'trials:signRecords:table:isSign': `Signed `,
+ 'trials:signRecords:table:user': `Signed by`,
+ 'trials:signRecords:table:userName': `User ID`,
+ 'trials:signRecords:table:userType': `User Type`,
+ 'trials:signRecords:table:confirmTime': `Time Signed`,
+ 'trials:signRecords:action:preview': `Preview`,
+ 'trials:tab:siteResearch': `Site Survey`,
+ 'trials:researchRecord:button:questionStaffs': `Site Staff`,
+ 'trials:researchRecord:button:questionLink': `Site Survey URL`,
+ 'trials:researchRecord:placeholder:contactorInfo': `Name/Email/Phone`,
+ 'trials:researchRecord:table:siteId': `Site ID`,
+ 'trials:researchRecord:table:siteName': `Site Name`,
+ 'trials:researchRecord:table:contactor': `Contact Person`,
+ 'trials:researchRecord:table:contactorPhone': `Tel`,
+ 'trials:researchRecord:table:contactorEmail': `Email`,
+ 'trials:researchRecord:table:preliminaryUser': `Primary Approver`,
+ 'trials:researchRecord:table:ReviewerUser': `Secondary Approver`,
+ 'trials:researchRecord:table:status': `Questionnaire Status`,
+ 'trials:researchRecord:table:isDeleted': `Revoked`,
+ 'trials:researchRecord:table:updateTime': `Time Updated`,
+ 'trials:researchRecord:action:view': `Examine`,
+ 'trials:researchRecord:action:abolish': `Abolish`,
+ 'trials:researchRecord:dialogTitle:questionStaff': `Site Staff List`,
+ 'trials:researchRecord:dialogButton:sendEmail': `Send Email`,
+ 'trials:researchRecord:message:createLinkSuccessfully': `URL to the site survey questionnaire is generated successfully!`,
+ 'trials:researchRecord:label:link': `URL:`,
+ 'trials:researchRecord:button:copyLink': `Copy the URL`,
+ 'trials:researchRecord:message:abolish': `Confirm to revoke?`,
+ 'trials:researchRecord:message:abolishSuccessfully': `Saved Successfully!`,
+ 'trials:researchRecord:message:researchFormLink': `Site Survey URL`,
+ 'trials:researchRecord:message:copySuccessfully': `Copied Successfully`,
+ 'trials:researchRecord:message:copyFailed': `Copy Failed`,
+ 'trials:researchStaff:table:siteId': `Site ID`,
+ 'trials:researchStaff:table:siteName': `Site Name`,
+ 'trials:researchStaff:table:Name': `Name`,
+ 'trials:researchStaff:table:role': `Role`,
+ 'trials:researchStaff:table:phone': `Tel`,
+ 'trials:researchStaff:table:email': `Email`,
+ 'trials:researchStaff:table:organization': `Affiliation`,
+ 'trials:researchStaff:table:isGenerateAccount': `Create an account?`,
+ 'trials:researchStaff:table:userType': `User Type`,
+ 'trials:researchStaff:table:status': `Status`,
+ 'trials:researchStaff:table:isJoin': `Joined`,
+ 'trials:researchStaff:message:sendEmalil': `The message was sent successfully.`,
+ 'trials:researchForm:title:question': `Site Survey Questionnaire`,
+ 'trials:researchForm:form:trialId': `Trial ID`,
+ 'trials:researchForm:form:researchNo': `Protocol ID`,
+ 'trials:researchForm:form:researchName': `Study Name`,
+ 'trials:researchForm:form:decleareType': `Type of Indication`,
+ 'trials:researchForm:form:siteName': `Site Name`,
+ 'trials:researchForm:form:siteId': `Site ID`,
+ 'trials:researchForm:button:updateQsForm': `Update the Site Checklist`,
+ 'trials:researchForm:button:cancelUpdateQsForm': `Cancel to update the Site Checklist`,
+ 'trials:researchForm:form:originalEmail': `Email address of the Site Checklist Author`,
+ 'trials:researchForm:form:contactorEmail': `Email`,
+ 'trials:researchForm:form:verifyCode': `Verification Code`,
+ 'trials:researchForm:form:contactor': `Contact Person`,
+ 'trials:researchForm:form:contactorPhone': `Tel`,
+ 'trials:researchForm:form:contactorEmail': `Email`,
+ 'trials:researchForm:form:engravingCycle': `Average days to burn DICOM disks`,
+ 'trials:researchForm:form:isQualified': `Please confirm that technologists participating in this trial’s image acquisitions have the required certification & licensure.`,
+ 'trials:researchForm:form:notQualifiedReason': `Reason`,
+ 'trials:researchForm:form:staffType': `Type of physicians for assessments at this trial site`,
+ 'trials:researchForm:form:isFollowStudyParam': `Image acquisitions strictly follow Site Image Manual`,
+ 'trials:researchForm:form:notFollowStudyParam': `Reasons for not strictly following Site Image Manual`,
+ 'trials:researchForm:button:send': `Send`,
+ 'trials:researchForm:button:verifyCode': `Verification Code`,
+ 'trials:researchForm:formRule:phone': `Invalid Tel.`,
+ 'trials:researchForm:formRule:email': `Invalid email address`,
+ 'trials:researchForm:formRule:maxLength': `The maximum length is 50`,
+ 'trials:researchForm:formRule:specify': `Please specify`,
+ 'trials:researchForm:formRule:select': `Please Select`,
+ 'trials:researchForm:button:submit': `Submit`,
+ 'trials:researchForm:button:auditPasses': `Approve`,
+ 'trials:researchForm:button:auditRejected': `Reject`,
+ 'trials:researchForm:dialogTitle:reject': `Reject`,
+ 'trials:researchForm:form:rejectReson': `Reason for Rejection`,
+ 'trials:researchForm:message:saveWarning': `There must be one personnel record or modality record at least.`,
+ 'trials:researchForm:message:submitWarning': `Confirm to submit?`,
+ 'trials:researchForm:message:auditWarning': `Confirm to approve?`,
+ 'trials:researchForm:button:loginOut': `Log out`,
+ 'trials:staffResearch:title:staff': `Staff Information Collection`,
+ 'trials:staffResearch:form:lastName': `Last Name`,
+ 'trials:staffResearch:form:firstName': `First Name`,
+ 'trials:staffResearch:form:name': `Name`,
+ 'trials:staffResearch:form:role': `Role`,
+ 'trials:staffResearch:form:phone': `Tel`,
+ 'trials:staffResearch:form:email': `Email`,
+ 'trials:staffResearch:form:organization': `Affiliation`,
+ 'trials:staffResearch:form:isGenerate': `Create an account?`,
+ 'trials:staffResearch:form:userType': `User Type`,
+ 'trials:staffResearch:form:status': `Joined`,
+ 'trials:staffResearch:form:isSuccess': `Created account successfully?`,
+ 'trials:staffResearch:dialogTitle:add': `Add`,
+ 'trials:staffResearch:dialogTitle:edit': `Edit`,
+ 'trials:staffResearch:message:confirmDel': `Confirm to delete?`,
+ 'trials:staffResearch:message:delSuccessfully': `Deleted successfully!`,
+ 'trials:equiptResearch:title:equiptResearch': `Modality Information Collection`,
+ 'trials:equiptResearch:form:equipment': `Modality`,
+ 'trials:equiptResearch:form:param': `Specification`,
+ 'trials:equiptResearch:form:manufacturer': `Manufacturer`,
+ 'trials:equiptResearch:form:model': `Model`,
+ 'trials:equiptResearch:dialogTitle:add': `Add`,
+ 'trials:equiptResearch:dialogTitle:edit': `Edit`,
+ 'trials:equiptResearch:message:confirmDel': `Confirm to delete?`,
+ 'trials:equiptResearch:message:delSuccessfully': `Deleted successfully!`,
+ 'trials:equiptResearch:form:remark': `Note`,
+ 'trials:equiptResearch:form:precautions': `Note`,
+ 'trials:equiptResearch:form:item1': `Whenever possible, please make sure that images of each subject are acquired through the above imaging modality(modalities).`,
+ 'trials:equiptResearch:form:item2': `Please make sure that scaning parameters for each subjeect are kept consistent throughtout the entire trial.`,
+ 'trials:equiptResearch:form:item3': `If there is any change of personel, equipment or scaning modalities during the trial period, please notify us immediately.`,
+ 'trials:equiptResearch:form:item4': `Please keep the original (non-compressed, non-reconstructed) data.`,
+ 'trials:tab:seletctedReviews': `Reviewer Selection`,
+ 'trials:seletctedReviews:title:trialInfor': `Trial Information`,
+ 'trials:seletctedReviews:title:enrollment': `Enrollment
+`,
+ 'trials:seletctedReviews:timeline:selection': `Select`,
+ 'trials:seletctedReviews:timeline:submission': `Submit`,
+ 'trials:seletctedReviews:timeline:approval': `Approve`,
+ 'trials:seletctedReviews:timeline:confirmation': `Confirm`,
+ 'trials:seletctedReviews:form:modality': `Modality`,
+ 'trials:seletctedReviews:form:subspeciality': `Sub-Specialty`,
+ 'trials:seletctedReviews:form:position': `Position`,
+ 'trials:seletctedReviews:form:rank': `Professional Title`,
+ 'trials:seletctedReviews:form:institution': `Institution`,
+ 'trials:seletctedReviews:table:name': `Name`,
+ 'trials:seletctedReviews:table:nameCN': `Name CN`,
+ 'trials:seletctedReviews:table:id': `User ID`,
+ 'trials:seletctedReviews:table:status': `Status`,
+ 'trials:seletctedReviews:table:submitted': `No. of Submissions`,
+ 'trials:seletctedReviews:table:approved': `No. of Approvals`,
+ 'trials:seletctedReviews:table:reading': `In Reading`,
+ 'trials:seletctedReviews:table:specialty': `Speciality`,
+ 'trials:seletctedReviews:table:subspecialty': `Sub-Speciality`,
+ 'trials:seletctedReviews:table:institution': `Institution`,
+ 'trials:seletctedReviews:table:city': `City`,
+ 'trials:seletctedReviews:table:country': `Country`,
+ 'trials:seletctedReviews:table:selector': `Selected by`,
+ 'trials:seletctedReviews:table:selectionTime': `Time Selected `,
+ 'trials:seletctedReviews:table:submitter': `Submited by`,
+ 'trials:seletctedReviews:table:submissionTime': `Time Submited `,
+ 'trials:seletctedReviews:table:approver': `Approved by`,
+ 'trials:seletctedReviews:table:approvalTime': `Time Approved`,
+ 'trials:seletctedReviews:table:confirmor': `Confirmed by`,
+ 'trials:seletctedReviews:table:confirmationTime': `Time Confirmed`,
+ 'trials:seletctedReviews:label:language': `Language`,
+ 'trials:seletctedReviews:button:select': `Select`,
+ 'trials:seletctedReviews:button:submissionDownAll': `Download`,
+ 'trials:seletctedReviews:button:submissionDown': `Download`,
+ 'trials:seletctedReviews:button:submit': `Submit`,
+ 'trials:seletctedReviews:button:approve': `Approve`,
+ 'trials:seletctedReviews:button:confirm': `Confirm`,
+ 'trials:seletctedReviews:message:msg1': `Confirm the selection?`,
+ 'trials:seletctedReviews:message:msg2': `Confirm?`,
+ 'trials:seletctedReviews:title:language': `Language`,
+ 'trials:enrolledReviews:button:tackNum': `Workload (Pending/Completed/Total)`,
+ 'trials:spmAudit:button:agree': `Agree`,
+ 'trials:spmAudit:button:reject': `Reject`,
+ 'trials:spmAudit:button:influenceList': `Affected Read Queue`,
+ 'trials:spmAudit:title:rejected': `Reject`,
+ 'trials:spmAudit:title:rejectedReason': `Reasons of rejection`,
+ 'trials:spmAudit:title:title1': `Read Queue Affected by rejection`,
+ 'trials:spmAudit:title:title2': `Affected Read Queue`,
+ 'trials:spmAudit:title:title3': `Return Application Submitted!`,
+ 'trials:spmAudit:title:title4': `Agree to Return`,
+ 'trials:spmAudit:title:title5': `Reject to Return`,
+ 'trials:spmEnroll:title:userList': `Reviewer Candidates`,
+ 'trials:spmEnroll:table:blindNameCN': `Name CN`,
+ 'trials:spmEnroll:table:blindName': `Name`,
+ 'trials:spmEnroll:table:specialityId': `Speciality`,
+ 'trials:spmEnroll:table:subspecialityIds': `Sub-Speciality`,
+ 'trials:spmEnroll:table:submmitUserName': `Submitted by`,
+ 'trials:spmEnroll:table:submmitTime': `Time Submitted`,
+ 'trials:spmEnroll:table:optUserName': `Approved by`,
+ 'trials:spmEnroll:table:optTimeStr': `Time Approved`,
+ 'trials:spmEnroll:button:view': `Read Candidate's CV`,
+ 'trials:spmEnroll:button:agree': `Agree`,
+ 'trials:spmEnroll:title:msg1': `Confirm the approval?`,
+ 'trials:tab:enrolledReviews': `Reviewers`,
+ 'trials:enrolledReviews:table:name': `Name`,
+ 'trials:enrolledReviews:table:nameCN': `Name CN`,
+ 'trials:enrolledReviews:table:userName': `User ID`,
+ 'trials:enrolledReviews:table:enrollmentTime': `Time Enrolled`,
+ 'trials:enrolledReviews:table:enable': `Enable`,
+ 'trials:enrolledReviews:table:disable': `Disable `,
+ 'trials:enrolledReviews:table:id': `ID`,
+ 'trials:enrolledReviews:table:status': `Status`,
+ 'trials:enrolledReviews:table:training': `Training`,
+ 'trials:enrolledReviews:table:refresherTraining': `Retraining`,
+ 'trials:enrolledReviews:table:tp': `Time Point`,
+ 'trials:enrolledReviews:table:tpRegular': `Regular`,
+ 'trials:enrolledReviews:table:tp48H': `48 hours expedited`,
+ 'trials:enrolledReviews:table:tp24H': `24 hours expedited`,
+ 'trials:enrolledReviews:table:ad': `Adjudication`,
+ 'trials:enrolledReviews:table:adRegular': `Regular`,
+ 'trials:enrolledReviews:table:ad48H': `48 hours expedited`,
+ 'trials:enrolledReviews:table:ad24H': `24 hours expedited`,
+ 'trials:enrolledReviews:table:gl': `Global Review`,
+ 'trials:enrolledReviews:table:downtime': `Downtime`,
+ 'trials:enrolledReviews:table:readingType': `Review Type`,
+ 'trials:enrolledReviews:table:ackOfSow': `ACK of SOW`,
+ 'trials:enrolledReviews:table:action': `Operate`,
+ 'trials:enrolledReviews:button:config': `Config`,
+ 'trials:enrolledReviews:button:view': `View`,
+ 'trials:enrolledReviews:button:delete': `Delete`,
+ 'trials:enrolledReviews:button:upload': `Upload`,
+ 'trials:enrolledReviews:action:stats': `Count`,
+ 'trials:enrolledReviews:label:notUpload': `Not uploaded`,
+ 'trials:enrolledReviews:label:enrolled': `Enrolled`,
+ 'trials:enrolledReviews:label:outOfEnrollment': `Out of Enrollment`,
+ 'trials:enrolledReviews:label:enrollmentStatus': `Status of Enrollment`,
+ 'trials:enrolledReviews:label:outOfEnrollmentTime': `Time of Out of Enrollment`,
+ 'trials:enrolledReviews:label:mustBepdf': `It must be in PDF format.`,
+ 'trials:enrolledReviews:dialogTitle:changeStatus': `Edit the status of Reviewer`,
+ 'trials:enrolledReviews:label:enrollmentStaus': `Status of Enrollment`,
+ 'trials:enrolledReviews:dialogTitle:changeReadingType': `Config Review Type`,
+ 'trials:enrolledReviews:dialogTitle:signedAckOfSow': `Signed ACK of SOW`,
+ 'trials:enrolledReviews:message:statsWarning': `Ack-Sow has not been uploaded. Do you want to continue?`,
+ 'trials:enrolledReviews:message:uploadSowWaring1': `Only 1 file is allowed to be uploaded.`,
+ 'trials:enrolledReviews:message:deleteSOWWarning': `Confirm to delete?`,
+ 'trials:enrolledReviews:message:SOW': `Prior Reading Experience Statement `,
+ 'trials:enrolledReviews:message:EQC': `Enrollment Qualification Confirmation`,
+ 'trials:stats:form:name': `Name`,
+ 'trials:stats:form:source': `Source`,
+ 'trials:stats:form:beginMonth': `Start Month`,
+ 'trials:stats:form:endMonth': `End Month`,
+ 'trials:stats:table:month': `Month`,
+ 'trials:stats:table:action': `Operate`,
+ 'trials:stats:action:add': `Add`,
+ 'trials:stats:action:reset': `Reset`,
+ 'trials:stats:action:edit': `Edit`,
+ 'trials:stats:action:del': `Delete`,
+ 'trials:stats:form:expedited': `Real-time Reading`,
+ 'trials:stats:form:dispalyAll': `Show all`,
+ 'trials:stats:form:workmonth': `Working Month`,
+ 'trials:stats:form:workdate': `Working Date`,
+ 'trials:stats:dialogTitle:add': `Add`,
+ 'trials:stats:dialogTitle:edit': `Edit`,
+ 'trials:stats:message:del': `Confirm to delete?`,
+ 'trials:stats:message:reset': `Confirm to reset?`,
+ 'trials:stats:message:training': `The training data from customers is:`,
+ 'trials:stats:message:refresherTraining': `The retraining data from the customer is:`,
+ 'trials:stats:message:tp': `TP from the customer is:`,
+ 'trials:stats:message:tp48H': `TP(48-hour) from the customer is:`,
+ 'trials:stats:message:tp24H': `TP(24-hour) from the customer is:`,
+ 'trials:stats:message:ad': `The Adjudication data from the customer is:`,
+ 'trials:stats:message:ad48H': `The 48-hour Adjudication data from the customer is:`,
+ 'trials:stats:message:ad24H': `The 24-hour Adjudication data from the customer is:`,
+ 'trials:stats:message:global': `The global review data from the customer is:`,
+ 'trials:stats:message:downtime': `The downtime data from the customer is:`,
+ 'trials:stats:message:editWorkload': `There is data in current date existed. Confirm to edit?`,
+ 'trials:stats:message:editWorkloadWarning1': `The workload cannot all be 0.`,
+ 'trials:stats:message:editWorkloadWarning2': `The workload data is incorrect. Are you sure to save it?`,
+ 'trials:tab:trialSummary': `Trial Summary`,
+ 'trials:tab:trialInfo': `Trial Information`,
+ 'trials:tab:auditRecord': `Trace Audit`,
+ 'trials:auditRecord:table:researchNo': `Protocol`,
+ 'trials:auditRecord:table:siteNo': `Site ID`,
+ 'trials:auditRecord:table:subject': `Subject`,
+ 'trials:auditRecord:table:visit': `Visit`,
+ 'trials:auditRecord:table:taskName': `Read Name`,
+ 'trials:auditRecord:table:taskBlindName': `Blind Read Mark`,
+ 'trials:auditRecord:table:criterion': `Review Criteria`,
+ 'trials:auditRecord:table:funcModule': `Function Module`,
+ 'trials:auditRecord:table:operationName': `Operation Name`,
+ 'trials:auditRecord:table:modifyReason': `Modify Reason`,
+ 'trials:auditRecord:table:isSign': `Signed`,
+ 'trials:auditRecord:table:operator': `Operator`,
+ 'trials:auditRecord:table:userName': `User ID`,
+ 'trials:auditRecord:table:role': `Role`,
+ 'trials:auditRecord:table:operateTime': `Date Operated`,
+ 'trials:auditRecord:action:detail': `Detail`,
+ 'trials:auditRecord:title:historicalOperations': `Previous Operation of the Same Object`,
+ 'trials:auditRecord:title:relationOperations': `Associated Operation of the Same Object`,
+ 'trials:auditRecord:title:fieldName': `Field Name`,
+ 'trials:auditRecord:title:fieldValue': `Value`,
+ 'trials:auditRecord:title:beforeDeletion': `Before Deleted`,
+ 'trials:auditRecord:title:beforeModification': `Before Modified`,
+ 'trials:auditRecord:title:afterDeletion': `After Deleted`,
+ 'trials:auditRecord:title:afterModification': `After Modified`,
+ 'trials:auditRecord:title:viewDetail': `View Detail`,
+ 'trials:auditRecord:title:viewImage': `View Image`,
+ 'trials:auditRecord:title:signInfo': `Signature Information`,
+ 'trials:auditRecord:title:viewRelationOperations': `Review Associated Operation`,
+ 'trials:auditRecord:title:signInfo2': `Signature Information`,
+ 'trials:tab:uploadMonitor': `Upload Monitoring`,
+ 'trials:uploadMonitor:table:siteId': `Site ID`,
+ 'trials:uploadMonitor:table:subjectId': `Subject ID`,
+ 'trials:uploadMonitor:table:visitName': `Visit Name`,
+ 'trials:uploadMonitor:table:studyId': `Study ID`,
+ 'trials:uploadMonitor:table:imageType': `Modality`,
+ 'trials:uploadMonitor:table:uploader': `Uploader`,
+ 'trials:uploadMonitor:table:ip': `IP `,
+ 'trials:uploadMonitor:table:beginTime': `Time Started`,
+ 'trials:uploadMonitor:table:endTime': `Time Ended `,
+ 'trials:uploadMonitor:table:totalTime': `Total Time Spent`,
+ 'trials:uploadMonitor:table:fileCount': `No. of files`,
+ 'trials:uploadMonitor:table:fileSize': `Size of files`,
+ 'trials:uploadMonitor:table:isRepetition': `Files Repeated`,
+ 'trials:uploadMonitor:table:uploadStatus': `Uploaded`,
+ 'trials:uploadMonitor:table:remark': `Note`,
+ 'trials:uploadMonitor:table:uploadInterval': `Time Taken for Uploading`,
+ 'trials:uploadMonitor:table:archiveInterval': `Time Taken for Archiving`,
+ 'trials:tab:site': `Sites`,
+ 'trials:site:table:siteId': `Site ID`,
+ 'trials:site:table:site': `Site Name`,
+ 'trials:site:table:city': `City`,
+ 'trials:site:table:country': `Country`,
+ 'trials:site:table:subjects': `No. of Subjects`,
+ 'trials:site:table:visits': `No. of Visits`,
+ 'trials:site:table:staff': `Site Staff`,
+ 'trials:site:table:name': `Name`,
+ 'trials:site:table:userType': `User Type`,
+ 'trials:site:table:organization': `Affiliation`,
+ 'trials:site:table:phone': `Tel`,
+ 'trials:site:table:dataAssigned': `Time Authorized`,
+ 'trials:site:table:status': `Status`,
+ 'trials:site:table:deletedTime': `Time Disabled`,
+ 'trials:site:dialogTitle:staff': `Staff`,
+ 'trials:tab:subject': `Subjects`,
+ 'trials:subject:table:site': `Site ID`,
+ 'trials:subject:table:subjectId': `Subject ID`,
+ 'trials:subject:table:medicalNo': `Second ID of Subject`,
+ 'trials:subject:table:firstGiveMedicineTime': `Visit Start Date`,
+ 'trials:subject:table:status': `Status`,
+ 'trials:subject:table:totalVisitCount': `Total Visits`,
+ 'trials:subject:table:inPlanVisitCount': `Planned Visits`,
+ 'trials:subject:table:outPlanVisitCount': `Unplanned Visits`,
+ 'trials:subject:table:totalVisitSubmmitCount': `Submitted Visits`,
+ 'trials:subject:table:isMissingImages': `Unsubmitted`,
+ 'trials:subject:table:missingSubmmitCount': `No. of Unsubmitted Visits `,
+ 'trials:subject:table:lostVisitCount': `No. of Visits Lost to Follow-Up`,
+ 'trials:subject:table:latestVisitName': `Name of Last Submitted Visit`,
+ 'trials:subject:table:age': `Age`,
+ 'trials:subject:table:gender': `Gender`,
+ 'trials:subject:table:isUrgent': `Expedited`,
+ 'trials:subject:table:outVisitDate': `Date of Ending Visit`,
+ 'trials:subject:table:finalSubjectVisit': `Final Visit`,
+ 'trials:subject:table:outVisitReason': `Reason`,
+ 'trials:subject:action:edit': `Edit`,
+ 'trials:subject:action:status': `Status`,
+ 'trials:subject:action:delete': `Delete`,
+ 'trials:subject:dialogTitle:new': `Add`,
+ 'trials:subject:dialogTitle:edit': `Edit`,
+ 'trials:subject:dialogTitle:editStatus': `Change Status `,
+ 'trials:subject:message:delete': `Confirm to delete?`,
+ 'trials:subject:title:report': `Real-Time Reports`,
+ 'trials:subject:title:addReport': `Generate Reports`,
+ 'trials:subject:title:sendReport': `Send Real-Time Reports(Subject ID:xxx)`,
+ 'trials:subject:title:send': `Send`,
+ 'trials:subject:message:sendReport': `Confirm to send the real-time report of subject xxx?`,
+ 'trials:subject:message:sendSuccessfully': `Sent successfully`,
+ 'trials:tab:readingPeriod': `Review Periods`,
+ 'trials:readingPeriod:table:siteCode': `Site ID`,
+ 'trials:readingPeriod:table:subjectCode': `Subject ID`,
+ 'trials:readingPeriod:table:readingPlan': `Review Schedule`,
+ 'trials:readingPeriod:table:readingType': `Review Type`,
+ 'trials:readingPeriod:table:readingName': `Review Period Name`,
+ 'trials:readingPeriod:table:readingSchedule': `Status`,
+ 'trials:readingPeriod:table:enroll': `Enroll`,
+ 'trials:readingPeriod:table:urgent': `Expedited`,
+ 'trials:readingPeriod:table:finalVisit': `Final Visit`,
+ 'trials:readingPeriod:table:pd': `PD`,
+ 'trials:readingPeriod:table:lastVisit': `Previous Visit`,
+ 'trials:readingPeriod:table:deadlineVisit': `Cutoff Visit`,
+ 'trials:readingPeriod:table:deadlineVisit2': `Cutoff Visit:`,
+ 'trials:readingPeriod:table:correspondVisit': `Corresponding Review Period`,
+ 'trials:readingPeriod:table:clinicalInfo': `Clinical Data`,
+ 'trials:readingPeriod:table:clinicalInfo2': `Clinical Data:`,
+ 'trials:readingPeriod:table:stakeholder': `Current Stakeholder`,
+ 'trials:readingPeriod:table:noCD': `No CD`,
+ 'trials:readingPeriod:buttton:addSubjectImageRP': `Add Imaging Review Period`,
+ 'trials:readingPeriod:buttton:addSubjectOncologyRP': `Add Oncology Review Period`,
+ 'trials:readingPeriod:buttton:exportSubjectTbl': `Export Subject Status Table`,
+ 'trials:readingPeriod:buttton:exportPeriodTbl': `Export Review Period Information Table`,
+ 'trials:readingPeriod:dialogTitle:addSubjectPR': `Add a Review Period`,
+ 'trials:addSubjectPR:table:rpType': `Type of Review Period`,
+ 'trials:addSubjectPR:table:rpName': `Review Period Name`,
+ 'trials:addSubjectPR:table:deadlineVisit': `Cutoff Visit`,
+ 'trials:readingPeriod:button:view': `View`,
+ 'trials:readingPeriod:dialogTitle:clinicalData': `Clinical Data`,
+ 'trials:readingPeriod:cd:table:clinicalDataName': `Name of clinical data`,
+ 'trials:readingPeriod:cd:table:dataLevel': `Data Level`,
+ 'trials:readingPeriod:cd:table:transferType': `Mode of Transmission`,
+ 'trials:readingPeriod:cd:table:fileCount': `No. of Documents`,
+ 'trials:readingPeriod:cd:action:view': `View`,
+ 'trials:readingPeriod:cd:action:sign': `Sign`,
+ 'trials:readingPeriod:cd:action:edit': `Edit`,
+ 'trials:readingPeriod:cd:action:delete': `Delete`,
+ 'trials:readingPeriod:cd:message:delete': `Confirm to delete?`,
+ 'trials:readingPeriod:cd:title:downloadTpl': `Download Template`,
+ 'trials:readingPeriod:cd:title:tips': `Tips:`,
+ 'trials:readingPeriod:cd:title:tips1': `The "xxx" for the current visit/review period is requred.Please upload the clinical data as the template after collecting, and sign it.`,
+ 'trials:readingPeriod:cd:title:tips2': `If the clinical data for the current visit/review period couldn't be collected.Please upload the balnk template and sign it.`,
+ 'trials:readingPeriod:cd:title:preview': `Clinical Data Status`,
+ 'trials:readingPeriod:cd:title:cdStatus': `Status`,
+ 'trials:readingPeriod:cd:title:cdCheck': `Verify`,
+ 'trials:readingPeriod:dialogTitle:EditSubjectPR': `Edit Review Period`,
+ 'trials:readingPeriod:verify:title:fileList': `File List`,
+ 'trials:readingPeriod:verify:title:preview': `Preview`,
+ 'trials:readingPeriod:verify:title:result': `Verification Results`,
+ 'trials:readingPeriod:verify:title:isComplete': `Completed`,
+ 'trials:readingPeriod:verify:title:isBlind': `Blinded`,
+ 'trials:readingPeriod:cd:table:fileName': `File Name`,
+ 'trials:readingPeriod:cd:action:viewFile': `Preview.`,
+ 'trials:readingPeriod:cd:action:deleteFile': `Delete`,
+ 'trials:readingPeriod:cd:form:data': `Data`,
+ 'trials:readingPeriod:cd:message:uploadFile': `Please upload the file!`,
+ 'trials:readingPeriod:button:detail': `Details`,
+ 'trials:rpDetail:dialogTitle:detail': `Details`,
+ 'trials:readingPeriod:button:delete': `Delete`,
+ 'trials:readingPeriod:button:rpManage': `Review Period Management`,
+ 'trials:rpManage:dialogTitle:setRP': `Set Review Period`,
+ 'trials:rpManage:table:readingType': `Type of Review Period`,
+ 'trials:rpManage:table:readingName': `Review Period Name`,
+ 'trials:rpManage:table:subjectRange': `Scope of Subjects`,
+ 'trials:rpManage:table:designatedSite': `Designated Site`,
+ 'trials:rpManage:table:expirationDate': `Cutoff Date`,
+ 'trials:rpManage:table:expirationVisit': `Cutoff Visit`,
+ 'trials:rpManage:table:linkedVisits': `Associated Review Period`,
+ 'trials:rpManage:table:readingStatus': `Status`,
+ 'trials:rpManage:table:effectiveTime': `Effective time`,
+ 'trials:rpManage:action:edit': `Edit`,
+ 'trials:rpManage:action:status': `Status`,
+ 'trials:rpManage:action:delete': `Delete`,
+ 'trials:rpManage:button:addImageReading': `Add Imaging Review Period`,
+ 'trials:rpManage:button:addOncologyReading': `Add Oncology Review Period`,
+ 'trials:rpManage:dialogTitle:addRP': `Add`,
+ 'trials:rpManage:dialogTitle:editRP': `Edit`,
+ 'trials:rpManage:dialogTitle:linkedRP': `Related Planed Review Period`,
+ 'trials:rpManage:dialogTitle:statusChange': `Change Status`,
+ 'trials:rpManage:message:delete': `Are you sure to delete it?`,
+ 'trials:rpManage:message:closeDialog': `The review period has not been saved. Confirm to close?`,
+ 'trials:addRP:form:sites': `Site`,
+ 'trials:addRP:form:condition': `Condition`,
+ 'trials:addRP:button:createPR': `Create Review Period`,
+ 'trials:addRP:button:confirmAddPR': `Confirm`,
+ 'trials:linkedRP:table:siteCode': `Site ID`,
+ 'trials:linkedRP:table:subjectCode': `Subject ID`,
+ 'trials:linkedRP:table:expirationVisit': `Cutoff Visit`,
+ 'trials:linkedRP:table:latestScanDate': `Lastest Scan Date`,
+ 'trials:linkedRP:table:expirationDate': `Cutoff Date`,
+ 'trials:linkedRP:table:readingName': `Review Period Name`,
+ 'trials:linkedRP:table:effectiveTime': `Time Effected`,
+ 'trials:trials-panel:subject:brainMetastasis': `Brain Metestasis`,
+ 'trials:trials-panel:form:ParticipateEvaluation': `Select for Evaluation`,
+ 'trials:subject:form:ImageSelect': `Images Selection`,
+ 'trials:subject:action:Select': `Subjects Selection`,
+ 'trials:subject:action:ImageSelect': `Images Selection`,
+ 'trials:subject:action:BatchImageSelect': `Batch Selection`,
+ 'trials:trials-panel:table:ParticipateEvaluation': `Select for Evaluation`,
+ 'trials:subject:table:ImageSelect': `Images Selection`,
+ 'trials:subject:dialogTitle:SubjectsSelect': `Subjects Selection`,
+ 'trials:subject:message:SubjectsSelect': `Plase select the subjects.`,
+ 'trials:readingPeriod:message:sureToDelete': `Confirm to delete?`,
+ 'trials:readingPeriod:title:screeningRule': `Rule of Subejcts Selection`,
+ 'trials:readingPeriod:label:IsJoinEvaluation': `Body Part of Study`,
+ 'trials:readingPeriod:value:IsJoinEvaluation': `Brain`,
+ 'trials:readingPeriod:title:visitsList': `Vists to Deal`,
+ 'trials:trials-panel:table:VisitName': `Visi Name`,
+ 'trials:trials-panel:table:EarliestScanDate': `Earliest Scan Date`,
+ 'trials:trials-panel:table:LatestScanDate': `Lastest Scan Date`,
+ 'trials:trials-panel:table:ImageFilterState': `Images Selection Status`,
+ 'trials:trials-panel:table:EarliestScanDate': `Earliest Scan Date`,
+ 'trials:subject:action:handleCreateTask': `Create Read`,
+ 'trials:readingPeriod:title:taskList': `Reads Created`,
+ 'trials:trials-panel:table:UpdateTime': `Time Ccreated`,
+ 'trials:subject:action:openReReadingOrBackList': `Return`,
+ 'trials:subject:action:handleOpenTaskAllocation': `Reads`,
+ 'trials:readingPeriod:title:taskAllocationVisible': `Reads`,
+ 'trials:readingPeriod:message:batchGenerateTask': `Create Successfully`,
+ 'trials:readingPeriod:title:study': `Study`,
+ 'trials:readingPeriod:title:series': `Series`,
+ 'trials:readingPeriod:confirm:Images': `The images cannot be modified after confirmation. Confirm to submit?`,
+ 'trials:readingPeriod:confirm:SuccessfulScreening': `Select Successfully`,
+ 'trials:tab:visit': `Visits`,
+ 'trials:tab:crcUpload': `Image Upload`,
+ 'trials:crcUpload:button:submit': `Batch Submission`,
+ 'trials:crcUpload:button:add': `Unplanned Visits`,
+ 'trials:crcUpload:table:challengeState': `Query Status`,
+ 'trials:crcUpload:table:submitState': `Submission Status`,
+ 'trials:crcUpload:table:urgent': `Expedited`,
+ 'trials:crcUpload:table:siteId': `Site ID`,
+ 'trials:crcUpload:table:subjectId': `Subject ID`,
+ 'trials:crcUpload:table:visitName': `Visit Name`,
+ 'trials:crcUpload:table:dataCollected': `Data Collected`,
+ 'trials:crcUpload:table:earliestScanDate': `Earliest Scan Date`,
+ 'trials:crcUpload:table:latestScanDate': `Lastest Scan Date`,
+ 'trials:crcUpload:table:submitState': `Submission Status`,
+ 'trials:crcUpload:table:submitTime': `Time Submitted`,
+ 'trials:crcUpload:table:auditState': `QC Status`,
+ 'trials:crcUpload:action:upload': `Upload`,
+ 'trials:crcUpload:action:submit': `Submit`,
+ 'trials:crcUpload:action:edit': `Edit`,
+ 'trials:crcUpload:action:delete': `Delete`,
+ 'trials:crcUpload:label:isNotClose': `UncClosed`,
+ 'trials:crcUpload:label:isClosed': `Closed`,
+ 'trials:crcUpload:label:lostVisit': `L`,
+ 'trials:crcUpload:label:lostVisitDetail': `Visit Lost to Follow-up`,
+ 'trials:crcUpload:label:pd': `PD`,
+ 'trials:crcUpload:label:pdDetail': `PD Confirmation`,
+ 'trials:crcUpload:label:finalVisit': `F`,
+ 'trials:crcUpload:label:finalVisitDetail': `Final Visit`,
+ 'trials:crcUpload:label:enrollmentConfirm': `EC`,
+ 'trials:crcUpload:label:enrollmentConfirmDetail': `Enrollment Confirmation`,
+ 'trials:crcUpload:label:firstGiveMedicineTime': `√`,
+ 'trials:crcUpload:label:firstGiveMedicineTimeD': `Visit start date has been set.`,
+ 'trials:crcUpload:label:dicom': `DICOM Studies`,
+ 'trials:crcUpload:label:noneDicom': `Non-DICOM Studies`,
+ 'trials:crcUpload:label:clinicalData': `Clinical Data`,
+ 'trials:crcUpload:tips:remark': `√: The visit start date has been set;
+F: The final visit;
+L: Lost visit;
+PD: PD confirmation;
+E: Enrolled confirmation`,
+ 'trials:crcUpload:message:baseDate': `The visit start date has not been set, please set it before uploading images.`,
+ 'trials:crcUpload:dialogTitle:qsRecord': `Query Record`,
+ 'trials:crcUpload:message:submit': `Confirm to submit?`,
+ 'trials:crcUpload:message:bulkSubmit': `Please confirm that there's no any unsubmitted visits before the current submisstion. If not, please submit them as soon as possible. Do you want to continue to submit?`,
+ 'trials:crcUpload:message:submittedSuccessfully': `Submitted successfully!`,
+ 'trials:crcUpload:message:deleteVisit': `Confirm to delete?`,
+ 'trials:crcUpload:message:deleteVisitSuccessfully': `Deleted successfully!`,
+ 'trials:crcUpload:dialogTitle:new': `Add`,
+ 'trials:crcUpload:dialogTitle:edit': `Edit`,
+ 'trials:crcUpload:form:siteId': `Site`,
+ 'trials:crcUpload:form:subjectId': `Subject`,
+ 'trials:crcUpload:form:visitName': `Visit`,
+ 'trials:crcUpload:form:preVisitName': `Previous Visit`,
+ 'trials:crcUpload:form:baseDateOfVisit': `Visit Start Date`,
+ 'trials:crcUpload:form:enrollmentConfirmation': `Enrollment Confirmation`,
+ 'trials:crcUpload:form:pd': `PD Confirmation`,
+ 'trials:crcUpload:form:isFinalAssessment': `Final Assessment`,
+ 'trials:crcUpload:form:isLostFollowUp': `Visit Lost to Follow-Up`,
+ 'trials:crcUpload:form:setFinalAssessment': `Note: After setting the visit as Final Visit, the subject will be removed out of enrollment and cannot be added any unplanned visits.`,
+ 'trials:crcUpload:form:setFinalAssessment1': `Set as the final visit, and the visit name is xxx.`,
+ 'trials:uploadedDicoms:tab:uploadDicoms': `DICOM Images Upload`,
+ 'trials:uploadedDicoms:table:studyId': `Study ID`,
+ 'trials:uploadedDicoms:table:modality': `Study Type`,
+ 'trials:uploadedDicoms:table:bodyPart': `Body Part`,
+ 'trials:uploadedDicoms:table:seriesCount': `No. of Series`,
+ 'trials:uploadedDicoms:table:instanceCount': `No. of Images`,
+ 'trials:uploadedDicoms:table:studyDate': `Study Date`,
+ 'trials:uploadedDicoms:table:uploadedTime': `Time Uploaded `,
+ 'trials:uploadedDicoms:action:view': `View`,
+ 'trials:uploadedDicoms:action:delete': `Delete`,
+ 'trials:uploadedDicoms:action:preview': `Preview`,
+ 'trials:uploadedDicoms:message:deleteMes': `Confirm to delete?`,
+ 'trials:uploadedDicoms:message:deleteSuccessfully': `Deleted successfully!`,
+ 'trials:uploadedDicoms:title:dicomFilesOnly': `DICOM images only!`,
+ 'trials:uploadedDicomsicom:button:selectFolder': `Select Folder`,
+ 'trials:uploadDicomList:table:studyDetail1': `Accession Number, Modality, No. of Series, No. of Images`,
+ 'trials:uploadDicomList:table:studyDetail2': `Body Part, Description`,
+ 'trials:uploadDicomList:table:studyInfo': `Study Information`,
+ 'trials:uploadDicomList:table:patientInfo': `Patient Information`,
+ 'trials:uploadDicomList:table:pId': `Patient ID`,
+ 'trials:uploadDicomList:table:patientName': `Patient Name`,
+ 'trials:uploadDicomList:table:pInfo': `Gender, Age & D.O.B. of Patient`,
+ 'trials:uploadDicomList:table:status': `Status`,
+ 'trials:uploadDicomList:table:stats': `Total/Success/Failed`,
+ 'trials:uploadDicomList:button:exportFailed': `Export (failed file)`,
+ 'trials:uploadDicomList:button:close': `Close`,
+ 'trials:uploadDicomList:button:upload': `Upload`,
+ 'trials:uploadDicomList:message:informationConsistent': `The information in DICOM file is inconsistent with this subject.`,
+ 'trials:uploadDicomList:message:genderConsistent': `The gender of the patient is inconsistent with the gender of the subject.`,
+ 'trials:uploadDicomList:label:uploadingNotAllowed': `Validation Failed`,
+ 'trials:uploadDicomList:label:prompt': `Prompt`,
+ 'trials:uploadDicomList:label:confirm': `Confirm`,
+ 'trials:uploadDicomList:label:uploading': `Uploading`,
+ 'trials:uploadDicomList:label:uploaded': `Upload completed`,
+ 'trials:uploadDicomList:label:uploadFailed': `Upload failed`,
+ 'trials:uploadDicomList:message:archiveSuccess': `Uploaded successfully.You can view the image data after archiving.`,
+ 'trials:uploadDicomList:message:archiveSuccess': `Archiving`,
+ 'trials:uploadNonDicoms:tab:uploadNonDicoms': `Non-DICOM Image Upload`,
+ 'trials:uploadNonDicoms:button:add': `Add`,
+ 'trials:uploadNonDicoms:button:preview': `Preview`,
+ 'trials:uploadNonDicoms:table:studyId': `Study ID`,
+ 'trials:uploadNonDicoms:table:modality': `Study Type`,
+ 'trials:uploadNonDicoms:table:bodyPart': `Body Part`,
+ 'trials:uploadNonDicoms:table:files': `No. of Images`,
+ 'trials:uploadNonDicoms:table:fileName': `File Name`,
+ 'trials:uploadNonDicoms:table:studyDate': `Study Date`,
+ 'trials:uploadNonDicoms:table:updateTime': `Time Updated`,
+ 'trials:uploadNonDicoms:action:preview': `Preview`,
+ 'trials:uploadNonDicoms:action:upload': `Upload`,
+ 'trials:uploadNonDicoms:action:edit': `Edit`,
+ 'trials:uploadNonDicoms:action:delete': `Delete`,
+ 'trials:uploadNonDicoms:dialogTitle:upload': `Upload`,
+ 'trials:uploadNonDicoms:label:fileType': `jpg/jpeg/png/bmp files only.`,
+ 'trials:uploadNonDicoms:button:selectFolder': `Select Folder`,
+ 'trials:uploadNonDicoms:button:select': `Select Files`,
+ 'trials:uploadNonDicoms:dialogTitle:preview': `Preview`,
+ 'trials:uploadNonDicoms:dialogTitle:add': `Add new`,
+ 'trials:uploadNonDicoms:dialogTitle:edit': `Edit`,
+ 'trials:uploadNonDicoms:message:delete': `Confirm to delete?`,
+ 'trials:uploadNonDicoms:message:deleteStudyAndFiles': `This examination has archived images, and to delete the examination will lead to delete all archived images in it.
+If you want to delete the images only, click the column number of "File" to delete the selected images in the pop-up list. Do you want to continue deleting this examination?`,
+ 'trials:uploadNonDicoms:message:deletedSuccessfully': `Deleted successfully!`,
+ 'trials:uploadNonDicoms:message:uploadSize': `The size of the uploaded file cannot exceed 1G.`,
+ 'trials:uploadNonDicoms:message:uploadedSuccessfully': `Upload successfully!`,
+ 'trials:uploadNonDicoms:message:exsitSameFile': `There is a file of the same name in the list: xxx.`,
+ 'trials:uploadNonDicoms:message:isContinueUpload': `This uploading will create a file of the same name. Do you want to continue?`,
+ 'trials:uploadClinicalData:tab:uploadClinicalData': `Clinical Data Collection`,
+ 'trials:uploadClinicalData:title:historyTherapy': `Past Local Treatment History`,
+ 'trials:uploadClinicalData:title:pastTreatment': `Past Radiotherapy History`,
+ 'trials:uploadClinicalData:table:bodyPart': `Body Part`,
+ 'trials:uploadClinicalData:table:beginDate': `Start Date`,
+ 'trials:uploadClinicalData:table:endDate': `End Date`,
+ 'trials:uploadClinicalData:table:isPD': `Lesion PD`,
+ 'trials:uploadClinicalData:title:pastSurgery': `Past Surgery History`,
+ 'trials:uploadClinicalData:table:surgeryName': `Type of Surgery`,
+ 'trials:uploadClinicalData:table:surgeryDate': `Surgery Date`,
+ 'trials:uploadClinicalData:title:others': `Other Past Treatments`,
+ 'trials:uploadClinicalData:table:treatmentType': `Type of Treatment`,
+ 'trials:uploadClinicalData:table:treatmentbeginDate': `Start Date`,
+ 'trials:uploadClinicalData:table:treatmentendDate': `End Date`,
+ 'trials:uploadClinicalData:table:fileName': `File Name`,
+ 'trials:uploadClinicalData:table:uploadedTime': `Time Uploaded `,
+ 'trials:uploadClinicalData:action:preview': `Preview`,
+ 'trials:uploadClinicalData:button:selectFile': `Select`,
+ 'trials:uploadClinicalData:button:uploadFile': `Upload`,
+ 'trials:uploadClinicalData:message:uploadSuccessfully': `Upload Successfully`,
+ 'trials:uploadClinicalData:title:uploadFile': `Upload`,
+ 'trials:uploadClinicalData:button:downloadTemplate': `Download templates`,
+ 'trials:uploadClinicalData:title:table': `Table`,
+ 'components:uploadvideo:message:xf1': `Upload successfully`,
+ 'components:uploadvideo:message:xf2': `The video selected cannot be played in the browser.please click ‘Transcode’ and upload the video after transcoding.`,
+ 'components:uploadvideo:message:xf3': `The video can not be transcoded,since the page is not in the security context. Please contact the developer to configure SSL certificate`,
+ 'components:uploadvideo:message:xf4': `The video can not be transcoded,since nginx is not set up for same-source isolation. Please contact the developer to configure the Nginx request header.`,
+ 'components:uploadvideo:message:xf5': `Start transcoding. Please do not close the window or page`,
+ 'components:uploadvideo:message:xf6': `Transcod Successfully`,
+ 'components:uploadvideo:message:xf7': `The files has been read successfully.Please upload.`,
+ 'trials:uploadNonDicoms:action:xfuploadvideo': `Upload video`,
+ 'trials:uploadNonDicoms:title:xfuploadvideo': `Upload video`,
+ 'trials:uploadNonDicoms:title:xflookvideo': `View Video`,
+ 'trials:reuploadDicoms:button:applyReupload': `Apply for Re-Upload`,
+ 'trials:reuploadDicoms:button:reupload': `Re-Upload`,
+ 'trials:reuploadDicoms:button:reuploadFinished': `Re-Upload Completed`,
+ 'trials:reuploadDicoms:button:send': `Send`,
+ 'trials:tab:crcQuality': `Image Query`,
+ 'trials:crcQuestion:table:challengeCode': `Query No.`,
+ 'trials:crcQuestion:table:siteId': `Site ID`,
+ 'trials:crcQuestion:table:subjectId': `Subject ID`,
+ 'trials:crcQuestion:table:visitName': `Visit Name`,
+ 'trials:crcQuestion:table:reuploadSatus': `Re-upload Status`,
+ 'trials:crcQuestion:table:reuploadTime': `Time, Re-Upload Completed`,
+ 'trials:crcQuestion:table:createTime': `Time Created`,
+ 'trials:crcQuestion:table:deadline': `Response Deadline`,
+ 'trials:crcQuestion:table:isOverTime': `Passed Deadline`,
+ 'trials:crcQuestion:table:isClose': `Closed`,
+ 'trials:crcQuestion:table:latestMsgTime': `Latest response time`,
+ 'trials:crcQuestion:table:closedTime': `Time Closed`,
+ 'trials:crcQuestion:table:qCProcessEnum': `Review the batch`,
+ 'trials:crcQuestion:action:reply': `Reply`,
+ 'trials:crcQuestion:label:isNotClose': `Unclosed`,
+ 'trials:crcQuestion:label:isClosed': `Closed`,
+ 'trials:crcQuestion:dialogTitle:message1': `Query Record`,
+ 'trials:crcQuestion:button:applyReupload': `Apply for Re-upload`,
+ 'trials:crcQuestion:button:reupload': `Re-upload`,
+ 'trials:crcQuestion:button:reuploadCompleted': `Re-upload completed`,
+ 'trials:crcQuestion:button:send': `Send`,
+ 'trials:crcQuestion:button:close': `Close`,
+ 'trials:crcQuestion:message:applyReupload': `Confirm to apply for re-uploading?`,
+ 'trials:crcQuestion:message:applyOrUpload': `CRC apply for re-upload/upload images`,
+ 'trials:crcQuestion:message:reuploadConfirm': `Confirm the images has been re-uploaded completely?`,
+ 'trials:crcQuestion:message:reuploadFinished': `CRC has re-uploaded the images.`,
+ 'trials:crcQuestion:message:replaceTask': `The image QC has been claimed by xxx. Confirm to replace?`,
+ 'trials:crcQuestion:message:replaceTaskSuccessfully': `Replaced successfully.`,
+ 'trials:crcQuestion:button:replaceTask': `Replace`,
+ 'trials:tab:dicomsQuality': `Image QC`,
+ 'trials:qcCheck:table:isUrgent': `Expedited`,
+ 'trials:qcCheck:table:siteId': `Site ID`,
+ 'trials:qcCheck:table:subjectId': `Subject ID`,
+ 'trials:qcCheck:table:visitName': `Visit Name`,
+ 'trials:qcCheck:table:dataCollected': `Data Collected`,
+ 'trials:qcCheck:table:eScanDate': `Earliest Scan Date`,
+ 'trials:qcCheck:table:lScanDate': `Latest Scan Date`,
+ 'trials:qcCheck:table:submitTime': `Time Submitted `,
+ 'trials:qcCheck:table:auditState': `QC Status`,
+ 'trials:qcCheck:table:crrentUser': `Claimed by`,
+ 'trials:qcCheck:table:participant': `Participant`,
+ 'trials:qcCheck:table:challengeState': `Query Status`,
+ 'trials:qcCheck:table:reviewer': `Previous QCed by`,
+ 'trials:qcCheck:label:preliminary': `1st`,
+ 'trials:qcCheck:label:preliminaryAudit': `1st QC`,
+ 'trials:qcCheck:label:review': `2nd`,
+ 'trials:qcCheck:label:reviewAudit': `2nd QC`,
+ 'trials:qcCheck:button:receive': `Claim`,
+ 'trials:qcCheck:button:release': `Release`,
+ 'trials:qcCheck:button:audit': `QC`,
+ 'trials:qcCheck:button:preliminaryAudit': `1st QC`,
+ 'trials:qcCheck:button:review': `2nd QC`,
+ 'trials:qcCheck:dialogTitle:setUrgent': `Set Expedited Status`,
+ 'trials:qcCheck:message:receive': `Confirm the claim?`,
+ 'trials:qcCheck:message:release': `Confirm the release?`,
+ 'trials:qcCheck:message:receivedSuccessfully': `Claimed Successfully!`,
+ 'trials:qcCheck:message:releasedSuccessfully': `Released Successfully!`,
+ 'trials:qcCheck:message:isUrgent': `Confirm to set the expedited status as Yes?`,
+ 'trials:qcCheck:message:isNotUrgent': `Confirm to set the expedited status as No?`,
+ 'trials:qcCheck:message:delete': `Confirm to delete?`,
+ 'trials:qcCheck:message:deletedSuccessfully': `Deleted successfully!`,
+ 'trials:qcCheck:tips:remark': `End: Final Visit;
+Lost: Visits Lost to Follow up;
+PD: PD Confirmation;
+Enroll: Enrolled Confirmation`,
+ 'trials:audit:tab:dicoms': `DICOM Studies`,
+ 'trials:audit:title:dicoms': `Study Information`,
+ 'trials:audit:tip:visitWindow': `Visit Window`,
+ 'trials:audit:tip:visitWindowNotSet': `The visit start date or visit window has not been set`,
+ 'trials:audit:button:previewAllDiocms': `Preview All Images`,
+ 'trials:audit:button:previewReadingDiocms': `Preview Review Images`,
+ 'trials:audit:table:studyId': `Study ID`,
+ 'trials:audit:table:modality': `Study Type`,
+ 'trials:audit:table:modality1': `DICOM Modality`,
+ 'trials:audit:table:bodyPart': `Body Part`,
+ 'trials:audit:table:seriesCount': `No. of Series`,
+ 'trials:audit:table:instanceCount': `No. of Images`,
+ 'trials:audit:table:studyDate': `Study Date`,
+ 'trials:audit:table:studyUploadTime': `Time Uploaded `,
+ 'trials:audit:table:isReading': `Display for Review`,
+ 'trials:audit:table:isDelete': `Delete`,
+ 'trials:audit:action:preview': `Preview.`,
+ 'trials:audit:action:edit': `Edit`,
+ 'trials:audit:title:series': `Series Information`,
+ 'trials:audit:table:seriesId': `Series No.`,
+ 'trials:audit:table:seriesOfStudyId': `Study ID`,
+ 'trials:audit:table:seriesModality': `Study Type`,
+ 'trials:audit:table:seriesOfInstanceCount': `No. of Images`,
+ 'trials:audit:table:seriesOfStudyDate': `Study Date`,
+ 'trials:audit:table:seriesOfUploadedDate': `Time Uploaded `,
+ 'trials:audit:action:seriesPreview': `Preview.`,
+ 'trials:audit:action:setSeriesNotReading': `Set Display for Review as No?`,
+ 'trials:audit:action:setSeriesReading': `Set Display for Review as Yes?`,
+ 'trials:audit:action:setSeriesDeleted': `Set Delete as Yes?`,
+ 'trials:audit:action:setSeriesNoDelete': `Set Delete as No?`,
+ 'trials:audit:message:setSeriesReading': `Confirm the change?`,
+ 'trials:audit:message:setSeriesNotReading': `Confirm the change?`,
+ 'trials:audit:message:setSeriesDeleted': `Confirm the change?`,
+ 'trials:audit:message:setSeriesNoDelete': `Confirm the change?`,
+ 'trials:audit:tab:nonDicoms': `Non-DICOM Studies`,
+ 'trials:audit:title:nonDicomsTitle': `Study Information`,
+ 'trials:audit:tip:nonDicomsVisitWindow': `Visit Window`,
+ 'trials:audit:tip:nonDicomsPreviewAll': `Preview`,
+ 'trials:audit:table:nonDicomsStudyId': `Study ID`,
+ 'trials:audit:table:nonDicomsModality': `Study Type`,
+ 'trials:audit:table:nonDicomsBodypart': `Body Part`,
+ 'trials:audit:table:nonDicomsFileCount': `No. of Images`,
+ 'trials:audit:table:nonDicomsFileName': `File Name`,
+ 'trials:audit:table:nonDicomsStudyDate': `Study Time`,
+ 'trials:audit:table:nonDicomsUpdateTime': `Time Updated`,
+ 'trials:audit:button:nonDicomsPreview': `Preview`,
+ 'trials:audit:button:nonDicomsEdit': `Edit`,
+ 'trials:audit:tab:clinicalData': `Clinical Data`,
+ 'trials:audit:title:questions': `QC Questions`,
+ 'trials:audit:message:noData': `No data available`,
+ 'trials:audit:button:save': `Save`,
+ 'trials:audit:button:question': `Query`,
+ 'trials:audit:button:historicalQuestions': `Previous Queries`,
+ 'trials:audit:button:auditPassed': `Pass`,
+ 'trials:audit:button:auditFailed': `QC Terminated`,
+ 'trials:audit:dialogTitle:question': `Query`,
+ 'trials:audit:form:questionContent': `Query Details`,
+ 'trials:audit:form:questionDeadline': `Response Deadline`,
+ 'trials:audit:form:questionSummary': `Summary of Queries`,
+ 'trials:audit:form:actionMatters': `Actions to Take`,
+ 'trials:audit:dialogTitle:historicalQuestions': `Previous Queries`,
+ 'trials:audit:button:refreshHistoryQs': `Refresh`,
+ 'trials:audit:message:qsContentIsNull': `The query cannot be empty!`,
+ 'trials:audit:message:qsOverWindow': `Out of Visit Window`,
+ 'trials:audit:message:qsOverWindow1': `System generated visit window is `,
+ 'trials:audit:message:qsOverWindow2': `while the scan date of this study is`,
+ 'trials:audit:message:qsOverWindow3': `out of the visit window`,
+ 'trials:audit:message:qsOverWindow4': `Please confirm whether the visit is out of the visit window. If yes, please specify the reason.`,
+ 'trials:audit:message:sureToUpdate': `Confirm the change?`,
+ 'trials:audit:message:specifyQuestions': `Please check the images and save the QC questions, before draw the conclusion!`,
+ 'trials:audit:message:changeSeriesStatus': `Confirm to change the status of this serie to xxx?`,
+ 'trials:audit:label:setSeriesReading': `Display for Review`,
+ 'trials:audit:label:setSeriesNotReading': `Do not Display for Review`,
+ 'trials:audit:label:setSeriesDeleted': `Delete`,
+ 'trials:audit:label:setSeriesNotDelete': `Do not Delete`,
+ 'trials:tab:qcQuality': `QC Query`,
+ 'trials:qcQuality:table:challengeCode': `Query No.`,
+ 'trials:qcQuality:table:siteId': `Site ID`,
+ 'trials:qcQuality:table:subjectId': `Subject ID`,
+ 'trials:qcQuality:table:visitName': `Visit Name`,
+ 'trials:qcQuality:table:createTime': `Time Created`,
+ 'trials:qcQuality:table:organizer': `Created by`,
+ 'trials:qcQuality:table:latestReplyer': `Latest Responder`,
+ 'trials:qcQuality:table:latestReplyTime': `Latest Responsed Time`,
+ 'trials:qcQuality:table:reUploadStatus': `Re-Upload Status`,
+ 'trials:qcQuality:table:reUploadTime': `Time, Re-Upload Completed`,
+ 'trials:qcQuality:table:deadline': `Response Deadline`,
+ 'trials:qcQuality:table:qsDuration': `Query Duration`,
+ 'trials:qcQuality:table:isOverTime': `Passed Deadline`,
+ 'trials:qcQuality:table:closingTime': `Time Closed`,
+ 'trials:qcQuality:table:isReupload': `Re-Upload`,
+ 'trials:qcQuality:table:isClosed': `Closed`,
+ 'trials:qcQuality:table:latestMsgTime': `Time of Lastest Message`,
+ 'trials:qcQuality:table:qCProcessEnum': `QC Batch`,
+ 'trials:qcQuality:action:reply': `Reply`,
+ 'trials:qcQuality:action:close': `Close`,
+ 'trials:qcQuality:dialogTitle:reply': `Query Record`,
+ 'trials:qcQuality:dialog:qcContent': `Hello, the questions about all image and data in this visit are summarized as following:`,
+ 'trials:qcQuality:dialogTips:tip': `Notes: In order to solve above issues efficiently, please verify the situation and reply to the above action items one by one. Please indicate clearly whether it can be corrected. If it cannot be corrected, please remind investigators to pay attention in future scan (if applicable) .`,
+ 'trials:qcQuality:dialog:deadline': `Response Deadline`,
+ 'trials:qcQuality:dialog:none': `None`,
+ 'trials:qcQuality:dialogButton:send': `Send`,
+ 'trials:qcQuality:dialogButton:close': `Close`,
+ 'trials:qcQuality:dialogButton:agreeToReupload': `Agree to Re-Upload`,
+ 'trials:qcQuality:dialogTitle:closeQuestion': `Close Query`,
+ 'trials:qcQuality:label:closeReason': `Reason`,
+ 'trials:qcQuality:radio:reason1': `Issue resolved`,
+ 'trials:qcQuality:radio:reason2': `The issue cannot be resolved and the query has been closed mandatorily.`,
+ 'trials:qcQuality:radio:reason3': `Other`,
+ 'trials:qcQuality:label:otherReason': `Other Reasons`,
+ 'trials:qcQuality:message:problemSolved': `Issue resolved`,
+ 'trials:qcQuality:message:problemNotSolved': `The issue cannot be resolved, and the query will be closed compulsorily. And remind the site to take care next time`,
+ 'trials:qcQuality:message:closedSuccessfully': `Closed successfully!`,
+ 'trials:qcQuality:message:agreeToReupload': `Agree to re-upload?`,
+ 'trials:qcQuality:label:agreeToReupload': `IQC agreed to re-upload`,
+ 'trials:qcQuality:title:closed': `Closed`,
+ 'trials:qcQuality:title:unClose': `Unclosed`,
+ 'trials:qcQuality:title:title1': `Please edit the Body Part of Study xxx!`,
+ 'trials:qcQuality:title:title2': `Next vist?`,
+ 'trials:qcQuality:title:title3': `All claimed QC have been completed!`,
+ 'trials:qcQuality:label:passReason': `Reason`,
+ 'trials:qcQuality:label:closeReason': `Reason`,
+ 'trials:tab:consistencyCheck': `Data Reconciliation`,
+ 'trials:consistencyCheck:button:upload': `Upload`,
+ 'trials:consistencyCheck:button:download': `Download Template`,
+ 'trials:consistencyCheck:table:isUrgent': `Expedited`,
+ 'trials:consistencyCheck:table:checkChallengeState': `Query Status`,
+ 'trials:consistencyCheck:table:siteId': `Site ID`,
+ 'trials:consistencyCheck:table:subjectId': `Subject ID`,
+ 'trials:consistencyCheck:table:visitName': `Visit Name`,
+ 'trials:consistencyCheck:table:auditState': `Status before Data Reconciliation`,
+ 'trials:consistencyCheck:table:requestBackState': `Return Status`,
+ 'trials:consistencyCheck:table:checkTime': `Time`,
+ 'trials:consistencyCheck:table:checkPassedTime': `Time Completed`,
+ 'trials:consistencyCheck:table:checkState': `Status`,
+ 'trials:consistencyCheck:table:checkResult': `Inconsistent Item`,
+ 'trials:consistencyCheck:table:scanDate': `Study Date`,
+ 'trials:consistencyCheck:table:modality': `Study Type`,
+ 'trials:consistencyCheck:action:reply': `Reply`,
+ 'trials:consistencyCheck:action:view': `View`,
+ 'trials:consistencyCheck:action:applyFallback': `Apply for Return`,
+ 'trials:consistencyCheck:action:fallback': `Agree`,
+ 'trials:consistencyCheck:action:close': `Close`,
+ 'trials:consistencyCheck:action:pass': `Pass`,
+ 'trials:consistencyCheck:dialogTitle:qsContent': `Query Details`,
+ 'trials:consistencyCheck:label:noData': `No data available`,
+ 'trials:consistencyCheck:button:rejectBack': `Reject`,
+ 'trials:consistencyCheck:button:sendMessage': `Send`,
+ 'trials:consistencyCheck:dialogTitle:passManually': `Reason of approving the data reconciliation manually`,
+ 'trials:consistencyCheck:dialogTitle:close': `Reason of closing the data reconciliation`,
+ 'trials:consistencyCheck:label:reason': `Reason`,
+ 'trials:consistencyCheck:message:pmPerformed': `PM implemented a RETURN action after data reconciliation.`,
+ 'trials:consistencyCheck:message:fallbackSuccessfully': `Returned successfully!`,
+ 'trials:consistencyCheck:message:closedSuccessfully': `Closed successfully!`,
+ 'trials:consistencyCheck:message:appledSuccessfully': `Applied successfully!`,
+ 'trials:consistencyCheck:message:apply': `Confirm to apply?`,
+ 'trials:consistencyCheck:label:file': `File`,
+ 'trials:consistencyCheck:message:excelFileOnly': `Must be an Excel file.`,
+ 'trials:consistencyCheck:dialogButton:upload': `Upload`,
+ 'trials:consistencyCheck:message:xlsx': `It must be in xls and xlsx format.`,
+ 'trials:consistencyCheck:message:onlyOneFile': `Only one file is allowed to upload `,
+ 'trials:consistencyCheck:button:export1': `Export Table`,
+ 'trials:consistencyCheck:button:export2': `Export Records`,
+ 'trials:consistencyCheck:title:note': `Note:`,
+ 'trials:consistencyCheck:title:reply': `Reply`,
+ 'trials:consistencyCheck:title:close': `Close`,
+ 'trials:consistencyCheck:title:replyConsistency': `Reply the Data Reconciliation Query`,
+ 'trials:consistencyCheck:title:message1': `Verified by the system`,
+ 'trials:consistencyCheck:title:message2': `The imaging studies for this subject's current visit has upload to IRC system were as follows.Check the box if there are extra images in the following images:`,
+ 'trials:consistencyCheck:title:message3': `You confirm that the visit has uploaded redundant imaging studies to IRC system, and please explain it. If you need to delete the redundant images, please request a return.Thank you for your cooperation!`,
+ 'trials:consistencyCheck:title:message4': `The reason for the existence of redundant images in the IRC system is:`,
+ 'trials:consistencyCheck:title:message5': `The imaging studies for this subject's current visit that are inconsistent between IRC system and EDC system were as follows.P1ease check the box, if it is true:`,
+ 'trials:consistencyCheck:title:message6': `The imaging studies for this subject's current visit that are inconsistent between IRC system and EDC system were as follows.P1ease check the box, if it is true: None`,
+ 'trials:consistencyCheck:title:message7': `You confirm that there is a missing image studies in the current visit,and please select the reason. If you need to upload additional imaging studies, please request a return. Thank you for your cooperation!`,
+ 'trials:consistencyCheck:title:message8': `The reason for the missing images in the IRC system is`,
+ 'trials:consistencyCheck:title:message9': `EDC records imaging studies information by efficacy assessment data.`,
+ 'trials:consistencyCheck:title:message10': `EDC entry incorrect data.`,
+ 'trials:consistencyCheck:title:message11': `IRC upload incorrect data. Request a rollback and re-upload.`,
+ 'trials:consistencyCheck:title:message12': `It is verified that the actual imaging studies for this subject's current visit has upload to IRC system were as follows:`,
+ 'trials:consistencyCheck:title:none': `None`,
+ 'trials:consistencyCheck:title:message13': `The actual imaging studies for this subject's current visit that are inconsistent between IRC and actual situation were as follows:`,
+ 'trials:consistencyCheck:title:message14': `The actual imaging studies for this subject's current visit that are inconsistent between IRC and actual situation were as follows: None`,
+ 'trials:consistencyCheck:title:message15': `The Reasons are as follow:`,
+ 'trials:consistencyCheck:title:message16': `The reason for the existence of redundant images in the IRC system is:`,
+ 'trials:consistencyCheck:title:message17': `Please fill in the reason for the existence of redundant images in the IRC system.`,
+ 'trials:consistencyCheck:title:message18': `The reason for the missing images in the IRC system is`,
+ 'trials:consistencyCheck:title:message19': `Please fill in the reason for missing images in the IRC system`,
+ 'trials:consistencyCheck:title:message20': `Please verify accurately and then fill the actual imaging studies for the current visit:`,
+ 'trials:consistencyCheck:title:add': `Add`,
+ 'trials:consistencyCheck:title:studyDate': `Study Date`,
+ 'trials:consistencyCheck:title:studyModality': `Study Type`,
+ 'trials:consistencyCheck:title:submitted': `Submittd`,
+ 'trials:consistencyCheck:title:existed': `Exist in actual situation`,
+ 'trials:consistencyCheck:title:delete': `Delete`,
+ 'trials:consistencyCheck:title:title1': `The reasons for that the image studies is inconsistent between IRC and actual situation are:`,
+ 'trials:consistencyCheck:title:addStudy': `Add Studies`,
+ 'trials:consistencyCheck:title:title2': `Please select the study date and study type`,
+ 'trials:consistencyCheck:title:title3': `Delete this Study?`,
+ 'trials:consistencyCheck:title:title4': `Please enter the actual studies.`,
+ 'trials:consistencyCheck:title:title5': `It is verified that the actual imaging studies for this subject's current visit were as follows:`,
+ 'trials:consistencyCheck:title:title6': `xxx study at yyyy`,
+ 'trials:consistencyCheck:title:title7': `The imaging studies is inconsistent between IRC system and actual situation are as follow:`,
+ 'trials:consistencyCheck:title:title8': `Excess in IRC`,
+ 'trials:consistencyCheck:title:title9': `Missing from IRC`,
+ 'trials:consistencyCheck:title:title10': `The reasons for that the image studies is inconsistent between IRC and actual situation are:`,
+ 'trials:consistencyCheck:title:title11': `The imaging studies is consistent between IRC and actual situation.`,
+ 'trials:consistencyCheck:dialogTitle:xfpassManually': `Pass`,
+ 'trials:consistencyCheck:dialogTitle:xfclose': `Close Query`,
+ 'trials:check:radio:passreason1': `Query resolved online`,
+ 'trials:check:radio:passreason2': `Query resolved offline`,
+ 'trials:check:radio:passreason3': `Real-Time reading without data reconciliation`,
+ 'trials:check:radio:passreason4': `Other`,
+ 'trials:check:radio:closereason1': `Issue resolved`,
+ 'trials:check:radio:closereason2': `Issues cannot be resolved, & the query is closed compulsorily.`,
+ 'trials:check:radio:closereason3': `Other`,
+ 'trials:consistencyCheck:label:passreason': `Note`,
+ 'trials:consistencyCheck:label:closereason': `Note`,
+ 'trials:tab:dicomForward': `Image forwarding`,
+ 'trials:dicomForward:table:siteId': `Site ID`,
+ 'trials:dicomForward:table:subjectId': `Subject ID`,
+ 'trials:dicomForward:tableon:visitName': `Visit Name`,
+ 'trials:dicomForward:table:forwardStatus': `Forward Status`,
+ 'trials:dicomForward:table:forwardUser': `Forwarder`,
+ 'trials:dicomForward:table:forwardTime': `Time Forwarded`,
+ 'trials:dicomForward:action:forward': `Forward`,
+ 'trials:dicomForward:message:forwardSuccessfully': `Forwarded successfully!`,
+ 'trials:dicomForward:message:sureToForward': `Do you confirm to forward?`,
+ 'trials:trials-panel:tab:readingTask': `Pending`,
+ 'trials:trials-panel:tab:readTask': `Completed`,
+ 'trials:trials-panel:tab:medicalFeedback': `Medical Comments`,
+ 'trials:trials-panel:tab:rereadTask': `Return History`,
+ 'trials:trials-panel:tab:mimMedicalAudit': `Medical review`,
+ 'trials:tab:studyList': `Studies`,
+ 'trials:studyList:table:studyId': `Study ID`,
+ 'trials:studyList:table:imageType': `Image type`,
+ 'trials:studyList:table:studyInfo': `Study Information`,
+ 'trials:studyList:table:visit': `Visit`,
+ 'trials:studyList:table:subject': `Subject`,
+ 'trials:studyList:table:site': `Site`,
+ 'trials:studyList:table:uploader': `Uploaded By`,
+ 'trials:studyList:table:uploadTime': `Time Uploaded `,
+ 'trials:studyList:button:view': `View`,
+ 'trials:studyList:table:modality': `Modality`,
+ 'trials:studyList:table:bodyPart': `Body Part`,
+ 'trials:studyList:table:count': `No. of Study`,
+ 'trials:studyList:table:studyDate': `Study Date`,
+ 'trials:studyList:table:seriesNum': `No. of series`,
+ 'trials:studyList:table:description': `Description`,
+ 'trials:studyList:table:sliceThickness': `Slice Thickness`,
+ 'trials:studyList:table:instanceCount': `No. of Images`,
+ 'trials:studyList:table:fileName': `File Name`,
+ 'trials:studyList:table:visitName': `Visit Name`,
+ 'trials:studyList:table:visitNum': `Visit No.`,
+ 'trials:studyList:table:siteId': `Site ID`,
+ 'trials:studyList:table:siteName': `Site Name`,
+ 'trials:studyList:label:series': `Series`,
+ 'trials:studyList:dialogTitle:view': `View`,
+ 'trials:studyList:action:share': `Share`,
+ 'trials:tab:setting': `Settings`,
+ 'trials:tab:trialCfg': `Trial Config`,
+ 'trials:trialConfig:title:logincCfg': `Logic Configuration`,
+ 'trials:logincCfg:form:subjectNumberRule': `Reminder of Subject ID Convention`,
+ 'trials:logincCfg:form:subjectNum2': `Second ID of Subject`,
+ 'trials:logincCfg:form:subjectNumFormat': `Subject ID Format`,
+ 'trials:logincCfg:form:scanDateVerify': `Scan Date Verification`,
+ 'trials:logincCfg:form:visitBaseDate': `Visit Start Date`,
+ 'trials:logincCfg:form:subjectAge': `Subject Age`,
+ 'trials:logincCfg:form:subjectGender': `Subject Gender`,
+ 'trials:logincCfg:form:lastVisitName': `Name of the Unplanned Final Visit`,
+ 'trials:logincCfg:form:clinicalInforTransfer': `Clinical Data Collection`,
+ 'trials:logincCfg:form:clinicalConfig': `Clinical Data Config`,
+ 'trials:logincCfg:form:imageCopy': `Image Replication across Trials`,
+ 'trials:logincCfg:form:bodypart': `Body Part`,
+ 'trials:logincCfg:form:modality': `Modality`,
+ 'trials:logincCfg:form:exceededDays': `Image Query Max. Days`,
+ 'trials:trialCfg:title:processCfg': `Workflow Configuration`,
+ 'trials:processCfg:form:qcProcess': `Image QC`,
+ 'trials:processCfg:form:conProcess': `Data Reconciliation`,
+ 'trials:processCfg:form:readingMode': `Method of Reading`,
+ 'trials:processCfg:form:imagePlatform': `Reading Platform`,
+ 'trials:processCfg:form:criterion': `Review Criteria`,
+ 'trials:processCfg:form:digitPlaces': `Decimal Place`,
+ 'trials:processCfg:form:readingType': `Read Mode`,
+ 'trials:processCfg:form:IsAutoCreate': `Automatically Create Reads`,
+ 'trials:processCfg:form:IsAdditionalAssessment': `Presence of Additional Assessment`,
+ 'trials:processCfg:form:global': `Global Review`,
+ 'trials:processCfg:form:ad': `Adjudication Review`,
+ 'trials:processCfg:form:clinical': `Oncology Review`,
+ 'trials:processCfg:form:adRules': `Adjudication Rules`,
+ 'trials:processCfg:title:criterion': `Review Criteria`,
+ 'trials:processCfg:title:criterionName': `Name of Review Criteria`,
+ 'trials:processCfg:title:clinicalDataCfg': `Clinical Data Config`,
+ 'trials:processCfg:title:clinicalDataName': `Type of Clinical Data`,
+ 'trials:processCfg:title:uploader': `Uploader`,
+ 'trials:processCfg:title:dataLevel': `Data Level`,
+ 'trials:processCfg:title:transferType': `Submission Method`,
+ 'trials:processCfg:title:modulesName': `Name of Template`,
+ 'trials:processCfg:message:delete': `Confirm to delete?`,
+ 'trials:processCfg:message:update': `Confirm to update?`,
+ 'trials:processCfg:title:module': `Module`,
+ 'trials:processCfg:button:select': `Select`,
+ 'trials:processCfg:title:docFormat': `It must be in doc/docx format`,
+ 'trials:processCfg:title:onlyOneFile': `Only one file is allowed to upload.`,
+ 'trials:trialCfg:title:urgentCfg': `Expedition Configuration`,
+ 'trials:urgentCfg:form:enroll': `Enrollment Confirmation`,
+ 'trials:urgentCfg:form:pd': `PD Confirmation`,
+ 'trials:urgentCfg:form:trial': `Trial Expedition`,
+ 'trials:urgentCfg:form:subject': `Subject Expedition`,
+ 'trials:trialCfg:button:confirm': `Confirm`,
+ 'trials:trialCfg:button:update': `Update`,
+ 'trials:trialCfg:button:updateAndConfirm': `Confirm`,
+ 'trials:trialCfg:button:confirmCfg': `Confirm`,
+ 'trials:trialCfg:dialogTitle:cfgConfirm': `Confirm`,
+ 'trials:trialCfg:table:cfgItem': `Config Items`,
+ 'trials:trialCfg:table:cfgVal': `Config Value`,
+ 'trials:trialCfg:table:beforeChange': `Before Update`,
+ 'trials:trialCfg:table:updated': `Updated`,
+ 'trials:trialCfg:formRule:bodyPart': `Please use "|" to separate body parts, e.g., Chest|Head|Other`,
+ 'trials:trialCfg:formRule:modality': `Please use "|" to separate modalities, e.g., CT|MR|CR|PET|Other`,
+ 'trials:tab:siteAndStaff': `Staff & Site Management`,
+ 'trials:staff:title:staff': `Staff`,
+ 'trials:staff:button:addExternalStaff': `Add external staff`,
+ 'trials:staff:button:addInternalStaff': `Add internal staff
+`,
+ 'trials:staff:table:name': `Name`,
+ 'trials:staff:table:uid': `User ID`,
+ 'trials:staff:table:organization': `Affiliation`,
+ 'trials:staff:table:phone': `Tel`,
+ 'trials:staff:table:email': `Email`,
+ 'trials:staff:table:userType': `User Type`,
+ 'trials:staff:table:status': `Status`,
+ 'trials:staff:table:joinTime': `Date Joined`,
+ 'trials:staff:table:exitTime': `Exit Date`,
+ 'trials:staff:table:authorizationTime': `Time Authorized`,
+ 'trials:staff:table:disableTime': `Time Revoked`,
+ 'trials:staff:action:status': `Status`,
+ 'trials:staff:dialogTitle:add': `Add`,
+ 'trials:staff:dialogTitle:status': `Status`,
+ 'trials:staff:message:addStaff': `Confirm to add?`,
+ 'trials:staff:button:sendEmail': `Send Email`,
+ 'trials:externalStaff:table:lastName': `Last Name`,
+ 'trials:externalStaff:table:firstName': `First Name`,
+ 'trials:externalStaff:table:name': `Name`,
+ 'trials:externalStaff:table:phone': `Tel`,
+ 'trials:externalStaff:table:email': `Email`,
+ 'trials:externalStaff:table:organization': `Affiliation`,
+ 'trials:externalStaff:table:userType': `User Type`,
+ 'trials:externalStaff:table:status': `Status`,
+ 'trials:externalStaff:button:delete': `Delete`,
+ 'trials:externalStaff:button:saveAndSendEmail': `Save & Send Email`,
+ 'trials:externalStaff:dialogTitle:add': `Add`,
+ 'trials:externalStaff:dialogTitle:edit': `Edit`,
+ 'trials:externalStaff:message:delete': `Confirm to delete?`,
+ 'trials:externalStaff:message:add': `Confirm to add?`,
+ 'trials:externalStaff:formRule:phone': `Tel invalid`,
+ 'trials:externalStaff:formRule:email': `Email invalid`,
+ 'trials:siteAndStaff:title:site': `Site`,
+ 'trials:sitesList:button:siteResearch': `Site Survey`,
+ 'trials:sitesList:button:SeeNextPage': `See next page
+`,
+ 'trials:sitesList:table:siteId': `Site ID`,
+ 'trials:sitesList:table:siteName': `Site Name`,
+ 'trials:sitesList:table:siteAliasName': `Site Alias`,
+ 'trials:sitesList:table:city': `City`,
+ 'trials:sitesList:table:country': `Country`,
+ 'trials:sitesList:table:staff': `Staff Joined`,
+ 'trials:sitesList:table:status': `Enabled`,
+ 'trials:sitesList:table:timeAdded': `Time Authorized`,
+ 'trials:sitesList:table:timeDeleted': `Time Disabled`,
+ 'trials:sitesList:action:assign': `CRC/CRA`,
+ 'trials:sitesList:dialogTitle:assignSite': `Add new site`,
+ 'trials:sitesList:dialogTitle:assignStaff': `CRC/CRA List (Project: xxx)`,
+ 'trials:sitesList:dialogTitle:editSite': `Edit`,
+ 'trials:sitesList:dialogTitle:staff': `CRC/CRA List (Site: xxx)`,
+ 'trials:sitesList:dialogTitle:editStaffStauts': `Edit`,
+ 'trials:sitesList:message:setSiteId': `Please set Site ID first`,
+ 'trials:sitesList:message:removeSite': `Confirm to remove?`,
+ 'trials:sitesList:message:removedSuccessfully': `Removed successfully!`,
+ 'trials:sitesList:form:keyWord': `Key Word`,
+ 'trials:sitesList:formPlaceholder:keyWord': `User ID/Name/Email`,
+ 'trials:internalStaff:button:assign': `Assign`,
+ 'trials:internalStaff:table:name': `Name`,
+ 'trials:internalStaff:table:uid': `User ID`,
+ 'trials:internalStaff:table:phone': `Tel`,
+ 'trials:internalStaff:table:email': `Email`,
+ 'trials:internalStaff:table:organization': `Affiliation`,
+ 'trials:internalStaff:table:userType': `User Type`,
+ 'trials:internalStaff:table:status': `Status`,
+ 'trials:internalStaff:table:authorizationTime': `Time Authorized`,
+ 'trials:internalStaff:table:disableTime': `Time Disabled`,
+ 'trials:internalStaff:action:status': `Status`,
+ 'trials:internalStaff:message:assign': `Confirm to assign?`,
+ 'trials:sitesList:dialogTitle:addSite': `Add New Site`,
+ 'trials:sitesList:dialogButton:customSite': `Customize`,
+ 'trials:sitesList:dialogButton:addSite': `Add New Site`,
+ 'trials:customSite:title:custom': `Customize`,
+ 'trials:customSite:form:siteId': `Site ID`,
+ 'trials:customSite:form:siteName': `Site Name`,
+ 'trials:customSite:form:orgCode': `Institution Code`,
+ 'trials:customSite:form:country': `Country`,
+ 'trials:customSite:form:city': `City`,
+ 'trials:customSite:form:address': `Address`,
+ 'trials:customSite:form:hospital': `Affiliated Hospital`,
+ 'trials:customSite:form:director': `Director`,
+ 'trials:customSite:form:directorPhone': `Director's Tel.`,
+ 'trials:customSite:form:contactor': `Contact Person`,
+ 'trials:customSite:form:contactorPhone': `Contact Person's Tel.`,
+ 'trials:customSite:message:add': `Confirm to add?`,
+ 'trials:tab:visitPlan': `Visit Management`,
+ 'trials:visitPlan:button:confirm': `Confirm`,
+ 'trials:visitPlan:button:adjustRecord': `Adjustment Records`,
+ 'trials:visitPlan:table:visitName': `Visit Name`,
+ 'trials:visitPlan:table:isBaseLine': `Baseline`,
+ 'trials:visitPlan:table:blindName': `Blind Mark`,
+ 'trials:visitPlan:table:viistNum': `Visit No.`,
+ 'trials:visitPlan:table:viistDay': `Visit Interval(day)`,
+ 'trials:visitPlan:table:window': `Window`,
+ 'trials:visitPlan:table:isConfirm': `Confirmed`,
+ 'trials:visitPlan:table:isDeleted': `Revoked`,
+ 'trials:visitPlan:table:description': `Description`,
+ 'trials:visitPlan:table:createTime': `Time Created`,
+ 'trials:visitPlan:table:day': `Day`,
+ 'trials:visitPlan:dialogTitle:record': `Adjustment Records`,
+ 'trials:adjustRecord:table:connfirmor': `Confirmed by`,
+ 'trials:adjustRecord:table:connfirmTime': `Time Confirmed`,
+ 'trials:adjustRecord:table:record': `Out of Window Updates Records`,
+ 'trials:adjustRecord:action:download': `Download`,
+ 'trials:adjustRecord:message:confirm': `Confirm to submit?`,
+ 'trials:adjustRecord:formRule:window': `The upper interval must be earlier than the lower interval`,
+ 'trials:visitPlan:button:blindFlag': `Blind Mark`,
+ 'trials:visitPlan:button:bsBlindFlag': `Baseline Blind Mark`,
+ 'trials:visitPlan:button:visitBlindFlag': `Prefix of Visit Blind Mark`,
+ 'trials:tab:qcCfg': `QC Questions Config`,
+ 'trials:qcCfg:button:preview': `Preview`,
+ 'trials:qcCfg:button:confirm': `Confirm Config`,
+ 'trials:qcCfg:button:default': `Add Default Questions`,
+ 'trials:qcCfg:button:custom': `Customize`,
+ 'trials:qcCfg:table:questionName': `QC Questions`,
+ 'trials:qcCfg:table:type': `Type`,
+ 'trials:qcCfg:table:typeValue': `Options`,
+ 'trials:qcCfg:table:order': `No.`,
+ 'trials:qcCfg:table:isRequired': `Mandatory Field`,
+ 'trials:qcCfg:table:isEnable': `Enabled`,
+ 'trials:qcCfg:table:parentQs': `Parent Questions`,
+ 'trials:qcCfg:table:parentTriggerValue': `Display Trigger`,
+ 'trials:qcCfg:table:level': `Level`,
+ 'trials:qcCfg:message:typeValue': `Please use "|" to separate items`,
+ 'trials:qcCfg:message:deleteWarning': `The question cannot be deleted because there's sub-questions under it.`,
+ 'trials:qcCfg:message:msg1': `Identical values does not allowed.`,
+ 'trials:qcCfg:message:msg2': `Please set QC questions before confirming`,
+ 'trials:qcCfg:message:delete': `Confirm to delete?`,
+ 'trials:qcCfg:dialogTitle:new': `Add`,
+ 'trials:qcCfg:dialogTitle:edit': `Edit`,
+ 'trials:qcCfg:dialogTitle:custom': `Customize`,
+ 'trials:tab:attachment': `Document Management`,
+ 'trials:attachment:table:fileType': `Document Type`,
+ 'trials:attachment:table:fileName': `File Name`,
+ 'trials:attachment:table:min': `Minimum reading time (minute)`,
+ 'trials:attachment:table:isDeleted': `Revoked`,
+ 'trials:attachment:table:userType': `User Types to Sign`,
+ 'trials:attachment:table:description': `Description`,
+ 'trials:attachment:table:updateTime': `Time Updated`,
+ 'trials:attachment:action:preview': `Preview`,
+ 'trials:attachment:action:edit': `Edit`,
+ 'trials:attachment:action:apolish': `Revoke`,
+ 'trials:attachment:dialogTitle:preview': `Preview`,
+ 'trials:attachment:message:abolish': `Confirm to revoke?`,
+ 'trials:attachment:message:delete': `Confirm to delete?`,
+ 'trials:attachment:form:file': `Document`,
+ 'trials:attachment:message:pdf': `Must be a PDF file`,
+ 'trials:attachment:message:selectFile': `Please select file`,
+ 'trials:attachment:message:uploadFile': `Only one file is allowed to upload `,
+ 'trials:attachment:button:select': `Select`,
+ 'trials:tab:medicalAuditCfg': `Medical Review Questions Config`,
+ 'trials:medicalAuditCfg:message:message1': `Please select medical review questions`,
+ 'trials:tab:readingUnitCfg': `Reading Module Config`,
+ 'trials:readingUnit:button:sync': `Synchronize Current Criteria`,
+ 'trials:readingUnit:button:confirm': `Confirm`,
+ 'trials:readingUnit:message:sync': `Confirm to synchronize current criteria?`,
+ 'trials:readingUnit:message:msg1': `System find that the current review criteria config has been updated. Confirm to get the latest config information?`,
+ 'trials:readingUnit:message:msg2': `The xxx information is missing, please complete it before confirming.`,
+ 'trials:readingUnit:readingRules': `Review Rules`,
+ 'trials:readingUnit:readingRules:title:readingTool': `Reading Tool`,
+ 'trials:readingUnit:readingRules:title:isReadingPeriod': `Presence of Review Period`,
+ 'trials:readingUnit:readingRules:title:readingTaskViewInOrder': `Order of Reads`,
+ 'trials:readingUnit:readingRules:title:readingTaskViewEnum': `Arrangement of Reads Based on`,
+ 'trials:readingUnit:readingRules:title:isReadingShowSubjectInfo': `Display Subject Information`,
+ 'trials:readingUnit:readingRules:title:isReadingShowPreviousResults': `Display Previous Review Results`,
+ 'trials:readingUnit:readingRules:title:isECRFShowInDicomReading': `Display eICRF on Reading Tab`,
+ 'trials:trials-panel:setting:reading-unit:TrialCriterionAdditionalAssessmentTypeList': `Additional Assessment`,
+ 'trials:readingUnit:readingCriterion': `Review Criteria`,
+ 'trials:readingUnit:readingCriterion:title:formQs': `Form Questions`,
+ 'trials:readingUnit:qsList:title:type': `Type of Question`,
+ 'trials:readingUnit:qsList:title:qsName': `Question Name(CN)`,
+ 'trials:readingUnit:qsList:title:qsNameEn': `Question Name`,
+ 'trials:readingUnit:qsList:title:groupName': `Group(CN)`,
+ 'trials:readingUnit:qsList:title:groupNameEn': `Group `,
+ 'trials:readingUnit:qsList:title:PrecopyValue': `Pre-copy Value`,
+ 'trials:readingUnit:qsList:title:isRequired': `Required`,
+ 'trials:readingUnit:qsList:title:isShow': `Display`,
+ 'trials:readingUnit:qsList:title:isJudgeQuestion': `Adjudication Question`,
+ 'trials:readingUnit:qsList:title:isShowInDicom': `Display on reading page`,
+ 'trials:readingUnit:qsList:title:globalReadingShowType': `Display on global review page?`,
+ 'trials:readingUnit:qsList:title:orderMark': `Prex- to No.`,
+ 'trials:readingUnit:qsList:title:maxQuestionCount': `The Max. number of lines`,
+ 'trials:readingUnit:qsList:title:isCopyLesions': `Copy the value of previous visit`,
+ 'trials:readingUnit:qsList:title:dataSource': `Data Source`,
+ 'trials:readingUnit:qsList:title:valueType': `Type of Numeric`,
+ 'trials:readingUnit:qsList:title:digitPlaces': `Digit Places`,
+ 'trials:readingUnit:qsList:title:unit': `Unit`,
+ 'trials:readingUnit:qsList:title:customUnit': `Customized Unit`,
+ 'trials:readingUnit:qsList:title:customCalculateMark': `Calculate Mode`,
+ 'trials:readingUnit:qsList:title:order': `No.`,
+ 'trials:readingUnit:qsList:title:tableName': `Table Name`,
+ 'trials:readingUnit:qsList:title:typeValue': `Option`,
+ 'trials:readingUnit:qsList:title:defaultValue': `Default Value`,
+ 'trials:readingUnit:qsList:title:parentId': `Parent Question Dependency to Display`,
+ 'trials:readingUnit:qsList:title:parentTriggerValueList': `Trigger Value Dependency to Display`,
+ 'trials:readingUnit:qsList:title:relevanceId': `Parent Question Dependency to Require`,
+ 'trials:readingUnit:qsList:title:relevanceValueList': `Trigger Value Dependency to Require`,
+ 'trials:readingUnit:qsList:title:limitEdit': `Limit Edit`,
+ 'trials:readingUnit:qsList:title:imageCount': `The max. number of upload image`,
+ 'trials:readingUnit:qsList:title:Remark': `Remark`,
+ 'trials:readingUnit:qsList:title:FileType': `Format of File`,
+ 'trials:readingUnit:qsList:title:MaxAnswerLength': `The max. length of answer`,
+ 'trials:readingUnit:qsList:title:DependParentId': `Associated Questions`,
+ 'trials:readingUnit:qsList:title:DataTableColumn': `Associated field`,
+ 'trials:readingUnit:qsList:title:MaxRowCount': `Maximum Number of Repetitions`,
+ 'trials:readingUnit:qsList:message:msg0': `Identical values does not allowed.`,
+ 'trials:readingUnit:qsList:message:msg1': `Please select question with the same level.`,
+ 'trials:readingUnit:qsList:message:msg2': `Please select the sub-question of the table question`,
+ 'trials:readingUnit:qsList:message:msg3': `Please use ‘|’ to seperate items`,
+ 'trials:readingUnit:label:DictionaryCode': `Association Dictionary`,
+ 'trials:readingUnit:label:QuestionGenre': `Option Type`,
+ 'trials:readingUnit:qsList:title:edit': `Edit`,
+ 'trials:readingUnit:qsList:title:view': `View`,
+ 'trials:readingUnit:qsList:title:tableQs': `Table Questions`,
+ 'trials:readingUnit:qsList:title:delete': `Delete`,
+ 'trials:readingUnit:qsList:title:add': `Add`,
+ 'trials:readingUnit:qsList:title:ecrfPreview': `Preview eICRF`,
+ 'trials:readingUnit:qsList:message:deleteConfirm': `Confirm to delete?`,
+ 'trials:readingUnit:qsList:message:deleteSuccessfully': `Deleted Successfully!`,
+ 'trials:readingUnit:qsList:message:loading': `Loading`,
+ 'trials:readingUnit:qsList:message:imageFormat': `Must be in xxx format`,
+ 'trials:readingUnit:readingCriterion:title:baseDataCfg': `Basic Data Config`,
+ 'trials:readingUnit:baseDataCfg:title:organ': `Organ`,
+ 'trials:readingUnit:baseDataCfg:title:organType': `Type of Organ`,
+ 'trials:readingUnit:baseDataCfg:title:classification': `Classification`,
+ 'trials:readingUnit:baseDataCfg:title:classificationEn': `Classification (EN)`,
+ 'trials:readingUnit:baseDataCfg:title:bodyPart': `Body Part`,
+ 'trials:readingUnit:baseDataCfg:title:bodyPartEn': `Body Part (EN)`,
+ 'trials:readingUnit:baseDataCfg:title:organ': `Organ`,
+ 'trials:readingUnit:baseDataCfg:title:organEn': `Organ (EN)`,
+ 'trials:readingUnit:baseDataCfg:title:TULAT': `Location`,
+ 'trials:readingUnit:baseDataCfg:title:TULATEn': `Location (EN)`,
+ 'trials:readingUnit:baseDataCfg:title:isLymphNodes': `Lymph Node`,
+ 'trials:readingUnit:baseDataCfg:title:isCanEditPosition': `Editable`,
+ 'trials:readingUnit:baseDataCfg:title:showOrder': `No.`,
+ 'trials:readingUnit:baseDataCfg:title:remark': `Note`,
+ 'trials:readingUnit:baseDataCfg:title:isEnable': `Display`,
+ 'trials:readingUnit:baseDataCfg:title:dict': `Dictionary of Criteria`,
+ 'trials:readingUnit:baseDataCfg:title:dictTbl': `Dictionary Table Name`,
+ 'trials:readingUnit:baseDataCfg:title:dictDesc': `Description`,
+ 'trials:readingUnit:baseDataCfg:title:dictChildCount': `No. of Sub-items`,
+ 'trials:readingUnit:baseDataCfg:title:dictOrder': `Order`,
+ 'trials:readingUnit:baseDataCfg:title:dictView': `View`,
+ 'trials:readingUnit:baseDataCfg:title:dictValCN': `Value(CN)`,
+ 'trials:readingUnit:baseDataCfg:title:dictValEN': `Value (EN)`,
+ 'trials:readingUnit:baseDataCfg:title:dictValDesc': `Description`,
+ 'trials:readingUnit:baseDataCfg:title:dictVal': `Value in Dictionary of Criteria`,
+ 'trials:readingUnit:baseDataCfg:title:set': `Settings`,
+ 'trials:readingUnit:baseDataCfg:button:sync': `SYNC`,
+ 'trials:readingUnit:baseDataCfg:button:set': `Set`,
+ 'trials:readingUnit:baseDataCfg:message:sync': `SYNC successfully!`,
+ 'trials:readingUnit:baseDataCfg:message:updateConfirm': `Confirm to update?`,
+ 'trials:readingUnit:baseDataCfg:message:deleteConfirm': `Confirm to delete?`,
+ 'trials:readingUnit:baseDataCfg:message:deleteSuccessfully': `Deleted Successfully!`,
+ 'trials:readingUnit:GlobalReading': `Global Review`,
+ 'trials:readingUnit:globalReading:title:globalAssessTypes': `Assessment Update Type`,
+ 'trials:readingUnit:globalReading:title:valueCN': `Value `,
+ 'trials:readingUnit:globalReading:title:valueEN': `Value (EN)`,
+ 'trials:readingUnit:globalReading:title:isBaseLineUse': `Baseline assessment`,
+ 'trials:readingUnit:globalReading:title:isFollowVisitUse': `Follow-up assessment`,
+ 'trials:readingUnit:adRules': `Adjudication Rules`,
+ 'trials:adRules:title:arbitrationRule': `Adjudication Object`,
+ 'trials:adRules:title:judgeTypeEnum': `Condition of Triggering Adjudication`,
+ 'trials:adRules:button:addRule': `Add Rule`,
+ 'trials:adRules:title:order': `No.`,
+ 'trials:adRules:title:answerGroupA': `Reviewer A`,
+ 'trials:adRules:title:answerGroupB': `Reviewer B`,
+ 'trials:adRules:title:selectAnswerGroup': `Select an Answer Group`,
+ 'trials:adRules:title:addGroup': `Add a Group`,
+ 'trials:adRules:title:group': `Group`,
+ 'trials:adRules:title:selectAnswer': `Select an Answer`,
+ 'trials:adRules:message:msg1': `Delete this group rule`,
+ 'trials:adRules:message:msg2': `Please select Answer A`,
+ 'trials:adRules:message:msg3': `Please select Answer B`,
+ 'trials:adRules:message:msg4': `New rule of answer was added`,
+ 'trials:adRules:message:msg5': `Please select answer before adding group`,
+ 'trials:adRules:message:msg6': `Confirm to reset the condition of triggering adjudication?`,
+ 'trials:adRules:message:msg7': `Reset Successfully!`,
+ 'trials:adRules:message:msg8': `Please config rules before application`,
+ 'trials:adRules:message:msg9': `Applied Successfully!`,
+ 'trials:readingUnit:oncologyReading': `Config of Oncology Review`,
+ 'trials:readingUnit:oncologyReading:title:oncologyAssessIdsStr': `Review Result`,
+ 'trials:readingUnit:oncologyReading:title:evaluationReason': `Assessment Reason`,
+ 'trials:readingUnit:oncologyReading:title:valueCN': `Value (CN)`,
+ 'trials:readingUnit:oncologyReading:title:valueEN': `Value (EN)`,
+ 'trials:readingUnit:oncologyReading:title:oncologyReading': `Oncology Review`,
+ 'trials:tab:emailManageCfg': `Email Management`,
+ 'trials:emailManageCfg:title:code': `Code`,
+ 'trials:emailManageCfg:title:businessScenario': `Scenario`,
+ 'trials:emailManageCfg:title:fromName': `Sender`,
+ 'trials:emailManageCfg:title:fromEmail': `Send Email Address`,
+ 'trials:emailManageCfg:title:SMTPServerAddress': `SMTP Server Address`,
+ 'trials:emailManageCfg:title:SMTPServerPort': `SMTP Server Port`,
+ 'trials:emailManageCfg:title:authorizationCode': `Password/Authorization Code`,
+ 'trials:emailManageCfg:title:toUserTypeList': `Recipient`,
+ 'trials:emailManageCfg:title:copyUserTypeList': `CC`,
+ 'trials:emailManageCfg:title:fileName': `Attachment`,
+ 'trials:emailManageCfg:title:isReturnRequired': `Receipt Required`,
+ 'trials:emailManageCfg:title:isUrgent': `Expedited`,
+ 'trials:emailManageCfg:title:isAutoSend': `Auto Sent`,
+ 'trials:emailManageCfg:title:updateTime': `Time Updated`,
+ 'trials:emailManageCfg:title:createTime': `Time Created`,
+ 'trials:emailManageCfg:button:select': `Select`,
+ 'trials:emailManageCfg:message:format': `(must be in word/excel format)`,
+ 'trials:emailManageCfg:message:onlyOneFile': `Only one file is allowed to upload.`,
+ 'trials:emailManageCfg:title:sendEmailCfg': `Outbox Configuration`,
+ 'trials:emailManageCfg:title:sendEmailAccount': `Outbox`,
+ 'trials:emailManageCfg:title:password': `Password/Authorization Code`,
+ 'trials:emailManageCfg:title:emailTpl': `Automated Email Templates`,
+ 'trials:emailManageCfg:title:commom': `General`,
+ 'trials:emailManageCfg:title:criterions': `Related to Criteria`,
+ 'trials:emailManageCfg:button:Default': `undefined`,
+ 'trials:emailManageCfg:table:EmailTopicCN': `undefined`,
+ 'trials:emailManageCfg:table:EmailTopic': `undefined`,
+ 'trials:emailManageCfg:table:BusinessScenarioEnum': `undefined`,
+ 'trials:emailManageCfg:table:ToUserTypeList': `undefined`,
+ 'trials:emailManageCfg:table:CopyUserTypeList': `undefined`,
+ 'trials:emailManageCfg:table:blackUserIdList': `undefined`,
+ 'trials:emailManageCfg:table:EmailUrgentEnum': `undefined`,
+ 'trials:emailManageCfg:table:EmailCron': `undefined`,
+ 'trials:emailManageCfg:table:IsAutoSend': `undefined`,
+ 'trials:emailManageCfg:table:IsEnable': `undefined`,
+ 'trials:emailManageCfg:table:CriterionTypeEnum': `undefined`,
+ 'trials:emailManageCfg:table:fileListCN': `undefined`,
+ 'trials:emailManageCfg:table:fileListEN': `undefined`,
+ 'trials:emailManageCfg:table:EmailHtmlContentCN': `undefined`,
+ 'trials:emailManageCfg:table:EmailHtmlContentEN': `undefined`,
+ 'trials:emailManageCfg:table:BusinessLevelEnum': `undefined`,
+ 'trials:emailManageCfg:table:BusinessModuleEnum': `undefined`,
+ 'trials:medicalFeedbackCfg:title:taskType': `Review Type`,
+ 'trials:medicalFeedbackCfg:title:criterion': `Review Criteria`,
+ 'trials:medicalFeedbackCfg:title:isGeneral': `General`,
+ 'trials:medicalFeedbackCfg:message:msg1': `Please config medical review question before confirming`,
+ 'trials:medicalFeedbackCfg:message:msg2': `Identical values does not allowed.`,
+ 'trials:medicalFeedbackCfg:message:msg3': `No data`,
+ 'trials:menuTitle:workbench': `Dashboard`,
+ 'trials:workbench:label:trialsStats': `My Trials`,
+ 'trials:workbench:label:attachmentsStats': `Documents Signed`,
+ 'trials:workbench:label:pendingTasksStats': `Pending`,
+ 'trials:workbench:label:messagesStats': `Notifications`,
+ 'trials:workbench:table:trialId': `Trial ID`,
+ 'trials:workbench:table:experimentName': `Study Name`,
+ 'trials:workbench:table:researchNo': `Protocol No.`,
+ 'trials:workbench:action:sign': `Sign`,
+ 'trials:workbench:title:trialDocBeSigned': `Trial Documents to Sign`,
+ 'trials:trialDocBeSigned:table:fileCount': `No. of Documents to Sign`,
+ 'trials:workbench:title:pendingSiteResearch': `Site Survey`,
+ 'trials:pendingSiteResearch:table:siteCount': `No. of Sites to Approve`,
+ 'trials:pendingSiteResearch:action:audit': `Review`,
+ 'trials:workbench:title:sysDocBeSigned': `System Documents to Sign`,
+ 'trials:sysDocBeSigned:table:fileType': `Document Type`,
+ 'trials:sysDocBeSigned:table:fileName': `File Name`,
+ 'trials:sysDocBeSigned:table:uploadTime': `Time Updated`,
+ 'trials:tab:notice': `Notifications`,
+ 'trials:notice:table:notificationType': `Notification Type`,
+ 'trials:notice:table:notificationContent': `Notification`,
+ 'trials:notice:table:notificationStatus': `Notification State`,
+ 'trials:notice:table:publisher': `Publisher`,
+ 'trials:notice:table:releaseTime': `Time Published`,
+ 'trials:notice:table:endTime': `Time Disabled`,
+ 'trials:notice:table:appendix': `Attachment`,
+ 'trials:notice:table:isRead': `Readed`,
+ 'trials:notice:action:detail': `Details`,
+ 'login:title:system': `IRC Imaging System`,
+ 'login:form:userName': `User ID`,
+ 'login:form:password': `Password`,
+ 'login:button:login': `Login`,
+ 'login:button:forgetPassword': `Forgot Password`,
+ 'login:formRule:userName': `Please enter user ID!`,
+ 'login:formRule:password': `Please enter password!`,
+ 'login:message:login1': `It's the user's first login, please change your password immediately!`,
+ 'login:message:login2': `No menu is configured to current user. Please contact system administrator.`,
+ 'recompose:title:init': `Initialize the User ID and Password`,
+ 'recompose:form:userName': `User ID`,
+ 'recompose:form:oldPassword': `Old Password`,
+ 'recompose:form:newPassword': `New Password`,
+ 'recompose:form:confirmPassword': `Confirm Password`,
+ 'recompose:button:cancel': `Cancel`,
+ 'recompose:button:save': `Save`,
+ 'recompose:message:warning': `The current page is for the first login`,
+ 'recompose:message:passwordDiffer': `The two passwords you entered do not match`,
+ 'recompose:message:updatedSuccessfully': `Updated successfully. Please log in again.`,
+ 'recompose:message:passwordValid': `The password is consisted of 8-32 characters.`,
+ 'recompose:form:email': `Email`,
+ 'recompose:form:role': `Role`,
+ 'passwordReset:title:reset': `Reset Password`,
+ 'passwordReset:form:email': `Email`,
+ 'passwordReset:form:verificationCode': `Verification Code`,
+ 'passwordReset:form:userName': `User ID`,
+ 'passwordReset:form:userType': `User Type`,
+ 'passwordReset:form:password': `New Password`,
+ 'passwordReset:form:confirmPassword': `Confirm Password`,
+ 'passwordReset:button:send': `Send Code`,
+ 'passwordReset:button:wait': `Wait`,
+ 'passwordReset:button:verify': `Verify`,
+ 'passwordReset:button:cancel': `Cancel`,
+ 'passwordReset:button:submit': `Save`,
+ 'passwordReset:formRule:email': `Please input email address`,
+ 'passwordReset:formRule:password': `Please input password`,
+ 'passwordReset:formRule:confirmPassword': `Please input password again`,
+ 'passwordReset:formRule:passwordsDiffer': `The two password you entered do not match`,
+ 'passwordReset:formRule:passwordinvalid': `Invalid email address`,
+ 'passwordReset:message:updatedSuccessfully': `Updated successfully`,
+ 'trials:trials-myinfo:title:avater': `Profile Photo`,
+ 'trials:trials-myinfo:title:basicInfo': `User Profile`,
+ 'trials:trials-myinfo:form:surname': `Last Name`,
+ 'trials:trials-myinfo:form:givenname': `First Name`,
+ 'trials:trials-myinfo:form:gender': `Gender`,
+ 'trials:trials-myinfo:form:organization': `Affiliation`,
+ 'trials:trials-myinfo:form:department': `Department`,
+ 'trials:trials-myinfo:form:position': `Title`,
+ 'trials:trials-myinfo:button:save': `Save`,
+ 'trials:trials-myinfo:title:accountInfo': `My profile`,
+ 'trials:trials-myinfo:form:userName': `User ID`,
+ 'trials:trials-myinfo:form:phone': `Tel`,
+ 'trials:trials-myinfo:form:email': `Email`,
+ 'trials:trials-myinfo:button:update': `Update`,
+ 'trials:trials-myinfo:button:getVCode': `Send Verification Code`,
+ 'trials:trials-myinfo:button:wait': `Wait`,
+ 'trials:trials-myinfo:message:updateSuccessfully': `Updated successfully`,
+ 'trials:trials-myinfo:message:sendSuccessfully': `Sent successfully`,
+ 'trials:trials-myinfo:message:modifyPWSuccessfully': `Updated successfully. Please login again.`,
+ 'trials:trials-myinfo:button:loginout': `Sign out`,
+ 'trials:trials-myinfo:title:updatePaasord': `Update the password`,
+ 'trials:tab:trials': `My Trials`,
+ 'trials:trials:title:back': `Return`,
+ 'trials:trials:title:backTrialList': `Return to trial list`,
+ 'trials:trials:title:eics': `IRC Imaging System`,
+ 'trials:tab:reading': `Reads`,
+ 'trials:tab:pendingReadingTasks': `Pending`,
+ 'trials:pendingReadingTasks:table:subjectCode': `Subject ID`,
+ 'trials:pendingReadingTasks:table:remainingReadingVolume': `Remaining Reads`,
+ 'trials:pendingReadingTasks:table:suggestedCompletionTime': `Suggested Completion Time`,
+ 'trials:pendingReadingTasks:table:remainingTaskVolume': `Remaining Reads`,
+ 'trials:pendingReadingTasks:table:amountOfJudgesRemaining': `Remaining Adjudications`,
+ 'trials:pendingReadingTasks:table:amountOfCompletedTasks': `Completed`,
+ 'trials:pendingReadingTasks:table:numberOfJudgesCompleted': `Completed Adjudication`,
+ 'trials:pendingReadingTasks:button:beginRandomReview': `Start random reading`,
+ 'trials:pendingReadingTasks:table:operate': `Action`,
+ 'trials:pendingReadingTasks:button:review': `Reading`,
+ 'trials:pendingReadingTasks:button:ExistReadingApply': `The current subject has a re-read request pending. Subsequent reads are not allowed`,
+ 'trials:reading:tabTitle:review': `Reading`,
+ 'trials:reading:tabTitle:report': `Report`,
+ 'trials:reading:dagTitle:msg1': `Please read the clinical data, and then click “Confirm”.`,
+ 'trials:reading:button:confirm': `Confirm`,
+ 'trials:reading:warnning:msg1': `Reading of Subject xxx has started.`,
+ 'trials:reading:warnning:msg2': `The information of Lesion xxx has not been completed or saved. Switch to the Report tab?`,
+ 'trials:reading:warnning:msg200': `The evaluaion of Lesion xxx has not been completed or saved, and the eICRF cannot be submitted.`,
+ 'trials:reading:warnning:msg201': `Image quality information has not been saved. Switch to the Report tab?`,
+ 'trials:reading:title:keySeries': `Key Series`,
+ 'trials:reading:button:download': `Download`,
+ 'trials:reading:button:pause': `Pause`,
+ 'trials:reading:button:marked': `Lesion mark(s) present.`,
+ 'trials:reading:button:layout': `Layout`,
+ 'trials:reading:button:wwwc': `Windowing`,
+ 'trials:reading:button:wwwcDefault': `Default`,
+ 'trials:reading:button:wwwcCustom': `Customized`,
+ 'trials:reading:button:wwwcRegion': `Rectangle Area Windowing`,
+ 'trials:reading:dagTitle:wwwcCustom': `Customized Windowing`,
+ 'trials:reading:title:preset': `W/L Preset`,
+ 'trials:reading:button:reverseColor': `Inverse Color`,
+ 'trials:reading:button:zoom': `Zoom`,
+ 'trials:reading:button:move': `Move`,
+ 'trials:reading:button:rotate': `Rotate`,
+ 'trials:reading:button:rotateDefault': `Default`,
+ 'trials:reading:button:rotateVertical': `Flip Vertical`,
+ 'trials:reading:button:rotateHorizontal': `Flip Horizontal `,
+ 'trials:reading:button:rotateTurnLeft': `Rotate Left`,
+ 'trials:reading:button:rotateTurnRight': `Rotate Right`,
+ 'trials:reading:button:fitWindow': `Fit to Screen`,
+ 'trials:reading:button:fitImage': `Fit to Image`,
+ 'trials:reading:button:imageIndexSync': `Scroll Synchronize`,
+ 'trials:reading:button:screenShot': `Screenshot`,
+ 'trials:reading:button:length': `Diameter `,
+ 'trials:reading:button:bidirectional': `Bidirectional `,
+ 'trials:reading:button:arrowAnnotate': `Arrow `,
+ 'trials:reading:button:rectangle': `Rectangle`,
+ 'trials:reading:button:reset': `Reset`,
+ 'trials:reading:button:clinicalData': `Clinical Data`,
+ 'trials:reading:button:unsaved': `Data is not saved!`,
+ 'trials:reading:button:incompleteInfor': `Incompleted data`,
+ 'trials:reading:button:split': `Split`,
+ 'trials:reading:button:customCfg': `Customized Config`,
+ 'trials:reading:tab:hotkeys': `Hotkeys`,
+ 'trials:reading:tab:wlTemplate': `W/L Template`,
+ 'trials:reading:tab:others': `Others`,
+ 'trials:reading:label:wlTplName': `Name`,
+ 'trials:reading:label:wlTplWW': `WW`,
+ 'trials:reading:label:wlTplWL': `WL`,
+ 'trials:reading:wlTemplate:delete': `Confirm to delete?`,
+ 'trials:reading:label:autoSwitch': `Automatically proceed to the next read without reminder`,
+ 'trials:reading:button:handbooks': `Handbooks`,
+ 'trials:reading:warnning:unableEvaluate': `Please confirm whether all lesions in this visit are unevaluable?`,
+ 'trials:reading:warnning:msg3': `The information of Lesion xxx is not saved. If split is executed, the information of xxx will be restored. Continue?`,
+ 'trials:reading:warnning:msg4': `Confirm to split?`,
+ 'trials:reading:warnning:msg5': `The information of Lesion xxx is not saved. Adding is not allowed.`,
+ 'trials:reading:warnning:msg6': `Use bidirectional tool to meansure nodal target lesions.`,
+ 'trials:reading:warnning:msg7': `Use diameter tool to measure non-nodal target lesions.`,
+ 'trials:reading:warnning:msg8': `Use bidirectional tool or rectangle Tool to mark nodal, non-target lesions.`,
+ 'trials:reading:warnning:msg9': `Use diameter tool or rectangle tool to measure non-nodal, non-target lesions.`,
+ 'trials:reading:warnning:msg10': `Use bidirectional tool or arrow tool or rectangle Tool to mark nodal target lesions.`,
+ 'trials:reading:warnning:msg11': `Use diameter tool or arrow tool to measure non-nodal target lesions.`,
+ 'trials:reading:warnning:msg12': `Use bidirectional tool or arrow tool to mark new nodal lesions.`,
+ 'trials:reading:warnning:msg13': `Use diameter tool or arrow tool to measure new non-nodal lesions.`,
+ 'trials:reading:warnning:msg14': `Accoding to the imaging charter, the number of target lesions cannot exceed xxx.`,
+ 'trials:reading:button:removeMark': `Remove mark`,
+ 'trials:reading:warnning:msg15': `Accoding to the imaging charter, the current lesion cannot be marked as a target lesion! `,
+ 'trials:reading:warnning:msg17': `The information of Lesion xxx has not been saved, & this operation is not allowed.`,
+ 'trials:reading:warnning:msg18': `The current lesion is a target lesion. No mark is allowed.`,
+ 'trials:reading:warnning:msg19': `If the state of a nodal target lesion is "Present", its short axis should be no shorter than 15mm. Please use bidirectional tool to mark it.`,
+ 'trials:reading:warnning:msg20': `If the state of a non-nodal target lesion is "Present", its long axis should be no shorter than 10mm and no less than twice the slice thickness. Please use diameter measurement tool to mark it.`,
+ 'trials:reading:warnning:msg21': `If the state of a nodal non-target lesion is "Present", please use bidirectional tool or rectangle tool to mark it.`,
+ 'trials:reading:warnning:msg22': `If the state of a non-nodal, non-target lesion is "Present", please use diameter tool or rectangle tool to mark it.`,
+ 'trials:reading:warnning:msg23': `If the state of a nodal target lesion is "Present", its short axis should be no shorter than 10mm. Please use bidirectional tool to mark it.`,
+ 'trials:reading:warnning:msg24': `If the state of a non-nodal target lesion is "Present", please use diameter tool to mark it.`,
+ 'trials:reading:warnning:msg25': `If the state of a nodal target lesion is "Too small", please use arrow tool to mark it.`,
+ 'trials:reading:warnning:msg26': `If the state of a non-nodal target lesion is "Too small", please use arrow tool to mark it.`,
+ 'trials:reading:warnning:msg27': `If the state of a nodal target lesion is "NE", do not mark it.`,
+ 'trials:reading:warnning:msg28': `If the state of a non-nodal target lesion is "NE", do not mark it.`,
+ 'trials:reading:warnning:msg29': `If the state of a nodal target lesion is "Disappeared", its short axis should be less than 10mm. Please use bidirectional tool to mark it.`,
+ 'trials:reading:warnning:msg30': `If the state of a non-nodal target lesion is "Disappeared", please only use arrow tool to mark it.`,
+ 'trials:reading:warnning:msg31': `If the state of a nodal non-target lesion is "Present", please use bidirectional tool or rectangle tool to mark it.`,
+ 'trials:reading:warnning:msg32': `If the state of a non-nodal, non-target lesion is "Present", please use diameter tool or rectangle tool to mark it.`,
+ 'trials:reading:warnning:msg33': `If the state of a nodal non-target lesion is "Unequivocal progression", please use bidirectional tool or rectangle tool to mark it.`,
+ 'trials:reading:warnning:msg34': `If the state of a non-nodal, non-target lesion is "Unequivocal progression", please use diameter tool or rectangle tool to mark it.`,
+ 'trials:reading:warnning:msg35': `If the state of a nodal non-target lesion is "NE", do not mark it.`,
+ 'trials:reading:warnning:msg36': `If the state of a non-nodal, non-target lesion is "NE", do not mark it.`,
+ 'trials:reading:warnning:msg37': `If the state of a nodal, non-target lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:reading:warnning:msg38': `If the state of a non-nodal, non-target lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:reading:warnning:msg39': `If the state of a new nodal lesion is "Unequivocal", please use bidirectional tool or arrow tool to mark it.`,
+ 'trials:reading:warnning:msg40': `If the state of a new non-nodal lesion is "Unequivocal", please use diameter tool or arrow tool to mark it.`,
+ 'trials:reading:warnning:msg41': `If the state of a new nodal lesion is "Suspected", please use bidirectional tool or arrow tool to mark it.`,
+ 'trials:reading:warnning:msg42': `If the state of a new non-nodal lesion is "Suspected", please use diameter tool or arrow tool to mark it.`,
+ 'trials:reading:warnning:msg43': `If the state of a new nodal lesion is "NE", do not mark it.`,
+ 'trials:reading:warnning:msg44': `If the state of a new non-nodal lesion is "NE", do not mark it.`,
+ 'trials:reading:warnning:msg45': `If the state of a new nodal lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:reading:warnning:msg46': `If the state of a new non-nodal lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:reading:warnning:msg47': `Confirm to remove the lesion mark? `,
+ 'trials:reading:warnning:msg48': `Confirm to delete the lesion?`,
+ 'trials:reading:title:lesionType': `Lesion Type`,
+ 'trials:reading:warnning:msg49': `The current lesion is new, and hasn’t been saved. If the window is closed, all lesion informaiton will be deleted. Confirm to proceed?`,
+ 'trials:reading:warnning:msg50': `The current lesion has updated information that hasn't been saved. Confirm to proceed?`,
+ 'trials:reading:warnning:msg51': `Use diameter tool or bidirectional tool or arrow tool to measure new lesions.`,
+ 'trials:reading:warnning:msg52': `Use bidirectional tool or rectangle Tool or arrow tool to mark nodal, non-target lesions.`,
+ 'trials:reading:warnning:msg53': `Use diameter tool or rectangle tool or arrow tool to measure non-nodal, non-target lesions.`,
+ 'trials:reading:warnning:msg54': `Arrow cannot be used to mark Baseline lesions. `,
+ 'trials:reading:warnning:msg55': `Global review adjust assessment results to:`,
+ 'trials:reading:warnning:msg56': `The image does not have the necessary data to measure the length and cannot use Diameter tool. Select another tool to mark.`,
+ 'trials:reading:warnning:msg57': `"xxx" hotkeys cannot be empty!`,
+ 'trials:readingPGWC:warnning:msg1': `No. of lesions must range from 1 to 99`,
+ 'trials:readingPGWC:warnning:msg2': `For new lesions classified as “Present”, please use Arrow to add a marker.`,
+ 'trials:readingPGWC:warnning:msg3': `For previous new lesions classified as “Present”, please use Arrow to add a marker.`,
+ 'trials:readingPGWC:warnning:msg4': `For previous new lesions classified as “Benign”, please use Arrow to add a marker.`,
+ 'trials:readingPGWC:warnning:msg5': `For previous new lesions classified as “Absent”, please use Arrow to add a marker.`,
+ 'trials:readingPGWC:warnning:msg6': `For previous new lesions classified as “Not Evaluable status”, no mark is required.`,
+ 'trials:readingBM:warnning:msg01': `Use length tool to meansure target lesions.`,
+ 'trials:readingBM:warnning:msg02': `Use diameter tool or rectangle tool to measure non-target lesions.`,
+ 'trials:readingBM:warnning:msg03': `Use diameter tool or arrow tool to measure target lesions.`,
+ 'trials:readingBM:warnning:msg04': `Use diameter tool or rectangle tool or arrow tool to measure non-target lesions.`,
+ 'trials:readingBM:warnning:msg05': `Use diameter tool or arrow tool to measure new lesions.`,
+ 'trials:readingBM:warnning:msg06': `If the state of a target lesion is "Present", its long axis should be no shorter than 10mm and no less than twice the slice thickness. Please use diameter measurement tool to mark it.`,
+ 'trials:readingBM:warnning:msg07': `If the state of a non-target lesion is "Present", please use length tool or rectangle tool to mark it.`,
+ 'trials:readingBM:warnning:msg08': `If the state of a target lesion is "Present", please use length tool to mark it.`,
+ 'trials:readingBM:warnning:msg09': `If the state of a target lesion is "Too small", please use arrow tool to mark it.`,
+ 'trials:readingBM:warnning:msg10': `If the state of a target lesion is "NE", do not mark it.`,
+ 'trials:readingBM:warnning:msg11': `If the state of a target lesion is "Disappeared", please only use arrow tool to mark it.`,
+ 'trials:readingBM:warnning:msg12': `If the state of a non-target lesion is "Present", please use length tool or rectangle tool to mark it.`,
+ 'trials:readingBM:warnning:msg13': `If the state of a non-target lesion is "Unequivocal progression", please use diameter tool or rectangle tool to mark it.`,
+ 'trials:readingBM:warnning:msg14': `If the state of a non-target lesion is "NE", do not mark it.`,
+ 'trials:readingBM:warnning:msg15': `If the state of a non-target lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:readingBM:warnning:msg16': `If the state of a new lesion is "Unequivocal", please use diameter tool or arrow tool to mark it.`,
+ 'trials:readingBM:warnning:msg17': `If the state of a new lesion is "Suspected", please use diameter tool or arrow tool to mark it.`,
+ 'trials:readingBM:warnning:msg18': `If the state of a new lesion is "NE", do not mark it.`,
+ 'trials:readingBM:warnning:msg19': `If the state of a new lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg1': `If the state of a new nodal target lesion is "Present", please use bidirectional tool to mark it.`,
+ 'trials:iRecist:warnning:msg2': `If the state of a new non-nodal target lesion is "Present", please use diameter tool to mark it.`,
+ 'trials:iRecist:warnning:msg3': `If the state of a new nodal target lesion is "Disappeared", its short axis should be less than 10mm. Please use bidirectional tool to mark it.`,
+ 'trials:iRecist:warnning:msg4': `If the state of a new non-nodal target lesion is "Disappeared", please only use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg5': `If the state of a new nodal target lesion is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg6': `If the state of a new non-nodal target lesion is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg7': `If the state of a new nodal non-target lesion is "Present", please use bidirectional tool or rectangle tool to mark it.`,
+ 'trials:iRecist:warnning:msg8': `If the state of a new non-nodal non-target lesion is "Present", please use diameter tool or rectangle tool to mark it.`,
+ 'trials:iRecist:warnning:msg9': `If the state of a new nodal non-target lesion is "Progression", please use bidirectional tool or rectangle tool to mark it.`,
+ 'trials:iRecist:warnning:msg10': `If the state of a new non-nodal non-target lesion is "Progression", please use diameter tool or rectangle tool to mark it.`,
+ 'trials:iRecist:warnning:msg11': `If the state of a new nodal non-target lesion is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg12': `If the state of a new non-nodal non-target lesion is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg13': `If the state of a new nodal non-target lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg14': `If the state of a new non-nodal non-target lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg15': `If the state of an other previous new nodal lesion is "Unequivocal", please use bidirectional tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg16': `If the state of an other previous new non-nodal lesion is "Unequivocal", please use diameter tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg17': `If the state of an other previous new nodal lesion is "Suspected", please use bidirectional tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg18': `If the state of an other previous new non-nodal lesion is "Suspected", please use diameter tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg19': `If the state of an other previous new nodal lesion is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg20': `If the state of an other previous new non-nodal lesion is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg21': `If the state of a new nodal lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg22': `If the state of an other previous new non-nodal lesion is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg23': `If the state of a new nodal lesion after triggering iRECSIT is "Unequivocal", please use bidirectional tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg24': `If the state of a new non-nodal lesion after triggering iRECSIT is "Unequivocal", please use diameter tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg25': `If the state of a new nodal lesion after triggering iRECSIT is "Suspected", please use bidirectional tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg26': `If the state of a new non-nodal lesion after triggering iRECSIT is "Suspected", please use diameter tool or arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg27': `If the state of a new nodal lesion after triggering iRECSIT is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg28': `If the state of a new non-nodal lesion after triggering iRECSIT is "Disappeared", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg29': `If the state of a new nodal lesion after triggering iRECSIT is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg30': `If the state of a new non-nodal lesion after triggering iRECSIT is "NE", do not mark it.`,
+ 'trials:iRecist:warnning:msg31': `If the state of a new nodal target lesion is "Present", its short axis should be no shorter than 15mm. Please use bidirectional tool to mark it.`,
+ 'trials:iRecist:warnning:msg32': `If the state of a new non-nodal target lesion is "Present", its long axis should be no shorter than 10mm and no less than twice the slice thickness. Please use diameter measurement tool to mark it.`,
+ 'trials:iRecist:warnning:msg33': `If the state of a new nodal target lesion is "Too small", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg34': `If the state of a new non-nodal target lesion is "Too small", please use arrow tool to mark it.`,
+ 'trials:iRecist:warnning:msg35': `Use bidirectional tool or arrow tool to mark new nodal target lesion lesions.`,
+ 'trials:iRecist:warnning:msg36': `Use diameter tool or arrow tool to measure new non-nodal target lesions.`,
+ 'trials:iRecist:warnning:msg37': `Use bidirectional tool or rectangle Tool or arrow tool to mark new nodal non-target lesions.`,
+ 'trials:iRecist:warnning:msg38': `Use diameter tool or rectangle tool or arrow tool to measure new non-nodal, non-target lesions.`,
+ 'trials:iRecist:warnning:msg39': `Use bidirectional tool or arrow tool to mark other previous new nodal lesions.`,
+ 'trials:iRecist:warnning:msg40': `Use diameter tool or arrow tool to measure other previous new non-nodal lesions.`,
+ 'trials:iRecist:warnning:msg41': `Use bidirectional tool or arrow tool to mark new nodal lesion after triggering iRECSIT lesions.`,
+ 'trials:iRecist:warnning:msg42': `Use diameter tool or arrow tool to measure new non-nodal lesion after triggering iRECSIT lesions.`,
+ 'trials:iRecist:warnning:msg44': `Reminder`,
+ 'trials:iRecist:warnning:msg45': `You determine that the overall response of the current visit is PD. According to the imaging charter, the visit trigger iRECIST review. Please re-evaluate the lesion:`,
+ 'trials:iRecist:warnning:msg46': `(1)New lesions can be converted into: New target lesions, new non-target lesions, and other previous new lesions.`,
+ 'trials:iRecist:warnning:msg47': `(2)New target lesions: Only unequivocal new lesions can be converted into new target lesions. The selection rules of new target lesions were the same as those of RECIST1.1. If the current lesion has been marked but does not meet the requirements of the new target lesion, please clear the mark and re-mark.`,
+ 'trials:iRecist:warnning:msg48': `(3)New non-target lesions: Only unequivocal new lesions can be converted into new non-target lesions. The selection rules of new target lesions were the same as those for RECIST1.1.`,
+ 'trials:iRecist:warnning:msg49': `(4)Other previous new lesions: The system will automatically convert the equivocal or disappeared new lesions into other previous new lesions. No need modification.`,
+ 'trials:iRecist:warnning:msg50': `If the state of a nodal non-target lesion is "Further progression", please use bidirectional tool or rectangle tool to mark it.`,
+ 'trials:iRecist:warnning:msg51': `If the state of a non-nodal, non-target lesion is "Further progression", please use diameter tool or rectangle tool to mark it.`,
+ 'trials:globalReview:title:subject': `Subject:`,
+ 'trials:globalReview:title:result': `Global Review`,
+ 'trials:globalReview:title:clinicalData': `Clinical Data`,
+ 'trials:globalReview:button:submit': `Submit`,
+ 'trials:globalReview:table:visitName': `Visit Name`,
+ 'trials:globalReview:table:evaluationRes': `Assessment Results`,
+ 'trials:globalReview:table:isAgreeEvaluationRes': `Agree with assessment results?`,
+ 'trials:globalReview:table:adjustedRes': `Assessement Results after Adjustment`,
+ 'trials:globalReview:table:view': `View Details`,
+ 'trials:globalReview:dagTitle:adjust': `Adjust`,
+ 'trials:globalReview:title:previousRes': `Previous global review results`,
+ 'trials:globalReview:table:globalReading': `Global Review`,
+ 'trials:globalReview:table:visitRemark': `Timepoint comments`,
+ 'trials:globalReview:table:globalRemark': `Comnments`,
+ 'trials:globalReview:table:updateType': `Evaluation Update Type`,
+ 'trials:globalReview:message:msg1': `The global review hasn't been completed, and there are timepoints with unconfirmed assessment results.`,
+ 'trials:globalReview:message:msg2': `The current read has been completed. Proceed to the next one?`,
+ 'trials:hotkeys:title:hotkey': `Hotkeys`,
+ 'trials:hotkeys:message:input': `Please enter the key.`,
+ 'trials:hotkeys:message:confirmReset': `Confirm to reset?`,
+ 'trials:hotkeys:message:resetSuccessfully': `Reset successfully`,
+ 'trials:hotkeys:message:tip': `Tips:`,
+ 'trials:hotkeys:message:tip1': `This shortcut key has been bound to xxx`,
+ 'trials:reading:pcwg:msg1': `The number of new lesions has reached the limit and cannot be added`,
+ 'trials:reading:pcwg:msg2': `Use arrow tool or rectangle Tool to mark baseline lesions.`,
+ 'trials:reading:pcwg:msg3': `The maximum umber of xxx lesions cannot exceed yyy.`,
+ 'trials:reading:pcwg:msg4': `Use arrow tool or rectangle Tool to mark baseline lesions.`,
+ 'trials:reading:pcwg:msg5': `Please use arrow.`,
+ 'trials:reading:pcwg:msg6': `The initial number of baseline lesions is`,
+ 'trials:reading:pcwg:msg7': `Please mark lesions`,
+ 'trials:reading:pcwg:msg8': `The information of current lesion has been updated and not saved. Continue?`,
+ 'trials:adReview:title:subject': `Subject:`,
+ 'trials:adReview:title:result': `Assessment Result`,
+ 'trials:adReview:title:clinicalData': `Clinical Data`,
+ 'trials:adReview:table:visitName': `Visit name`,
+ 'trials:adReview:table:view': `View Details`,
+ 'trials:adReview:table:viewR1': `Reviewer 1(R1)`,
+ 'trials:adReview:table:viewR2': `Reviewer 2(R2)`,
+ 'trials:adReview:title:adResult': `Adjudication Result`,
+ 'trials:adReview:title:choseReader': `I agree with`,
+ 'trials:adReview:title:adReason': `Reason of selection`,
+ 'trials:adReview:title:screenShot': `Screenshot description`,
+ 'trials:adReview:title:adReview': `Adjudication read`,
+ 'trials:adReview:title:msg1': `I have reviewed all relevant imaging and evaluation data of the two independent reviewers. After careful consideration, I agree more with the overall assessment of the first independent reviewer (R1), because:`,
+ 'trials:adReview:title:msg3': `I have reviewed all relevant imaging and evaluation data of the two independent reviewers. After careful consideration, I agree more with the overall assessment of the second independent reviewer (R2), because:`,
+ 'trials:adReview:title:loading': `Loading`,
+ 'trials:adReview:title:previousRes': `Previous adjudication read results`,
+ 'trials:adReview:table:adReading': `Adjudication read`,
+ 'trials:adReview:table:adResult': `Adjudication result`,
+ 'trials:adReview:table:view': `View Details`,
+ 'trials:adReview:table:visitInfoview': `Visit details`,
+ 'trials:adReview:table:glInfo': `Global details`,
+ 'trials:adReview:title:msg2': `The current read has been completed. Proceed to the next one?`,
+ 'trials:adReview:title:msg4': `Must be in xxx format.`,
+ 'trials:readingReport:title:eicrf': `Electronic Imaging Case Report Form`,
+ 'trials:readingReport:title:expandDetails': `Expand Details`,
+ 'trials:readingReport:title:collapseDetails': `Collapse Details`,
+ 'trials:readingReport:button:refresh': `Refresh`,
+ 'trials:readingReport:button:jump': `Image`,
+ 'trials:readingReport:title:sysEvaluationRes': `System evaluation result:`,
+ 'trials:readingReport:message:msg1': `, is inconsistent with results of the current adjustment. Please fill in the reason for adjustment.`,
+ 'trials:readingReport:title:unknow': `Unknown`,
+ 'trials:readingReport:message:msg2': `Please complete the information of the efficacy assessment.`,
+ 'trials:readingReport:message:msg3': `Please fill in the reason for overall assessment adjustment.`,
+ 'trials:readingReport:message:msg4': `The current read has been completed. Proceed to the next one?`,
+ 'trials:readingReport:message:msg5': `The image quality assessment on the reading page is not saved. Continue to submit it?`,
+ 'trials:readingReport:message:msg6': `Accoding to imaging charter, systerm suggests overall response is `,
+ 'trials:readingReport:message:msg7': `, but you adjusted to `,
+ 'trials:readingReport:message:msg8': `. Please note.`,
+ 'trials:oncologyReview:title:oncologyReview': `Oncology read`,
+ 'trials:oncologyReview:title:subject': `Subject:`,
+ 'trials:oncologyReview:title:result': `Assessment Result`,
+ 'trials:oncologyReview:button:clinicalData': `Clinical Data`,
+ 'trials:oncologyReview:title:visitName': `Visit Name`,
+ 'trials:oncologyReview:title:readingRes': `Imaging read results`,
+ 'trials:oncologyReview:title:isGlobalUpdate': `Any update to the global review?`,
+ 'trials:oncologyReview:title:view': `View Details`,
+ 'trials:oncologyReview:title:visitRemark': `Timepoint comments`,
+ 'trials:oncologyReview:title:oReviewRes': `Oncology review results`,
+ 'trials:oncologyReview:title:findings': `Conclusion`,
+ 'trials:oncologyReview:title:reason': `Reason`,
+ 'trials:oncologyReview:message:msg1': `Save failed, the conclusion of Oncology Review cannot be empty.`,
+ 'trials:oncologyReview:title:previousRes': `Previous oncology review results`,
+ 'trials:oncologyReview:title:msg2': `The current read has been completed. Proceed to the next one?`,
+ 'trials:clinicaldara:title:currentTask': `Current Read`,
+ 'trials:clinicaldara:title:nodata': `No data available`,
+ 'trials:clinicaldara:title:relatedTask': `Related Reads`,
+ 'trials:tab:title:readTask': `Completed`,
+ 'trials:readTask:table:isUrgent': `Expedited`,
+ 'trials:readTask:table:siteCode': `Site ID`,
+ 'trials:readTask:table:taskCode': `Read No.`,
+ 'trials:readTask:table:subjectCode': `Subject ID`,
+ 'trials:readTask:table:blindName': `Blind Read Mark`,
+ 'trials:readTask:table:criterionName': `Review Criteria`,
+ 'trials:readTask:table:taskState': `Status`,
+ 'trials:readTask:table:readingCategory': `Review Type`,
+ 'trials:readTask:table:allocateTime': `Time Assigned`,
+ 'trials:readTask:table:signTime': `Time Signed`,
+ 'trials:readTask:table:reReadingApplyState': `Application Status`,
+ 'trials:readTask:table:readingTaskState': `Read Status`,
+ 'trials:readTask:table:optType': `Impact after taking effect`,
+ 'trials:readTask:table:reader': `Independent Reviewers`,
+ 'trials:readTask:button:view': `View`,
+ 'trials:readTask:button:apply': `Apply for Re-Read`,
+ 'trials:readTask:button:backward': `History of return & Re-Read`,
+ 'trials:readTask:dagTitle:apply': `Apply for Re-Read`,
+ 'trials:readTask:title:applyReason': `Reason for application`,
+ 'trials:readTask:option:errorRecords': `Incorrect read records`,
+ 'trials:readTask:option:other': `Other`,
+ 'trials:readTask:title:remark': `Comments`,
+ 'trials:readTask:title:copyForm': `Whether to copy the eICRF of the timepoint?`,
+ 'trials:readTask:title:influenceList': `List of affected reads.`,
+ 'trials:readTask:message:msg1': `Please note that the application for re-read has been submitted successfully.`,
+ 'trials:readTask:button:reread': `Re-Read`,
+ 'trials:readTask:message:msg2': `Confirm the re-read?`,
+ 'trials:readTask:message:msg3': `Re-Read successfully!`,
+ 'trials:tab:title:medicalFeedback': `Expedited`,
+ 'trials:medicalFeedback:table:isUrgent': `Subject ID`,
+ 'trials:medicalFeedback:table:subjectCode': `Subject ID`,
+ 'trials:medicalFeedback:table:siteCode': `Site ID`,
+ 'trials:medicalFeedback:table:taskName': `Read Name`,
+ 'trials:medicalFeedback:table:taskBlindName': `Blind Read mark`,
+ 'trials:medicalFeedback:table:armEnum': `Role`,
+ 'trials:medicalFeedback:table:reader': `Independent Reviewers`,
+ 'trials:medicalFeedback:table:criterionName': `Review Criteria`,
+ 'trials:medicalFeedback:table:readingCategory': `Review Type`,
+ 'trials:medicalFeedback:table:taskState': `Read Task Status`,
+ 'trials:medicalFeedback:table:auditState': `Review Status`,
+ 'trials:medicalFeedback:table:signTime': `Time Signed`,
+ 'trials:medicalFeedback:table:allocateTime': `Time Assigned`,
+ 'trials:medicalFeedback:table:firstReplyTime': `Time of first inquiry`,
+ 'trials:medicalFeedback:table:lastReplyTime': `Time of the last response`,
+ 'trials:medicalFeedback:table:isInvalid': `Review Task Status`,
+ 'trials:medicalFeedback:table:auditSignTime': `Time Signed`,
+ 'trials:medicalFeedback:table:auditAdvice': `Medical Review Comments`,
+ 'trials:medicalFeedback:table:doctorUserIdea': `Agree`,
+ 'trials:medicalFeedback:table:view': `View`,
+ 'trials:medicalFeedback:table:reply': `Reply`,
+ 'trials:medicalFeedback:title:mfDetail': `Medical Review Details`,
+ 'trials:medicalFeedback:title:qaRecord': `Query Record`,
+ 'trials:medicalFeedback:table:visitPointCount': `Timepoint Counts`,
+ 'trials:medicalFeedback:table:unKnow': `Unknown`,
+ 'trials:medicalFeedback:table:agreeToVisitPointCount': `Agree with Timepoint Counts?`,
+ 'trials:medicalFeedback:table:assessmentResults': `Assessment Result`,
+ 'trials:medicalFeedback:message:msg1': `According to the medical review comments, please confirm or clarify the following questions:`,
+ 'trials:medicalFeedback:message:msg2': `Screenshots of this medical review (if applicable) are as following:`,
+ 'trials:medicalFeedback:message:msg3': `According to the Independent Image Charter, the medical review comments for this kind of problems are recommended as:`,
+ 'trials:medicalFeedback:message:msg4': `In order to solve the above problems efficiently, please ensure the accuracy of the assessment result and clarify whether to accept the medical review conclusion. If you do not agree with it, please specify the reasons for disapproval one by one. Thank you very much.`,
+ 'trials:medicalFeedback:title:isEndorse': `Agree the Medical Concusion`,
+ 'trials:medicalFeedback:title:isRequestReread': `Apply for re-read?`,
+ 'trials:medicalFeedback:message:msg5': `Screenshots of this medical review (if applicable) are as following:`,
+ 'trials:medicalFeedback:message:loading': `Loading`,
+ 'trials:medicalFeedback:title:feedback': `Feedback`,
+ 'trials:medicalFeedback:form:isEndorse': `Agree the Medical Concusion`,
+ 'trials:medicalFeedback:form:isRequestReread': `Apply for re-read?`,
+ 'trials:medicalFeedback:form:applyReason': `Reason for application`,
+ 'trials:medicalFeedback:form:errorRecords': `Incorrect reading record`,
+ 'trials:medicalFeedback:form:other': `Other`,
+ 'trials:medicalFeedback:form:remark': `Remarks`,
+ 'trials:medicalFeedback:form:isCopyForm': `Reason for Application`,
+ 'trials:medicalFeedback:form:isCopyForm2': `Copy eICRF of Subsequent Visit Reads`,
+ 'trials:medicalFeedback:form:screenShot': `Releated Screenshots`,
+ 'trials:medicalFeedback:button:send': `Send`,
+ 'trials:medicalFeedback:message:format': `Must be in xxxx format.`,
+ 'trials:medicalFeedback:title:result': `Assessment Result`,
+ 'trials:medicalFeedback:button:audit': `Review`,
+ 'trials:medicalFeedback:title:conclusion': `Conclusion`,
+ 'trials:medicalFeedback:title:reason': `Reason:`,
+ 'trials:medicalFeedback:title:isGlobalChange': `Any updates?`,
+ 'trials:medicalFeedback:title:currentReader': `Current Reviewers`,
+ 'trials:medicalFeedback:title:otherReader': `Related Reviewers`,
+ 'trials:medicalFeedback:title:auditQuestions': `Review Questions`,
+ 'trials:medicalFeedback:title:conclusions': `Conclusion`,
+ 'trials:medicalFeedback:button:saveAndSend': `Save & Send`,
+ 'trials:medicalFeedback:button:viewQuestions': `View the Query`,
+ 'trials:medicalFeedback:button:reply': `Reply`,
+ 'trials:medicalFeedback:button:close': `Close`,
+ 'trials:medicalFeedback:button:isQuestions': `Any Issue?`,
+ 'trials:medicalFeedback:title:qcQuestions': `Query Questions`,
+ 'trials:medicalFeedback:title:auditAdviceEnum': `Review Comments`,
+ 'trials:medicalFeedback:title:closeQc': `Close Query`,
+ 'trials:medicalFeedback:button:auditCompleted': `Review Completed`,
+ 'trials:medicalFeedback:button:nextTask': `Next Task`,
+ 'trials:medicalFeedback:message:closeQC': `Medical review has not completed, please close the medical query first.`,
+ 'trials:medicalFeedback:form:influenceList': `List of affected reads.`,
+ 'trials:medicalFeedback:message:confirmTemplate': `Please confirm the medical audit question template configuration first!`,
+ 'trials:medicalFeedback:label:closeReasonEnum': `Reason of close`,
+ 'trials:medicalFeedback:title:closeReasonEnum': `Reason of close:`,
+ 'trials:medicalFeedback:label:closereasonRemarks': `Remarks`,
+ 'trials:medicalFeedback:title:closereasonRemarks': `Remarks:`,
+ 'trials:medicalFeedback:title:relatedGlobalTask': `Related Global read`,
+ 'trials:medicalFeedback:title:relatedadjudicationTask': `Related Adjudication read`,
+ 'trials:medicalFeedback:message:goNextTask01': `The current medical review has completed. Next medical review?`,
+ 'trials:medicalFeedback:message:goNextTask02': `Next medical review?`,
+ 'trials:medicalFeedback:message:goNextTask03': `The current medical review has not completed. Next medical review?`,
+ 'trials:tab:title:rereadTask': `Return History`,
+ 'trials:rereadTask:table:isUrgent': `Expedited`,
+ 'trials:rereadTask:table:taskCode': `Read No.`,
+ 'trials:rereadTask:table:siteCode': `Site ID`,
+ 'trials:rereadTask:table:subjectCode': `Subject ID`,
+ 'trials:rereadTask:table:taskBlindName': `Blind Read Mark`,
+ 'trials:rereadTask:table:criterionName': `Review Criteria`,
+ 'trials:rereadTask:table:taskState': `Read Task Status`,
+ 'trials:rereadTask:table:readingCategory': `Review Type`,
+ 'trials:rereadTask:table:signTime': `Time Completed`,
+ 'trials:rereadTask:table:requestReReadingType': `Type of Application`,
+ 'trials:rereadTask:table:requestReReadingTime': `Application Time`,
+ 'trials:rereadTask:table:requestReReadingReason': `Apply for Re-Read`,
+ 'trials:rereadTask:table:requestReReadingResultEnum': `Approved Results
+`,
+ 'trials:rereadTask:table:reReadingNewTaskCode': `New Read No.
+`,
+ 'trials:tab:reviewAssign': `Reads Assignment`,
+ 'trials:reviewAssign:searchForm:reader': `Reviewer`,
+ 'trials:reviewAssign:button:assignRules': `Assignment Rules`,
+ 'trials:reviewAssign:button:manualAllocation': `Manual Assignment`,
+ 'trials:reviewAssign:button:visitReadingTasks': `Visit/Global/Oncology Read`,
+ 'trials:reviewAssign:button:adReadingTasks': `Adjudication Read`,
+ 'trials:reviewAssign:table:siteCode': `Site ID`,
+ 'trials:reviewAssign:table:subjectCode': `Subject ID`,
+ 'trials:reviewAssign:table:visit': `Visit`,
+ 'trials:reviewAssign:table:global': `Global`,
+ 'trials:reviewAssign:table:ad': `Adjudication`,
+ 'trials:reviewAssign:table:oncology': `Oncology`,
+ 'trials:reviewAssign:table:r1': `Reviewer 1(R1)`,
+ 'trials:reviewAssign:table:r2': `Reviewer 2(R2)`,
+ 'trials:reviewAssign:table:ad': `Adjudicator`,
+ 'trials:reviewAssign:table:o1': `Oncology Reviewer`,
+ 'trials:reviewAssign:tableAction:manualAssignment': `Manual Assignment`,
+ 'trials:reviewAssign:tableAction:clearReaders': `Cancell Reviewers`,
+ 'trials:reviewAssign:tableAction:viewHistory': `View Cancell History`,
+ 'trials:trials-panel:taskAllocation': `Visit Reads Assignment`,
+ 'trials:trials-panel:reading': `Read`,
+ 'trials:trials-panel:refereeAllocation': `Adjudication Read Assignment`,
+ 'trials:reviewAssign:dialog:allocationRules': `Assignment Rules`,
+ 'trials:reviewAssign:allocationRules:title:readersList': `List of Reviewers`,
+ 'trials:reviewAssign:allocationRules:table:reader': `Reviewers`,
+ 'trials:reviewAssign:allocationRules:table:plannedCount': `No. of Potential Subjects`,
+ 'trials:reviewAssign:allocationRules:table:readingType': `Review Type`,
+ 'trials:reviewAssign:allocationRules:table:status': `Status`,
+ 'trials:reviewAssign:allocationRules:table:remark': `Note`,
+ 'trials:reviewAssign:allocationRules:title:subsequentAllocationRules': `Rules of Subsequent Reads Assignment `,
+ 'trials:reviewAssign:allocationRules:message1': `Default: Assign visit reads of the same subject automatically`,
+ 'trials:reviewAssign:allocationRules:message2': `Default: Assign visit reads of the same subject automatically`,
+ 'trials:reviewAssign:allocationRules:message3': `Default: Assign global reads of the same subject automatically`,
+ 'trials:reviewAssign:allocationRules:message4': `Default: Assign the second adjudication reads of the same subject automatically`,
+ 'trials:reviewAssign:allocationRules:edit': `Edit`,
+ 'trials:reviewAssign:allocationRules:add': `Add`,
+ 'trials:reviewAssign:dialog:assignReader': `Assign Reviewers`,
+ 'trials:reviewAssign:assignReader:title:readingModel': `Read Mode of Current Trial`,
+ 'trials:reviewAssign:assignReader:title:r1': `Reviewer 1 (R1)`,
+ 'trials:reviewAssign:assignReader:title:r2': `Reviewer 2 (R2)`,
+ 'trials:reviewAssign:assignReader:title:ad': `Adjudicator`,
+ 'trials:reviewAssign:assignReader:title:o1': `Oncology Reviewer`,
+ 'trials:reviewAssign:assignReader:table:reader': `Reviewer`,
+ 'trials:reviewAssign:assignReader:table:plannedSubjectCount': `No. of Scheduled Subject`,
+ 'trials:reviewAssign:assignReader:table:assignedSubjectCount': `No. of Assigned Subjects`,
+ 'trials:reviewAssign:assignReader:table:readingType': `Review Type`,
+ 'trials:reviewAssign:assignReader:table:pengdingTaskCount': `Pending Reads (in total)`,
+ 'trials:reviewAssign:assignReader:table:pengdingTrialsTaskCount': `Pending Reads (in this trial)`,
+ 'trials:reviewAssign:assignReader:table:averageReadingTime': `Average Turnaround Time ( exclude outliers) `,
+ 'trials:reviewAssign:assignReader:table:status': `Status`,
+ 'trials:reviewAssign:assignReader:table:remark': `Note`,
+ 'trials:reviewAssign:dialog:clearReader': `Unassign Reviewer`,
+ 'trials:reviewAssign:clearReader:title:clearAll': `Unassign All Unread Reviewer`,
+ 'trials:reviewAssign:clearReader:title:r1': `Reviewer 1(R1)`,
+ 'trials:reviewAssign:clearReader:title:r2': `Reviewer 2(R2)`,
+ 'trials:reviewAssign:clearReader:title:ad': `Adjudicator`,
+ 'trials:reviewAssign:clearReader:title:O1': `Oncology Reviewer`,
+ 'trials:reviewAssign:clearReader:title:msg1': `The reviewer who has begun to read can not be Unassigned`,
+ 'trials:reviewAssign:clearReader:title:reason': `Reason`,
+ 'trials:reviewAssign:clearReader:title:cancelReader': `Unassign Reviewer`,
+ 'trials:reviewAssign:clearReader:title:msg2': `All reviewers had been unassigned, please save.`,
+ 'trials:reviewAssign:clearReader:title:msg3': `No reviewer can be Unassigned.`,
+ 'trials:reviewAssign:dialog:cancelHistory': `Cancel History`,
+ 'trials:reviewAssign:cancelHistory:table:cancelTime': `Time Canceled`,
+ 'trials:reviewAssign:cancelHistory:table:cancelReason': `Reason`,
+ 'trials:reviewAssign:message:message01': `Confirm to assign it?`,
+ 'trials:reviewAssign:message:message02': `Confirm to cancel the assignment?`,
+ 'trials:reviewAssign:message:message03': `Be Effective Now!`,
+ 'trials:reviewAssign:message:message04': `No reviewer is available in this trial`,
+ 'trials:reviewAssign:message:message05': `Confirm to assign it automatically?`,
+ 'trials:reviewAssign:message:message06': `Assigned automatically!`,
+ 'trials:reviewAssign:message:message07': `Please select reviewer`,
+ 'trials:reviewAssign:message:message08': `The current read mode is xxx, please select the proper number of reviewers.`,
+ 'trials:reviewAssign:message:message09': `Assigned successfully!`,
+ 'trials:reviewAssign:message:message10': `Please select a subject to assign.`,
+ 'trials:reviewAssign:message:message11': `Confirm to delete?`,
+ 'trials:reviewAssign:readingTask:table:isUrgent': `Expedited`,
+ 'trials:reviewAssign:readingTask:table:taskCode': `Read No.`,
+ 'trials:reviewAssign:readingTask:table:siteCode': `Site ID`,
+ 'trials:reviewAssign:readingTask:table:subjectCode': `Subject ID`,
+ 'trials:reviewAssign:readingTask:table:visitName': `Visit/Review Period Name`,
+ 'trials:reviewAssign:readingTask:table:blindName': `Blind Read Mark`,
+ 'trials:reviewAssign:readingTask:table:createTime': `Read Creation Time`,
+ 'trials:reviewAssign:readingTask:table:taskStatus': `Read Task Satus`,
+ 'trials:reviewAssign:readingTask:table:taskType': `Review Type`,
+ 'trials:reviewAssign:readingTask:table:assignStatus': `Assignment Status`,
+ 'trials:reviewAssign:readingTask:table:role': `Role`,
+ 'trials:reviewAssign:readingTask:table:reader': `Reviewer`,
+ 'trials:reviewAssign:readingTask:table:criterionName': `Review Criteria`,
+ 'trials:reviewAssign:readingTask:table:assignTime': `Time Assigned`,
+ 'trials:reviewAssign:readingTask:table:adReader': `Adjudicator`,
+ 'trials:reviewAssign:readingTask:table:historyReader': `Previous Reviewer`,
+ 'trials:tab:reviewTrack': `Read Tracking`,
+ 'trials:reviewTrack:table:isUrgent': `Expedited`,
+ 'trials:reviewTrack:table:taskCode': `Read No.`,
+ 'trials:reviewTrack:table:siteCode': `Site ID`,
+ 'trials:reviewTrack:table:subjectCode': `Subject ID`,
+ 'trials:reviewTrack:table:taskName': `Read Name`,
+ 'trials:reviewTrack:table:blindName': `Blind Read Mark`,
+ 'trials:reviewTrack:table:completeClinicalDataEnum': `Clinical Data Completeness`,
+ 'trials:reviewTrack:table:createTime': `Time Created`,
+ 'trials:reviewTrack:table:taskStatus': `Read Task Status`,
+ 'trials:reviewTrack:table:taskType': `Review Type`,
+ 'trials:reviewTrack:table:role': `Role`,
+ 'trials:reviewTrack:table:reader': `Reviewer`,
+ 'trials:reviewTrack:table:criterionName': `Review Criteria`,
+ 'trials:reviewTrack:table:assignTime': `Time Assigned`,
+ 'trials:reviewTrack:table:suggesteFinishedTime': `Suggested Finish Time`,
+ 'trials:reviewTrack:table:readingStatus': `Read Status`,
+ 'trials:reviewTrack:table:signTime': `Time Completed `,
+ 'trials:reviewTrack:table:applyStatus': `Re-Read Application Status`,
+ 'trials:reviewTrack:action:viewResults': `Review Result`,
+ 'trials:reviewTrack:action:applyReread': `Apply for Re-Read`,
+ 'trials:reviewTrack:action:backToRereadHistory': `Re-Read History`,
+ 'trials:reviewTrack:action:back': `Return`,
+ 'trials:reviewTrack:action:backToTaskList': `Read Queue affected by return`,
+ 'trials:reviewTrack:dialog:applyReread': `Apply for Re-Read`,
+ 'trials:reviewTrack:applyReread:title:applyReason': `Application Reason`,
+ 'trials:reviewTrack:applyReread:title:ImageRetransfer': `Re-upload Image`,
+ 'trials:reviewTrack:applyReread:title:other': `Other`,
+ 'trials:reviewTrack:applyReread:title:remark': `Note`,
+ 'trials:reviewTrack:applyReread:title:influencesList': `Affected read Queue`,
+ 'trials:reviewTrack:applyReread:title:postEffectiveImpacts': `Impacts after being effective`,
+ 'trials:reviewTrack:applyReread:title:msg1': `Note: there's read which had been applied for Re-Read in the queue.`,
+ 'trials:reviewTrack:dialog:backImpactList': `Reads Queue Affected by Return`,
+ 'trials:reviewTrack:dialog:impactList': `Affected Read Queue`,
+ 'trials:reviewTrack:impactList:save': `Confirm`,
+ 'trials:reviewTrack:message:returnedSuccessfully': `Returned Successfully`,
+ 'trials:reviewTrack:message:ImageRetransfer': `Reupload Image`,
+ 'trials:reviewTrack:message:applyedSuccessfully': `Re-Read Applied Successfully`,
+ 'trials:reviewTrack:message:urgentReason': `Reason for Expediting`,
+ 'trials:reviewTrack:message:urgentReasonNote': `Note`,
+ 'trials:reviewTrack:button:export': `Export`,
+ 'trials:reviewTrack:title:fileName': `Filename`,
+ 'trials:reviewTrack:title:download': `Download`,
+ 'trials:tab:rereadTrack': `Re-Read Tracking`,
+ 'trials:rereadTrack:table:isUrgent': `Expedited`,
+ 'trials:rereadTrack:table:taskCode': `Read No.`,
+ 'trials:rereadTrack:table:siteCode': `Site ID`,
+ 'trials:rereadTrack:table:subjectCode': `Subject ID`,
+ 'trials:rereadTrack:table:taskName': `Read Name`,
+ 'trials:rereadTrack:table:blindName': `Blind Read Mark`,
+ 'trials:rereadTrack:table:createTime': `Read Creation Time`,
+ 'trials:rereadTrack:table:taskStatus': `Read Task Status`,
+ 'trials:rereadTrack:table:taskType': `Review Type`,
+ 'trials:rereadTrack:table:role': `Role`,
+ 'trials:rereadTrack:table:reader': `Reviewer`,
+ 'trials:rereadTrack:table:criterionName': `Review Criteria`,
+ 'trials:rereadTrack:table:signTime': `Time Read Completed `,
+ 'trials:rereadTrack:table:applyType': `Application Type`,
+ 'trials:rereadTrack:table:applyTime': `Time Re-Read Applied`,
+ 'trials:rereadTrack:table:applyReason': `Application Reason`,
+ 'trials:rereadTrack:table:approvalResult': `Approval Result`,
+ 'trials:rereadTrack:table:newTaskCode': `New Read No.`,
+ 'trials:rereadTrack:table:agree': `Agree`,
+ 'trials:rereadTrack:table:reject': `Reject`,
+ 'trials:rereadTrack:table:influenceTaskList': `Affected Read Queue`,
+ 'trials:rereadTrack:table:ReReadingApplyState': `Application Status`,
+ 'trials:rereadTrack:dialog:reject': `Reject`,
+ 'trials:rereadTrack:reject:title:reason': `Reject Reason`,
+ 'trials:rereadTrack:message:msg1': `Confirm to apply for re-read?`,
+ 'trials:rereadTrack:message:msg2': `Re-Read Applied Successfully`,
+ 'trials:rereadTrack:message:msg3': `Application was Agreed!`,
+ 'trials:rereadTrack:message:msg4': `Application was Rejected!`,
+ 'trials:tab:pmMedicalReview': `Medical Review`,
+ 'trials:pmMedicalReview:table:isUrgent': `Expedited`,
+ 'trials:pmMedicalReview:table:taskCode': `Read No.`,
+ 'trials:pmMedicalReview:table:siteCode': `Site ID`,
+ 'trials:pmMedicalReview:table:subjectCode': `Subject ID`,
+ 'trials:pmMedicalReview:table:taskName': `Read Name`,
+ 'trials:pmMedicalReview:table:blindName': `Blind Read Mark`,
+ 'trials:pmMedicalReview:table:taskType': `Review Type`,
+ 'trials:pmMedicalReview:table:taskState': `Read Task Status`,
+ 'trials:pmMedicalReview:table:role': `Role`,
+ 'trials:pmMedicalReview:table:reader': `Reviewer`,
+ 'trials:pmMedicalReview:table:criterionName': `Review Criteria`,
+ 'trials:pmMedicalReview:table:signTime': `Read Completed Time`,
+ 'trials:pmMedicalReview:table:mim': `Medical Manager`,
+ 'trials:pmMedicalReview:table:allocateTime': `Time Assigned`,
+ 'trials:pmMedicalReview:table:isInvalid': `Status`,
+ 'trials:pmMedicalReview:table:auditState': `Review Status`,
+ 'trials:pmMedicalReview:table:auditAdvice': `Review Comments`,
+ 'trials:pmMedicalReview:table:whetherAgree': `Reviewer Agrees`,
+ 'trials:pmMedicalReview:table:auditSignTime': `Time Signed`,
+ 'trials:pmMedicalReview:action:view': `View`,
+ 'trials:pmMedicalReview:action:failure': `Invalidate`,
+ 'trials:pmMedicalReview:action:assign': `undefined`,
+ 'trials:pmMedicalReview:action:cancelAssign': `undefined`,
+ 'trials:pmMedicalReview:button:select': `Select`,
+ 'trials:pmMedicalReview:select:isUrgent': `Expedited`,
+ 'trials:pmMedicalReview:select:taskCode': `Read No.`,
+ 'trials:pmMedicalReview:select:siteCode': `Site ID`,
+ 'trials:pmMedicalReview:select:subjectCode': `Subject ID`,
+ 'trials:pmMedicalReview:select:subjectSecondCode': `Second ID of Subject`,
+ 'trials:pmMedicalReview:select:taskName': `Read name`,
+ 'trials:pmMedicalReview:select:taskBlindName': `Blind Read Mark`,
+ 'trials:pmMedicalReview:select:taskType': `Review Type`,
+ 'trials:pmMedicalReview:select:role': `Role`,
+ 'trials:pmMedicalReview:select:reader': `Reviewer`,
+ 'trials:pmMedicalReview:select:criterionName': `Review Criteria`,
+ 'trials:pmMedicalReview:select:signTime': `Time Read Completed`,
+ 'trials:pmMedicalReview:select:readingDurationTime': `Read Duration Time`,
+ 'trials:pmMedicalReview:select:isGeneratedJudge': `Trigger Adjudication `,
+ 'trials:pmMedicalReview:select:globalReadingChanged': `Corrected in Global Read`,
+ 'trials:pmMedicalReview:select:auditCount': `No. of Reviews`,
+ 'trials:pmMedicalReview:select:allocation': `Assign`,
+ 'trials:pmMedicalReview:select:batchAllocation': `Batch Assign`,
+ 'trials:pmMedicalReview:allocation:aliocationMIM': `Assign Medical Manager`,
+ 'trials:pmMedicalReview:allocation:MIM': `Medical Manager`,
+ 'trials:pmMedicalReview:allocation:msg1': `Please select a medical review to be assigned.`,
+ 'trials:pmMedicalReview:dialog:medicalReview': `Medical Review Details`,
+ 'trials:pmMedicalReview:button:setInvalid': `Set Medical Review Status as Invalid`,
+ 'trials:pmMedicalReview:message:msg01': `Please select medical review.`,
+ 'trials:pmMedicalReview:message:msg02': `Confirm to set the medical review status as invalid?`,
+ 'trials:pmMedicalReview:message:msg03': `Set Successfully!`,
+ 'trials:pmMedicalReview:message:msg04': `Please select medical review to be assigned.`,
+ 'trials:pmMedicalReview:message:msg05': `Confirm to cancel the assignment?`,
+ 'trials:pmMedicalReview:message:msg06': `Assignment cancelled!`,
+ 'trials:tab:consistencyAnalysis': `Consistency Analysis`,
+ 'trials:consistencyAnalysis:table:isUrgent': `Expedited`,
+ 'trials:consistencyAnalysis:table:taskCode': `Read No.`,
+ 'trials:consistencyAnalysis:table:siteCode': `Site ID`,
+ 'trials:consistencyAnalysis:table:subjectCode': `Subject ID`,
+ 'trials:consistencyAnalysis:table:impact': `Impact`,
+ 'trials:consistencyAnalysis:table:taskName': `Read Name`,
+ 'trials:consistencyAnalysis:table:taskBlindName': `Blind Read Mark`,
+ 'trials:consistencyAnalysis:table:taskType': `Review Type`,
+ 'trials:consistencyAnalysis:table:category': `Consistency Analysis Type`,
+ 'trials:consistencyAnalysis:table:role': `Role`,
+ 'trials:consistencyAnalysis:table:reader': `Reviewer`,
+ 'trials:consistencyAnalysis:table:criterionName': `Review Criteria`,
+ 'trials:consistencyAnalysis:table:taskStatus': `Read Task Status`,
+ 'trials:consistencyAnalysis:table:auditTime': `Time Assigned`,
+ 'trials:consistencyAnalysis:table:suggesteFinishedTime': `Suggested Read Time`,
+ 'trials:consistencyAnalysis:table:reviewStatus': `Read Status`,
+ 'trials:consistencyAnalysis:table:signTime': `Read Complete Time`,
+ 'trials:consistencyAnalysis:table:applyStatus': `Application Stattus`,
+ 'trials:consistencyAnalysis:table:impactInfluence': `Affected by Return`,
+ 'trials:consistencyAnalysis:action:view': `Read Result`,
+ 'trials:consistencyAnalysis:action:setInvalid': `Set read status as Invalid`,
+ 'trials:consistencyAnalysis:button:self': `Inner-Reviewer Consistency Analysis`,
+ 'trials:consistencyAnalysis:button:group': `Inter-Reviewers Consistency Analysis`,
+ 'trials:consistencyAnalysis:title:impactInfluence': `Affected by Return`,
+ 'trials:consistencyAnalysis:message:selectCriterion': `Please select a review criteria.`,
+ 'trials:selftConsistencyAnalysis:button:config': `Config the Rule of Inner-Reviewer Consistency Analysis`,
+ 'trials:selftConsistencyAnalysis:table:reader': `Reviewer`,
+ 'trials:selftConsistencyAnalysis:table:visitNum': `No. of Visits`,
+ 'trials:selftConsistencyAnalysis:table:intervalPeriod': `Interval Period (week)`,
+ 'trials:selftConsistencyAnalysis:table:isReadingPeriod': `Selected Visits set Review Period `,
+ 'trials:selftConsistencyAnalysis:table:isGenerateGlobalTask': `Global Read Generated`,
+ 'trials:selftConsistencyAnalysis:table:plannedSubjectNum': `No. of Scheduled Subjects`,
+ 'trials:selftConsistencyAnalysis:table:createdSubjectNum': `No. of Created Subjects`,
+ 'trials:selftConsistencyAnalysis:button:select': `Select`,
+ 'trials:consistencyAnalysis:button:exportSelf': `Export Inner-Reviewer Consistency Analysis`,
+ 'trials:grouptConsistencyAnalysis:button:config': `Config the Rule of Inter-Reviewers Consistency Analysis`,
+ 'trials:grouptConsistencyAnalysis:table:siteCode': `Site ID`,
+ 'trials:grouptConsistencyAnalysis:table:subjectCode': `Subject ID`,
+ 'trials:grouptConsistencyAnalysis:table:validVisitCount': `No. of Visits Met to Rules`,
+ 'trials:grouptConsistencyAnalysis:button:create': `Create`,
+ 'trials:grouptConsistencyAnalysis:table:backImpact': `Affected by Return`,
+ 'trials:grouptConsistencyAnalysis:message:msg1': `Please select the subject`,
+ 'trials:consistencyAnalysis:button:exportGroup': `Export Inner-Reviewers Consistency Analysis`,
+ 'trials:consistencyAnalysisRule:table:visitNum': `No. of Visits`,
+ 'trials:consistencyAnalysisRule:table:isReadingPeriod': `Presence of Review Period`,
+ 'trials:consistencyAnalysisRule:table:intervalPeriod': `Interval Period (week)`,
+ 'trials:consistencyAnalysisRule:table:plannedNum': `No. of Scheduled Subjects`,
+ 'trials:consistencyAnalysisRule:table:siteCode': `Virtual Site ID`,
+ 'trials:consistencyAnalysisRule:table:subjectNum': `Virtual Subject ID`,
+ 'trials:consistencyAnalysisRule:table:isGenerateGlobalTask': `Global Read Generated`,
+ 'trials:consistencyAnalysis:dialog:selectSubject': `Subject Selection`,
+ 'trials:consistencyAnalysis:dialog:applyReread': `Apply for Re-Read`,
+ 'trials:consistencyAnalysis:applyReread:reason': `Application Reason`,
+ 'trials:consistencyAnalysis:applyReread:imageReload': `Reupload Image`,
+ 'trials:consistencyAnalysis:applyReread:other': `Other`,
+ 'trials:consistencyAnalysis:applyReread:remark': `Note`,
+ 'trials:consistencyAnalysis:applyReread:msg1': `Confirm to set the consistency analysis read as invalid?`,
+ 'trials:consistencyAnalysis:applyReread:msg2': `Set Successfully!`,
+ 'trials:consistencyAnalysis:applyReread:msg3': `Re-Read Applied Successfully`,
+ 'trials:trials-panel:reading:hotkeys': `Reading Tool Configuration`,
+ 'trials:dicom-show:nowStudy': `Current Study`,
+ 'trials:dicom-show:relevanceStudy': `Associated Stuies`,
+ 'trials:dicom-show:nowSeries': `Current Series`,
+ 'trials:dicom-show:transform': `Associated Series`,
+ 'trials:dicom-show:lens': `Magnify`,
+ 'trials:dicom-show:measurementLabeling': `Measurement & Mark`,
+ 'trials:dicom-show:Probe': `Probe`,
+ 'trials:dicom-show:Length': `Diameter`,
+ 'trials:dicom-show:Angle': `Angle`,
+ 'trials:dicom-show:CobbAngle': `Cobb Angle`,
+ 'trials:dicom-show:EllipticalRoi': `Ellipse`,
+ 'trials:dicom-show:RectangleRoi': `Rectangle`,
+ 'trials:dicom-show:FreehandRoi': `Polygon`,
+ 'trials:dicom-show:Bidirectional': `Bidirectional `,
+ 'trials:dicom-show:ArrowAnnotate': `Text`,
+ 'trials:dicom-show:Eraser': `Clear`,
+ 'trials:dicom-show:image': `Screenshot`,
+ 'trials:dicom-show:play': `Play`,
+ 'trials:dicom-show:firstframe': `First`,
+ 'trials:dicom-show:previousframe': `Previous`,
+ 'trials:dicom-show:nextframe': `Next`,
+ 'trials:dicom-show:lastframe': `Last`,
+ 'trials:dicom-show:default': `Default`,
+ 'trials:dicom-show:dicomCanvasWwwc': `W/L`,
+ 'trials:dicom-show:custom': `Custom`,
+ 'trials:dicom-show:pseudocolor': `Palette Colors`,
+ 'trials:dicom-show:color': `Color`,
+ 'trials:trials-panel:attachments:spm-enrollment': `Reviewer Selection`,
+ 'trials:none-dicom-show:fileList': `File List`,
+ 'trials:trials-panel:taskAllocation': `Visit Read Assignment`,
+ 'trials:trials-panel:reading': `Read`,
+ 'trials:trials-panel:refereeAllocation': `Adjudication Read Assignment`,
+ 'trials:trials-panel:readingTracking': `Read Tracking`,
+ 'trials:trials-panel:reReadingTracking': `Re-Read Approval`,
+ 'trials:trials-panel:tab:pmMedicalFeedback': `Medical Review`,
+ 'trials:trials-panel:reading:consistency-analysis': `Consistency Analysis`,
+ 'trials:trials-panel:attachments:reReadingTracking': `Re-Read Approval`,
+ 'CustomWwwcForm:form:label:ww': `undefined`,
+ 'CustomWwwcForm:form:label:wl': `undefined`,
+ 'passwordReset:form:passwordCentent': `Passwords must have: 1) 8 - 32 characters; 2) At least 1 number; 3) At least 1 uppercase letter; 4) At least 1 lowercase letter; 5) At least 1 special character (~!-@#$%^&*_+?) `,
+}
\ No newline at end of file
diff --git a/src/lang/index.js b/src/lang/index.js
new file mode 100644
index 0000000..7614abb
--- /dev/null
+++ b/src/lang/index.js
@@ -0,0 +1,27 @@
+import Vue from 'vue'
+import VueI18n from 'vue-i18n'
+import store from '@/store'
+import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
+import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
+import enLocale from './en'
+import zhLocale from './zh'
+// import xfenLocale from './xfen'
+// import xfzhLocale from './xfzh'
+Vue.use(VueI18n)
+const messages = {
+ en: {
+ ...enLocale,
+ ...elementEnLocale
+ },
+ zh: {
+ ...zhLocale,
+ ...elementZhLocale
+ }
+}
+const language = store.getters.language
+const i18n = new VueI18n({
+ locale: language || 'zh',
+ messages
+})
+
+export default i18n
diff --git a/src/lang/xfen.js b/src/lang/xfen.js
new file mode 100644
index 0000000..0e72764
--- /dev/null
+++ b/src/lang/xfen.js
@@ -0,0 +1,23 @@
+/* eslint-disable */
+export default {
+ 'components:uploadvideo:message:xf1': `Upload successfully`,
+ 'components:uploadvideo:message:xf2': `The video selected cannot be played in the browser.please click ‘Transcode’ and upload the video after transcoding.`,
+ 'components:uploadvideo:message:xf3': `The video can not be transcoded,since the page is not in the security context. Please contact the developer to configure SSL certificate`,
+ 'components:uploadvideo:message:xf4': `The video can not be transcoded,since nginx is not set up for same-source isolation. Please contact the developer to configure the Nginx request header.`,
+ 'components:uploadvideo:message:xf5': `Start transcoding. Please do not close the window or page`,
+ 'components:uploadvideo:message:xf6': `Transcod Successfully`,
+ 'components:uploadvideo:message:xf7': `The files has been read successfully.Please upload.`,
+ 'passwordReset:form:passwordCentent': `Passwords must have: 1) 8 - 32 characters; 2) At least 1 number; 3) At least 1 uppercase letter; 4) At least 1 lowercase letter; 5) At least 1 special character (~!-@#$%^&*_+?)`,
+ 'trials:uploadNonDicoms:action:xfuploadvideo': `Upload video`,
+ 'trials:uploadNonDicoms:title:xfuploadvideo': `Upload video`,
+ 'trials:uploadNonDicoms:title:xflookvideo': `View Video`,
+ 'trials:trials-panel:taskAllocation': `Visit Read Assignment`,
+ 'trials:trials-panel:reading': `Read`,
+ 'trials:trials-panel:refereeAllocation': `Adjudication Read Assignment`,
+ 'trials:trials-panel:readingTracking': `Read Tracking`,
+ 'trials:trials-panel:reReadingTracking': `Re-Read Approval
+`,
+ 'trials:trials-panel:tab:pmMedicalFeedback': `Medical Review`,
+ 'trials:trials-panel:reading:consistency-analysis': `Consistency Analysis`,
+ 'trials:trials-panel:attachments:reReadingTracking': `Re-read Approvaling`,
+}
\ No newline at end of file
diff --git a/src/lang/xfzh.js b/src/lang/xfzh.js
new file mode 100644
index 0000000..a18439c
--- /dev/null
+++ b/src/lang/xfzh.js
@@ -0,0 +1,22 @@
+/* eslint-disable */
+export default {
+ 'components:uploadvideo:message:xf1': `上传成功`,
+ 'components:uploadvideo:message:xf2': `选择的视频不能在浏览器环境播放,请点击转码,等待转码成功之后再进行上传操作`,
+ 'components:uploadvideo:message:xf3': `页面未在安全上下文中,不能进行转码,请联系开发人员配置SSL证书`,
+ 'components:uploadvideo:message:xf4': `nginx未设置同源隔离,不能进行转码,请联系开发人员配置Nginx请求头`,
+ 'components:uploadvideo:message:xf5': `开始转码,请勿关闭窗口或页面`,
+ 'components:uploadvideo:message:xf6': `转码成功`,
+ 'components:uploadvideo:message:xf7': `文件读取成功,请上传`,
+ 'passwordReset:form:passwordCentent': `密码必须包含:1)8 – 32 个字符;2)至少1个数字;3) 至少1个大写字母;4)至少1个小写字母;5)至少1个特殊字符 (~!-@#$%^&*_+?)`,
+ 'trials:uploadNonDicoms:action:xfuploadvideo': `上传视频文件`,
+ 'trials:uploadNonDicoms:title:xfuploadvideo': `上传视频文件`,
+ 'trials:uploadNonDicoms:title:xflookvideo': `查看视频文件`,
+ 'trials:trials-panel:taskAllocation': `访视任务分配`,
+ 'trials:trials-panel:reading': `阅片`,
+ 'trials:trials-panel:refereeAllocation': `裁判任务分配`,
+ 'trials:trials-panel:readingTracking': `阅片跟踪`,
+ 'trials:trials-panel:reReadingTracking': `重阅跟踪`,
+ 'trials:trials-panel:tab:pmMedicalFeedback': `医学审核`,
+ 'trials:trials-panel:reading:consistency-analysis': `一致性分析`,
+ 'trials:trials-panel:attachments:reReadingTracking': `重阅审批`,
+}
\ No newline at end of file
diff --git a/src/lang/zh.js b/src/lang/zh.js
new file mode 100644
index 0000000..58750ab
--- /dev/null
+++ b/src/lang/zh.js
@@ -0,0 +1,2316 @@
+/* eslint-disable */
+export default {
+ 'common:button:search': `查询`,
+ 'common:button:reset': `重置`,
+ 'common:button:save': `保存`,
+ 'common:button:cancel': `取消`,
+ 'common:button:new': `新增`,
+ 'common:button:add': `添加`,
+ 'common:button:edit': `编辑`,
+ 'common:button:delete': `删除`,
+ 'common:button:remove': `移除`,
+ 'common:button:sign': `签名`,
+ 'common:button:export': `导出`,
+ 'common:button:submit': `提交`,
+ 'common:button:download': `下载`,
+ 'common:button:confirm': `确认`,
+ 'common:button:close': `关闭`,
+ 'common:button:batchDelete': `批量删除`,
+ 'common:button:preview': `预览`,
+ 'common:action:action': `操作`,
+ 'common:ruleMessage:specify': `请注明`,
+ 'common:ruleMessage:select': `请选择`,
+ 'common:ruleMessage:maxLength': `最大长度为`,
+ 'common:message:savedSuccessfully': `保存成功!`,
+ 'common:message:deletedSuccessfully': `删除成功!`,
+ 'common:message:removedSuccessfully': `移除成功!`,
+ 'common:message:addedSuccessfully': `添加成功!`,
+ 'common:message:updatedSuccessfully': `更新成功!`,
+ 'common:message:signSuccessfully': `签名成功!`,
+ 'common:message:signTip': `请仔细阅读文件,并签名确认`,
+ 'common:dialogTitle:sign': `签名`,
+ 'common:label:sign': `当前用户名为:`,
+ 'common:form:sign:userName': `用户名`,
+ 'common:form:sign:password': `密码`,
+ 'common:message:signWarning': `用户名输入错误!`,
+ 'common:message:downloadFile': `该文件不支持在线预览`,
+ 'common:placeholder:selectorsearch': `选择或搜索`,
+ 'common:placeholder:select': `选择`,
+ 'common:title:languageType': `语言类型`,
+ 'common:title:error': `出错了`,
+ 'common:title:goHome': `返回`,
+ 'trials:trials-list:table:trialId': `项目编号`,
+ 'trials:trials-list:table:experimentName': `试验名称`,
+ 'trials:trials-list:table:researchNumber': `研究方案号`,
+ 'trials:trials-list:table:sponsor': `申办方`,
+ 'trials:trials-list:table:isDeleted': `是否删除`,
+ 'trials:trials-list:table:status': `状态`,
+ 'trials:trials-list:table:createDate': `创建日期`,
+ 'trials:trials-list:table:ExpetiedTaskCount': `加急阅片`,
+ 'trials:trials-list:table:ReReadingApprovalCount': `重阅审批`,
+ 'trials:trials-list:table:PendingReconciliationCount': `待核查`,
+ 'trials:trials-list:table:PendingResponseCount': `待回复`,
+ 'trials:trials-list:action:panel': `详情`,
+ 'trials:trials-list:action:edit': `编辑`,
+ 'trials:trials-list:action:status': `状态`,
+ 'trials:trials-list:action:abolition': `删除`,
+ 'trials:trials-list:dialogTitle:new': `新增`,
+ 'trials:trials-list:dialogTitle:edit': `编辑`,
+ 'trials:trials-list:dialogTitle:doneTitle': `代办详情`,
+ 'trials:trials-list:PendingDetails:Role': `角色`,
+ 'trials:trials-list:PendingDetails:UserID': `用户名`,
+ 'trials:trials-list:PendingDetails:ReviewerSelection': `阅片人筛选`,
+ 'trials:trials-list:PendingDetails:ReviewerApproval': `阅片人待审批`,
+ 'trials:trials-list:PendingDetails:ReviewerConfirm': `阅片人待确认`,
+ 'trials:trials-list:PendingDetails:ImageUpload': `上传影像`,
+ 'trials:trials-list:PendingDetails:ImageReUpload': `影像待重传`,
+ 'trials:trials-list:PendingDetails:ExpeditedImageSubmission': `加急影像待提交`,
+ 'trials:trials-list:PendingDetails:QC': `QC`,
+ 'trials:trials-list:PendingDetails:PendingClaim': `QC待领取`,
+ 'trials:trials-list:PendingDetails:Unfinished': `QC审核未完成`,
+ 'trials:trials-list:PendingDetails:QueryPendingIQC to-do': `QC质疑待处理`,
+ 'trials:trials-list:PendingDetails:QueryPendingCRCto-do': `质疑待CRC处理`,
+ 'trials:trials-list:PendingDetails:DateReconciliation': `一致性核查`,
+ 'trials:trials-list:PendingDetails:PendingCRCto-do': `待CRC处理`,
+ 'trials:trials-list:PendingDetails:PendingPMto-do': `待PM处理`,
+ 'trials:trials-list:PendingDetails:Reads': `阅片`,
+ 'trials:trials-list:PendingDetails:PendingRead': `待阅`,
+ 'trials:trials-list:PendingDetails:Re-ReadApproval': `重阅待审批`,
+ 'trials:trials-list:PendingDetails:MedicalReview': `医学审核`,
+ 'trials:trials-list:PendingDetails:PedingReview': `待审核`,
+ 'trials:trials-list:PendingDetails:PendingMIMto-do': `MIM待处理`,
+ 'trials:trials-list:PendingDetails:PendingIRResponse': `IR待回复`,
+ 'trials:trials-list:form:trialId': `项目编号`,
+ 'trials:trials-list:form:trialType': `项目类型`,
+ 'trials:trials-list:form:experimentName': `试验名称`,
+ 'trials:trials-list:form:researchNumber': `研究方案号`,
+ 'trials:trials-list:form:researchUnit': `主研单位`,
+ 'trials:trials-list:form:pi': `主要研究者`,
+ 'trials:trials-list:form:sponsor': `申办方`,
+ 'trials:trials-list:form:cro': `CRO`,
+ 'trials:trials-list:form:declarationType': `申报类型`,
+ 'trials:trials-list:form:phase': `临床分期`,
+ 'trials:trials-list:form:indicationType': `适应症类型`,
+ 'trials:trials-list:form:indication': `适应症`,
+ 'trials:trials-list:form:siteCount': `中心数量`,
+ 'trials:trials-list:form:visitCount': `总访视量`,
+ 'trials:trials-list:form:patientsNum': `受试者数量`,
+ 'trials:trials-list:form:timePointsPerPatient': `平均访视量`,
+ 'trials:trials-list:form:modality': `检查技术`,
+ 'trials:trials-list:form:criterion': `阅片标准`,
+ 'trials:trials-list:form:reviewType': `阅片类型`,
+ 'trials:trials-list:form:reviewMode': `阅片模式`,
+ 'trials:trials-list:form:expedited': `实时阅片`,
+ 'trials:trials-list:form:projectCycle': `项目周期(月)`,
+ 'trials:trials-list:form:totalReviewers': `阅片人数`,
+ 'trials:trials-list:form:typeofReviewers': `阅片人类型`,
+ 'trials:trials-list:form:save': `保存`,
+ 'trials:trials-list:form:cancel': `取消`,
+ 'trials:trials-list:message:addedSuccessfully': `添加成功!`,
+ 'trials:trials-list:message:updatedSuccessfully': `更新成功!`,
+ 'trials:trials-list:message:abolition': `是否确认删除此项目?`,
+ 'trials:trials-list:message:abolitionSuccessfully': `删除成功!`,
+ 'trials:trials-list:button:abolitionCancel': `取消`,
+ 'trials:trials-list:button:abolitionConfirm': `确认`,
+ 'trials:trials-list:dialogTitle:changeStatus': `项目状态变更`,
+ 'trials:trials-list:label:reason': `原因`,
+ 'trials:trials-list:button:changeStatusCancel': `取消`,
+ 'trials:trials-list:button:changeStatusConfirm': `确认`,
+ 'trials:trials-list:message:changeStatusMes1': `项目设置为启动后,部分配置不可更改!`,
+ 'trials:trials-list:message:changeStatusMes2': `项目设置为完成,数据不可更改!`,
+ 'trials:trials-list:message:changeStatusMes3': `项目设置为停止,数据不可更改!`,
+ 'trials:tab:recordsManage': `审批签署`,
+ 'trials:tab:selfAttachment': `文件签署`,
+ 'trials:self-attachment:table:fileType': `文件类型`,
+ 'trials:self-attachment:table:fileName': `文件名称`,
+ 'trials:self-attachment:table:isDeleted': `是否废除`,
+ 'trials:self-attachment:table:uploadTime': `上传时间`,
+ 'trials:self-attachment:table:isSign': `是否签署`,
+ 'trials:self-attachment:table:signTime': `签署时间`,
+ 'trials:self-attachment:action:preview': `预览`,
+ 'trials:self-attachment:action:sign': `签署`,
+ 'trials:tab:signRecords': `签署记录`,
+ 'trials:signRecords:table:fileType': `文件类型`,
+ 'trials:signRecords:table:fileName': `文件名称`,
+ 'trials:signRecords:table:fileLevel': `文件级别`,
+ 'trials:signRecords:table:isDeleted': `是否废除`,
+ 'trials:signRecords:table:uploadTime': `上传时间`,
+ 'trials:signRecords:table:isSign': `是否签署`,
+ 'trials:signRecords:table:user': `签署人`,
+ 'trials:signRecords:table:userName': `用户名`,
+ 'trials:signRecords:table:userType': `用户类型`,
+ 'trials:signRecords:table:confirmTime': `签署时间`,
+ 'trials:signRecords:action:preview': `预览`,
+ 'trials:tab:siteResearch': `中心调研`,
+ 'trials:researchRecord:button:questionStaffs': `中心人员`,
+ 'trials:researchRecord:button:questionLink': `调查表链接`,
+ 'trials:researchRecord:placeholder:contactorInfo': `姓名/邮箱/电话`,
+ 'trials:researchRecord:table:siteId': `中心编号`,
+ 'trials:researchRecord:table:siteName': `中心名称`,
+ 'trials:researchRecord:table:contactor': `联系人`,
+ 'trials:researchRecord:table:contactorPhone': `联系电话`,
+ 'trials:researchRecord:table:contactorEmail': `联系邮箱`,
+ 'trials:researchRecord:table:preliminaryUser': `初审人`,
+ 'trials:researchRecord:table:ReviewerUser': `复审人`,
+ 'trials:researchRecord:table:status': `调查表状态`,
+ 'trials:researchRecord:table:isDeleted': `是否废除`,
+ 'trials:researchRecord:table:updateTime': `更新时间`,
+ 'trials:researchRecord:action:view': `审批`,
+ 'trials:researchRecord:action:abolish': `废除`,
+ 'trials:researchRecord:dialogTitle:questionStaff': `中心人员汇总表`,
+ 'trials:researchRecord:dialogButton:sendEmail': `发邮件`,
+ 'trials:researchRecord:message:createLinkSuccessfully': `成功创建调查表链接`,
+ 'trials:researchRecord:label:link': `链接:`,
+ 'trials:researchRecord:button:copyLink': `复制链接`,
+ 'trials:researchRecord:message:abolish': `是否确认废除?`,
+ 'trials:researchRecord:message:abolishSuccessfully': `保存成功!`,
+ 'trials:researchRecord:message:researchFormLink': `中心调研表链接`,
+ 'trials:researchRecord:message:copySuccessfully': `复制成功`,
+ 'trials:researchRecord:message:copyFailed': `复制失败`,
+ 'trials:researchStaff:table:siteId': `中心编号`,
+ 'trials:researchStaff:table:siteName': `中心名称`,
+ 'trials:researchStaff:table:Name': `姓名`,
+ 'trials:researchStaff:table:role': `角色`,
+ 'trials:researchStaff:table:phone': `电话号码`,
+ 'trials:researchStaff:table:email': `邮箱`,
+ 'trials:researchStaff:table:organization': `单位`,
+ 'trials:researchStaff:table:isGenerateAccount': `是否生成账号`,
+ 'trials:researchStaff:table:userType': `用户类型`,
+ 'trials:researchStaff:table:status': `状态`,
+ 'trials:researchStaff:table:isJoin': `是否加入`,
+ 'trials:researchStaff:message:sendEmalil': `邮件发送成功`,
+ 'trials:researchForm:title:question': `中心调研表`,
+ 'trials:researchForm:form:trialId': `项目编号`,
+ 'trials:researchForm:form:researchNo': `试验方案号`,
+ 'trials:researchForm:form:researchName': `试验名称`,
+ 'trials:researchForm:form:decleareType': `适应症类型`,
+ 'trials:researchForm:form:siteName': `中心名称`,
+ 'trials:researchForm:form:siteId': `中心编号`,
+ 'trials:researchForm:button:updateQsForm': `更新调研表`,
+ 'trials:researchForm:button:cancelUpdateQsForm': `取消更新调研表`,
+ 'trials:researchForm:form:originalEmail': `原调研表填写人邮箱`,
+ 'trials:researchForm:form:contactorEmail': `联系邮箱`,
+ 'trials:researchForm:form:verifyCode': `验证码`,
+ 'trials:researchForm:form:contactor': `联系人`,
+ 'trials:researchForm:form:contactorPhone': `联系人电话`,
+ 'trials:researchForm:form:contactorEmail': `联系人邮箱`,
+ 'trials:researchForm:form:engravingCycle': `平均刻盘周期(天)`,
+ 'trials:researchForm:form:isQualified': `请确认参与本项目影像采集的影像技师具备对应的资质(如:“技师证”,对应设备的“大型设备上岗证”)`,
+ 'trials:researchForm:form:notQualifiedReason': `原因`,
+ 'trials:researchForm:form:staffType': `研究单位疗效评估人员类型`,
+ 'trials:researchForm:form:isFollowStudyParam': `是否严格按照研究单位影像手册参数完成图像采集`,
+ 'trials:researchForm:form:notFollowStudyParam': `不能严格按照研究单位影像手册参数采集图像原因`,
+ 'trials:researchForm:button:send': `发送`,
+ 'trials:researchForm:button:verifyCode': `验证码`,
+ 'trials:researchForm:formRule:phone': `电话号码无效`,
+ 'trials:researchForm:formRule:email': `邮箱无效`,
+ 'trials:researchForm:formRule:maxLength': `最大长度为50`,
+ 'trials:researchForm:formRule:specify': `请注明`,
+ 'trials:researchForm:formRule:select': `请选择`,
+ 'trials:researchForm:button:submit': `提交`,
+ 'trials:researchForm:button:auditPasses': `审核通过`,
+ 'trials:researchForm:button:auditRejected': `驳回`,
+ 'trials:researchForm:dialogTitle:reject': `驳回`,
+ 'trials:researchForm:form:rejectReson': `驳回原因`,
+ 'trials:researchForm:message:saveWarning': `必须要有一条人员记录或者设备记录`,
+ 'trials:researchForm:message:submitWarning': `是否确认提交?`,
+ 'trials:researchForm:message:auditWarning': `是否确认审核通过?`,
+ 'trials:researchForm:button:loginOut': `退出`,
+ 'trials:staffResearch:title:staff': `人员调查`,
+ 'trials:staffResearch:form:lastName': `姓`,
+ 'trials:staffResearch:form:firstName': `名`,
+ 'trials:staffResearch:form:name': `姓名`,
+ 'trials:staffResearch:form:role': `角色`,
+ 'trials:staffResearch:form:phone': `电话号码`,
+ 'trials:staffResearch:form:email': `邮箱`,
+ 'trials:staffResearch:form:organization': `单位`,
+ 'trials:staffResearch:form:isGenerate': `是否生成账号`,
+ 'trials:staffResearch:form:userType': `用户类型`,
+ 'trials:staffResearch:form:status': `加入`,
+ 'trials:staffResearch:form:isSuccess': `账号是否生成成功`,
+ 'trials:staffResearch:dialogTitle:add': `添加`,
+ 'trials:staffResearch:dialogTitle:edit': `编辑`,
+ 'trials:staffResearch:message:confirmDel': `是否确认删除?`,
+ 'trials:staffResearch:message:delSuccessfully': `删除成功!`,
+ 'trials:equiptResearch:title:equiptResearch': `设备调研`,
+ 'trials:equiptResearch:form:equipment': `扫描设备`,
+ 'trials:equiptResearch:form:param': `扫描参数`,
+ 'trials:equiptResearch:form:manufacturer': `扫描仪器制造商名称`,
+ 'trials:equiptResearch:form:model': `扫描仪型号`,
+ 'trials:equiptResearch:dialogTitle:add': `添加`,
+ 'trials:equiptResearch:dialogTitle:edit': `编辑`,
+ 'trials:equiptResearch:message:confirmDel': `是否确认删除?`,
+ 'trials:equiptResearch:message:delSuccessfully': `删除成功!`,
+ 'trials:equiptResearch:form:remark': `备注`,
+ 'trials:equiptResearch:form:precautions': `注意事项`,
+ 'trials:equiptResearch:form:item1': `只要有可能,请确保受试者使用上述指定的扫描仪器采集影像。`,
+ 'trials:equiptResearch:form:item2': `请确保对每位受试者的扫描参数在整个研究过程中保持一致。`,
+ 'trials:equiptResearch:form:item3': `试验过程中,如果有任何人员、设备或扫描仪器的替换,请及时更新该表格。`,
+ 'trials:equiptResearch:form:item4': `请保存好原始(未经压缩的;非重建的)数据。`,
+ 'trials:tab:seletctedReviews': `阅片人筛选`,
+ 'trials:seletctedReviews:title:trialInfor': `项目详情`,
+ 'trials:seletctedReviews:title:enrollment': `入组`,
+ 'trials:seletctedReviews:timeline:selection': `选择`,
+ 'trials:seletctedReviews:timeline:submission': `提交`,
+ 'trials:seletctedReviews:timeline:approval': `审核`,
+ 'trials:seletctedReviews:timeline:confirmation': `确认`,
+ 'trials:seletctedReviews:form:modality': `检查类型`,
+ 'trials:seletctedReviews:form:subspeciality': `亚专业`,
+ 'trials:seletctedReviews:form:position': `职位`,
+ 'trials:seletctedReviews:form:rank': `职称`,
+ 'trials:seletctedReviews:form:institution': `机构`,
+ 'trials:seletctedReviews:table:name': `姓名`,
+ 'trials:seletctedReviews:table:nameCN': `中文姓名`,
+ 'trials:seletctedReviews:table:id': `用户名`,
+ 'trials:seletctedReviews:table:status': `状态`,
+ 'trials:seletctedReviews:table:submitted': `已被提交数`,
+ 'trials:seletctedReviews:table:approved': `已被审核数`,
+ 'trials:seletctedReviews:table:reading': `正在读`,
+ 'trials:seletctedReviews:table:specialty': `专业`,
+ 'trials:seletctedReviews:table:subspecialty': `亚专业`,
+ 'trials:seletctedReviews:table:institution': `机构`,
+ 'trials:seletctedReviews:table:city': `城市`,
+ 'trials:seletctedReviews:table:country': `国家`,
+ 'trials:seletctedReviews:table:selector': `选择人`,
+ 'trials:seletctedReviews:table:selectionTime': `选择时间`,
+ 'trials:seletctedReviews:table:submitter': `提交人`,
+ 'trials:seletctedReviews:table:submissionTime': `提交时间`,
+ 'trials:seletctedReviews:table:approver': `审核人`,
+ 'trials:seletctedReviews:table:approvalTime': `审核时间`,
+ 'trials:seletctedReviews:table:confirmor': `确认人`,
+ 'trials:seletctedReviews:table:confirmationTime': `确认时间`,
+ 'trials:seletctedReviews:label:language': `语言`,
+ 'trials:seletctedReviews:button:select': `选择`,
+ 'trials:seletctedReviews:button:submissionDownAll': `下载`,
+ 'trials:seletctedReviews:button:submissionDown': `下载`,
+ 'trials:seletctedReviews:button:submit': `提交`,
+ 'trials:seletctedReviews:button:approve': `审核`,
+ 'trials:seletctedReviews:button:confirm': `确认`,
+ 'trials:seletctedReviews:message:msg1': `是否确认选择?`,
+ 'trials:seletctedReviews:message:msg2': `是否确认提交?`,
+ 'trials:seletctedReviews:title:language': `语言`,
+ 'trials:enrolledReviews:button:tackNum': `任务量 (未读/已读/总数)`,
+ 'trials:spmAudit:button:agree': `同意`,
+ 'trials:spmAudit:button:reject': `拒绝`,
+ 'trials:spmAudit:button:influenceList': `已影响任务列表`,
+ 'trials:spmAudit:title:rejected': `驳回`,
+ 'trials:spmAudit:title:rejectedReason': `驳回原因`,
+ 'trials:spmAudit:title:title1': `重阅影响任务列表`,
+ 'trials:spmAudit:title:title2': `已影响任务列表`,
+ 'trials:spmAudit:title:title3': `申请重阅成功`,
+ 'trials:spmAudit:title:title4': `同意申请成功!`,
+ 'trials:spmAudit:title:title5': `拒绝申请成功!`,
+ 'trials:spmEnroll:title:userList': `备选人员列表`,
+ 'trials:spmEnroll:table:blindNameCN': `中文名`,
+ 'trials:spmEnroll:table:blindName': `英文名`,
+ 'trials:spmEnroll:table:specialityId': `专业`,
+ 'trials:spmEnroll:table:subspecialityIds': `亚专业`,
+ 'trials:spmEnroll:table:submmitUserName': `提交人`,
+ 'trials:spmEnroll:table:submmitTime': `提交时间`,
+ 'trials:spmEnroll:table:optUserName': `审核人`,
+ 'trials:spmEnroll:table:optTimeStr': `审核时间`,
+ 'trials:spmEnroll:button:view': `查看阅片人简历`,
+ 'trials:spmEnroll:button:agree': `同意`,
+ 'trials:spmEnroll:title:msg1': `是否确认审核?`,
+ 'trials:tab:enrolledReviews': `独立阅片人`,
+ 'trials:enrolledReviews:table:name': `姓名`,
+ 'trials:enrolledReviews:table:nameCN': `中文姓名`,
+ 'trials:enrolledReviews:table:userName': `用户名`,
+ 'trials:enrolledReviews:table:enrollmentTime': `入组时间`,
+ 'trials:enrolledReviews:table:enable': `启用`,
+ 'trials:enrolledReviews:table:disable': `停用`,
+ 'trials:enrolledReviews:table:id': `编号`,
+ 'trials:enrolledReviews:table:status': `状态`,
+ 'trials:enrolledReviews:table:training': `培训`,
+ 'trials:enrolledReviews:table:refresherTraining': `重新培训`,
+ 'trials:enrolledReviews:table:tp': `时间点`,
+ 'trials:enrolledReviews:table:tpRegular': `普通`,
+ 'trials:enrolledReviews:table:tp48H': `48小时`,
+ 'trials:enrolledReviews:table:tp24H': `24小时`,
+ 'trials:enrolledReviews:table:ad': `仲裁`,
+ 'trials:enrolledReviews:table:adRegular': `普通`,
+ 'trials:enrolledReviews:table:ad48H': `48小时`,
+ 'trials:enrolledReviews:table:ad24H': `24小时`,
+ 'trials:enrolledReviews:table:gl': `全局`,
+ 'trials:enrolledReviews:table:downtime': `空跑`,
+ 'trials:enrolledReviews:table:readingType': `阅片类型`,
+ 'trials:enrolledReviews:table:ackOfSow': `ACK of SOW`,
+ 'trials:enrolledReviews:table:action': `操作`,
+ 'trials:enrolledReviews:button:config': `配置`,
+ 'trials:enrolledReviews:button:view': `查看`,
+ 'trials:enrolledReviews:button:delete': `删除`,
+ 'trials:enrolledReviews:button:upload': `上传`,
+ 'trials:enrolledReviews:action:stats': `统计`,
+ 'trials:enrolledReviews:label:notUpload': `未上传`,
+ 'trials:enrolledReviews:label:enrolled': `入组`,
+ 'trials:enrolledReviews:label:outOfEnrollment': `出组`,
+ 'trials:enrolledReviews:label:enrollmentStatus': `入组状态`,
+ 'trials:enrolledReviews:label:outOfEnrollmentTime': `出组时间`,
+ 'trials:enrolledReviews:label:mustBepdf': `必须是PDF格式`,
+ 'trials:enrolledReviews:dialogTitle:changeStatus': `编辑阅片人状态`,
+ 'trials:enrolledReviews:label:enrollmentStaus': `入组状态`,
+ 'trials:enrolledReviews:dialogTitle:changeReadingType': `编辑阅片类型`,
+ 'trials:enrolledReviews:dialogTitle:signedAckOfSow': `已签名的ACK of SOW`,
+ 'trials:enrolledReviews:message:statsWarning': `Ack-Sow未上传,是否继续?`,
+ 'trials:enrolledReviews:message:uploadSowWaring1': `只允许上传1个文件`,
+ 'trials:enrolledReviews:message:deleteSOWWarning': `是否确认删除?`,
+ 'trials:enrolledReviews:message:SOW': `既往阅片情况声明`,
+ 'trials:enrolledReviews:message:EQC': `入项资格确认书`,
+ 'trials:stats:form:name': `姓名`,
+ 'trials:stats:form:source': `来源`,
+ 'trials:stats:form:beginMonth': `开始月份`,
+ 'trials:stats:form:endMonth': `结束月份`,
+ 'trials:stats:table:month': `月份`,
+ 'trials:stats:table:action': `操作`,
+ 'trials:stats:action:add': `添加`,
+ 'trials:stats:action:reset': `重置`,
+ 'trials:stats:action:edit': `编辑`,
+ 'trials:stats:action:del': `删除`,
+ 'trials:stats:form:expedited': `实时阅片`,
+ 'trials:stats:form:dispalyAll': `展示所有`,
+ 'trials:stats:form:workmonth': `工作月份`,
+ 'trials:stats:form:workdate': `工作日期`,
+ 'trials:stats:dialogTitle:add': `添加`,
+ 'trials:stats:dialogTitle:edit': `编辑`,
+ 'trials:stats:message:del': `是否确认删除?`,
+ 'trials:stats:message:reset': `是否确认重置?`,
+ 'trials:stats:message:training': `来自客户的培训数据是:`,
+ 'trials:stats:message:refresherTraining': `来自客户的重新培训数据是:`,
+ 'trials:stats:message:tp': `来自客户的时间点数据是:`,
+ 'trials:stats:message:tp48H': `来自客户的时间点(48小时)数据是:`,
+ 'trials:stats:message:tp24H': `来自客户的时间点(24小时)数据是:`,
+ 'trials:stats:message:ad': `来自客户的仲裁数据是:`,
+ 'trials:stats:message:ad48H': `来自客户的仲裁数据(48小时)是:`,
+ 'trials:stats:message:ad24H': `来自客户的仲裁数据(24小时)数据是:`,
+ 'trials:stats:message:global': `来自客户的全局数据是:`,
+ 'trials:stats:message:downtime': `来自客户的空跑数据是:`,
+ 'trials:stats:message:editWorkload': `当前日期已有数据,是否确认编辑?`,
+ 'trials:stats:message:editWorkloadWarning1': `工作量不能全为0`,
+ 'trials:stats:message:editWorkloadWarning2': `工作量数据不正确,是否确认保存?`,
+ 'trials:tab:trialSummary': `项目汇总`,
+ 'trials:tab:trialInfo': `项目信息`,
+ 'trials:tab:auditRecord': `痕迹稽查`,
+ 'trials:auditRecord:table:researchNo': `研究方案号`,
+ 'trials:auditRecord:table:siteNo': `中心编号`,
+ 'trials:auditRecord:table:subject': `受试者`,
+ 'trials:auditRecord:table:visit': `访视`,
+ 'trials:auditRecord:table:taskName': `任务名称`,
+ 'trials:auditRecord:table:taskBlindName': `盲态任务标识`,
+ 'trials:auditRecord:table:criterion': `阅片标准`,
+ 'trials:auditRecord:table:funcModule': `功能模块`,
+ 'trials:auditRecord:table:operationName': `操作名`,
+ 'trials:auditRecord:table:modifyReason': `修改原因`,
+ 'trials:auditRecord:table:isSign': `是否电签`,
+ 'trials:auditRecord:table:operator': `操作人`,
+ 'trials:auditRecord:table:userName': `用户名`,
+ 'trials:auditRecord:table:role': `角色`,
+ 'trials:auditRecord:table:operateTime': `操作时间`,
+ 'trials:auditRecord:action:detail': `详情`,
+ 'trials:auditRecord:title:historicalOperations': `同一对象历史操作`,
+ 'trials:auditRecord:title:relationOperations': `同一对象关联操作`,
+ 'trials:auditRecord:title:fieldName': `字段名`,
+ 'trials:auditRecord:title:fieldValue': `值`,
+ 'trials:auditRecord:title:beforeDeletion': `删除前`,
+ 'trials:auditRecord:title:beforeModification': `修改前`,
+ 'trials:auditRecord:title:afterDeletion': `删除后`,
+ 'trials:auditRecord:title:afterModification': `修改后`,
+ 'trials:auditRecord:title:viewDetail': `查看详情`,
+ 'trials:auditRecord:title:viewImage': `查看图片`,
+ 'trials:auditRecord:title:signInfo': `签名信息:`,
+ 'trials:auditRecord:title:viewRelationOperations': `查看关联操作`,
+ 'trials:auditRecord:title:signInfo2': `签名信息`,
+ 'trials:tab:uploadMonitor': `上传监控`,
+ 'trials:uploadMonitor:table:siteId': `中心编号`,
+ 'trials:uploadMonitor:table:subjectId': `受试者编号`,
+ 'trials:uploadMonitor:table:visitName': `访视名称`,
+ 'trials:uploadMonitor:table:studyId': `检查编号`,
+ 'trials:uploadMonitor:table:imageType': `影像类型`,
+ 'trials:uploadMonitor:table:uploader': `上传人`,
+ 'trials:uploadMonitor:table:ip': `IP`,
+ 'trials:uploadMonitor:table:beginTime': `开始时间`,
+ 'trials:uploadMonitor:table:endTime': `结束时间`,
+ 'trials:uploadMonitor:table:totalTime': `总共用时`,
+ 'trials:uploadMonitor:table:fileCount': `文件数`,
+ 'trials:uploadMonitor:table:fileSize': `文件大小`,
+ 'trials:uploadMonitor:table:isRepetition': `是否有重复文件`,
+ 'trials:uploadMonitor:table:uploadStatus': `是否上传成功`,
+ 'trials:uploadMonitor:table:remark': `备注`,
+ 'trials:uploadMonitor:table:uploadInterval': `上传用时`,
+ 'trials:uploadMonitor:table:archiveInterval': `归档用时`,
+ 'trials:tab:site': `中心`,
+ 'trials:site:table:siteId': `中心编号`,
+ 'trials:site:table:site': `中心名称`,
+ 'trials:site:table:city': `城市`,
+ 'trials:site:table:country': `国家`,
+ 'trials:site:table:subjects': `受试者数量`,
+ 'trials:site:table:visits': `访视数数量`,
+ 'trials:site:table:staff': `参与人员`,
+ 'trials:site:table:name': `姓名`,
+ 'trials:site:table:userType': `用户类型`,
+ 'trials:site:table:organization': `单位`,
+ 'trials:site:table:phone': `电话号码`,
+ 'trials:site:table:dataAssigned': `授权时间`,
+ 'trials:site:table:status': `状态`,
+ 'trials:site:table:deletedTime': `禁用时间`,
+ 'trials:site:dialogTitle:staff': `参与者`,
+ 'trials:tab:subject': `受试者`,
+ 'trials:subject:table:site': `中心编号`,
+ 'trials:subject:table:subjectId': `受试者编号`,
+ 'trials:subject:table:medicalNo': `受试者第二编号`,
+ 'trials:subject:table:firstGiveMedicineTime': `访视基准日期`,
+ 'trials:subject:table:status': `状态`,
+ 'trials:subject:table:totalVisitCount': `总访视量`,
+ 'trials:subject:table:inPlanVisitCount': `计划访视量`,
+ 'trials:subject:table:outPlanVisitCount': `计划外访视量`,
+ 'trials:subject:table:totalVisitSubmmitCount': `当前提交访视量`,
+ 'trials:subject:table:isMissingImages': `是否漏传`,
+ 'trials:subject:table:missingSubmmitCount': `漏提交访视量`,
+ 'trials:subject:table:lostVisitCount': `失访访视量`,
+ 'trials:subject:table:latestVisitName': `最新提交访视名称`,
+ 'trials:subject:table:age': `年龄`,
+ 'trials:subject:table:gender': `性别`,
+ 'trials:subject:table:isUrgent': `是否加急`,
+ 'trials:subject:table:outVisitDate': `结束访视日期`,
+ 'trials:subject:table:finalSubjectVisit': `末次访视`,
+ 'trials:subject:table:outVisitReason': `原因`,
+ 'trials:subject:action:edit': `编辑`,
+ 'trials:subject:action:status': `状态`,
+ 'trials:subject:action:delete': `删除`,
+ 'trials:subject:dialogTitle:new': `添加`,
+ 'trials:subject:dialogTitle:edit': `编辑`,
+ 'trials:subject:dialogTitle:editStatus': `状态变更`,
+ 'trials:subject:message:delete': `是否确认删除?`,
+ 'trials:subject:title:report': `实时报告`,
+ 'trials:subject:title:addReport': `生成报告`,
+ 'trials:subject:title:sendReport': `发送实时报告(受试者编号:xxx)`,
+ 'trials:subject:title:send': `发送`,
+ 'trials:subject:message:sendReport': `是否确认发送受试者xxx的实时报告?`,
+ 'trials:subject:message:sendSuccessfully': `发送成功`,
+ 'trials:tab:readingPeriod': `阅片期`,
+ 'trials:readingPeriod:table:siteCode': `中心编号`,
+ 'trials:readingPeriod:table:subjectCode': `受试者编号`,
+ 'trials:readingPeriod:table:readingPlan': `阅片计划`,
+ 'trials:readingPeriod:table:readingType': `阅片类型`,
+ 'trials:readingPeriod:table:readingName': `阅片期名称`,
+ 'trials:readingPeriod:table:readingSchedule': `进度`,
+ 'trials:readingPeriod:table:enroll': `入`,
+ 'trials:readingPeriod:table:urgent': `急`,
+ 'trials:readingPeriod:table:finalVisit': `末`,
+ 'trials:readingPeriod:table:pd': `PD`,
+ 'trials:readingPeriod:table:lastVisit': `上一访视`,
+ 'trials:readingPeriod:table:deadlineVisit': `截止访视`,
+ 'trials:readingPeriod:table:deadlineVisit2': `截止访视:`,
+ 'trials:readingPeriod:table:correspondVisit': `对应阅片期`,
+ 'trials:readingPeriod:table:clinicalInfo': `临床资料`,
+ 'trials:readingPeriod:table:clinicalInfo2': `临床资料:`,
+ 'trials:readingPeriod:table:stakeholder': `当前干系人`,
+ 'trials:readingPeriod:table:noCD': `无`,
+ 'trials:readingPeriod:buttton:addSubjectImageRP': `添加影像学阅片期`,
+ 'trials:readingPeriod:buttton:addSubjectOncologyRP': `添加肿瘤学阅片期`,
+ 'trials:readingPeriod:buttton:exportSubjectTbl': `导出受试者进展表`,
+ 'trials:readingPeriod:buttton:exportPeriodTbl': `导出阅片期信息表`,
+ 'trials:readingPeriod:dialogTitle:addSubjectPR': `添加阅片期`,
+ 'trials:addSubjectPR:table:rpType': `阅片期类型`,
+ 'trials:addSubjectPR:table:rpName': `阅片期名称`,
+ 'trials:addSubjectPR:table:deadlineVisit': `截止访视`,
+ 'trials:readingPeriod:button:view': `查看`,
+ 'trials:readingPeriod:dialogTitle:clinicalData': `临床资料`,
+ 'trials:readingPeriod:cd:table:clinicalDataName': `临床数据名称`,
+ 'trials:readingPeriod:cd:table:dataLevel': `数据级别`,
+ 'trials:readingPeriod:cd:table:transferType': `传输方式`,
+ 'trials:readingPeriod:cd:table:fileCount': `文件数量`,
+ 'trials:readingPeriod:cd:action:view': `查看`,
+ 'trials:readingPeriod:cd:action:sign': `签名`,
+ 'trials:readingPeriod:cd:action:edit': `编辑`,
+ 'trials:readingPeriod:cd:action:delete': `删除`,
+ 'trials:readingPeriod:cd:message:delete': `是否确认删除?`,
+ 'trials:readingPeriod:cd:title:downloadTpl': `下载模板`,
+ 'trials:readingPeriod:cd:title:tips': `提示:`,
+ 'trials:readingPeriod:cd:title:tips1': `当前访视/阅片期需要采集“临床数据名称”。请采集临床数据后,按照模板上传,并签名确认。`,
+ 'trials:readingPeriod:cd:title:tips2': `若当前访视/阅片期未能采集到临床数据,请上传空白模板,并签名确认。`,
+ 'trials:readingPeriod:cd:title:preview': `预览`,
+ 'trials:readingPeriod:cd:title:cdStatus': `阅片临床数据状态`,
+ 'trials:readingPeriod:cd:title:cdCheck': `核查`,
+ 'trials:readingPeriod:dialogTitle:EditSubjectPR': `编辑阅片期`,
+ 'trials:readingPeriod:verify:title:fileList': `文件列表`,
+ 'trials:readingPeriod:verify:title:preview': `预览`,
+ 'trials:readingPeriod:verify:title:result': `核查结果`,
+ 'trials:readingPeriod:verify:title:isComplete': `临床信息是否完整`,
+ 'trials:readingPeriod:verify:title:isBlind': `临床信息是否盲化`,
+ 'trials:readingPeriod:cd:table:fileName': `文件名称`,
+ 'trials:readingPeriod:cd:action:viewFile': `预览`,
+ 'trials:readingPeriod:cd:action:deleteFile': `删除`,
+ 'trials:readingPeriod:cd:form:data': `数据类容`,
+ 'trials:readingPeriod:cd:message:uploadFile': `请上传文件!`,
+ 'trials:readingPeriod:button:detail': `详情`,
+ 'trials:rpDetail:dialogTitle:detail': `详情`,
+ 'trials:readingPeriod:button:delete': `删除`,
+ 'trials:readingPeriod:button:rpManage': `阅片期管理`,
+ 'trials:rpManage:dialogTitle:setRP': `设置阅片期`,
+ 'trials:rpManage:table:readingType': `阅片期类型`,
+ 'trials:rpManage:table:readingName': `阅片期名称`,
+ 'trials:rpManage:table:subjectRange': `受试者范围`,
+ 'trials:rpManage:table:designatedSite': `指定中心`,
+ 'trials:rpManage:table:expirationDate': `截止日期`,
+ 'trials:rpManage:table:expirationVisit': `截止访视`,
+ 'trials:rpManage:table:linkedVisits': `关联阅片期`,
+ 'trials:rpManage:table:readingStatus': `状态`,
+ 'trials:rpManage:table:effectiveTime': `生效时间`,
+ 'trials:rpManage:action:edit': `编辑`,
+ 'trials:rpManage:action:status': `状态`,
+ 'trials:rpManage:action:delete': `删除`,
+ 'trials:rpManage:button:addImageReading': `添加影像学阅片`,
+ 'trials:rpManage:button:addOncologyReading': `添加肿瘤学阅片`,
+ 'trials:rpManage:dialogTitle:addRP': `新增`,
+ 'trials:rpManage:dialogTitle:editRP': `编辑`,
+ 'trials:rpManage:dialogTitle:linkedRP': `关联计划阅片期`,
+ 'trials:rpManage:dialogTitle:statusChange': `状态变更`,
+ 'trials:rpManage:message:delete': `是否确认删除?`,
+ 'trials:rpManage:message:closeDialog': `阅片期未保存,是否确认关闭?`,
+ 'trials:addRP:form:sites': `中心`,
+ 'trials:addRP:form:condition': `条件`,
+ 'trials:addRP:button:createPR': `生成阅片期`,
+ 'trials:addRP:button:confirmAddPR': `确认添加`,
+ 'trials:linkedRP:table:siteCode': `中心编号`,
+ 'trials:linkedRP:table:subjectCode': `受试者编号`,
+ 'trials:linkedRP:table:expirationVisit': `截止访视`,
+ 'trials:linkedRP:table:latestScanDate': `最晚拍片日期`,
+ 'trials:linkedRP:table:expirationDate': `截止日期`,
+ 'trials:linkedRP:table:readingName': `阅片期名称`,
+ 'trials:linkedRP:table:effectiveTime': `生效时间`,
+ 'trials:trials-panel:subject:brainMetastasis': `脑转移`,
+ 'trials:trials-panel:form:ParticipateEvaluation': `参与评估`,
+ 'trials:subject:form:ImageSelect': `影像筛选`,
+ 'trials:subject:action:Select': `选择受试者`,
+ 'trials:subject:action:ImageSelect': `影像筛选`,
+ 'trials:subject:action:BatchImageSelect': `批量筛选`,
+ 'trials:trials-panel:table:ParticipateEvaluation': `参与评估`,
+ 'trials:subject:table:ImageSelect': `影像筛选`,
+ 'trials:subject:dialogTitle:SubjectsSelect': `选择受试者`,
+ 'trials:subject:message:SubjectsSelect': `请选择受试者`,
+ 'trials:readingPeriod:message:sureToDelete': `是否确认删除`,
+ 'trials:readingPeriod:title:screeningRule': `筛选规则`,
+ 'trials:readingPeriod:label:IsJoinEvaluation': `评估影像检查部位`,
+ 'trials:readingPeriod:value:IsJoinEvaluation': `脑部`,
+ 'trials:readingPeriod:title:visitsList': `待处理访视列表`,
+ 'trials:trials-panel:table:VisitName': `访视`,
+ 'trials:trials-panel:table:EarliestScanDate': `最早拍片日期`,
+ 'trials:trials-panel:table:LatestScanDate': `最晚拍片日期`,
+ 'trials:trials-panel:table:ImageFilterState': `影像筛选状态`,
+ 'trials:trials-panel:table:EarliestScanDate': `最早拍片日期`,
+ 'trials:subject:action:handleCreateTask': `生成任务`,
+ 'trials:readingPeriod:title:taskList': `已生成任务列表`,
+ 'trials:trials-panel:table:UpdateTime': `任务生成时间`,
+ 'trials:subject:action:openReReadingOrBackList': `回退`,
+ 'trials:subject:action:handleOpenTaskAllocation': `任务列表`,
+ 'trials:readingPeriod:title:taskAllocationVisible': `访视任务`,
+ 'trials:readingPeriod:message:batchGenerateTask': `生成成功`,
+ 'trials:readingPeriod:title:study': `检查`,
+ 'trials:readingPeriod:title:series': `序列`,
+ 'trials:readingPeriod:confirm:Images': `确认后影像无法修改,是否提交?`,
+ 'trials:readingPeriod:confirm:SuccessfulScreening': `筛选成功`,
+ 'trials:tab:visit': `访视`,
+ 'trials:tab:crcUpload': `影像上传`,
+ 'trials:crcUpload:button:submit': `批量提交`,
+ 'trials:crcUpload:button:add': `计划外访视`,
+ 'trials:crcUpload:table:challengeState': `质疑状态`,
+ 'trials:crcUpload:table:submitState': `提交状态`,
+ 'trials:crcUpload:table:urgent': `是否加急`,
+ 'trials:crcUpload:table:siteId': `中心编号`,
+ 'trials:crcUpload:table:subjectId': `受试者编号`,
+ 'trials:crcUpload:table:visitName': `访视名称`,
+ 'trials:crcUpload:table:dataCollected': `数据收集`,
+ 'trials:crcUpload:table:earliestScanDate': `最早拍片日期`,
+ 'trials:crcUpload:table:latestScanDate': `最晚拍片日期`,
+ 'trials:crcUpload:table:submitState': `提交状态`,
+ 'trials:crcUpload:table:submitTime': `提交时间`,
+ 'trials:crcUpload:table:auditState': `审核状态`,
+ 'trials:crcUpload:action:upload': `上传`,
+ 'trials:crcUpload:action:submit': `提交`,
+ 'trials:crcUpload:action:edit': `编辑`,
+ 'trials:crcUpload:action:delete': `删除`,
+ 'trials:crcUpload:label:isNotClose': `未关闭`,
+ 'trials:crcUpload:label:isClosed': `已关闭`,
+ 'trials:crcUpload:label:lostVisit': `失`,
+ 'trials:crcUpload:label:lostVisitDetail': `失访`,
+ 'trials:crcUpload:label:pd': `PD`,
+ 'trials:crcUpload:label:pdDetail': `PD确认`,
+ 'trials:crcUpload:label:finalVisit': `末`,
+ 'trials:crcUpload:label:finalVisitDetail': `末次访视`,
+ 'trials:crcUpload:label:enrollmentConfirm': `入`,
+ 'trials:crcUpload:label:enrollmentConfirmDetail': `入组确认`,
+ 'trials:crcUpload:label:firstGiveMedicineTime': `√`,
+ 'trials:crcUpload:label:firstGiveMedicineTimeD': `已设置访视基准日期`,
+ 'trials:crcUpload:label:dicom': `DICOM检查`,
+ 'trials:crcUpload:label:noneDicom': `非DICOM检查`,
+ 'trials:crcUpload:label:clinicalData': `临床数据`,
+ 'trials:crcUpload:tips:remark': `√:已设置访视基准日期;末:末次访视;失:失访;PD:PD确认;入:入组确认`,
+ 'trials:crcUpload:message:baseDate': `该受试者访视基准日期未填写,请补充后,再提交访视影像。`,
+ 'trials:crcUpload:dialogTitle:qsRecord': `质疑记录`,
+ 'trials:crcUpload:message:submit': `是否确认提交?`,
+ 'trials:crcUpload:message:bulkSubmit': `请确认该批次提交的受试者未遗漏之前访视,如有遗漏请尽快提交。是否继续提交?`,
+ 'trials:crcUpload:message:submittedSuccessfully': `提交成功!`,
+ 'trials:crcUpload:message:deleteVisit': `是否确认删除?`,
+ 'trials:crcUpload:message:deleteVisitSuccessfully': `删除成功!`,
+ 'trials:crcUpload:dialogTitle:new': `新增`,
+ 'trials:crcUpload:dialogTitle:edit': `编辑`,
+ 'trials:crcUpload:form:siteId': `中心`,
+ 'trials:crcUpload:form:subjectId': `受试者`,
+ 'trials:crcUpload:form:visitName': `访视`,
+ 'trials:crcUpload:form:preVisitName': `上一访视`,
+ 'trials:crcUpload:form:baseDateOfVisit': `访视基准日期`,
+ 'trials:crcUpload:form:enrollmentConfirmation': `入组确认评估`,
+ 'trials:crcUpload:form:pd': `疾病进展确认评估`,
+ 'trials:crcUpload:form:isFinalAssessment': `是否末次评估`,
+ 'trials:crcUpload:form:isLostFollowUp': `是否失访`,
+ 'trials:crcUpload:form:setFinalAssessment': `注:设置末次访视后,该受试者将被设置为出组,不能再添加计划外访视`,
+ 'trials:crcUpload:form:setFinalAssessment1': `设置为末次访视,访视名为xxx`,
+ 'trials:uploadedDicoms:tab:uploadDicoms': `DICOM影像上传`,
+ 'trials:uploadedDicoms:table:studyId': `检查编号`,
+ 'trials:uploadedDicoms:table:modality': `检查类型`,
+ 'trials:uploadedDicoms:table:bodyPart': `检查部位`,
+ 'trials:uploadedDicoms:table:seriesCount': `序列数量`,
+ 'trials:uploadedDicoms:table:instanceCount': `图像数量`,
+ 'trials:uploadedDicoms:table:studyDate': `检查日期`,
+ 'trials:uploadedDicoms:table:uploadedTime': `上传时间`,
+ 'trials:uploadedDicoms:action:view': `查看`,
+ 'trials:uploadedDicoms:action:delete': `删除`,
+ 'trials:uploadedDicoms:action:preview': `预览`,
+ 'trials:uploadedDicoms:message:deleteMes': `是否确认删除?`,
+ 'trials:uploadedDicoms:message:deleteSuccessfully': `删除成功!`,
+ 'trials:uploadedDicoms:title:dicomFilesOnly': `只支持DICOM影像`,
+ 'trials:uploadedDicomsicom:button:selectFolder': `选择文件夹`,
+ 'trials:uploadDicomList:table:studyDetail1': `申请号,检查设备,序列数量,图像数量`,
+ 'trials:uploadDicomList:table:studyDetail2': `检查部位,检查描述`,
+ 'trials:uploadDicomList:table:studyInfo': `检查信息`,
+ 'trials:uploadDicomList:table:patientInfo': `患者信息`,
+ 'trials:uploadDicomList:table:pId': `患者编号`,
+ 'trials:uploadDicomList:table:patientName': `患者姓名`,
+ 'trials:uploadDicomList:table:pInfo': `患者性别,患者年龄,患者出生日期`,
+ 'trials:uploadDicomList:table:status': `状态`,
+ 'trials:uploadDicomList:table:stats': `总共/成功/失败`,
+ 'trials:uploadDicomList:button:exportFailed': `导出(失败文件)`,
+ 'trials:uploadDicomList:button:close': `关闭`,
+ 'trials:uploadDicomList:button:upload': `上传`,
+ 'trials:uploadDicomList:message:informationConsistent': `DICOM 文件的信息与此受试者不一致`,
+ 'trials:uploadDicomList:message:genderConsistent': `患者性别与此受试者性别不一致`,
+ 'trials:uploadDicomList:label:uploadingNotAllowed': `未通过校验`,
+ 'trials:uploadDicomList:label:prompt': `提示`,
+ 'trials:uploadDicomList:label:confirm': `确认`,
+ 'trials:uploadDicomList:label:uploading': `上传中`,
+ 'trials:uploadDicomList:label:uploaded': `归档完成`,
+ 'trials:uploadDicomList:label:uploadFailed': `上传失败`,
+ 'trials:uploadDicomList:message:archiveSuccess': `文件已上传成功,等待归档。归档完成后可查看影像数据,现在可以返回。`,
+ 'trials:uploadDicomList:message:archiveSuccess': `归档中`,
+ 'trials:uploadNonDicoms:tab:uploadNonDicoms': `非DICOM影像上传`,
+ 'trials:uploadNonDicoms:button:add': `新增`,
+ 'trials:uploadNonDicoms:button:preview': `预览`,
+ 'trials:uploadNonDicoms:table:studyId': `检查编号`,
+ 'trials:uploadNonDicoms:table:modality': `检查类型`,
+ 'trials:uploadNonDicoms:table:bodyPart': `检查部位`,
+ 'trials:uploadNonDicoms:table:files': `图像数量`,
+ 'trials:uploadNonDicoms:table:fileName': `文件名称`,
+ 'trials:uploadNonDicoms:table:studyDate': `检查日期`,
+ 'trials:uploadNonDicoms:table:updateTime': `更新时间`,
+ 'trials:uploadNonDicoms:action:preview': `预览`,
+ 'trials:uploadNonDicoms:action:upload': `上传`,
+ 'trials:uploadNonDicoms:action:edit': `编辑`,
+ 'trials:uploadNonDicoms:action:delete': `删除`,
+ 'trials:uploadNonDicoms:dialogTitle:upload': `上传`,
+ 'trials:uploadNonDicoms:label:fileType': `仅支持jpg/jpeg/png/bmp 文件`,
+ 'trials:uploadNonDicoms:button:selectFolder': `选择文件夹`,
+ 'trials:uploadNonDicoms:button:select': `选择文件`,
+ 'trials:uploadNonDicoms:dialogTitle:preview': `预览`,
+ 'trials:uploadNonDicoms:dialogTitle:add': `新增`,
+ 'trials:uploadNonDicoms:dialogTitle:edit': `编辑`,
+ 'trials:uploadNonDicoms:message:delete': `是否确认删除?`,
+ 'trials:uploadNonDicoms:message:deleteStudyAndFiles': `该检查已有影像文件,删除检查将删除所有影像文件。若只删除影像文件,请点击 “文件”列数字,在弹出列表中删除选中影像文件。是否继续删除该检查?`,
+ 'trials:uploadNonDicoms:message:deletedSuccessfully': `删除成功!`,
+ 'trials:uploadNonDicoms:message:uploadSize': `上传文件大小不能超过1G`,
+ 'trials:uploadNonDicoms:message:uploadedSuccessfully': `上传成功!`,
+ 'trials:uploadNonDicoms:message:exsitSameFile': `列表中存在同名文件:xxx。`,
+ 'trials:uploadNonDicoms:message:isContinueUpload': `本次上传,将会增加同名文件, 是否继续?`,
+ 'trials:uploadClinicalData:tab:uploadClinicalData': `临床数据采集`,
+ 'trials:uploadClinicalData:title:historyTherapy': `既往局部治疗史`,
+ 'trials:uploadClinicalData:title:pastTreatment': `既往放疗史`,
+ 'trials:uploadClinicalData:table:bodyPart': `放疗部位`,
+ 'trials:uploadClinicalData:table:beginDate': `开始日期`,
+ 'trials:uploadClinicalData:table:endDate': `结束日期`,
+ 'trials:uploadClinicalData:table:isPD': `病灶是否PD`,
+ 'trials:uploadClinicalData:title:pastSurgery': `既往手术史`,
+ 'trials:uploadClinicalData:table:surgeryName': `手术名称`,
+ 'trials:uploadClinicalData:table:surgeryDate': `手术日期`,
+ 'trials:uploadClinicalData:title:others': `既往其他治疗史`,
+ 'trials:uploadClinicalData:table:treatmentType': `治疗类型`,
+ 'trials:uploadClinicalData:table:treatmentbeginDate': `开始日期`,
+ 'trials:uploadClinicalData:table:treatmentendDate': `结束日期`,
+ 'trials:uploadClinicalData:table:fileName': `文件名称`,
+ 'trials:uploadClinicalData:table:uploadedTime': `上传时间`,
+ 'trials:uploadClinicalData:action:preview': `预览`,
+ 'trials:uploadClinicalData:button:selectFile': `选择`,
+ 'trials:uploadClinicalData:button:uploadFile': `上传`,
+ 'trials:uploadClinicalData:message:uploadSuccessfully': `上传成功`,
+ 'trials:uploadClinicalData:title:uploadFile': `上传`,
+ 'trials:uploadClinicalData:button:downloadTemplate': `下载模板`,
+ 'trials:uploadClinicalData:title:table': `表格`,
+ 'components:uploadvideo:message:xf1': `上传成功`,
+ 'components:uploadvideo:message:xf2': `选择的视频不能在浏览器环境播放,请点击转码,等待转码成功之后再进行上传操作`,
+ 'components:uploadvideo:message:xf3': `页面未在安全上下文中,不能进行转码,请联系开发人员配置SSL证书`,
+ 'components:uploadvideo:message:xf4': `nginx未设置同源隔离,不能进行转码,请联系开发人员配置Nginx请求头`,
+ 'components:uploadvideo:message:xf5': `开始转码,请勿关闭窗口或页面`,
+ 'components:uploadvideo:message:xf6': `转码成功`,
+ 'components:uploadvideo:message:xf7': `文件读取成功,请上传`,
+ 'trials:uploadNonDicoms:action:xfuploadvideo': `上传视频文件`,
+ 'trials:uploadNonDicoms:title:xfuploadvideo': `上传视频文件`,
+ 'trials:uploadNonDicoms:title:xflookvideo': `查看视频文件`,
+ 'trials:reuploadDicoms:button:applyReupload': `申请重传`,
+ 'trials:reuploadDicoms:button:reupload': `重传`,
+ 'trials:reuploadDicoms:button:reuploadFinished': `确认重传完成`,
+ 'trials:reuploadDicoms:button:send': `发送`,
+ 'trials:tab:crcQuality': `影像质疑`,
+ 'trials:crcQuestion:table:challengeCode': `质疑编号`,
+ 'trials:crcQuestion:table:siteId': `中心编号`,
+ 'trials:crcQuestion:table:subjectId': `受试者编号`,
+ 'trials:crcQuestion:table:visitName': `访视名称`,
+ 'trials:crcQuestion:table:reuploadSatus': `重传状态`,
+ 'trials:crcQuestion:table:reuploadTime': `重传完成时间`,
+ 'trials:crcQuestion:table:createTime': `创建时间`,
+ 'trials:crcQuestion:table:deadline': `处理截止时限`,
+ 'trials:crcQuestion:table:isOverTime': `是否超限`,
+ 'trials:crcQuestion:table:isClose': `是否关闭`,
+ 'trials:crcQuestion:table:latestMsgTime': `最新回复时间`,
+ 'trials:crcQuestion:table:closedTime': `关闭时间`,
+ 'trials:crcQuestion:table:qCProcessEnum': `审核批次`,
+ 'trials:crcQuestion:action:reply': `回复`,
+ 'trials:crcQuestion:label:isNotClose': `未关闭`,
+ 'trials:crcQuestion:label:isClosed': `已关闭`,
+ 'trials:crcQuestion:dialogTitle:message1': `质疑记录`,
+ 'trials:crcQuestion:button:applyReupload': `申请重传`,
+ 'trials:crcQuestion:button:reupload': `重传`,
+ 'trials:crcQuestion:button:reuploadCompleted': `确认重传完成`,
+ 'trials:crcQuestion:button:send': `发送`,
+ 'trials:crcQuestion:button:close': `关闭`,
+ 'trials:crcQuestion:message:applyReupload': `是否确认申请重传?`,
+ 'trials:crcQuestion:message:applyOrUpload': `CRC申请重传/上传影像`,
+ 'trials:crcQuestion:message:reuploadConfirm': `是否确认重传完成?`,
+ 'trials:crcQuestion:message:reuploadFinished': `CRC已重传完成`,
+ 'trials:crcQuestion:message:replaceTask': `该访视的影像质控任务已经由xxx领取,您是否确认替换?`,
+ 'trials:crcQuestion:message:replaceTaskSuccessfully': `替换成功!`,
+ 'trials:crcQuestion:button:replaceTask': `替换`,
+ 'trials:tab:dicomsQuality': `影像质控`,
+ 'trials:qcCheck:table:isUrgent': `是否加急`,
+ 'trials:qcCheck:table:siteId': `中心编号`,
+ 'trials:qcCheck:table:subjectId': `受试者编号`,
+ 'trials:qcCheck:table:visitName': `访视名称`,
+ 'trials:qcCheck:table:dataCollected': `数据收集`,
+ 'trials:qcCheck:table:eScanDate': `最早拍片日期`,
+ 'trials:qcCheck:table:lScanDate': `最晚拍片日期`,
+ 'trials:qcCheck:table:submitTime': `提交时间`,
+ 'trials:qcCheck:table:auditState': `审核状态`,
+ 'trials:qcCheck:table:crrentUser': `领取人`,
+ 'trials:qcCheck:table:participant': `参与人`,
+ 'trials:qcCheck:table:challengeState': `质疑状态`,
+ 'trials:qcCheck:table:reviewer': `历史审核人`,
+ 'trials:qcCheck:label:preliminary': `初`,
+ 'trials:qcCheck:label:preliminaryAudit': `初审人`,
+ 'trials:qcCheck:label:review': `复`,
+ 'trials:qcCheck:label:reviewAudit': `复审人`,
+ 'trials:qcCheck:button:receive': `领取`,
+ 'trials:qcCheck:button:release': `释放`,
+ 'trials:qcCheck:button:audit': `审核`,
+ 'trials:qcCheck:button:preliminaryAudit': `初审`,
+ 'trials:qcCheck:button:review': `复审`,
+ 'trials:qcCheck:dialogTitle:setUrgent': `设置紧急状态`,
+ 'trials:qcCheck:message:receive': `是否确认领取?`,
+ 'trials:qcCheck:message:release': `是否确认释放?`,
+ 'trials:qcCheck:message:receivedSuccessfully': `领取成功!`,
+ 'trials:qcCheck:message:releasedSuccessfully': `释放成功!`,
+ 'trials:qcCheck:message:isUrgent': `是否确认将当前访视设置为加急?`,
+ 'trials:qcCheck:message:isNotUrgent': `是否确认将当前访视设置为不加急?`,
+ 'trials:qcCheck:message:delete': `是否确认删除?`,
+ 'trials:qcCheck:message:deletedSuccessfully': `删除成功!`,
+ 'trials:qcCheck:tips:remark': `末:末次访视;失:失访;PD:PD确认;入:入组确认`,
+ 'trials:audit:tab:dicoms': `DICOM影像`,
+ 'trials:audit:title:dicoms': `检查信息`,
+ 'trials:audit:tip:visitWindow': `访视窗口期`,
+ 'trials:audit:tip:visitWindowNotSet': `访视基准日期或窗口未设置`,
+ 'trials:audit:button:previewAllDiocms': `预览所有影像`,
+ 'trials:audit:button:previewReadingDiocms': `预览阅片影像`,
+ 'trials:audit:table:studyId': `检查编号`,
+ 'trials:audit:table:modality': `检查类型`,
+ 'trials:audit:table:modality1': `检查设备`,
+ 'trials:audit:table:bodyPart': `检查部位`,
+ 'trials:audit:table:seriesCount': `序列数量`,
+ 'trials:audit:table:instanceCount': `图像数量`,
+ 'trials:audit:table:studyDate': `检查日期`,
+ 'trials:audit:table:studyUploadTime': `上传时间`,
+ 'trials:audit:table:isReading': `是否阅片`,
+ 'trials:audit:table:isDelete': `是否删除`,
+ 'trials:audit:action:preview': `预览`,
+ 'trials:audit:action:edit': `编辑`,
+ 'trials:audit:title:series': `序列信息`,
+ 'trials:audit:table:seriesId': `序列号`,
+ 'trials:audit:table:seriesOfStudyId': `检查编号`,
+ 'trials:audit:table:seriesModality': `检查类型`,
+ 'trials:audit:table:seriesOfInstanceCount': `图像数量`,
+ 'trials:audit:table:seriesOfStudyDate': `检查日期`,
+ 'trials:audit:table:seriesOfUploadedDate': `上传时间`,
+ 'trials:audit:action:seriesPreview': `预览`,
+ 'trials:audit:action:setSeriesNotReading': `设置为不阅片`,
+ 'trials:audit:action:setSeriesReading': `设置为阅片`,
+ 'trials:audit:action:setSeriesDeleted': `设置为删除`,
+ 'trials:audit:action:setSeriesNoDelete': `设置为不删除`,
+ 'trials:audit:message:setSeriesReading': `是否确认更改?`,
+ 'trials:audit:message:setSeriesNotReading': `是否确认更改?`,
+ 'trials:audit:message:setSeriesDeleted': `是否确认更改?`,
+ 'trials:audit:message:setSeriesNoDelete': `是否确认更改?`,
+ 'trials:audit:tab:nonDicoms': `非DICOM影像`,
+ 'trials:audit:title:nonDicomsTitle': `检查信息`,
+ 'trials:audit:tip:nonDicomsVisitWindow': `访视窗口期`,
+ 'trials:audit:tip:nonDicomsPreviewAll': `预览`,
+ 'trials:audit:table:nonDicomsStudyId': `检查编号`,
+ 'trials:audit:table:nonDicomsModality': `检查类型`,
+ 'trials:audit:table:nonDicomsBodypart': `检查部位`,
+ 'trials:audit:table:nonDicomsFileCount': `图像数量`,
+ 'trials:audit:table:nonDicomsFileName': `文件名称`,
+ 'trials:audit:table:nonDicomsStudyDate': `检查日期`,
+ 'trials:audit:table:nonDicomsUpdateTime': `更新时间`,
+ 'trials:audit:button:nonDicomsPreview': `预览`,
+ 'trials:audit:button:nonDicomsEdit': `编辑`,
+ 'trials:audit:tab:clinicalData': `临床数据`,
+ 'trials:audit:title:questions': `审核问题`,
+ 'trials:audit:message:noData': `暂无数据`,
+ 'trials:audit:button:save': `保存`,
+ 'trials:audit:button:question': `发质疑`,
+ 'trials:audit:button:historicalQuestions': `历史质疑`,
+ 'trials:audit:button:auditPassed': `审核通过`,
+ 'trials:audit:button:auditFailed': `审核终止`,
+ 'trials:audit:dialogTitle:question': `发起质疑`,
+ 'trials:audit:form:questionContent': `质疑内容`,
+ 'trials:audit:form:questionDeadline': `处理截止时限`,
+ 'trials:audit:form:questionSummary': `问题总结`,
+ 'trials:audit:form:actionMatters': `行动事项`,
+ 'trials:audit:dialogTitle:historicalQuestions': `历史质疑`,
+ 'trials:audit:button:refreshHistoryQs': `刷新`,
+ 'trials:audit:message:qsContentIsNull': `质疑内容不能为空!`,
+ 'trials:audit:message:qsOverWindow': `超窗`,
+ 'trials:audit:message:qsOverWindow1': `本访视经系统计算窗口期时间段为`,
+ 'trials:audit:message:qsOverWindow2': `而访视图像拍片日期为`,
+ 'trials:audit:message:qsOverWindow3': `影像检查未在窗口期内`,
+ 'trials:audit:message:qsOverWindow4': `请确认本访视是否超窗,如超窗请回复原因`,
+ 'trials:audit:message:sureToUpdate': `是否确认更改?`,
+ 'trials:audit:message:specifyQuestions': `请先核查图像,保存审核问题后,再下审核结论!`,
+ 'trials:audit:message:changeSeriesStatus': `是否确认将此序列状态变更为xxx?`,
+ 'trials:audit:label:setSeriesReading': `阅片`,
+ 'trials:audit:label:setSeriesNotReading': `不阅片`,
+ 'trials:audit:label:setSeriesDeleted': `删除`,
+ 'trials:audit:label:setSeriesNotDelete': `不删除`,
+ 'trials:tab:qcQuality': `QC质疑`,
+ 'trials:qcQuality:table:challengeCode': `质疑编号`,
+ 'trials:qcQuality:table:siteId': `中心编号`,
+ 'trials:qcQuality:table:subjectId': `受试者编号`,
+ 'trials:qcQuality:table:visitName': `访视名称`,
+ 'trials:qcQuality:table:createTime': `创建时间`,
+ 'trials:qcQuality:table:organizer': `创建人`,
+ 'trials:qcQuality:table:latestReplyer': `最新回复人`,
+ 'trials:qcQuality:table:latestReplyTime': `最新回复时间`,
+ 'trials:qcQuality:table:reUploadStatus': `重传状态`,
+ 'trials:qcQuality:table:reUploadTime': `重传完成时间`,
+ 'trials:qcQuality:table:deadline': `处理截止时限`,
+ 'trials:qcQuality:table:qsDuration': `质疑时长`,
+ 'trials:qcQuality:table:isOverTime': `是否超限`,
+ 'trials:qcQuality:table:closingTime': `关闭时间`,
+ 'trials:qcQuality:table:isReupload': `是否重传`,
+ 'trials:qcQuality:table:isClosed': `是否关闭`,
+ 'trials:qcQuality:table:latestMsgTime': `最新消息时间`,
+ 'trials:qcQuality:table:qCProcessEnum': `审核批次`,
+ 'trials:qcQuality:action:reply': `回复`,
+ 'trials:qcQuality:action:close': `关闭`,
+ 'trials:qcQuality:dialogTitle:reply': `质疑记录`,
+ 'trials:qcQuality:dialog:qcContent': `您好,本访视影像及所有数据的问题总结如下:`,
+ 'trials:qcQuality:dialogTips:tip': `说明:为高效解决/处理以上全部质疑问题,麻烦您在准确核实情况后逐条准确完整回复上述行动事项,明确是否可以纠正,如无法纠正请提醒研究者在以后的影像学检查中注意上述问题(如适用)。`,
+ 'trials:qcQuality:dialog:deadline': `处理截止时限`,
+ 'trials:qcQuality:dialog:none': `无`,
+ 'trials:qcQuality:dialogButton:send': `发送`,
+ 'trials:qcQuality:dialogButton:close': `关闭`,
+ 'trials:qcQuality:dialogButton:agreeToReupload': `同意重传`,
+ 'trials:qcQuality:dialogTitle:closeQuestion': `关闭质疑`,
+ 'trials:qcQuality:label:closeReason': `关闭原因`,
+ 'trials:qcQuality:radio:reason1': `问题已解决`,
+ 'trials:qcQuality:radio:reason2': `问题无法解决强制关闭质疑`,
+ 'trials:qcQuality:radio:reason3': `其他`,
+ 'trials:qcQuality:label:otherReason': `其他原因说明`,
+ 'trials:qcQuality:message:problemSolved': `问题已解决`,
+ 'trials:qcQuality:message:problemNotSolved': `问题无法解决强制关闭质疑,已提醒中心下次注意`,
+ 'trials:qcQuality:message:closedSuccessfully': `关闭成功!`,
+ 'trials:qcQuality:message:agreeToReupload': `是否确认同意重传?`,
+ 'trials:qcQuality:label:agreeToReupload': `IQC同意重传`,
+ 'trials:qcQuality:title:closed': `已关闭`,
+ 'trials:qcQuality:title:unClose': `未关闭`,
+ 'trials:qcQuality:title:title1': `请补充检查xxx的检查部位!`,
+ 'trials:qcQuality:title:title2': `是否确认进入下一个质控任务?`,
+ 'trials:qcQuality:title:title3': `当前领取的质控任务已全部完成!`,
+ 'trials:qcQuality:label:passReason': `通过原因`,
+ 'trials:qcQuality:label:closeReason': `关闭原因`,
+ 'trials:tab:consistencyCheck': `一致性核查`,
+ 'trials:consistencyCheck:button:upload': `上传`,
+ 'trials:consistencyCheck:button:download': `下载模板`,
+ 'trials:consistencyCheck:table:isUrgent': `是否加急`,
+ 'trials:consistencyCheck:table:checkChallengeState': `核查质疑状态`,
+ 'trials:consistencyCheck:table:siteId': `中心编号`,
+ 'trials:consistencyCheck:table:subjectId': `受试者编号`,
+ 'trials:consistencyCheck:table:visitName': `访视名称`,
+ 'trials:consistencyCheck:table:auditState': `核查前状态`,
+ 'trials:consistencyCheck:table:requestBackState': `回退状态`,
+ 'trials:consistencyCheck:table:checkTime': `核查时间`,
+ 'trials:consistencyCheck:table:checkPassedTime': `核查通过时间`,
+ 'trials:consistencyCheck:table:checkState': `核查状态`,
+ 'trials:consistencyCheck:table:checkResult': `不一致项`,
+ 'trials:consistencyCheck:table:scanDate': `检查日期`,
+ 'trials:consistencyCheck:table:modality': `检查类型`,
+ 'trials:consistencyCheck:action:reply': `回复`,
+ 'trials:consistencyCheck:action:view': `查看`,
+ 'trials:consistencyCheck:action:applyFallback': `申请回退`,
+ 'trials:consistencyCheck:action:fallback': `回退`,
+ 'trials:consistencyCheck:action:close': `关闭`,
+ 'trials:consistencyCheck:action:pass': `通过`,
+ 'trials:consistencyCheck:dialogTitle:qsContent': `质疑内容`,
+ 'trials:consistencyCheck:label:noData': `暂无数据`,
+ 'trials:consistencyCheck:button:rejectBack': `拒绝回退`,
+ 'trials:consistencyCheck:button:sendMessage': `发送`,
+ 'trials:consistencyCheck:dialogTitle:passManually': `手动通过一次性核查原因`,
+ 'trials:consistencyCheck:dialogTitle:close': `关闭一致性核查原因`,
+ 'trials:consistencyCheck:label:reason': `原因`,
+ 'trials:consistencyCheck:message:pmPerformed': `PM执行了一致性核查回退`,
+ 'trials:consistencyCheck:message:fallbackSuccessfully': `回退成功!`,
+ 'trials:consistencyCheck:message:closedSuccessfully': `关闭成功!`,
+ 'trials:consistencyCheck:message:appledSuccessfully': `申请成功!`,
+ 'trials:consistencyCheck:message:apply': `是否确认申请回退?`,
+ 'trials:consistencyCheck:label:file': `文件`,
+ 'trials:consistencyCheck:message:excelFileOnly': `必须是Excel文件`,
+ 'trials:consistencyCheck:dialogButton:upload': `上传`,
+ 'trials:consistencyCheck:message:xlsx': `必须是xls、xlsx格式`,
+ 'trials:consistencyCheck:message:onlyOneFile': `只允许上传一个文件`,
+ 'trials:consistencyCheck:button:export1': `导出一致性核查表`,
+ 'trials:consistencyCheck:button:export2': `导出一致性核查记录表`,
+ 'trials:consistencyCheck:title:note': `备注:`,
+ 'trials:consistencyCheck:title:reply': `回复`,
+ 'trials:consistencyCheck:title:close': `关闭`,
+ 'trials:consistencyCheck:title:replyConsistency': `回复一致性核查`,
+ 'trials:consistencyCheck:title:message1': `经系统核实`,
+ 'trials:consistencyCheck:title:message2': `该受试者本访视在IRC中已提交的影像检查情况如下,如果下列影像中存在多余影像,请勾选:`,
+ 'trials:consistencyCheck:title:message3': `您确认该访视上传了多余的影像检查,请说明原因。如需要删除影像,请申请回退,谢谢配合!`,
+ 'trials:consistencyCheck:title:message4': `IRC多余影像原因`,
+ 'trials:consistencyCheck:title:message5': `IRC和EDC中不一致的影像检查如下,如果情况属实,请勾选:`,
+ 'trials:consistencyCheck:title:message6': `IRC和EDC中不一致的影像检查如下,如果情况属实,请勾选:无`,
+ 'trials:consistencyCheck:title:message7': `您确认当前访视有遗漏影像检查,请选择原因。如需要补充上传影像,请申请回退,谢谢配合!`,
+ 'trials:consistencyCheck:title:message8': `IRC缺失影像原因`,
+ 'trials:consistencyCheck:title:message9': `EDC按疗效评估数据记录影像检查信息`,
+ 'trials:consistencyCheck:title:message10': `EDC录入错误`,
+ 'trials:consistencyCheck:title:message11': `IRC数据上传错误,申请回退并重新上传`,
+ 'trials:consistencyCheck:title:message12': `经核实,该受试者本访视存在,并且已在IRC系统中已提交的影像检查如下:`,
+ 'trials:consistencyCheck:title:none': `无`,
+ 'trials:consistencyCheck:title:message13': `本访视存在,但是在IRC和EDC中不一致的影像检查如下:`,
+ 'trials:consistencyCheck:title:message14': `本访视存在,但是在IRC和EDC中不一致的影像检查如下:无`,
+ 'trials:consistencyCheck:title:message15': `问题原因如下:`,
+ 'trials:consistencyCheck:title:message16': `1.IRC多余影像原因:`,
+ 'trials:consistencyCheck:title:message17': `请填写IRC多余影像原因!`,
+ 'trials:consistencyCheck:title:message18': `2.IRC缺失影像原因:`,
+ 'trials:consistencyCheck:title:message19': `请选择IRC缺失影像原因!`,
+ 'trials:consistencyCheck:title:message20': `请准确核实后录入当前访视的实际影像检查记录:`,
+ 'trials:consistencyCheck:title:add': `添加`,
+ 'trials:consistencyCheck:title:studyDate': `检查日期`,
+ 'trials:consistencyCheck:title:studyModality': `检查类型`,
+ 'trials:consistencyCheck:title:submitted': `已提交`,
+ 'trials:consistencyCheck:title:existed': `实际存在`,
+ 'trials:consistencyCheck:title:delete': `删除`,
+ 'trials:consistencyCheck:title:title1': `IRC与实际情况影像检查不一致的原因为:`,
+ 'trials:consistencyCheck:title:addStudy': `添加检查`,
+ 'trials:consistencyCheck:title:title2': `请选择检查日期和检查类型`,
+ 'trials:consistencyCheck:title:title3': `确定删除该条检查记录?`,
+ 'trials:consistencyCheck:title:title4': `请录入真实的检查情况`,
+ 'trials:consistencyCheck:title:title5': `经核实,该受试者当前访视的实际影像检查如下:`,
+ 'trials:consistencyCheck:title:title6': `yyyy的xxx影像检查`,
+ 'trials:consistencyCheck:title:title7': `IRC与实际情况不一致影像检查如下`,
+ 'trials:consistencyCheck:title:title8': `IRC多余`,
+ 'trials:consistencyCheck:title:title9': `IRC缺少`,
+ 'trials:consistencyCheck:title:title10': `IRC与实际情况影像检查不一致的原因为:`,
+ 'trials:consistencyCheck:title:title11': `IRC与实际情况影像检查一致`,
+ 'trials:consistencyCheck:dialogTitle:xfpassManually': `一致性核查通过`,
+ 'trials:consistencyCheck:dialogTitle:xfclose': `关闭一致性核查`,
+ 'trials:check:radio:passreason1': `线上质疑解决核查通过`,
+ 'trials:check:radio:passreason2': `线下核查通过`,
+ 'trials:check:radio:passreason3': `实时阅片跳过核查`,
+ 'trials:check:radio:passreason4': `其它`,
+ 'trials:check:radio:closereason1': `问题已解决`,
+ 'trials:check:radio:closereason2': `问题无法解决强制关闭质疑`,
+ 'trials:check:radio:closereason3': `其他`,
+ 'trials:consistencyCheck:label:passreason': `原因`,
+ 'trials:consistencyCheck:label:closereason': `备注`,
+ 'trials:tab:dicomForward': `影像转发`,
+ 'trials:dicomForward:table:siteId': `中心编号`,
+ 'trials:dicomForward:table:subjectId': `受试者编号`,
+ 'trials:dicomForward:tableon:visitName': `访视名称`,
+ 'trials:dicomForward:table:forwardStatus': `转发状态`,
+ 'trials:dicomForward:table:forwardUser': `转发人`,
+ 'trials:dicomForward:table:forwardTime': `转发时间`,
+ 'trials:dicomForward:action:forward': `转发`,
+ 'trials:dicomForward:message:forwardSuccessfully': `转发成功!`,
+ 'trials:dicomForward:message:sureToForward': `是否确认转发?`,
+ 'trials:trials-panel:tab:readingTask': `待阅`,
+ 'trials:trials-panel:tab:readTask': `已阅`,
+ 'trials:trials-panel:tab:medicalFeedback': `医学反馈`,
+ 'trials:trials-panel:tab:rereadTask': `退回历史`,
+ 'trials:trials-panel:tab:mimMedicalAudit': `医学审核`,
+ 'trials:tab:studyList': `检查`,
+ 'trials:studyList:table:studyId': `检查编号`,
+ 'trials:studyList:table:imageType': `图像类型`,
+ 'trials:studyList:table:studyInfo': `检查信息`,
+ 'trials:studyList:table:visit': `访视`,
+ 'trials:studyList:table:subject': `受试者`,
+ 'trials:studyList:table:site': `中心`,
+ 'trials:studyList:table:uploader': `上传人`,
+ 'trials:studyList:table:uploadTime': `上传时间`,
+ 'trials:studyList:button:view': `查看`,
+ 'trials:studyList:table:modality': `检查设备`,
+ 'trials:studyList:table:bodyPart': `检查部位`,
+ 'trials:studyList:table:count': `检查数量`,
+ 'trials:studyList:table:studyDate': `检查日期`,
+ 'trials:studyList:table:seriesNum': `序列编号`,
+ 'trials:studyList:table:description': `描述`,
+ 'trials:studyList:table:sliceThickness': `层厚`,
+ 'trials:studyList:table:instanceCount': `图像数量`,
+ 'trials:studyList:table:fileName': `文件名称`,
+ 'trials:studyList:table:visitName': `访视名称`,
+ 'trials:studyList:table:visitNum': `访视号`,
+ 'trials:studyList:table:siteId': `中心编号`,
+ 'trials:studyList:table:siteName': `中心名称`,
+ 'trials:studyList:label:series': `序列`,
+ 'trials:studyList:dialogTitle:view': `预览`,
+ 'trials:studyList:action:share': `分享`,
+ 'trials:tab:setting': `配置`,
+ 'trials:tab:trialCfg': `项目配置`,
+ 'trials:trialConfig:title:logincCfg': `逻辑配置`,
+ 'trials:logincCfg:form:subjectNumberRule': `受试者编号规则提醒`,
+ 'trials:logincCfg:form:subjectNum2': `受试者第二编号`,
+ 'trials:logincCfg:form:subjectNumFormat': `受试者编号格式`,
+ 'trials:logincCfg:form:scanDateVerify': `扫描日期校验`,
+ 'trials:logincCfg:form:visitBaseDate': `访视基准日期`,
+ 'trials:logincCfg:form:subjectAge': `受试者年龄`,
+ 'trials:logincCfg:form:subjectGender': `受试者性别`,
+ 'trials:logincCfg:form:lastVisitName': `计划外的末次访视名称`,
+ 'trials:logincCfg:form:clinicalInforTransfer': `临床信息传输`,
+ 'trials:logincCfg:form:clinicalConfig': `临床数据配置`,
+ 'trials:logincCfg:form:imageCopy': `影像跨项目复制`,
+ 'trials:logincCfg:form:bodypart': `检查部位`,
+ 'trials:logincCfg:form:modality': `检查技术`,
+ 'trials:logincCfg:form:exceededDays': `影像质疑超限天数`,
+ 'trials:trialCfg:title:processCfg': `流程配置`,
+ 'trials:processCfg:form:qcProcess': `影像质控流程`,
+ 'trials:processCfg:form:conProcess': `一致性核查流程`,
+ 'trials:processCfg:form:readingMode': `阅片方式`,
+ 'trials:processCfg:form:imagePlatform': `阅片平台`,
+ 'trials:processCfg:form:criterion': `阅片标准`,
+ 'trials:processCfg:form:digitPlaces': `修约小数位数`,
+ 'trials:processCfg:form:readingType': `阅片模式`,
+ 'trials:processCfg:form:IsAutoCreate': `自动生成阅片任务`,
+ 'trials:processCfg:form:IsAdditionalAssessment': `存在附加评估`,
+ 'trials:processCfg:form:global': `全局阅片`,
+ 'trials:processCfg:form:ad': `仲裁阅片`,
+ 'trials:processCfg:form:clinical': `肿瘤学阅片`,
+ 'trials:processCfg:form:adRules': `仲裁规则`,
+ 'trials:processCfg:title:criterion': `阅片标准`,
+ 'trials:processCfg:title:criterionName': `阅片标准名称`,
+ 'trials:processCfg:title:clinicalDataCfg': `临床数据配置`,
+ 'trials:processCfg:title:clinicalDataName': `临床数据名称`,
+ 'trials:processCfg:title:uploader': `上传人`,
+ 'trials:processCfg:title:dataLevel': `数据级别`,
+ 'trials:processCfg:title:transferType': `传输方式`,
+ 'trials:processCfg:title:modulesName': `模板名称`,
+ 'trials:processCfg:message:delete': `是否确认删除?`,
+ 'trials:processCfg:message:update': `是否确认更改?`,
+ 'trials:processCfg:title:module': `模板`,
+ 'trials:processCfg:button:select': `选择`,
+ 'trials:processCfg:title:docFormat': `(必须是doc/docx格式)`,
+ 'trials:processCfg:title:onlyOneFile': `只允许上传一个文件`,
+ 'trials:trialCfg:title:urgentCfg': `加急配置`,
+ 'trials:urgentCfg:form:enroll': `入组确认评估`,
+ 'trials:urgentCfg:form:pd': `疾病进展确认评估`,
+ 'trials:urgentCfg:form:trial': `启用项目加急`,
+ 'trials:urgentCfg:form:subject': `启用受试者加急`,
+ 'trials:trialCfg:button:confirm': `配置确认`,
+ 'trials:trialCfg:button:update': `更新`,
+ 'trials:trialCfg:button:updateAndConfirm': `配置更新确认`,
+ 'trials:trialCfg:button:confirmCfg': `确认`,
+ 'trials:trialCfg:dialogTitle:cfgConfirm': `确认`,
+ 'trials:trialCfg:table:cfgItem': `配置项`,
+ 'trials:trialCfg:table:cfgVal': `配置值`,
+ 'trials:trialCfg:table:beforeChange': `更改前`,
+ 'trials:trialCfg:table:updated': `更改后`,
+ 'trials:trialCfg:formRule:bodyPart': `选项请用 ‘|’ 分隔。例如:Chest|Head|Other`,
+ 'trials:trialCfg:formRule:modality': `选项请用 ‘|’ 分隔。例如:CT|MR|CR|PET|Other`,
+ 'trials:tab:siteAndStaff': `人员&中心管理`,
+ 'trials:staff:title:staff': `人员`,
+ 'trials:staff:button:addExternalStaff': `添加外部人员`,
+ 'trials:staff:button:addInternalStaff': `添加内部人员`,
+ 'trials:staff:table:name': `姓名`,
+ 'trials:staff:table:uid': `用户名`,
+ 'trials:staff:table:organization': `单位`,
+ 'trials:staff:table:phone': `电话`,
+ 'trials:staff:table:email': `邮箱`,
+ 'trials:staff:table:userType': `用户类型`,
+ 'trials:staff:table:status': `状态`,
+ 'trials:staff:table:joinTime': `加入日期`,
+ 'trials:staff:table:exitTime': `退出日期`,
+ 'trials:staff:table:authorizationTime': `授权时间`,
+ 'trials:staff:table:disableTime': `禁用时间`,
+ 'trials:staff:action:status': `状态`,
+ 'trials:staff:dialogTitle:add': `添加`,
+ 'trials:staff:dialogTitle:status': `状态`,
+ 'trials:staff:message:addStaff': `是否确认添加?`,
+ 'trials:staff:button:sendEmail': `发邮件`,
+ 'trials:externalStaff:table:lastName': `姓`,
+ 'trials:externalStaff:table:firstName': `名`,
+ 'trials:externalStaff:table:name': `姓名`,
+ 'trials:externalStaff:table:phone': `电话`,
+ 'trials:externalStaff:table:email': `邮箱`,
+ 'trials:externalStaff:table:organization': `单位`,
+ 'trials:externalStaff:table:userType': `用户类型`,
+ 'trials:externalStaff:table:status': `状态`,
+ 'trials:externalStaff:button:delete': `删除`,
+ 'trials:externalStaff:button:saveAndSendEmail': `保存并发邮件`,
+ 'trials:externalStaff:dialogTitle:add': `添加`,
+ 'trials:externalStaff:dialogTitle:edit': `编辑`,
+ 'trials:externalStaff:message:delete': `是否确认删除?`,
+ 'trials:externalStaff:message:add': `是否确认添加?`,
+ 'trials:externalStaff:formRule:phone': `电话无效`,
+ 'trials:externalStaff:formRule:email': `邮箱无效`,
+ 'trials:siteAndStaff:title:site': `中心`,
+ 'trials:sitesList:button:siteResearch': `中心调研`,
+ 'trials:sitesList:button:SeeNextPage': `参见下一页`,
+ 'trials:sitesList:table:siteId': `中心编号`,
+ 'trials:sitesList:table:siteName': `中心名称`,
+ 'trials:sitesList:table:siteAliasName': `中心别名`,
+ 'trials:sitesList:table:city': `城市`,
+ 'trials:sitesList:table:country': `国家`,
+ 'trials:sitesList:table:staff': `参与人员`,
+ 'trials:sitesList:table:status': `是否启用`,
+ 'trials:sitesList:table:timeAdded': `授权时间`,
+ 'trials:sitesList:table:timeDeleted': `禁用时间`,
+ 'trials:sitesList:action:assign': `CRC/CRA`,
+ 'trials:sitesList:dialogTitle:assignSite': `添加中心`,
+ 'trials:sitesList:dialogTitle:assignStaff': `CRC/CRA人员列表(项目:xxx)`,
+ 'trials:sitesList:dialogTitle:editSite': `编辑`,
+ 'trials:sitesList:dialogTitle:staff': `CRC/CRA人员列表(中心:xxx)`,
+ 'trials:sitesList:dialogTitle:editStaffStauts': `编辑`,
+ 'trials:sitesList:message:setSiteId': `请先设置中心编号`,
+ 'trials:sitesList:message:removeSite': `是否确认移除?`,
+ 'trials:sitesList:message:removedSuccessfully': `移除成功!`,
+ 'trials:sitesList:form:keyWord': `关键词`,
+ 'trials:sitesList:formPlaceholder:keyWord': `人员用户名/姓名/邮箱`,
+ 'trials:internalStaff:button:assign': `分配`,
+ 'trials:internalStaff:table:name': `姓名`,
+ 'trials:internalStaff:table:uid': `用户名`,
+ 'trials:internalStaff:table:phone': `电话`,
+ 'trials:internalStaff:table:email': `邮箱`,
+ 'trials:internalStaff:table:organization': `单位`,
+ 'trials:internalStaff:table:userType': `用户类型`,
+ 'trials:internalStaff:table:status': `状态`,
+ 'trials:internalStaff:table:authorizationTime': `授权时间`,
+ 'trials:internalStaff:table:disableTime': `禁用时间`,
+ 'trials:internalStaff:action:status': `状态`,
+ 'trials:internalStaff:message:assign': `是否确认分配?`,
+ 'trials:sitesList:dialogTitle:addSite': `添加中心`,
+ 'trials:sitesList:dialogButton:customSite': `自定义`,
+ 'trials:sitesList:dialogButton:addSite': `添加`,
+ 'trials:customSite:title:custom': `自定义`,
+ 'trials:customSite:form:siteId': `中心编号`,
+ 'trials:customSite:form:siteName': `中心名称`,
+ 'trials:customSite:form:orgCode': `组织机构代码`,
+ 'trials:customSite:form:country': `国家`,
+ 'trials:customSite:form:city': `城市`,
+ 'trials:customSite:form:address': `地址`,
+ 'trials:customSite:form:hospital': `附属医院`,
+ 'trials:customSite:form:director': `负责人`,
+ 'trials:customSite:form:directorPhone': `负责人电话`,
+ 'trials:customSite:form:contactor': `联系人`,
+ 'trials:customSite:form:contactorPhone': `联系人电话`,
+ 'trials:customSite:message:add': `是否确认添加?`,
+ 'trials:tab:visitPlan': `访视管理`,
+ 'trials:visitPlan:button:confirm': `确认`,
+ 'trials:visitPlan:button:adjustRecord': `调整记录`,
+ 'trials:visitPlan:table:visitName': `访视名称`,
+ 'trials:visitPlan:table:isBaseLine': `是否基线`,
+ 'trials:visitPlan:table:blindName': `盲态标识`,
+ 'trials:visitPlan:table:viistNum': `访视号`,
+ 'trials:visitPlan:table:viistDay': `访视间隔(天)`,
+ 'trials:visitPlan:table:window': `窗口`,
+ 'trials:visitPlan:table:isConfirm': `是否确认`,
+ 'trials:visitPlan:table:isDeleted': `是否废除`,
+ 'trials:visitPlan:table:description': `描述`,
+ 'trials:visitPlan:table:createTime': `创建时间`,
+ 'trials:visitPlan:table:day': `天`,
+ 'trials:visitPlan:dialogTitle:record': `调整记录`,
+ 'trials:adjustRecord:table:connfirmor': `确认人`,
+ 'trials:adjustRecord:table:connfirmTime': `确认时间`,
+ 'trials:adjustRecord:table:record': `超窗结论不一致记录`,
+ 'trials:adjustRecord:action:download': `下载`,
+ 'trials:adjustRecord:message:confirm': `是否确认提交?`,
+ 'trials:adjustRecord:formRule:window': `上区间要小于下区间!`,
+ 'trials:visitPlan:button:blindFlag': `盲态标识`,
+ 'trials:visitPlan:button:bsBlindFlag': `基线盲态标识`,
+ 'trials:visitPlan:button:visitBlindFlag': `随访盲态标识前缀`,
+ 'trials:tab:qcCfg': `QC问题配置`,
+ 'trials:qcCfg:button:preview': `预览`,
+ 'trials:qcCfg:button:confirm': `配置确认`,
+ 'trials:qcCfg:button:default': `默认问题`,
+ 'trials:qcCfg:button:custom': `自定义`,
+ 'trials:qcCfg:table:questionName': `审核问题`,
+ 'trials:qcCfg:table:type': `类型`,
+ 'trials:qcCfg:table:typeValue': `选项`,
+ 'trials:qcCfg:table:order': `序号`,
+ 'trials:qcCfg:table:isRequired': `是否必填`,
+ 'trials:qcCfg:table:isEnable': `启用状态`,
+ 'trials:qcCfg:table:parentQs': `父问题`,
+ 'trials:qcCfg:table:parentTriggerValue': `显示触发值`,
+ 'trials:qcCfg:table:level': `级别`,
+ 'trials:qcCfg:message:typeValue': `选项请用‘|’分割多个选项`,
+ 'trials:qcCfg:message:deleteWarning': `该问题下存在子问题,不允许删除!`,
+ 'trials:qcCfg:message:msg1': `选项不允许存在相同值`,
+ 'trials:qcCfg:message:msg2': `请先配置QC审核问题再进行确认!`,
+ 'trials:qcCfg:message:delete': `是否确认删除?`,
+ 'trials:qcCfg:dialogTitle:new': `新增`,
+ 'trials:qcCfg:dialogTitle:edit': `编辑`,
+ 'trials:qcCfg:dialogTitle:custom': `自定义`,
+ 'trials:tab:attachment': `文件管理`,
+ 'trials:attachment:table:fileType': `文件类型`,
+ 'trials:attachment:table:fileName': `文件名称`,
+ 'trials:attachment:table:min': `查看最短时间(分钟)`,
+ 'trials:attachment:table:isDeleted': `是否废除`,
+ 'trials:attachment:table:userType': `需要签署的用户类型`,
+ 'trials:attachment:table:description': `描述`,
+ 'trials:attachment:table:updateTime': `更新时间`,
+ 'trials:attachment:action:preview': `预览`,
+ 'trials:attachment:action:edit': `编辑`,
+ 'trials:attachment:action:apolish': `废除`,
+ 'trials:attachment:dialogTitle:preview': `预览`,
+ 'trials:attachment:message:abolish': `是否确认废除此文件?`,
+ 'trials:attachment:message:delete': `是否确认删除?`,
+ 'trials:attachment:form:file': `文件`,
+ 'trials:attachment:message:pdf': `必须是PDF格式`,
+ 'trials:attachment:message:selectFile': `请选择文件`,
+ 'trials:attachment:message:uploadFile': `只允许上传一个文件`,
+ 'trials:attachment:button:select': `选择`,
+ 'trials:tab:medicalAuditCfg': `医学审核问题配置`,
+ 'trials:medicalAuditCfg:message:message1': `请勾选医学审核问题`,
+ 'trials:tab:readingUnitCfg': `阅片单元配置`,
+ 'trials:readingUnit:button:sync': `同步当前标准`,
+ 'trials:readingUnit:button:confirm': `确认`,
+ 'trials:readingUnit:message:sync': `确定要同步最新标准配置吗?`,
+ 'trials:readingUnit:message:msg1': `系统检测当前阅片标准配置发生更新,是否确认获取最新配置信息?`,
+ 'trials:readingUnit:message:msg2': `xxx区域信息不完整,请完成后确认!`,
+ 'trials:readingUnit:readingRules': `阅片规则`,
+ 'trials:readingUnit:readingRules:title:readingTool': `阅片工具`,
+ 'trials:readingUnit:readingRules:title:isReadingPeriod': `存在阅片期`,
+ 'trials:readingUnit:readingRules:title:readingTaskViewInOrder': `任务展示方式`,
+ 'trials:readingUnit:readingRules:title:readingTaskViewEnum': `任务组织级别`,
+ 'trials:readingUnit:readingRules:title:isReadingShowSubjectInfo': `IR阅片页面是否显示受试者信息`,
+ 'trials:readingUnit:readingRules:title:isReadingShowPreviousResults': `IR阅片页面是否可以查看既往任务结果`,
+ 'trials:readingUnit:readingRules:title:isECRFShowInDicomReading': `eICRF是否显示在影像阅片页面`,
+ 'trials:trials-panel:setting:reading-unit:TrialCriterionAdditionalAssessmentTypeList': `附加评估`,
+ 'trials:readingUnit:readingCriterion': `阅片标准`,
+ 'trials:readingUnit:readingCriterion:title:formQs': `表单问题`,
+ 'trials:readingUnit:qsList:title:type': `题型`,
+ 'trials:readingUnit:qsList:title:qsName': `阅片问题(CN)`,
+ 'trials:readingUnit:qsList:title:qsNameEn': `阅片问题`,
+ 'trials:readingUnit:qsList:title:groupName': `分组(CN)`,
+ 'trials:readingUnit:qsList:title:groupNameEn': `分组`,
+ 'trials:readingUnit:qsList:title:PrecopyValue': `是否复制前值`,
+ 'trials:readingUnit:qsList:title:isRequired': `是否必填`,
+ 'trials:readingUnit:qsList:title:isShow': `是否显示`,
+ 'trials:readingUnit:qsList:title:isJudgeQuestion': `是否裁判问题`,
+ 'trials:readingUnit:qsList:title:isShowInDicom': `是否在阅片页显示`,
+ 'trials:readingUnit:qsList:title:globalReadingShowType': `是否在全局阅片显示`,
+ 'trials:readingUnit:qsList:title:orderMark': `自增序号前缀`,
+ 'trials:readingUnit:qsList:title:maxQuestionCount': `最大行数`,
+ 'trials:readingUnit:qsList:title:isCopyLesions': `随访是否复制`,
+ 'trials:readingUnit:qsList:title:dataSource': `问题数据来源`,
+ 'trials:readingUnit:qsList:title:valueType': `数值类型`,
+ 'trials:readingUnit:qsList:title:digitPlaces': `修约小数位数`,
+ 'trials:readingUnit:qsList:title:unit': `单位`,
+ 'trials:readingUnit:qsList:title:customUnit': `自定义单位`,
+ 'trials:readingUnit:qsList:title:customCalculateMark': `运算类型`,
+ 'trials:readingUnit:qsList:title:order': `序号`,
+ 'trials:readingUnit:qsList:title:tableName': `表格名称`,
+ 'trials:readingUnit:qsList:title:typeValue': `选项`,
+ 'trials:readingUnit:qsList:title:defaultValue': `默认值`,
+ 'trials:readingUnit:qsList:title:parentId': `显示依赖父问题`,
+ 'trials:readingUnit:qsList:title:parentTriggerValueList': `显示触发值`,
+ 'trials:readingUnit:qsList:title:relevanceId': `必填依赖父问题`,
+ 'trials:readingUnit:qsList:title:relevanceValueList': `必填触发值`,
+ 'trials:readingUnit:qsList:title:limitEdit': `限制编辑`,
+ 'trials:readingUnit:qsList:title:imageCount': `最大上传个数`,
+ 'trials:readingUnit:qsList:title:Remark': `注释`,
+ 'trials:readingUnit:qsList:title:FileType': `文件类型`,
+ 'trials:readingUnit:qsList:title:MaxAnswerLength': `最大字符数`,
+ 'trials:readingUnit:qsList:title:DependParentId': `关联问题`,
+ 'trials:readingUnit:qsList:title:DataTableColumn': `关联字段`,
+ 'trials:readingUnit:qsList:title:MaxRowCount': `重复出现最大次数`,
+ 'trials:readingUnit:qsList:message:msg0': `选项不允许存在相同值`,
+ 'trials:readingUnit:qsList:message:msg1': `请选择同级问题!`,
+ 'trials:readingUnit:qsList:message:msg2': `请选择表格问题下的子问题!`,
+ 'trials:readingUnit:qsList:message:msg3': `选项请用‘|’分割多个选项`,
+ 'trials:readingUnit:label:DictionaryCode': `关联字典`,
+ 'trials:readingUnit:label:QuestionGenre': `选项类型`,
+ 'trials:readingUnit:qsList:title:edit': `编辑`,
+ 'trials:readingUnit:qsList:title:view': `查看`,
+ 'trials:readingUnit:qsList:title:tableQs': `表格问题`,
+ 'trials:readingUnit:qsList:title:delete': `删除`,
+ 'trials:readingUnit:qsList:title:add': `添加`,
+ 'trials:readingUnit:qsList:title:ecrfPreview': `eICRF预览`,
+ 'trials:readingUnit:qsList:message:deleteConfirm': `是否确认删除?`,
+ 'trials:readingUnit:qsList:message:deleteSuccessfully': `删除成功!`,
+ 'trials:readingUnit:qsList:message:loading': `加载中`,
+ 'trials:readingUnit:qsList:message:imageFormat': `必须是xxx格式。`,
+ 'trials:readingUnit:readingCriterion:title:baseDataCfg': `基础数据配置`,
+ 'trials:readingUnit:baseDataCfg:title:organ': `器官`,
+ 'trials:readingUnit:baseDataCfg:title:organType': `器官类型`,
+ 'trials:readingUnit:baseDataCfg:title:classification': `分类`,
+ 'trials:readingUnit:baseDataCfg:title:classificationEn': `分类(英文)`,
+ 'trials:readingUnit:baseDataCfg:title:bodyPart': `部位`,
+ 'trials:readingUnit:baseDataCfg:title:bodyPartEn': `部位(英文)`,
+ 'trials:readingUnit:baseDataCfg:title:organ': `器官`,
+ 'trials:readingUnit:baseDataCfg:title:organEn': `器官(英文)`,
+ 'trials:readingUnit:baseDataCfg:title:TULAT': `位置`,
+ 'trials:readingUnit:baseDataCfg:title:TULATEn': `位置(英文)`,
+ 'trials:readingUnit:baseDataCfg:title:isLymphNodes': `是否淋巴结`,
+ 'trials:readingUnit:baseDataCfg:title:isCanEditPosition': `是否可以编辑`,
+ 'trials:readingUnit:baseDataCfg:title:showOrder': `序号`,
+ 'trials:readingUnit:baseDataCfg:title:remark': `备注`,
+ 'trials:readingUnit:baseDataCfg:title:isEnable': `是否显示`,
+ 'trials:readingUnit:baseDataCfg:title:dict': `标准字典`,
+ 'trials:readingUnit:baseDataCfg:title:dictTbl': `字典表名`,
+ 'trials:readingUnit:baseDataCfg:title:dictDesc': `描述`,
+ 'trials:readingUnit:baseDataCfg:title:dictChildCount': `子项数量`,
+ 'trials:readingUnit:baseDataCfg:title:dictOrder': `排序`,
+ 'trials:readingUnit:baseDataCfg:title:dictView': `查看`,
+ 'trials:readingUnit:baseDataCfg:title:dictValCN': `中文值`,
+ 'trials:readingUnit:baseDataCfg:title:dictValEN': `英文值`,
+ 'trials:readingUnit:baseDataCfg:title:dictValDesc': `描述`,
+ 'trials:readingUnit:baseDataCfg:title:dictVal': `标准字典值`,
+ 'trials:readingUnit:baseDataCfg:title:set': `设置`,
+ 'trials:readingUnit:baseDataCfg:button:sync': `同步`,
+ 'trials:readingUnit:baseDataCfg:button:set': `设置`,
+ 'trials:readingUnit:baseDataCfg:message:sync': `同步成功`,
+ 'trials:readingUnit:baseDataCfg:message:updateConfirm': `是否确认更改?`,
+ 'trials:readingUnit:baseDataCfg:message:deleteConfirm': `是否确认删除?`,
+ 'trials:readingUnit:baseDataCfg:message:deleteSuccessfully': `删除成功!`,
+ 'trials:readingUnit:GlobalReading': `全局阅片`,
+ 'trials:readingUnit:globalReading:title:globalAssessTypes': `评估更新类型`,
+ 'trials:readingUnit:globalReading:title:valueCN': `值`,
+ 'trials:readingUnit:globalReading:title:valueEN': `英文值`,
+ 'trials:readingUnit:globalReading:title:isBaseLineUse': `是否基线评估`,
+ 'trials:readingUnit:globalReading:title:isFollowVisitUse': `是否随访评估`,
+ 'trials:readingUnit:adRules': `仲裁规则`,
+ 'trials:adRules:title:arbitrationRule': `仲裁对象`,
+ 'trials:adRules:title:judgeTypeEnum': `产生裁判阅片的条件`,
+ 'trials:adRules:button:addRule': `添加规则`,
+ 'trials:adRules:title:order': `序号`,
+ 'trials:adRules:title:answerGroupA': `阅片人A`,
+ 'trials:adRules:title:answerGroupB': `阅片人B`,
+ 'trials:adRules:title:selectAnswerGroup': `当前选择答案分组:`,
+ 'trials:adRules:title:addGroup': `添加分组`,
+ 'trials:adRules:title:group': `分组:`,
+ 'trials:adRules:title:selectAnswer': `选择答案`,
+ 'trials:adRules:message:msg1': `删除该规则组?`,
+ 'trials:adRules:message:msg2': `请先选择答案A`,
+ 'trials:adRules:message:msg3': `请先选择答案B`,
+ 'trials:adRules:message:msg4': `成功新增答案规则`,
+ 'trials:adRules:message:msg5': `请先选择答案,再添加分组`,
+ 'trials:adRules:message:msg6': `确定重置当前设置的裁判任务生成规则吗?`,
+ 'trials:adRules:message:msg7': `重置成功`,
+ 'trials:adRules:message:msg8': `请先配置规则才能应用`,
+ 'trials:adRules:message:msg9': `应用成功`,
+ 'trials:readingUnit:oncologyReading': `肿瘤学阅片配置`,
+ 'trials:readingUnit:oncologyReading:title:oncologyAssessIdsStr': `评估结果`,
+ 'trials:readingUnit:oncologyReading:title:evaluationReason': `评估原因说明`,
+ 'trials:readingUnit:oncologyReading:title:valueCN': `中文值`,
+ 'trials:readingUnit:oncologyReading:title:valueEN': `英文值`,
+ 'trials:readingUnit:oncologyReading:title:oncologyReading': `肿瘤学阅片`,
+ 'trials:tab:emailManageCfg': `邮件管理`,
+ 'trials:emailManageCfg:title:code': `Code`,
+ 'trials:emailManageCfg:title:businessScenario': `业务场景`,
+ 'trials:emailManageCfg:title:fromName': `发件人`,
+ 'trials:emailManageCfg:title:fromEmail': `发件箱`,
+ 'trials:emailManageCfg:title:SMTPServerAddress': `SMTP服务器`,
+ 'trials:emailManageCfg:title:SMTPServerPort': `SMTP端口`,
+ 'trials:emailManageCfg:title:authorizationCode': `发件箱授权码`,
+ 'trials:emailManageCfg:title:toUserTypeList': `收件人`,
+ 'trials:emailManageCfg:title:copyUserTypeList': `抄送人`,
+ 'trials:emailManageCfg:title:fileName': `附件`,
+ 'trials:emailManageCfg:title:isReturnRequired': `是否需要回执`,
+ 'trials:emailManageCfg:title:isUrgent': `是否加急`,
+ 'trials:emailManageCfg:title:isAutoSend': `是否自动发送`,
+ 'trials:emailManageCfg:title:updateTime': `更新时间`,
+ 'trials:emailManageCfg:title:createTime': `创建时间`,
+ 'trials:emailManageCfg:button:select': `选择`,
+ 'trials:emailManageCfg:message:format': `(必须是word/excel格式)`,
+ 'trials:emailManageCfg:message:onlyOneFile': `最多只允许上传一个文件`,
+ 'trials:emailManageCfg:title:sendEmailCfg': `发件箱配置`,
+ 'trials:emailManageCfg:title:sendEmailAccount': `发件箱账号`,
+ 'trials:emailManageCfg:title:password': `密码/授权码`,
+ 'trials:emailManageCfg:title:emailTpl': `自动邮件模版`,
+ 'trials:emailManageCfg:title:commom': `通用`,
+ 'trials:emailManageCfg:title:criterions': `标准相关`,
+ 'trials:emailManageCfg:button:Default': `邮件模版`,
+ 'trials:emailManageCfg:table:EmailTopicCN': `邮件主题(CN)`,
+ 'trials:emailManageCfg:table:EmailTopic': `邮件主题(EN)`,
+ 'trials:emailManageCfg:table:BusinessScenarioEnum': `业务场景`,
+ 'trials:emailManageCfg:table:ToUserTypeList': `收件人`,
+ 'trials:emailManageCfg:table:CopyUserTypeList': `抄送人`,
+ 'trials:emailManageCfg:table:blackUserIdList': `黑名单`,
+ 'trials:emailManageCfg:table:EmailUrgentEnum': `加急状态`,
+ 'trials:emailManageCfg:table:EmailCron': `发送周期(天)`,
+ 'trials:emailManageCfg:table:IsAutoSend': `是否自动发送`,
+ 'trials:emailManageCfg:table:IsEnable': `是否启用`,
+ 'trials:emailManageCfg:table:CriterionTypeEnum': `阅片标准`,
+ 'trials:emailManageCfg:table:fileListCN': `附件(CN)`,
+ 'trials:emailManageCfg:table:fileListEN': `附件(EN)`,
+ 'trials:emailManageCfg:table:EmailHtmlContentCN': `邮件内容模版(CN)`,
+ 'trials:emailManageCfg:table:EmailHtmlContentEN': `邮件内容模版(EN)`,
+ 'trials:emailManageCfg:table:BusinessLevelEnum': `业务层级`,
+ 'trials:emailManageCfg:table:BusinessModuleEnum': `业务模块`,
+ 'trials:medicalFeedbackCfg:title:taskType': `任务类型`,
+ 'trials:medicalFeedbackCfg:title:criterion': `阅片标准`,
+ 'trials:medicalFeedbackCfg:title:isGeneral': `是否通用`,
+ 'trials:medicalFeedbackCfg:message:msg1': `请先配置医学审核问题再进行确认!`,
+ 'trials:medicalFeedbackCfg:message:msg2': `选项不允许存在相同值`,
+ 'trials:medicalFeedbackCfg:message:msg3': `暂无数据`,
+ 'trials:menuTitle:workbench': `工作台`,
+ 'trials:workbench:label:trialsStats': `项目`,
+ 'trials:workbench:label:attachmentsStats': `已签署文件`,
+ 'trials:workbench:label:pendingTasksStats': `待办任务`,
+ 'trials:workbench:label:messagesStats': `消息`,
+ 'trials:workbench:table:trialId': `项目编号`,
+ 'trials:workbench:table:experimentName': `试验名称`,
+ 'trials:workbench:table:researchNo': `研究方案号`,
+ 'trials:workbench:action:sign': `签署`,
+ 'trials:workbench:title:trialDocBeSigned': `待签署的项目文件`,
+ 'trials:trialDocBeSigned:table:fileCount': `待签署文件数量`,
+ 'trials:workbench:title:pendingSiteResearch': `中心调研`,
+ 'trials:pendingSiteResearch:table:siteCount': `待审批中心数量`,
+ 'trials:pendingSiteResearch:action:audit': `审核`,
+ 'trials:workbench:title:sysDocBeSigned': `待签署的系统文件`,
+ 'trials:sysDocBeSigned:table:fileType': `文件类型`,
+ 'trials:sysDocBeSigned:table:fileName': `文件名称`,
+ 'trials:sysDocBeSigned:table:uploadTime': `上传时间`,
+ 'trials:tab:notice': `通知消息`,
+ 'trials:notice:table:notificationType': `通知类型`,
+ 'trials:notice:table:notificationContent': `通知内容`,
+ 'trials:notice:table:notificationStatus': `通知状态`,
+ 'trials:notice:table:publisher': `发布人`,
+ 'trials:notice:table:releaseTime': `发布时间`,
+ 'trials:notice:table:endTime': `失效时间`,
+ 'trials:notice:table:appendix': `附件`,
+ 'trials:notice:table:isRead': `是否已读`,
+ 'trials:notice:action:detail': `详情`,
+ 'login:title:system': `IRC影像系统`,
+ 'login:form:userName': `用户名`,
+ 'login:form:password': `密码`,
+ 'login:button:login': `登录`,
+ 'login:button:forgetPassword': `忘记密码?`,
+ 'login:formRule:userName': `请输入用户名`,
+ 'login:formRule:password': `请输入密码`,
+ 'login:message:login1': `当前用户为首次登录,请先修改密码之后再次登录!`,
+ 'login:message:login2': `此账户暂未配置菜单权限,请联系管理员处理后再登录!`,
+ 'recompose:title:init': `初始化用户名和密码`,
+ 'recompose:form:userName': `用户名`,
+ 'recompose:form:oldPassword': `旧密码`,
+ 'recompose:form:newPassword': `新密码`,
+ 'recompose:form:confirmPassword': `确认密码`,
+ 'recompose:button:cancel': `取消`,
+ 'recompose:button:save': `保存`,
+ 'recompose:message:warning': `该页面只提供给首次进入系统的用户使用`,
+ 'recompose:message:passwordDiffer': `两次密码不一致`,
+ 'recompose:message:updatedSuccessfully': `修改成功,请重新登录账号`,
+ 'recompose:message:passwordValid': `密码由8-32个字符组成`,
+ 'recompose:form:email': `邮箱`,
+ 'recompose:form:role': `角色`,
+ 'passwordReset:title:reset': `重置密码`,
+ 'passwordReset:form:email': `邮箱`,
+ 'passwordReset:form:verificationCode': `获取验证码`,
+ 'passwordReset:form:userName': `用户名`,
+ 'passwordReset:form:userType': `用户类型`,
+ 'passwordReset:form:password': `新密码`,
+ 'passwordReset:form:confirmPassword': `确认密码`,
+ 'passwordReset:button:send': `发送`,
+ 'passwordReset:button:wait': `等待`,
+ 'passwordReset:button:verify': `校验`,
+ 'passwordReset:button:cancel': `取消`,
+ 'passwordReset:button:submit': `保存`,
+ 'passwordReset:formRule:email': `请输入邮箱`,
+ 'passwordReset:formRule:password': `请输入密码`,
+ 'passwordReset:formRule:confirmPassword': `请再次输入密码`,
+ 'passwordReset:formRule:passwordsDiffer': `两次密码不一致`,
+ 'passwordReset:formRule:passwordinvalid': `邮箱无效`,
+ 'passwordReset:message:updatedSuccessfully': `修改成功!`,
+ 'trials:trials-myinfo:title:avater': `个人头像`,
+ 'trials:trials-myinfo:title:basicInfo': `用户基本信息`,
+ 'trials:trials-myinfo:form:surname': `姓`,
+ 'trials:trials-myinfo:form:givenname': `名`,
+ 'trials:trials-myinfo:form:gender': `性别`,
+ 'trials:trials-myinfo:form:organization': `单位`,
+ 'trials:trials-myinfo:form:department': `部门`,
+ 'trials:trials-myinfo:form:position': `职位`,
+ 'trials:trials-myinfo:button:save': `保存`,
+ 'trials:trials-myinfo:title:accountInfo': `账号信息`,
+ 'trials:trials-myinfo:form:userName': `用户名`,
+ 'trials:trials-myinfo:form:phone': `电话`,
+ 'trials:trials-myinfo:form:email': `邮箱`,
+ 'trials:trials-myinfo:button:update': `修改`,
+ 'trials:trials-myinfo:button:getVCode': `获取验证码`,
+ 'trials:trials-myinfo:button:wait': `等待`,
+ 'trials:trials-myinfo:message:updateSuccessfully': `修改成功!`,
+ 'trials:trials-myinfo:message:sendSuccessfully': `发送成功`,
+ 'trials:trials-myinfo:message:modifyPWSuccessfully': `修改成功,请重新登录账号`,
+ 'trials:trials-myinfo:button:loginout': `退出`,
+ 'trials:trials-myinfo:title:updatePaasord': `修改密码`,
+ 'trials:tab:trials': `我的项目`,
+ 'trials:trials:title:back': `返回`,
+ 'trials:trials:title:backTrialList': `返回项目列表`,
+ 'trials:trials:title:eics': `IRC影像系统`,
+ 'trials:tab:reading': `阅片`,
+ 'trials:tab:pendingReadingTasks': `待阅`,
+ 'trials:pendingReadingTasks:table:subjectCode': `受试者编号`,
+ 'trials:pendingReadingTasks:table:remainingReadingVolume': `剩余阅片量`,
+ 'trials:pendingReadingTasks:table:suggestedCompletionTime': `建议完成时间`,
+ 'trials:pendingReadingTasks:table:remainingTaskVolume': `剩余阅片量`,
+ 'trials:pendingReadingTasks:table:amountOfJudgesRemaining': `剩余裁判量`,
+ 'trials:pendingReadingTasks:table:amountOfCompletedTasks': `已完成任务量`,
+ 'trials:pendingReadingTasks:table:numberOfJudgesCompleted': `已完成裁判量`,
+ 'trials:pendingReadingTasks:button:beginRandomReview': `开始随机阅片`,
+ 'trials:pendingReadingTasks:table:operate': `操作`,
+ 'trials:pendingReadingTasks:button:review': `阅片`,
+ 'trials:pendingReadingTasks:button:ExistReadingApply': `当前受试者存在重阅申请还未处理完毕,不允许进行后续阅片`,
+ 'trials:reading:tabTitle:review': `阅片`,
+ 'trials:reading:tabTitle:report': `报告`,
+ 'trials:reading:dagTitle:msg1': `当前阅片任务存在临床数据,请查看。若已查看,请点击“确认”。`,
+ 'trials:reading:button:confirm': `确认`,
+ 'trials:reading:warnning:msg1': `已开始受试者xxx的阅片任务。`,
+ 'trials:reading:warnning:msg2': `xxx病灶信息未保存,是否要跳转到报告页面!`,
+ 'trials:reading:warnning:msg200': `病灶xxx的信息未保存或未完成,不能提交电子影像病例报告表!`,
+ 'trials:reading:warnning:msg201': `影像质量中有答案未保存,是否确定切换!`,
+ 'trials:reading:title:keySeries': `关键序列`,
+ 'trials:reading:button:download': `下载`,
+ 'trials:reading:button:pause': `暂停`,
+ 'trials:reading:button:marked': `有病灶标记`,
+ 'trials:reading:button:layout': `布局`,
+ 'trials:reading:button:wwwc': `调窗`,
+ 'trials:reading:button:wwwcDefault': `默认值`,
+ 'trials:reading:button:wwwcCustom': `自定义`,
+ 'trials:reading:button:wwwcRegion': `区域窗宽窗位`,
+ 'trials:reading:dagTitle:wwwcCustom': `自定义调窗`,
+ 'trials:reading:title:preset': `W/L 预设`,
+ 'trials:reading:button:reverseColor': `反色`,
+ 'trials:reading:button:zoom': `缩放`,
+ 'trials:reading:button:move': `移动`,
+ 'trials:reading:button:rotate': `旋转`,
+ 'trials:reading:button:rotateDefault': `默认值`,
+ 'trials:reading:button:rotateVertical': `垂直翻转`,
+ 'trials:reading:button:rotateHorizontal': `水平翻转`,
+ 'trials:reading:button:rotateTurnLeft': `左转`,
+ 'trials:reading:button:rotateTurnRight': `右转`,
+ 'trials:reading:button:fitWindow': `适应窗口`,
+ 'trials:reading:button:fitImage': `适应图像`,
+ 'trials:reading:button:imageIndexSync': `滚动同步`,
+ 'trials:reading:button:screenShot': `截屏`,
+ 'trials:reading:button:length': `直径测量`,
+ 'trials:reading:button:bidirectional': `长短径测量`,
+ 'trials:reading:button:arrowAnnotate': `箭头工具`,
+ 'trials:reading:button:rectangle': `矩形工具`,
+ 'trials:reading:button:reset': `重置`,
+ 'trials:reading:button:clinicalData': `临床数据`,
+ 'trials:reading:button:unsaved': `数据未保存!`,
+ 'trials:reading:button:incompleteInfor': `数据不完整`,
+ 'trials:reading:button:split': `分裂`,
+ 'trials:reading:button:customCfg': `个性化配置`,
+ 'trials:reading:tab:hotkeys': `热键`,
+ 'trials:reading:tab:wlTemplate': `W/l模板`,
+ 'trials:reading:tab:others': `其他`,
+ 'trials:reading:label:wlTplName': `名称`,
+ 'trials:reading:label:wlTplWW': `窗宽`,
+ 'trials:reading:label:wlTplWL': `窗位`,
+ 'trials:reading:wlTemplate:delete': `是否确认删除?`,
+ 'trials:reading:label:autoSwitch': `自动切换下一任务不必提醒`,
+ 'trials:reading:button:handbooks': `手册`,
+ 'trials:reading:warnning:unableEvaluate': `请确认是否本访视的所有病灶均无法评估?`,
+ 'trials:reading:warnning:msg3': `病灶xxx的信息未保存。如果执行分裂操作,xxx 的信息将被还原,是否继续?`,
+ 'trials:reading:warnning:msg4': `是否确认分裂?`,
+ 'trials:reading:warnning:msg5': `病灶xxx信息未保存,不允许继续添加。`,
+ 'trials:reading:warnning:msg6': `请使用长短径测量工具进行淋巴结靶病灶的标记。`,
+ 'trials:reading:warnning:msg7': `请使用直径测量工具进行非淋巴结靶病灶的标记。`,
+ 'trials:reading:warnning:msg8': `请使用长短径测量工具或矩形工具进行淋巴结非靶病灶的标记。`,
+ 'trials:reading:warnning:msg9': `请使用直径测量工具或矩形工具进行非淋巴结非靶病灶的标记。`,
+ 'trials:reading:warnning:msg10': `请使用长短径测量工具或箭头工具或矩形工具进行淋巴结靶病灶的标记。`,
+ 'trials:reading:warnning:msg11': `请使用直径测量工具或箭头工具进行非淋巴结靶病灶的标记。`,
+ 'trials:reading:warnning:msg12': `请使用长短径测量工具或箭头工具进行淋巴结新病灶的标记。`,
+ 'trials:reading:warnning:msg13': `请使用直径测量工具或箭头工具进行非淋巴结新病灶的标记。`,
+ 'trials:reading:warnning:msg14': `按照《独立影像评估章程》的相关规则,靶病灶个数最多不能超过xxx个。`,
+ 'trials:reading:button:removeMark': `清除标记`,
+ 'trials:reading:warnning:msg15': `按照《独立影像评估章程》的相关规则,当前病灶不允许设置为靶病灶!`,
+ 'trials:reading:warnning:msg17': `病灶xxx信息未保存,不允许执行此操作。`,
+ 'trials:reading:warnning:msg18': `当前病灶为靶病灶,不允许添加标记!`,
+ 'trials:reading:warnning:msg19': `病灶状态为“存在”的淋巴结靶病灶,短径应不小于15mm,请使用长短径测量工具添加标记。`,
+ 'trials:reading:warnning:msg20': `病灶状态为“存在”的非淋巴结靶病灶,长径应不小于10mm且不小于2倍层厚。请使用直径测量工具添加标记。`,
+ 'trials:reading:warnning:msg21': `病灶状态为“存在”的淋巴结非靶病灶,请使用长短径测量工具或矩形工具添加标记。`,
+ 'trials:reading:warnning:msg22': `病灶状态为“存在”的非淋巴结非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:reading:warnning:msg23': `病灶状态为“存在”的淋巴结靶病灶,短径应不小于10mm,请使用长短径测量工具添加标记。`,
+ 'trials:reading:warnning:msg24': `病灶状态为“存在”的非淋巴结靶病灶,请使用直径测量工具添加标记。`,
+ 'trials:reading:warnning:msg25': `病灶状态为“太小”的淋巴结靶病灶,请使用箭头工具添加标记。`,
+ 'trials:reading:warnning:msg26': `病灶状态为“太小”的非淋巴结靶病灶,请使用箭头工具添加标记。`,
+ 'trials:reading:warnning:msg27': `病灶状态为“无法评估”的淋巴结靶病灶,不需要添加标记。`,
+ 'trials:reading:warnning:msg28': `病灶状态为“无法评估”的非淋巴结靶病灶,不需要添加标记。`,
+ 'trials:reading:warnning:msg29': `病灶状态为“消失”的淋巴结靶病灶,短径应小于10mm,请使用长短径工具添加标记。`,
+ 'trials:reading:warnning:msg30': `病灶状态为“消失”的非淋巴结靶病灶,只能使用箭头工具添加标记。`,
+ 'trials:reading:warnning:msg31': `病灶状态为“存在”的淋巴结非靶病灶,请使用长短径测量工具或矩形工具添加标记。`,
+ 'trials:reading:warnning:msg32': `病灶状态为“存在”的非淋巴结非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:reading:warnning:msg33': `病灶状态为“显著增大”的淋巴结非靶病灶,请使用长短径测量工具或矩形工具添加标记。`,
+ 'trials:reading:warnning:msg34': `病灶状态为“显著增大”的非淋巴结非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:reading:warnning:msg35': `病灶状态为“无法评估”的淋巴结非靶病灶,不需要添加标记。`,
+ 'trials:reading:warnning:msg36': `病灶状态为“无法评估”的非淋巴结非靶病灶,不需要添加标记。`,
+ 'trials:reading:warnning:msg37': `病灶状态为“消失”的淋巴结非靶病灶,请使用箭头工具添加标记。`,
+ 'trials:reading:warnning:msg38': `病灶状态为“消失”的非淋巴结非靶病灶,请使用箭头工具添加标记。`,
+ 'trials:reading:warnning:msg39': `病灶状态为“明确”的淋巴结新病灶,请使用长短径测量工具或箭头工具添加标记。`,
+ 'trials:reading:warnning:msg40': `病灶状态为“明确”的非淋巴结新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:reading:warnning:msg41': `病灶状态为“疑似”的淋巴结新病灶,请使用长短径测量工具或箭头工具添加标记。`,
+ 'trials:reading:warnning:msg42': `病灶状态为“疑似”的非淋巴结新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:reading:warnning:msg43': `病灶状态为“无法评估”的淋巴结新病灶,不需要添加标记。`,
+ 'trials:reading:warnning:msg44': `病灶状态为“无法评估”的非淋巴结新病灶,不需要添加标记。`,
+ 'trials:reading:warnning:msg45': `病灶状态为“消失”的淋巴结新病灶,请使用箭头工具添加标记。`,
+ 'trials:reading:warnning:msg46': `病灶状态为“消失”的非淋巴结新病灶,请使用箭头工具添加标记。`,
+ 'trials:reading:warnning:msg47': `是否确认清除病灶标记?`,
+ 'trials:reading:warnning:msg48': `是否确认删除病灶?`,
+ 'trials:reading:title:lesionType': `病灶类型`,
+ 'trials:reading:warnning:msg49': `当前病灶为新建病灶,尚未保存。如果关闭窗口,将会删除病灶信息。是否继续?`,
+ 'trials:reading:warnning:msg50': `当前病灶信息有更新,未保存,是否继续?`,
+ 'trials:reading:warnning:msg51': `请使用直径测量工具或长短径测量工具或箭头工具进行新病灶的标记。`,
+ 'trials:reading:warnning:msg52': `请使用长短径测量工具或矩形工具或箭头工具进行淋巴结非靶病灶的标记。`,
+ 'trials:reading:warnning:msg53': `请使用直径测量工具或矩形工具或箭头工具进行非淋巴结非靶病灶的标记。`,
+ 'trials:reading:warnning:msg54': `基线病灶不能使用箭头工具标记。`,
+ 'trials:reading:warnning:msg55': `全局阅片调整为:`,
+ 'trials:reading:warnning:msg56': `该影像不具备测量长度所需的必要数据,不能进行长度测量。请选择其他工具进行标注。
+`,
+ 'trials:reading:warnning:msg57': `“xxx”快捷键信息不能为空!`,
+ 'trials:readingPGWC:warnning:msg1': ` 病灶数量范围为1~99`,
+ 'trials:readingPGWC:warnning:msg2': `病灶状态为“存在”的新病灶,请使用箭头工具添加标记
+`,
+ 'trials:readingPGWC:warnning:msg3': `病灶状态为“存在”的既往新病灶,请使用箭头工具添加标记
+`,
+ 'trials:readingPGWC:warnning:msg4': `病灶状态为“良性”的既往新病灶,请使用箭头工具添加标记
+`,
+ 'trials:readingPGWC:warnning:msg5': `病灶状态为“消失”的既往新病灶,请使用箭头工具添加标记
+`,
+ 'trials:readingPGWC:warnning:msg6': `病灶状态为“不可评估”的既往新病灶,不需要添加标记`,
+ 'trials:readingBM:warnning:msg01': `请使用直径测量工具进行靶病灶的标记。`,
+ 'trials:readingBM:warnning:msg02': `请使用直径测量工具或矩形测量工具进行非靶病灶的标记。`,
+ 'trials:readingBM:warnning:msg03': `请使用直径测量工具或箭头工具进行靶病灶的标记。`,
+ 'trials:readingBM:warnning:msg04': `请使用直径测量工具或矩形测量工具或箭头工具进行非靶病灶的标记。`,
+ 'trials:readingBM:warnning:msg05': `请使用直径测量工具或箭头工具进行新病灶的标记。`,
+ 'trials:readingBM:warnning:msg06': `病灶状态为“存在”的靶病灶,长径应不小于10mm且不小于2倍层厚。请使用直径测量工具添加标记。`,
+ 'trials:readingBM:warnning:msg07': `病灶状态为“存在”的非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:readingBM:warnning:msg08': `病灶状态为“存在”的靶病灶,请使用直径测量工具添加标记。`,
+ 'trials:readingBM:warnning:msg09': `病灶状态为“太小”的靶病灶,请使用箭头工具添加标记。`,
+ 'trials:readingBM:warnning:msg10': `病灶状态为“无法评估”的靶病灶,不需要添加标记。`,
+ 'trials:readingBM:warnning:msg11': `病灶状态为“消失”的靶病灶,请使用箭头工具添加标记。`,
+ 'trials:readingBM:warnning:msg12': `病灶状态为“存在”的非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:readingBM:warnning:msg13': `病灶状态为“显著增大”的非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:readingBM:warnning:msg14': `病灶状态为“无法评估”的非靶病灶,不需要添加标记。`,
+ 'trials:readingBM:warnning:msg15': `病灶状态为“消失”的非靶病灶,请使用箭头工具添加标记。`,
+ 'trials:readingBM:warnning:msg16': `病灶状态为“明确”的新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:readingBM:warnning:msg17': `病灶状态为“疑似”的新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:readingBM:warnning:msg18': `病灶状态为“无法评估”的新病灶,不需要添加标记。`,
+ 'trials:readingBM:warnning:msg19': `病灶状态为“消失”的新病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg1': `病灶状态为“存在”的淋巴结新靶病灶,短径应不小于10mm。请使用长短径测量工具添加标记。`,
+ 'trials:iRecist:warnning:msg2': `病灶状态为“存在”的非淋巴结新靶病灶,请使用直径测量工具添加标记。`,
+ 'trials:iRecist:warnning:msg3': `病灶状态为“消失”的淋巴结新靶病灶,短径应小于10mm,请使用长短径工具添加标记。`,
+ 'trials:iRecist:warnning:msg4': `病灶状态为“消失”的非淋巴结新靶病灶,只能使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg5': `病灶状态为“无法评估”的淋巴结新靶病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg6': `病灶状态为“无法评估”的非淋巴结新靶病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg7': `病灶状态为“存在”的淋巴结新非靶病灶,请使用长短径测量工具或矩形工具添加标记。`,
+ 'trials:iRecist:warnning:msg8': `病灶状态为“存在”的非淋巴结新非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:iRecist:warnning:msg9': `病灶状态为“增大”的淋巴结新非靶病灶,请使用长短径测量工具或矩形工具添加标记。`,
+ 'trials:iRecist:warnning:msg10': `病灶状态为“增大”的非淋巴结新非靶病灶,请使用直径测量工具或矩形工具添加标记。`,
+ 'trials:iRecist:warnning:msg11': `病灶状态为“无法评估”的淋巴结新非靶病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg12': `病灶状态为“无法评估”的非淋巴结新非靶病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg13': `病灶状态为“消失”的淋巴结新非靶病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg14': `病灶状态为“消失”的非淋巴结新非靶病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg15': `病灶状态为“明确”的其他既往淋巴结新病灶,请使用长短径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg16': `病灶状态为“明确”的其他既往非淋巴结新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg17': `病灶状态为“疑似”的其他既往淋巴结新病灶,请使用长短径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg18': `病灶状态为“疑似”的其他既往非淋巴结新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg19': `病灶状态为“无法评估”的其他既往淋巴结新病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg20': `病灶状态为“无法评估”的其他既往非淋巴结新病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg21': `病灶状态为“消失”的其他既往淋巴结新病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg22': `病灶状态为“消失”的其他既往非淋巴结新病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg23': `病灶状态为“明确”的触发iRecist后的淋巴结新病灶,请使用长短径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg24': `病灶状态为“明确”的触发iRecist后的非淋巴结新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg25': `病灶状态为“疑似”的触发iRecist后的淋巴结新病灶,请使用长短径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg26': `病灶状态为“疑似”的触发iRecist后的非淋巴结新病灶,请使用直径测量工具或箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg27': `病灶状态为“消失”的触发iRecist后的淋巴结新病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg28': `病灶状态为“消失”的触发iRecist后的非淋巴结新病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg29': `病灶状态为“无法评估”的发iRecist后的淋巴结新病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg30': `病灶状态为“无法评估”的发iRecist后的非淋巴结新病灶,不需要添加标记。`,
+ 'trials:iRecist:warnning:msg31': `病灶状态为“存在”的淋巴结新靶病灶,短径应不小于15mm,请使用长短径测量工具添加标记。`,
+ 'trials:iRecist:warnning:msg32': `病灶状态为“存在”的非淋巴结新靶病灶,长径应不小于10mm且不小于2倍层厚。请使用直径测量工具添加标记。`,
+ 'trials:iRecist:warnning:msg33': `病灶状态为“太小”的淋巴结新靶病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg34': `病灶状态为“太小”的非淋巴结新靶病灶,请使用箭头工具添加标记。`,
+ 'trials:iRecist:warnning:msg35': `请使用长短径测量工具或箭头工具进行淋巴结新靶病灶的标记。`,
+ 'trials:iRecist:warnning:msg36': `请使用直径测量工具或箭头工具进行非淋巴结新靶病灶的标记。`,
+ 'trials:iRecist:warnning:msg37': `请使用长短径测量工具或矩形工具或箭头工具进行淋巴结新非靶病灶的标记。`,
+ 'trials:iRecist:warnning:msg38': `请使用直径测量工具或矩形工具或箭头工具进行非淋巴结新非靶病灶的标记。`,
+ 'trials:iRecist:warnning:msg39': `请使用长短径测量工具或箭头工具进行其它既往淋巴结新病灶的标记。`,
+ 'trials:iRecist:warnning:msg40': `请使用直径测量工具或箭头工具进行其它既往非淋巴结新病灶的标记。`,
+ 'trials:iRecist:warnning:msg41': `请使用长短径测量工具或箭头工具进行触发iRECIST后淋巴结新病灶的标记。`,
+ 'trials:iRecist:warnning:msg42': `请使用直径测量工具或箭头工具进行触发iRECIST后非淋巴结新病灶的标记。`,
+ 'trials:iRecist:warnning:msg44': `提示`,
+ 'trials:iRecist:warnning:msg45': `您确定当前访视的整体评估结果为PD。根据《独立影像评估章程》,该访视进入iRECIST阅片环节。请对新病灶进行重新评估:`,
+ 'trials:iRecist:warnning:msg46': `(1)新病灶可转为:新靶病灶、新非靶病灶、其它既往新病灶。`,
+ 'trials:iRecist:warnning:msg47': `(2)新靶病灶:状态为明确的新病灶才能转换为新靶病灶。新靶病灶的选择规则与RECIST1.1相同;如果当前病灶已有标记,但不符合新靶病灶的要求,请清除标记,重新标注。`,
+ 'trials:iRecist:warnning:msg48': `(3)新非靶病灶:状态为明确的新病灶才能转换为新非靶病灶。新靶病灶的选择规则与RECIST1.1相同。`,
+ 'trials:iRecist:warnning:msg49': `(4)其它既往新病灶:系统会自动将状态为疑似、消失的新病灶,转换为其它既往新病灶,无需修改。`,
+ 'trials:iRecist:warnning:msg50': `评估状态为进一步增大的淋巴结非靶病灶需使用长短径测量工具或矩形工具添加标记!`,
+ 'trials:iRecist:warnning:msg51': `评估状态为进一步增大的非淋巴结非靶病灶需使用直径测量工具或矩形工具添加标记!`,
+ 'trials:globalReview:title:subject': `受试者:`,
+ 'trials:globalReview:title:result': `全局阅片`,
+ 'trials:globalReview:title:clinicalData': `临床数据`,
+ 'trials:globalReview:button:submit': `提交`,
+ 'trials:globalReview:table:visitName': `访视名称`,
+ 'trials:globalReview:table:evaluationRes': `评估结果`,
+ 'trials:globalReview:table:isAgreeEvaluationRes': `是否同意访视整体评估`,
+ 'trials:globalReview:table:adjustedRes': `调整后结果`,
+ 'trials:globalReview:table:view': `查看详情`,
+ 'trials:globalReview:dagTitle:adjust': `调整`,
+ 'trials:globalReview:title:previousRes': `既往全局阅片结果`,
+ 'trials:globalReview:table:globalReading': `全局阅片`,
+ 'trials:globalReview:table:visitRemark': `访视阅片备注`,
+ 'trials:globalReview:table:globalRemark': `备注`,
+ 'trials:globalReview:table:updateType': `评估更新类型`,
+ 'trials:globalReview:message:msg1': `全局阅片未完成,存在评估结果未确认的访视任务。`,
+ 'trials:globalReview:message:msg2': `当前阅片任务已完成,是否进入下一个阅片任务?`,
+ 'trials:hotkeys:title:hotkey': `热键`,
+ 'trials:hotkeys:message:input': `请输入按键`,
+ 'trials:hotkeys:message:confirmReset': `是否确认重置?`,
+ 'trials:hotkeys:message:resetSuccessfully': `重置成功!`,
+ 'trials:hotkeys:message:tip': `提示`,
+ 'trials:hotkeys:message:tip1': `此快捷键已被xxx绑定`,
+ 'trials:reading:pcwg:msg1': `新病灶已到达最大数,无法添加`,
+ 'trials:reading:pcwg:msg2': `基线病灶需使用矩形工具或箭头工具`,
+ 'trials:reading:pcwg:msg3': `xxx个数最多不能超过yyy个`,
+ 'trials:reading:pcwg:msg4': `基线病灶需使用矩形工具或箭头工具`,
+ 'trials:reading:pcwg:msg5': `请使用箭头工具`,
+ 'trials:reading:pcwg:msg6': `基线病灶初始数量为`,
+ 'trials:reading:pcwg:msg7': `请标记病灶`,
+ 'trials:reading:pcwg:msg8': `当前病灶信息有更新,未保存,是否继续?`,
+ 'trials:adReview:title:subject': `受试者:`,
+ 'trials:adReview:title:result': `评估结果`,
+ 'trials:adReview:title:clinicalData': `临床数据`,
+ 'trials:adReview:table:visitName': `访视名称`,
+ 'trials:adReview:table:view': `查看详情`,
+ 'trials:adReview:table:viewR1': `第一阅片人(R1)`,
+ 'trials:adReview:table:viewR2': `第二阅片人(R2)`,
+ 'trials:adReview:title:adResult': `裁判结果`,
+ 'trials:adReview:title:choseReader': `选择更认同的整体评估`,
+ 'trials:adReview:title:adReason': `选择原因`,
+ 'trials:adReview:title:screenShot': `截图说明`,
+ 'trials:adReview:title:adReview': `裁判阅片`,
+ 'trials:adReview:title:msg1': `本人已完整查看两位独立阅片人的全部相关影像和评估数据,经过综合研判,更认同第一阅片人(R1)对该病例的整体评估,原因是:`,
+ 'trials:adReview:title:msg3': `本人已完整查看两位独立阅片人的全部相关影像和评估数据,经过综合研判,更认同第二阅片人(R2)对该病例的整体评估,原因是:`,
+ 'trials:adReview:title:loading': `加载中`,
+ 'trials:adReview:title:previousRes': `既往裁判阅片结果`,
+ 'trials:adReview:table:adReading': `裁判阅片`,
+ 'trials:adReview:table:adResult': `裁判结果`,
+ 'trials:adReview:table:view': `查看详情`,
+ 'trials:adReview:table:visitInfoview': `访视详情`,
+ 'trials:adReview:table:glInfo': `全局详情`,
+ 'trials:adReview:title:msg2': `当前阅片任务已完成,是否进入下一个阅片任务?`,
+ 'trials:adReview:title:msg4': `必须是xxx格式。`,
+ 'trials:readingReport:title:eicrf': `电子影像病例报告表`,
+ 'trials:readingReport:title:expandDetails': `展开详情`,
+ 'trials:readingReport:title:collapseDetails': `折叠详情`,
+ 'trials:readingReport:button:refresh': `刷新`,
+ 'trials:readingReport:button:jump': `(影像点击跳转)`,
+ 'trials:readingReport:title:sysEvaluationRes': `系统评估结果为:`,
+ 'trials:readingReport:message:msg1': `,与当前调整的结果不一致,请填写调整原因`,
+ 'trials:readingReport:title:unknow': `未知`,
+ 'trials:readingReport:message:msg2': `请将疗效评估信息填写完整。`,
+ 'trials:readingReport:message:msg3': `请填写整体评估调整原因。`,
+ 'trials:readingReport:message:msg4': `当前阅片任务已完成,是否进入下一个阅片任务?`,
+ 'trials:readingReport:message:msg5': `阅片页面影像质量评估未保存,是否需要继续提交?`,
+ 'trials:readingReport:message:msg6': `按照《独立影像评估章程》的相关规则,系统建议整体肿瘤评估为
+
+`,
+ 'trials:readingReport:message:msg7': `,但您已修改为
+
+`,
+ 'trials:readingReport:message:msg8': `,请在备注中说明修改原因。`,
+ 'trials:oncologyReview:title:oncologyReview': `肿瘤学阅片`,
+ 'trials:oncologyReview:title:subject': `受试者:`,
+ 'trials:oncologyReview:title:result': `评估结果`,
+ 'trials:oncologyReview:button:clinicalData': `临床数据`,
+ 'trials:oncologyReview:title:visitName': `访视名称`,
+ 'trials:oncologyReview:title:readingRes': `影像学阅片结果`,
+ 'trials:oncologyReview:title:isGlobalUpdate': `全局是否有更新`,
+ 'trials:oncologyReview:title:view': `查看详情`,
+ 'trials:oncologyReview:title:visitRemark': `访视点注释`,
+ 'trials:oncologyReview:title:oReviewRes': `肿瘤学阅片结果`,
+ 'trials:oncologyReview:title:findings': `结论`,
+ 'trials:oncologyReview:title:reason': `原因`,
+ 'trials:oncologyReview:message:msg1': `保存失败,肿瘤学阅片结论不能为空。`,
+ 'trials:oncologyReview:title:previousRes': `既往肿瘤学阅片结果`,
+ 'trials:oncologyReview:title:msg2': `当前阅片任务已完成,是否进入下一个阅片任务?`,
+ 'trials:clinicaldara:title:currentTask': `当前任务`,
+ 'trials:clinicaldara:title:nodata': `暂无数据`,
+ 'trials:clinicaldara:title:relatedTask': `关联任务`,
+ 'trials:tab:title:readTask': `已阅`,
+ 'trials:readTask:table:isUrgent': `是否加急`,
+ 'trials:readTask:table:siteCode': `中心编号`,
+ 'trials:readTask:table:taskCode': `任务编号`,
+ 'trials:readTask:table:subjectCode': `受试者编号`,
+ 'trials:readTask:table:blindName': `盲态任务标识`,
+ 'trials:readTask:table:criterionName': `阅片标准`,
+ 'trials:readTask:table:taskState': `任务状态`,
+ 'trials:readTask:table:readingCategory': `任务类型`,
+ 'trials:readTask:table:allocateTime': `分配时间`,
+ 'trials:readTask:table:signTime': `签名时间`,
+ 'trials:readTask:table:reReadingApplyState': `申请状态`,
+ 'trials:readTask:table:readingTaskState': `阅片状态`,
+ 'trials:readTask:table:optType': `生效后影响`,
+ 'trials:readTask:table:reader': `独立阅片人`,
+ 'trials:readTask:button:view': `查看`,
+ 'trials:readTask:button:apply': `申请重阅`,
+ 'trials:readTask:button:backward': `退回重阅历史`,
+ 'trials:readTask:dagTitle:apply': `申请重阅`,
+ 'trials:readTask:title:applyReason': `申请原因`,
+ 'trials:readTask:option:errorRecords': `阅片记录错误`,
+ 'trials:readTask:option:other': `其他`,
+ 'trials:readTask:title:remark': `备注`,
+ 'trials:readTask:title:copyForm': `是否复制访视阅片表单`,
+ 'trials:readTask:title:influenceList': `影响的任务列表`,
+ 'trials:readTask:message:msg1': `提交重阅申请成功,请知悉。`,
+ 'trials:readTask:button:reread': `重阅`,
+ 'trials:readTask:message:msg2': `是否确认重阅?`,
+ 'trials:readTask:message:msg3': `重阅执行成功!`,
+ 'trials:tab:title:medicalFeedback': `医学反馈`,
+ 'trials:medicalFeedback:table:isUrgent': `是否加急`,
+ 'trials:medicalFeedback:table:subjectCode': `受试者编号`,
+ 'trials:medicalFeedback:table:siteCode': `中心编号`,
+ 'trials:medicalFeedback:table:taskName': `任务名称`,
+ 'trials:medicalFeedback:table:taskBlindName': `盲态任务标识`,
+ 'trials:medicalFeedback:table:armEnum': `阅片角色`,
+ 'trials:medicalFeedback:table:reader': `独立阅片人`,
+ 'trials:medicalFeedback:table:criterionName': `阅片标准`,
+ 'trials:medicalFeedback:table:readingCategory': `任务类型`,
+ 'trials:medicalFeedback:table:taskState': `阅片任务状态`,
+ 'trials:medicalFeedback:table:auditState': `审核状态`,
+ 'trials:medicalFeedback:table:signTime': `阅片签名时间`,
+ 'trials:medicalFeedback:table:allocateTime': `审核分配时间`,
+ 'trials:medicalFeedback:table:firstReplyTime': `首次质询时间`,
+ 'trials:medicalFeedback:table:lastReplyTime': `最近回复时间`,
+ 'trials:medicalFeedback:table:isInvalid': `任务状态`,
+ 'trials:medicalFeedback:table:auditSignTime': `审核签名时间`,
+ 'trials:medicalFeedback:table:auditAdvice': `医学审核建议`,
+ 'trials:medicalFeedback:table:doctorUserIdea': `阅片人是否认同`,
+ 'trials:medicalFeedback:table:view': `查看`,
+ 'trials:medicalFeedback:table:reply': `回复`,
+ 'trials:medicalFeedback:title:mfDetail': `医学审核详情`,
+ 'trials:medicalFeedback:title:qaRecord': `质询记录`,
+ 'trials:medicalFeedback:table:visitPointCount': `访视点计数`,
+ 'trials:medicalFeedback:table:unKnow': `未知`,
+ 'trials:medicalFeedback:table:agreeToVisitPointCount': `是否同意访视点计数`,
+ 'trials:medicalFeedback:table:assessmentResults': `评估结果`,
+ 'trials:medicalFeedback:message:msg1': `您好,根据医学审核反馈,该阅片任务的评估有如下问题需要您确认或澄清:`,
+ 'trials:medicalFeedback:message:msg2': `本次医学审核相关截图(如适用)如下:`,
+ 'trials:medicalFeedback:message:msg3': ` 根据本项目《独立影像评估章程》的相关约定,该类问题医学审核建议为:`,
+ 'trials:medicalFeedback:message:msg4': `为高效解决/处理以上全部医学反馈问题,麻烦您在对该阅片任务的评估准确复核后,明确是否认可医学反馈问题及结论。如不认可医学反馈,请逐条准确完整回复不认可的原因,非常感谢。`,
+ 'trials:medicalFeedback:title:isEndorse': `是否认可医学反馈:`,
+ 'trials:medicalFeedback:title:isRequestReread': `是否申请重阅:`,
+ 'trials:medicalFeedback:message:msg5': `本次医学审核相关截图(如适用)如下:`,
+ 'trials:medicalFeedback:message:loading': `加载中`,
+ 'trials:medicalFeedback:title:feedback': `反馈`,
+ 'trials:medicalFeedback:form:isEndorse': `是否认可医学反馈`,
+ 'trials:medicalFeedback:form:isRequestReread': `是否申请重阅`,
+ 'trials:medicalFeedback:form:applyReason': `申请原因`,
+ 'trials:medicalFeedback:form:errorRecords': `阅片记录错误`,
+ 'trials:medicalFeedback:form:other': `其他`,
+ 'trials:medicalFeedback:form:remark': `备注`,
+ 'trials:medicalFeedback:form:isCopyForm': `是否复制访视阅片表单`,
+ 'trials:medicalFeedback:form:isCopyForm2': `是否复制后续访视表单`,
+ 'trials:medicalFeedback:form:screenShot': `相关截图`,
+ 'trials:medicalFeedback:button:send': `发送`,
+ 'trials:medicalFeedback:message:format': `必须是xxx格式。`,
+ 'trials:medicalFeedback:title:result': `评估结果`,
+ 'trials:medicalFeedback:button:audit': `审核`,
+ 'trials:medicalFeedback:title:conclusion': `结论`,
+ 'trials:medicalFeedback:title:reason': `原因:`,
+ 'trials:medicalFeedback:title:isGlobalChange': `有无更新`,
+ 'trials:medicalFeedback:title:currentReader': `当前阅片人`,
+ 'trials:medicalFeedback:title:otherReader': `关联阅片人`,
+ 'trials:medicalFeedback:title:auditQuestions': `审核问题`,
+ 'trials:medicalFeedback:title:conclusions': `结论`,
+ 'trials:medicalFeedback:button:saveAndSend': `保存并发送`,
+ 'trials:medicalFeedback:button:viewQuestions': `查看质询`,
+ 'trials:medicalFeedback:button:reply': `回复`,
+ 'trials:medicalFeedback:button:close': `关闭`,
+ 'trials:medicalFeedback:button:isQuestions': `是否有问题`,
+ 'trials:medicalFeedback:title:qcQuestions': `质询问题`,
+ 'trials:medicalFeedback:title:auditAdviceEnum': `审核建议`,
+ 'trials:medicalFeedback:title:closeQc': `关闭质疑`,
+ 'trials:medicalFeedback:button:auditCompleted': `审核完成`,
+ 'trials:medicalFeedback:button:nextTask': `下一任务`,
+ 'trials:medicalFeedback:message:closeQC': `医学审核未完成,请先关闭医学质询。`,
+ 'trials:medicalFeedback:form:influenceList': `重阅影响任务列表`,
+ 'trials:medicalFeedback:message:confirmTemplate': `请先确认医学审核问题模板配置!`,
+ 'trials:medicalFeedback:label:closeReasonEnum': `关闭原因`,
+ 'trials:medicalFeedback:title:closeReasonEnum': `关闭原因:`,
+ 'trials:medicalFeedback:label:closereasonRemarks': `备注`,
+ 'trials:medicalFeedback:title:closereasonRemarks': `备注:`,
+ 'trials:medicalFeedback:title:relatedGlobalTask': `关联全局任务`,
+ 'trials:medicalFeedback:title:relatedadjudicationTask': `关联裁判任务`,
+ 'trials:medicalFeedback:message:goNextTask01': `当前医学审核任务已完成,是否进入下一个医学审核任务?`,
+ 'trials:medicalFeedback:message:goNextTask02': `是否确认进入下一个医学审核任务?`,
+ 'trials:medicalFeedback:message:goNextTask03': `当前医学审核任务未完成,是否确认进入下一个医学审核任务?`,
+ 'trials:tab:title:rereadTask': `退回历史`,
+ 'trials:rereadTask:table:isUrgent': `是否加急`,
+ 'trials:rereadTask:table:taskCode': `任务编号`,
+ 'trials:rereadTask:table:siteCode': `中心编号`,
+ 'trials:rereadTask:table:subjectCode': `受试者编号`,
+ 'trials:rereadTask:table:taskBlindName': `盲态任务标识`,
+ 'trials:rereadTask:table:criterionName': `阅片标准`,
+ 'trials:rereadTask:table:taskState': `任务状态`,
+ 'trials:rereadTask:table:readingCategory': `任务类型`,
+ 'trials:rereadTask:table:signTime': `完成阅片时间`,
+ 'trials:rereadTask:table:requestReReadingType': `申请类型`,
+ 'trials:rereadTask:table:requestReReadingTime': `申请时间`,
+ 'trials:rereadTask:table:requestReReadingReason': `申请原因`,
+ 'trials:rereadTask:table:requestReReadingResultEnum': `审批结果`,
+ 'trials:rereadTask:table:reReadingNewTaskCode': `新任务编号`,
+ 'trials:tab:reviewAssign': `阅片任务分配`,
+ 'trials:reviewAssign:searchForm:reader': `阅片人`,
+ 'trials:reviewAssign:button:assignRules': `分配规则`,
+ 'trials:reviewAssign:button:manualAllocation': `手动分配`,
+ 'trials:reviewAssign:button:visitReadingTasks': `访视/全局/肿瘤学阅片任务`,
+ 'trials:reviewAssign:button:adReadingTasks': `裁判阅片任务`,
+ 'trials:reviewAssign:table:siteCode': `中心编号`,
+ 'trials:reviewAssign:table:subjectCode': `受试者编号`,
+ 'trials:reviewAssign:table:visit': `访视`,
+ 'trials:reviewAssign:table:global': `全局`,
+ 'trials:reviewAssign:table:ad': `裁判`,
+ 'trials:reviewAssign:table:oncology': `肿瘤学阅片`,
+ 'trials:reviewAssign:table:r1': `阅片人1(R1)`,
+ 'trials:reviewAssign:table:r2': `阅片人1(R2)`,
+ 'trials:reviewAssign:table:ad': `裁判(AD)`,
+ 'trials:reviewAssign:table:o1': `肿瘤阅片人(O1)`,
+ 'trials:reviewAssign:tableAction:manualAssignment': `手动分配`,
+ 'trials:reviewAssign:tableAction:clearReaders': `清除阅片人`,
+ 'trials:reviewAssign:tableAction:viewHistory': `查看取消历史`,
+ 'trials:trials-panel:taskAllocation': `访视任务分配`,
+ 'trials:trials-panel:reading': `阅片`,
+ 'trials:trials-panel:refereeAllocation': `裁判任务分配`,
+ 'trials:reviewAssign:dialog:allocationRules': `分配规则`,
+ 'trials:reviewAssign:allocationRules:title:readersList': `阅片人列表`,
+ 'trials:reviewAssign:allocationRules:table:reader': `阅片人`,
+ 'trials:reviewAssign:allocationRules:table:plannedCount': `计划受试者数量`,
+ 'trials:reviewAssign:allocationRules:table:readingType': `阅片类型`,
+ 'trials:reviewAssign:allocationRules:table:status': `状态`,
+ 'trials:reviewAssign:allocationRules:table:remark': `备注`,
+ 'trials:reviewAssign:allocationRules:title:subsequentAllocationRules': `后续分配规则`,
+ 'trials:reviewAssign:allocationRules:message1': `同一病例随访阅片任务自动分配(在拟分配的阅片人未标记为退出项目状态时)默认状态`,
+ 'trials:reviewAssign:allocationRules:message2': `同一病例随访阅片任务自动分配(在拟分配的阅片人未标记为退出项目状态时)默认状态`,
+ 'trials:reviewAssign:allocationRules:message3': `同一病例全局任务自动分配(在拟分配的阅片人未标记为退出项目状态时 默认状态)`,
+ 'trials:reviewAssign:allocationRules:message4': `同一病例第二次裁判任务自动分配(在拟分配的阅片人未标记为退出项目状态时)默认状态`,
+ 'trials:reviewAssign:allocationRules:edit': `编辑`,
+ 'trials:reviewAssign:allocationRules:add': `新增`,
+ 'trials:reviewAssign:dialog:assignReader': `分配阅片人`,
+ 'trials:reviewAssign:assignReader:title:readingModel': `当前项目阅片模式为:`,
+ 'trials:reviewAssign:assignReader:title:r1': `阅片人1(R1):`,
+ 'trials:reviewAssign:assignReader:title:r2': `阅片人2(R2):`,
+ 'trials:reviewAssign:assignReader:title:ad': `裁判(AD):`,
+ 'trials:reviewAssign:assignReader:title:o1': `肿瘤阅片人(O1):`,
+ 'trials:reviewAssign:assignReader:table:reader': `阅片人`,
+ 'trials:reviewAssign:assignReader:table:plannedSubjectCount': `计划受试者数量`,
+ 'trials:reviewAssign:assignReader:table:assignedSubjectCount': `已分配受试者数量`,
+ 'trials:reviewAssign:assignReader:table:readingType': `阅片类型`,
+ 'trials:reviewAssign:assignReader:table:pengdingTaskCount': `待处理任务量(全平台)`,
+ 'trials:reviewAssign:assignReader:table:pengdingTrialsTaskCount': `待处理任务量(项目)`,
+ 'trials:reviewAssign:assignReader:table:averageReadingTime': `访视平均阅片时间(去除离群值后的)`,
+ 'trials:reviewAssign:assignReader:table:status': `状态`,
+ 'trials:reviewAssign:assignReader:table:remark': `备注`,
+ 'trials:reviewAssign:dialog:clearReader': `清除阅片人`,
+ 'trials:reviewAssign:clearReader:title:clearAll': `清空全部未读阅片人`,
+ 'trials:reviewAssign:clearReader:title:r1': `阅片人1(R1):`,
+ 'trials:reviewAssign:clearReader:title:r2': `阅片人2(R2):`,
+ 'trials:reviewAssign:clearReader:title:ad': `裁判(AD):`,
+ 'trials:reviewAssign:clearReader:title:O1': `肿瘤阅片人(O1):`,
+ 'trials:reviewAssign:clearReader:title:msg1': `如果分配的阅片人已开始读片则不能清空`,
+ 'trials:reviewAssign:clearReader:title:reason': `原因`,
+ 'trials:reviewAssign:clearReader:title:cancelReader': `取消阅片人`,
+ 'trials:reviewAssign:clearReader:title:msg2': `已全部清空,请点击保存应用`,
+ 'trials:reviewAssign:clearReader:title:msg3': `没有可清空的阅片人`,
+ 'trials:reviewAssign:dialog:cancelHistory': `取消历史`,
+ 'trials:reviewAssign:cancelHistory:table:cancelTime': `取消时间`,
+ 'trials:reviewAssign:cancelHistory:table:cancelReason': `原因`,
+ 'trials:reviewAssign:message:message01': `是否确定分配?`,
+ 'trials:reviewAssign:message:message02': `是否确定取消分配?`,
+ 'trials:reviewAssign:message:message03': `生效成功!`,
+ 'trials:reviewAssign:message:message04': `该项目没有有效阅片人!`,
+ 'trials:reviewAssign:message:message05': `确定执行自动分配?`,
+ 'trials:reviewAssign:message:message06': `自动分配成功!`,
+ 'trials:reviewAssign:message:message07': `请选择阅片人`,
+ 'trials:reviewAssign:message:message08': `当前阅片模式为xxx,请选择正确阅片人数量`,
+ 'trials:reviewAssign:message:message09': `分配成功!`,
+ 'trials:reviewAssign:message:message10': `请勾选要分配的受试者!`,
+ 'trials:reviewAssign:message:message11': `确定要删除xxx的任务分配规则?`,
+ 'trials:reviewAssign:readingTask:table:isUrgent': `是否加急`,
+ 'trials:reviewAssign:readingTask:table:taskCode': `任务编号`,
+ 'trials:reviewAssign:readingTask:table:siteCode': `中心编号`,
+ 'trials:reviewAssign:readingTask:table:subjectCode': `受试者编号`,
+ 'trials:reviewAssign:readingTask:table:visitName': `访视/阅片期名称`,
+ 'trials:reviewAssign:readingTask:table:blindName': `盲态任务标识`,
+ 'trials:reviewAssign:readingTask:table:createTime': `任务创建时间`,
+ 'trials:reviewAssign:readingTask:table:taskStatus': `任务状态`,
+ 'trials:reviewAssign:readingTask:table:taskType': `任务类型`,
+ 'trials:reviewAssign:readingTask:table:assignStatus': `分配状态`,
+ 'trials:reviewAssign:readingTask:table:role': `角色`,
+ 'trials:reviewAssign:readingTask:table:reader': `阅片人`,
+ 'trials:reviewAssign:readingTask:table:criterionName': `阅片标准`,
+ 'trials:reviewAssign:readingTask:table:assignTime': `分配时间`,
+ 'trials:reviewAssign:readingTask:table:adReader': `裁判阅片人`,
+ 'trials:reviewAssign:readingTask:table:historyReader': `历史阅片人`,
+ 'trials:tab:reviewTrack': `阅片跟踪`,
+ 'trials:reviewTrack:table:isUrgent': `是否加急`,
+ 'trials:reviewTrack:table:taskCode': `任务编号`,
+ 'trials:reviewTrack:table:siteCode': `中心编号`,
+ 'trials:reviewTrack:table:subjectCode': `受试者编号`,
+ 'trials:reviewTrack:table:taskName': `任务名称`,
+ 'trials:reviewTrack:table:blindName': `盲态任务标识`,
+ 'trials:reviewTrack:table:completeClinicalDataEnum': `临床数据是否完备`,
+ 'trials:reviewTrack:table:createTime': `任务创建时间`,
+ 'trials:reviewTrack:table:taskStatus': `任务状态`,
+ 'trials:reviewTrack:table:taskType': `任务类型`,
+ 'trials:reviewTrack:table:role': `角色`,
+ 'trials:reviewTrack:table:reader': `阅片人`,
+ 'trials:reviewTrack:table:criterionName': `阅片标准`,
+ 'trials:reviewTrack:table:assignTime': `分配时间`,
+ 'trials:reviewTrack:table:suggesteFinishedTime': `建议完成时间`,
+ 'trials:reviewTrack:table:readingStatus': `阅片状态`,
+ 'trials:reviewTrack:table:signTime': `阅片完成时间`,
+ 'trials:reviewTrack:table:applyStatus': `申请状态`,
+ 'trials:reviewTrack:action:viewResults': `查看阅片结果`,
+ 'trials:reviewTrack:action:applyReread': `申请重阅`,
+ 'trials:reviewTrack:action:backToRereadHistory': `退回重阅历史`,
+ 'trials:reviewTrack:action:back': `退回`,
+ 'trials:reviewTrack:action:backToTaskList': `退回已影响任务列表`,
+ 'trials:reviewTrack:dialog:applyReread': `申请重阅`,
+ 'trials:reviewTrack:applyReread:title:applyReason': `申请原因`,
+ 'trials:reviewTrack:applyReread:title:ImageRetransfer': `图像重传`,
+ 'trials:reviewTrack:applyReread:title:other': `其他`,
+ 'trials:reviewTrack:applyReread:title:remark': `备注`,
+ 'trials:reviewTrack:applyReread:title:influencesList': `影响的任务列表`,
+ 'trials:reviewTrack:applyReread:title:postEffectiveImpacts': `生效后影响`,
+ 'trials:reviewTrack:applyReread:title:msg1': ` 注意!列表中存在IR已申请重阅的任务!`,
+ 'trials:reviewTrack:dialog:backImpactList': `退回影响任务列表`,
+ 'trials:reviewTrack:dialog:impactList': `已影响任务列表`,
+ 'trials:reviewTrack:impactList:save': `确定`,
+ 'trials:reviewTrack:message:returnedSuccessfully': `退回成功`,
+ 'trials:reviewTrack:message:ImageRetransfer': `图像重传`,
+ 'trials:reviewTrack:message:applyedSuccessfully': `申请重阅成功`,
+ 'trials:reviewTrack:message:urgentReason': `加急原因`,
+ 'trials:reviewTrack:message:urgentReasonNote': `备注`,
+ 'trials:reviewTrack:button:export': `导出`,
+ 'trials:reviewTrack:title:fileName': `文件名称`,
+ 'trials:reviewTrack:title:download': `下载`,
+ 'trials:tab:rereadTrack': `重阅跟踪`,
+ 'trials:rereadTrack:table:isUrgent': `是否加急`,
+ 'trials:rereadTrack:table:taskCode': `任务编号`,
+ 'trials:rereadTrack:table:siteCode': `中心编号`,
+ 'trials:rereadTrack:table:subjectCode': `受试者编号`,
+ 'trials:rereadTrack:table:taskName': `任务名称`,
+ 'trials:rereadTrack:table:blindName': `盲态任务标识`,
+ 'trials:rereadTrack:table:createTime': `任务创建时间`,
+ 'trials:rereadTrack:table:taskStatus': `任务状态`,
+ 'trials:rereadTrack:table:taskType': `任务类型`,
+ 'trials:rereadTrack:table:role': `角色`,
+ 'trials:rereadTrack:table:reader': `阅片人`,
+ 'trials:rereadTrack:table:criterionName': `阅片标准`,
+ 'trials:rereadTrack:table:signTime': `阅片完成时间`,
+ 'trials:rereadTrack:table:applyType': `申请类型`,
+ 'trials:rereadTrack:table:applyTime': `申请时间`,
+ 'trials:rereadTrack:table:applyReason': `申请原因`,
+ 'trials:rereadTrack:table:approvalResult': `审批结果`,
+ 'trials:rereadTrack:table:newTaskCode': `新任务编号`,
+ 'trials:rereadTrack:table:agree': `同意`,
+ 'trials:rereadTrack:table:reject': `拒绝`,
+ 'trials:rereadTrack:table:influenceTaskList': `已影响任务列表`,
+ 'trials:rereadTrack:table:ReReadingApplyState': `申请状态`,
+ 'trials:rereadTrack:dialog:reject': `驳回`,
+ 'trials:rereadTrack:reject:title:reason': `驳回原因`,
+ 'trials:rereadTrack:message:msg1': `确定要申请重阅?`,
+ 'trials:rereadTrack:message:msg2': `申请重阅成功!`,
+ 'trials:rereadTrack:message:msg3': `同意申请成功!`,
+ 'trials:rereadTrack:message:msg4': `拒绝申请成功!`,
+ 'trials:tab:pmMedicalReview': `医学审核`,
+ 'trials:pmMedicalReview:table:isUrgent': `是否加急`,
+ 'trials:pmMedicalReview:table:taskCode': `任务编号`,
+ 'trials:pmMedicalReview:table:siteCode': `中心编号`,
+ 'trials:pmMedicalReview:table:subjectCode': `受试者编号`,
+ 'trials:pmMedicalReview:table:taskName': `任务名称`,
+ 'trials:pmMedicalReview:table:blindName': `盲态任务标识`,
+ 'trials:pmMedicalReview:table:taskType': `任务类型`,
+ 'trials:pmMedicalReview:table:taskState': `阅片任务状态`,
+ 'trials:pmMedicalReview:table:role': `角色`,
+ 'trials:pmMedicalReview:table:reader': `阅片人`,
+ 'trials:pmMedicalReview:table:criterionName': `阅片标准`,
+ 'trials:pmMedicalReview:table:signTime': `阅片完成时间`,
+ 'trials:pmMedicalReview:table:mim': `医学经理`,
+ 'trials:pmMedicalReview:table:allocateTime': `审核分配时间`,
+ 'trials:pmMedicalReview:table:isInvalid': `任务状态`,
+ 'trials:pmMedicalReview:table:auditState': `审核状态`,
+ 'trials:pmMedicalReview:table:auditAdvice': `审核建议`,
+ 'trials:pmMedicalReview:table:whetherAgree': `阅片人是否认同`,
+ 'trials:pmMedicalReview:table:auditSignTime': `审核签名时间`,
+ 'trials:pmMedicalReview:action:view': `查看`,
+ 'trials:pmMedicalReview:action:failure': `设置为失效`,
+ 'trials:pmMedicalReview:action:assign': `分配`,
+ 'trials:pmMedicalReview:action:cancelAssign': `取消分配`,
+ 'trials:pmMedicalReview:button:select': `筛选`,
+ 'trials:pmMedicalReview:select:isUrgent': `是否加急`,
+ 'trials:pmMedicalReview:select:taskCode': `任务编号`,
+ 'trials:pmMedicalReview:select:siteCode': `中心编号`,
+ 'trials:pmMedicalReview:select:subjectCode': `受试者编号`,
+ 'trials:pmMedicalReview:select:subjectSecondCode': `第二编号`,
+ 'trials:pmMedicalReview:select:taskName': `任务名称`,
+ 'trials:pmMedicalReview:select:taskBlindName': `盲态任务标识`,
+ 'trials:pmMedicalReview:select:taskType': `任务类型`,
+ 'trials:pmMedicalReview:select:role': `角色`,
+ 'trials:pmMedicalReview:select:reader': `阅片人`,
+ 'trials:pmMedicalReview:select:criterionName': `阅片标准`,
+ 'trials:pmMedicalReview:select:signTime': `阅片完成时间`,
+ 'trials:pmMedicalReview:select:readingDurationTime': `阅片时长`,
+ 'trials:pmMedicalReview:select:isGeneratedJudge': `是否产生裁判`,
+ 'trials:pmMedicalReview:select:globalReadingChanged': `全局阅片是否有校正`,
+ 'trials:pmMedicalReview:select:auditCount': `审核次数`,
+ 'trials:pmMedicalReview:select:allocation': `分配`,
+ 'trials:pmMedicalReview:select:batchAllocation': `批量分配`,
+ 'trials:pmMedicalReview:allocation:aliocationMIM': `分配医学经理`,
+ 'trials:pmMedicalReview:allocation:MIM': `医学经理`,
+ 'trials:pmMedicalReview:allocation:msg1': `请先选择需要分配的医学审核任务!`,
+ 'trials:pmMedicalReview:dialog:medicalReview': `医学审核详情`,
+ 'trials:pmMedicalReview:button:setInvalid': `设置为失效`,
+ 'trials:pmMedicalReview:message:msg01': `请先勾选医学审核任务!`,
+ 'trials:pmMedicalReview:message:msg02': `确定将该医学审核任务设置为失效吗?`,
+ 'trials:pmMedicalReview:message:msg03': `设置成功!`,
+ 'trials:pmMedicalReview:message:msg04': `请先选择需要分配的医学审核任务!`,
+ 'trials:pmMedicalReview:message:msg05': `确定要取消分配吗?`,
+ 'trials:pmMedicalReview:message:msg06': `取消分配成功!`,
+ 'trials:tab:consistencyAnalysis': `一致性分析`,
+ 'trials:consistencyAnalysis:table:isUrgent': `是否加急`,
+ 'trials:consistencyAnalysis:table:taskCode': `任务编号`,
+ 'trials:consistencyAnalysis:table:siteCode': `中心编号`,
+ 'trials:consistencyAnalysis:table:subjectCode': `受试者编号`,
+ 'trials:consistencyAnalysis:table:impact': `影响`,
+ 'trials:consistencyAnalysis:table:taskName': `任务名称`,
+ 'trials:consistencyAnalysis:table:taskBlindName': `盲态任务标识`,
+ 'trials:consistencyAnalysis:table:taskType': `任务类型`,
+ 'trials:consistencyAnalysis:table:category': `一致性分析类别`,
+ 'trials:consistencyAnalysis:table:role': `角色`,
+ 'trials:consistencyAnalysis:table:reader': `阅片人`,
+ 'trials:consistencyAnalysis:table:criterionName': `阅片标准`,
+ 'trials:consistencyAnalysis:table:taskStatus': `任务状态`,
+ 'trials:consistencyAnalysis:table:auditTime': `分配时间`,
+ 'trials:consistencyAnalysis:table:suggesteFinishedTime': `建议完成时间`,
+ 'trials:consistencyAnalysis:table:reviewStatus': `阅片状态`,
+ 'trials:consistencyAnalysis:table:signTime': `阅片完成时间`,
+ 'trials:consistencyAnalysis:table:applyStatus': `申请状态`,
+ 'trials:consistencyAnalysis:table:impactInfluence': `是否受到退回影响`,
+ 'trials:consistencyAnalysis:action:view': `查看阅片结果`,
+ 'trials:consistencyAnalysis:action:setInvalid': `设置为失效`,
+ 'trials:consistencyAnalysis:button:self': `自身一致性分析`,
+ 'trials:consistencyAnalysis:button:group': `组间一致性分析`,
+ 'trials:consistencyAnalysis:title:impactInfluence': `受到退回影响`,
+ 'trials:consistencyAnalysis:message:selectCriterion': `请先选择阅片标准!`,
+ 'trials:selftConsistencyAnalysis:button:config': `配置自身一致性分析规则`,
+ 'trials:selftConsistencyAnalysis:table:reader': `阅片人`,
+ 'trials:selftConsistencyAnalysis:table:visitNum': `访视数`,
+ 'trials:selftConsistencyAnalysis:table:intervalPeriod': `间隔周期(周)`,
+ 'trials:selftConsistencyAnalysis:table:isReadingPeriod': `所选访视是否有阅片期`,
+ 'trials:selftConsistencyAnalysis:table:isGenerateGlobalTask': `是否生成全局阅片任务`,
+ 'trials:selftConsistencyAnalysis:table:plannedSubjectNum': `计划受试者数`,
+ 'trials:selftConsistencyAnalysis:table:createdSubjectNum': `已生成受试者数`,
+ 'trials:selftConsistencyAnalysis:button:select': `选择`,
+ 'trials:consistencyAnalysis:button:exportSelf': `导出自身一致性分析`,
+ 'trials:grouptConsistencyAnalysis:button:config': `配置组间一致性分析规则`,
+ 'trials:grouptConsistencyAnalysis:table:siteCode': `中心编号`,
+ 'trials:grouptConsistencyAnalysis:table:subjectCode': `受试者编号`,
+ 'trials:grouptConsistencyAnalysis:table:validVisitCount': `符合规则访视数`,
+ 'trials:grouptConsistencyAnalysis:button:create': `生成`,
+ 'trials:grouptConsistencyAnalysis:table:backImpact': `是否受到退回影响`,
+ 'trials:grouptConsistencyAnalysis:message:msg1': `请选择要生成的受试者!`,
+ 'trials:consistencyAnalysis:button:exportGroup': `导出组间一致性分析`,
+ 'trials:consistencyAnalysisRule:table:visitNum': `访视数`,
+ 'trials:consistencyAnalysisRule:table:isReadingPeriod': `所选访视是否有阅片期`,
+ 'trials:consistencyAnalysisRule:table:intervalPeriod': `间隔周期(周)`,
+ 'trials:consistencyAnalysisRule:table:plannedNum': `计划病例数`,
+ 'trials:consistencyAnalysisRule:table:siteCode': `虚拟中心编号`,
+ 'trials:consistencyAnalysisRule:table:subjectNum': `虚拟受试者位数`,
+ 'trials:consistencyAnalysisRule:table:isGenerateGlobalTask': `是否生成全局阅片任务`,
+ 'trials:consistencyAnalysis:dialog:selectSubject': `选择受试者`,
+ 'trials:consistencyAnalysis:dialog:applyReread': `申请重阅`,
+ 'trials:consistencyAnalysis:applyReread:reason': `申请原因`,
+ 'trials:consistencyAnalysis:applyReread:imageReload': `图像重传`,
+ 'trials:consistencyAnalysis:applyReread:other': `其他`,
+ 'trials:consistencyAnalysis:applyReread:remark': `备注`,
+ 'trials:consistencyAnalysis:applyReread:msg1': `确定要将该一致性任务设置成失效吗?`,
+ 'trials:consistencyAnalysis:applyReread:msg2': `设置成功!`,
+ 'trials:consistencyAnalysis:applyReread:msg3': `申请重阅成功!`,
+ 'trials:trials-panel:reading:hotkeys': `阅片工具配置`,
+ 'trials:dicom-show:nowStudy': `当前检查`,
+ 'trials:dicom-show:relevanceStudy': `关联检查`,
+ 'trials:dicom-show:nowSeries': `当前序列`,
+ 'trials:dicom-show:transform': `图像变换`,
+ 'trials:dicom-show:lens': `透镜`,
+ 'trials:dicom-show:measurementLabeling': `测量标注`,
+ 'trials:dicom-show:Probe': `探针`,
+ 'trials:dicom-show:Length': `直径测量`,
+ 'trials:dicom-show:Angle': `角度测量`,
+ 'trials:dicom-show:CobbAngle': `Cobb测量`,
+ 'trials:dicom-show:EllipticalRoi': `椭圆测量`,
+ 'trials:dicom-show:RectangleRoi': `矩形测量`,
+ 'trials:dicom-show:FreehandRoi': `多边形标记`,
+ 'trials:dicom-show:Bidirectional': `长短径测量`,
+ 'trials:dicom-show:ArrowAnnotate': `文字标注`,
+ 'trials:dicom-show:Eraser': `清除测量和标记`,
+ 'trials:dicom-show:image': `截屏`,
+ 'trials:dicom-show:play': `播放`,
+ 'trials:dicom-show:firstframe': `第一帧`,
+ 'trials:dicom-show:previousframe': `上一帧`,
+ 'trials:dicom-show:nextframe': `下一帧`,
+ 'trials:dicom-show:lastframe': `最后一帧`,
+ 'trials:dicom-show:default': `默认值`,
+ 'trials:dicom-show:dicomCanvasWwwc': `窗宽/窗位`,
+ 'trials:dicom-show:custom': `自定义`,
+ 'trials:dicom-show:pseudocolor': `伪彩色`,
+ 'trials:dicom-show:color': `颜色`,
+ 'trials:trials-panel:attachments:spm-enrollment': `阅片人筛选`,
+ 'trials:none-dicom-show:fileList': `文件列表`,
+ 'trials:trials-panel:taskAllocation': `访视任务分配`,
+ 'trials:trials-panel:reading': `阅片`,
+ 'trials:trials-panel:refereeAllocation': `裁判任务分配`,
+ 'trials:trials-panel:readingTracking': `阅片跟踪`,
+ 'trials:trials-panel:reReadingTracking': `重阅跟踪`,
+ 'trials:trials-panel:tab:pmMedicalFeedback': `医学审核`,
+ 'trials:trials-panel:reading:consistency-analysis': `一致性分析`,
+ 'trials:trials-panel:attachments:reReadingTracking': `重阅审批`,
+ 'CustomWwwcForm:form:label:ww': `窗宽`,
+ 'CustomWwwcForm:form:label:wl': `窗位`,
+ 'passwordReset:form:passwordCentent': `密码必须包含:1)8 – 32 个字符;2)至少1个数字;3) 至少1个大写字母;4)至少1个小写字母;5)至少1个特殊字符 (~!-@#$%^&*_+?)`,
+}
\ No newline at end of file
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
new file mode 100644
index 0000000..73976b1
--- /dev/null
+++ b/src/layout/components/AppMain.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
new file mode 100644
index 0000000..88bcd75
--- /dev/null
+++ b/src/layout/components/Navbar.vue
@@ -0,0 +1,181 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/Sidebar/FixiOSBug.js b/src/layout/components/Sidebar/FixiOSBug.js
new file mode 100644
index 0000000..c41f7ea
--- /dev/null
+++ b/src/layout/components/Sidebar/FixiOSBug.js
@@ -0,0 +1,24 @@
+export default {
+ computed: {
+ device() {
+ return this.$store.state.app.device
+ }
+ },
+ mounted() {
+ this.fixBugIniOS()
+ },
+ methods: {
+ fixBugIniOS() {
+ const $subMenu = this.$refs.subMenu
+ if ($subMenu) {
+ const handleMouseleave = $subMenu.handleMouseleave
+ $subMenu.handleMouseleave = (e) => {
+ if (this.device === 'mobile') {
+ return
+ }
+ handleMouseleave(e)
+ }
+ }
+ }
+ }
+}
diff --git a/src/layout/components/Sidebar/Item.vue b/src/layout/components/Sidebar/Item.vue
new file mode 100644
index 0000000..b515f61
--- /dev/null
+++ b/src/layout/components/Sidebar/Item.vue
@@ -0,0 +1,29 @@
+
diff --git a/src/layout/components/Sidebar/Link.vue b/src/layout/components/Sidebar/Link.vue
new file mode 100644
index 0000000..eb4dd10
--- /dev/null
+++ b/src/layout/components/Sidebar/Link.vue
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue
new file mode 100644
index 0000000..040fab6
--- /dev/null
+++ b/src/layout/components/Sidebar/Logo.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue
new file mode 100644
index 0000000..ea30dbe
--- /dev/null
+++ b/src/layout/components/Sidebar/SidebarItem.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue
new file mode 100644
index 0000000..d6a049c
--- /dev/null
+++ b/src/layout/components/Sidebar/index.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue
new file mode 100644
index 0000000..0ec76e7
--- /dev/null
+++ b/src/layout/components/TagsView/ScrollPane.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue
new file mode 100644
index 0000000..72fc764
--- /dev/null
+++ b/src/layout/components/TagsView/index.vue
@@ -0,0 +1,301 @@
+
+
+
+
+ {{ tag.title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/index.js b/src/layout/components/index.js
new file mode 100644
index 0000000..9fc98d6
--- /dev/null
+++ b/src/layout/components/index.js
@@ -0,0 +1,4 @@
+export { default as Navbar } from './Navbar'
+export { default as Sidebar } from './Sidebar'
+export { default as AppMain } from './AppMain'
+export { default as TagsView } from './TagsView'
diff --git a/src/layout/index.vue b/src/layout/index.vue
new file mode 100644
index 0000000..79e5ade
--- /dev/null
+++ b/src/layout/index.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
diff --git a/src/layout/mixin/ResizeHandler.js b/src/layout/mixin/ResizeHandler.js
new file mode 100644
index 0000000..e8d0df8
--- /dev/null
+++ b/src/layout/mixin/ResizeHandler.js
@@ -0,0 +1,45 @@
+import store from '@/store'
+
+const { body } = document
+const WIDTH = 992 // refer to Bootstrap's responsive design
+
+export default {
+ watch: {
+ $route(route) {
+ if (this.device === 'mobile' && this.sidebar.opened) {
+ store.dispatch('app/closeSideBar', { withoutAnimation: false })
+ }
+ }
+ },
+ beforeMount() {
+ window.addEventListener('resize', this.$_resizeHandler)
+ },
+ beforeDestroy() {
+ window.removeEventListener('resize', this.$_resizeHandler)
+ },
+ mounted() {
+ const isMobile = this.$_isMobile()
+ if (isMobile) {
+ store.dispatch('app/toggleDevice', 'mobile')
+ store.dispatch('app/closeSideBar', { withoutAnimation: true })
+ }
+ },
+ methods: {
+ // use $_ for mixins properties
+ // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
+ $_isMobile() {
+ const rect = body.getBoundingClientRect()
+ return rect.width - 1 < WIDTH
+ },
+ $_resizeHandler() {
+ if (!document.hidden) {
+ const isMobile = this.$_isMobile()
+ store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop')
+
+ if (isMobile) {
+ store.dispatch('app/closeSideBar', { withoutAnimation: true })
+ }
+ }
+ }
+ }
+}
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..9d30587
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,439 @@
+
+import Vue from 'vue'
+import 'normalize.css/normalize.css' // A modern alternative to CSS resets
+
+import ElementUI, { MessageBox } from 'element-ui'
+import { getBasicDataAllSelect } from '@/api/dictionary/dictionary'
+// import 'element-ui/lib/theme-chalk/index.css'
+import './assets/css/theme-blue/index.css' // 浅绿色主题
+import './assets/css/iconfont/index.css' // 阿里巴巴图标库
+// import locale from 'element-ui/lib/locale/lang/en' // lang i18n
+import i18n from './lang'
+import '@/styles/index.scss' // global css
+
+import App from './App'
+import store from './store'
+import router from './router'
+
+import '@/icons' // icon
+import '@/permission' // permission control
+import md5 from 'js-md5'
+import VueClipboard from 'vue-clipboard2'
+Vue.use(VueClipboard)
+// import htmlToPdf from './utils/htmlToPdf'
+// Vue.use(htmlToPdf)
+import permission from './utils/permission'
+import { OSSclient } from './utils/oss'
+Vue.use(permission)
+
+import Viewer from 'v-viewer'
+import './assets/css/viewer.css'
+
+import axios from 'axios'
+Vue.prototype.$axios = axios
+Vue.use(Viewer)
+Viewer.setDefaults({
+ Options: {
+ 'inline': true,
+ 'button': true,
+ 'navbar': true,
+ 'title': true,
+ 'toolbar': true,
+ 'tooltip': true,
+ 'movable': true,
+ 'zoomable': true,
+ 'rotatable': true,
+ 'scalable': true,
+ 'transition': true,
+ 'fullscreen': true,
+ 'keyboard': true,
+ 'url': 'data-source'
+ }
+})
+
+import hasPermi from './directive/permission'
+Vue.use(hasPermi)
+
+// set ElementUI lang to EN
+// Vue.use(ElementUI, { locale, size: 'medium' })
+// 如果想要中文版 element-ui,按如下方式声明
+// Vue.use(ElementUI)
+Vue.use(ElementUI, {
+ i18n: (key, value) => i18n.t(key, value),
+ size: 'medium'
+})
+import upload from '@/components/element-ui/upload'
+Vue.use(upload)
+import adaptive from '@/directive/adaptive/index'
+// 表格自适应指令
+Vue.use(adaptive)
+import dialogDrag from '@/directive/dialogDrag'
+// 窗口拖拽
+Vue.use(dialogDrag)
+if(!String.prototype.replaceAll){
+ String.prototype.replaceAll = function(str, newStr){
+ // 正则表达式
+ if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') {
+ return this.replace(str, newStr)
+ }
+ // 字符串
+ return this.replace(new RegExp(str, 'g'), newStr)
+ }
+}
+import { parseTime, resetForm, selectDictLabel, selectDictLabels, handleTree, params } from '@/utils/ruoyi'
+import { xfHasPermi } from '@/utils/hasPermi'
+// 字典数据组件
+import DictTag from '@/components/DictTag'
+import DictData from '@/components/DictData'
+import { getBasicDataSelect } from '@/api/dictionary/dictionary'
+import { checkConfig } from '@/const/check/index'
+// 全局方法挂载
+var $q = params
+Vue.prototype.checkConfig = checkConfig
+Vue.prototype.$q = $q()
+Vue.prototype.hasPermi = xfHasPermi
+Vue.prototype.getDicts = getBasicDataSelect
+Vue.prototype.selectDictLabel = selectDictLabel
+Vue.prototype.selectDictLabels = selectDictLabels
+Vue.component('DictTag', DictTag)
+// 全局方法挂载
+Vue.prototype.parseTime = parseTime
+Vue.prototype.resetForm = resetForm
+Vue.prototype.selectDictLabel = selectDictLabel
+// Vue.prototype.download = download
+Vue.prototype.handleTree = handleTree
+// OSSclient.then(res => {
+// Vue.prototype.OSSclient = res
+// })
+Vue.prototype.$getObjectName = (url) => {
+ console.log(url)
+ var value = url
+ var str = value.split("//"); //https://进行分割,
+ var index = str[1].indexOf("/")+1; //indexOf 获取第一个斜杠的索引,
+ console.log(str[1].substring(index)); //substring 截取,
+ return '/' + str[1].substring(index)
+}
+Vue.prototype.getGuid = (text) => {
+ text = md5(text)
+ let t1, t2, t3, t4, t5, t6, t7, t8, t9, t10
+ t1 = text.substr(0, 2)
+ t2 = text.substr(2, 2)
+ t3 = text.substr(4, 2)
+ t4 = text.substr(6, 2)
+ t5 = text.substr(8, 2)
+ t6 = text.substr(10, 2)
+ t7 = text.substr(12, 2)
+ t8 = text.substr(14, 2)
+ t9 = text.substr(16, 4)
+ t10 = text.substr(20, 12)
+ console.log(`${t4+t3+t2+t1}-${t6+t5}-${t8+t7}-${t9}-${t10}`)
+ return `${t4+t3+t2+t1}-${t6+t5}-${t8+t7}-${t9}-${t10}`
+}
+Vue.prototype.$validatePassword = (rule, value, callback) => {
+ var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
+ /* eslint-disable */
+ var reg1 = eval(process.env.VUE_APP_PASSWORD_FOR_PERMISSION) ? new RegExp(`${process.env.VUE_APP_PASSWORD_FOR_REGULAR}`) : /.*/g; //密码必须是8位以上、必须含有字母、数字、特殊符号
+ if (!reg1.test(value)) {
+ callback(lang==='zh' ? new Error("密码必须包含:1)8 – 32 个字符;2)至少1个数字;3) 至少1个大写字母;4)至少1个小写字母;5)至少1个特殊字符 (~!-@#$%^&*_+?)") : new Error('Passwords must have: 1) 8 - 32 characters; 2) At least 1 number; 3) At least 1 uppercase letter; 4) At least 1 lowercase letter; 5) At least 1 special character (~!-@#$%^&*_+?) '))
+ } else {
+ callback();
+ }
+}
+
+DictData.install()
+
+import global_ from './components/Global'
+Vue.prototype.GLOBAL = global_
+Vue.config.productionTip = false
+Vue.prototype.$upload = () => {
+ _vm.$forceUpdate()
+}
+Vue.prototype.fileToBlob = (file) => {
+ // 创建 FileReader 对象
+ const reader = new FileReader()
+ return new Promise(resolve => {
+ // FileReader 添加 load 事件
+ reader.addEventListener('load', (e) => {
+ let blob
+ if (typeof e.target.result === 'object') {
+ blob = new Blob([e.target.result])
+ } else {
+ blob = e.target.result
+ }
+ resolve(blob)
+ })
+ // FileReader 以 ArrayBuffer 格式 读取 File 对象中数据
+ reader.readAsArrayBuffer(file)
+ })
+}
+
+var _vm
+async function VueInit () {
+ var params
+ if (~window.location.href.indexOf('/readingDicoms') || ~window.location.href.indexOf('/noneDicomReading') || ~window.location.href.indexOf('/criterionquestions') || ~window.location.href.indexOf('/petct')) {
+ params = $q('TrialReadingCriterionId')
+ }
+ var res = await getBasicDataAllSelect(params)
+ let d = function (code) {
+ var dictInfo = res.Result
+ var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
+ try {
+ for (var code in dictInfo) {
+ var dictList = (dictInfo[code] && dictInfo[code].length > 0) ? dictInfo[code].map(dict => {
+ return {
+ id: dict.Id,
+ label: lang==='zh' ? dict.ValueCN : dict.Value,
+ value: dict.DataTypeEnum === 3 ? eval(dict.Code) : dict.IsEnumInt ? parseInt(dict.Code): dict.Code,
+ raw: Object.assign({}, dict),
+ IsBaseLineUse: false,
+ IsFollowVisitUse: false
+ }
+ }) : []
+ dictInfo[code] = dictList
+ }
+ } catch (e){
+ console.error(e)
+ }
+ return dictInfo
+ }()
+ Vue.prototype.$d = d
+ Vue.prototype.$fd = function (code, v, type) {
+ try {
+ // code === 'YesOrNo' ? console.log(d) : ''
+ type = type || 'value'
+ return d[code].find(i => {
+ return i[type] === v
+ }) ? d[code].find(i => {
+ return i[type] === v
+ }).label : ''
+ } catch (e) {
+ console.log(e)
+ }
+ }
+ Vue.prototype.$updateDictionary = function() {
+ Vue.prototype.$d = function (code) {
+ var dictInfo = res.Result
+ var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
+ try {
+ for (var code in dictInfo) {
+ var dictList = (dictInfo[code] && dictInfo[code].length > 0) ? dictInfo[code].map(dict => {
+ return {
+ id: dict.raw.Id,
+ label: lang==='zh' ? dict.raw.ValueCN : dict.raw.Value,
+ value: dict.raw.DataTypeEnum === 3 ? eval(dict.raw.Code) : dict.raw.IsEnumInt ? parseInt(dict.raw.Code): dict.raw.Code,
+ raw: Object.assign({}, dict.raw),
+ IsBaseLineUse: false,
+ IsFollowVisitUse: false
+ }
+ }) : []
+ _vm.$set(dictInfo, code, dictList)
+ }
+ } catch (e){
+ console.error(e)
+ }
+ return dictInfo
+ }()
+ _vm.$forceUpdate()
+ }
+ _vm = new Vue({
+ el: '#app',
+ router,
+ store,
+ i18n,
+ data: {
+ unlock: {
+ my_username: null,
+ my_password: null
+ }
+ },
+ render: h => h(App)
+ })
+ var isLock = zzSessionStorage.getItem('isLock')
+ var isOpen = false
+ let count = 0;
+ if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) {
+ setInterval(() => {
+ var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
+ if ( _vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/login' || _vm.$route.path === '/researchForm' || _vm.$route.path === '/researchLogin' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') {
+ return
+ }
+ if (_vm.$store.state.user.userId !== zzSessionStorage.getItem('userId')) {
+ window.location.href = `/login`
+ zzSessionStorage.removeItem('lastWorkbench')
+ _vm.$alert(lang === 'en'? 'The same browser only allows one user account to be logged in at a time.' : '同一浏览器只允许同时登陆一个账户', {
+ type: 'warning',
+ })
+ }
+ }, 3000)
+ }
+ const waitOperate = (callback, second, callback2, second2) => {
+ let x;
+ let y;
+ let timer;
+ //监听键盘
+ function countTime() {
+ count++
+ localStorage.setItem('count', count)
+ if (count == parseInt(second2) || isLock === 'true') {
+ callback2();
+ }
+ if (count >= second) {
+ callback();
+ count = 0;
+ localStorage.removeItem('count')
+ }
+ }
+ var blob = new Blob([document.querySelector('#worker').textContent]);
+ var url = window.URL.createObjectURL(blob);
+ var worker = new Worker(url);
+ worker.onmessage = function (e, msg) {
+ if (localStorage.getItem('count') === '0') {
+ count = 0
+ localStorage.removeItem('count')
+ }
+ countTime()
+ }
+ //监听鼠标
+ document.onmousemove = function (event) {
+ const x1 = event.clientX;
+ const y1 = event.clientY;
+ if (x != x1 || y != y1) {
+ count = 0;
+ localStorage.setItem('count', '0')
+ }
+ x = x1;
+ y = y1;
+ };
+ document.onkeyup = function () {
+ count = 0;
+ localStorage.setItem('count', '0')
+ };
+ }
+ const h = _vm.$createElement
+ /* eslint-disable */
+ waitOperate(eval(process.env.VUE_APP_LOGOUT_FOR_PERMISSION) ? () => {
+ var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
+ if (_vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/login' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') {
+ count = 0;
+ localStorage.setItem('count', '0')
+ return
+ }
+ _vm.$store.dispatch('user/logout').then(res => {
+ window.location.href = `/login`
+ })
+
+ _vm.$alert(lang === 'zh' ? '由于您长时间未操作,为保护您的数据安全已强制将您下线,如果需要继续操作请重新登陆!' : 'No operation for a long time non-operation, you have been forced logout to protect data security. If continue to operate, please login again!', {
+ type: 'warning',
+ })
+ } : () => {}, process.env.VUE_APP_LOGOUT_FOR_TIME,
+ eval(process.env.VUE_APP_LOCK_FOR_PERMISSION) ? () => {
+ var lang = zzSessionStorage.getItem('lang')?zzSessionStorage.getItem('lang'):'zh'
+ if (_vm.$route.path === '/ReviewersResearchForm' || _vm.$route.path === '/ReviewersResearch' || _vm.$route.path === '/login' || _vm.$route.path === '/email-recompose' || _vm.$route.path === '/recompose' || _vm.$route.path === '/resetpassword' || _vm.$route.path === '/error') {
+ count = 0;
+ localStorage.setItem('count', '0')
+ if (_vm.$route.path === '/login') {
+ zzSessionStorage.removeItem('lastWorkbench')
+ zzSessionStorage.removeItem('isLock')
+ isLock = null
+ }
+ return
+ }
+ if (isOpen) {
+ return
+ }
+ isOpen = true
+ zzSessionStorage.setItem('isLock', 'true')
+ _vm.$msgbox({
+ title: lang === 'zh' ? '已锁定' : 'Locked',
+ confirmButtonText: lang === 'zh' ? '解锁' : 'Unlock',
+ showClose: false,
+ beforeClose: (action, instance, done) => {
+ if (action === 'confirm') {
+ if (!_vm.unlock.my_username) {
+ _vm.$alert(lang === 'zh' ? '请输入您的用户名解锁' : 'Please enter your user name to unlock.')
+ return
+ }
+ if (!_vm.unlock.my_password) {
+ _vm.$alert(lang === 'zh' ? '请输入您的密码解锁' : 'Please enter the correct password to unlock.')
+ return
+ }
+ var my_username = zzSessionStorage.getItem('my_username')
+ var my_password = zzSessionStorage.getItem('my_password')
+ if (md5(_vm.unlock.my_password) === my_password && my_username === _vm.unlock.my_username) {
+ _vm.$message.success(lang === 'zh' ? '解锁成功,请继续操作' : 'Unlocked successfully. Please continue operation.')
+ _vm.unlock = {
+ my_username: null,
+ my_password: null
+ }
+ isOpen = false
+ count = 0;
+ isLock = null
+ zzSessionStorage.removeItem('isLock')
+ localStorage.setItem('count', '0')
+ document.querySelector('#my_username').value = null
+ document.querySelector('#my_password').value = null
+ setTimeout(() => {
+ done()
+ }, 500)
+ } else {
+ _vm.$alert(lang === 'zh' ? '请输入正确用户名密码' : 'Please enter the correct password.')
+ }
+ }
+ },
+ message: h('div', {} , [
+ h('el-form', {
+ props: { labelWidth: "80px" }
+ }, [
+ h('el-form-item', {
+ props: {label: lang === 'zh' ? '用户名' : 'User ID'},
+ }, [
+ h('input',{
+ props: {
+ value: _vm.unlock.my_username
+ },
+ attrs: {
+ id: 'my_username',
+ class: 'el-input__inner',
+ autocomplete: 'new-password'
+ },
+ on: {
+ change: (event) => {
+ _vm.unlock.my_username = event.target.value
+ },
+ input: (event) => {
+ _vm.unlock.my_username = event.target.value
+ }
+ }
+ })
+ ]),
+ h('el-form-item', {
+ props: {label: lang === 'zh' ? '密码' : 'Password'},
+ }, [
+ h('input', {
+ props: {
+ value: _vm.unlock.my_password
+ },
+ attrs: {
+ id: 'my_password',
+ class: 'el-input__inner',
+ type: 'password',
+ autocomplete: 'new-password'
+ },
+ on: {
+ change: (event) => {
+ _vm.unlock.my_password = event.target.value
+ },
+ input: (event) => {
+ _vm.unlock.my_password = event.target.value
+ }
+ }
+ })
+ ])
+ ])
+ ])
+ })
+ } : () => {}, process.env.VUE_APP_LOCK_FOR_TIME)
+}
+VueInit()
+
+
diff --git a/src/mixins/form.js b/src/mixins/form.js
new file mode 100644
index 0000000..e69de29
diff --git a/src/mixins/table.js b/src/mixins/table.js
new file mode 100644
index 0000000..fd35e75
--- /dev/null
+++ b/src/mixins/table.js
@@ -0,0 +1,23 @@
+/*
+ * 为table处理的mixins
+ * 列表页面中使用到多次复用的mixins
+ */
+const tableMixins = {
+ methods: {
+ handleSearch() {
+ this.searchData.PageIndex = 1
+ this.getList()
+ },
+ sortByColumn(column) {
+ if (column.order === 'ascending') {
+ this.searchData.Asc = true
+ } else {
+ this.searchData.Asc = false
+ }
+ this.searchData.SortField = column.prop
+ this.searchData.PageIndex = 1
+ this.getList()
+ }
+ }
+}
+export default tableMixins
diff --git a/src/permission.js b/src/permission.js
new file mode 100644
index 0000000..5df68f8
--- /dev/null
+++ b/src/permission.js
@@ -0,0 +1,70 @@
+import router from './router'
+import store from './store'
+// import { Message } from 'element-ui'
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css'
+import { getToken } from '@/utils/auth'
+import { OSSclient } from './utils/oss'
+// import getPageTitle from '@/utils/get-page-title'
+
+NProgress.configure({ showSpinner: false })
+
+const whiteList = ['/ReviewersResearch', '/login', '/error', '/resetpassword', '/recompose', '/email-recompose', '/trialStats', '/showdicom', '/imagesShare', '/audit', '/preview', '/researchLogin', '/blindResumeInfo', '/trialsResume', '/joinVerify', '/showNoneDicoms', '/noneDicomReading', '/clinicalData', '/readingDicoms', '/readingPage', '/visitDicomReview', '/visitNondicomReview', '/globalReview', '/adReview', '/oncologyReview', '/nonedicoms']
+
+router.beforeEach(async (to, from, next) => {
+ NProgress.start()
+ // 设置页面标题
+ // document.title = getPageTitle(to.meta.title)
+
+ // 确定用户是否已登录
+ await OSSclient()
+ next()
+ const hasToken = getToken()
+ if (hasToken) {
+ if (to.path === '/login' || to.path === '/recompose' || to.path === '/email-recompose' || to.path === '/error' || to.path === '/ReviewersResearchForm' || to.path === '/ReviewersResearch') {
+
+ next()
+ NProgress.done()
+ } else {
+ const hasGetUserInfo = store.getters.name
+ if (hasGetUserInfo) {
+ next()
+ } else {
+ try {
+ // 获取用户信息
+ await store.dispatch('user/getInfo')
+ // const accessRoutes = await store.dispatch('permission/generateRoutes')
+ // router.addRoutes(accessRoutes)
+ next({ ...to, replace: true })
+ } catch (error) {
+ // 删除token并进入登录页面以重新登录
+ await store.dispatch('user/resetToken')
+ next(`/login?redirect=${to.path}`)
+ NProgress.done()
+ }
+ }
+ }
+ } else {
+ /* has no token*/
+ if (whiteList.indexOf(to.path) !== -1) {
+ // 在免登录whiteList中,直接进入
+ next()
+ } else {
+ if (to.path === '/researchForm') {
+ next(`/researchLogin?`)
+ NProgress.done()
+ } else if (to.path === '/ReviewersResearchForm') {
+ next(`/ReviewersResearch?`)
+ NProgress.done()
+ } else {
+ // 其他无权访问的页面将重定向到登录页面。
+ next(`/login?`)
+ NProgress.done()
+ }
+ }
+ }
+})
+
+router.afterEach(() => {
+ NProgress.done()
+})
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..a2258b2
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,301 @@
+import Vue from 'vue'
+import Router from 'vue-router'
+
+Vue.use(Router)
+
+/* Layout */
+import Layout from '@/layout'
+
+/* Router Modules */
+/**
+ * Note: 子菜单仅在路由children.length> = 1时出现
+ *
+ * hidden: true 如果设置为true,则项目不会显示在左侧菜单栏中(默认为false)
+ * alwaysShow: true 如果设置为true,将始终显示根菜单
+ * 如果未设置alwaysShow,则当项具有多个子路由时,它将变为嵌套模式,否则不显示根菜单
+ * redirect: noRedirect 如果设置noRedirect,则不会在面包屑中重定向
+ * name:'router-name' 该名称由使用
+ * meta : {
+ title: 'title' 名称显示在侧边栏和面包屑中
+ icon: 'svg-name' 侧栏中的图标显示
+ breadcrumb: false 如果设置为false,则该项将隐藏在面包屑中(默认为true)
+ activeMenu: '/example/list' 如果设置了路径,则侧边栏将高亮显示此路径
+ }
+ */
+
+/**
+ * constantRoutes
+ * 没有权限要求的页面
+ * 所有角色都可访问
+ */
+export const constantRoutes = [
+ {
+ path: '/',
+ redirect: '/login',
+ hidden: true
+ },
+ {
+ path: '/redirect',
+ component: Layout,
+ hidden: true,
+ children: [
+ {
+ path: '/redirect/:path*',
+ component: () => import('@/views/redirect')
+ }
+ ]
+ },
+ {
+ path: '/login',
+ component: () => import('@/views/login/index'),
+ hidden: true
+ },
+ {
+ path: '/trials',
+ name: 'trials',
+ redirect: '/trials/trials-list',
+ meta: { title: 'Trials' },
+ hidden: true,
+ component: () => import('@/views/trials/trials-layout/index'),
+ children: [
+ {
+ path: 'trials-list',
+ meta: { title: 'Trial', breadcrumb: false, hidden: false, activeMenu: '/trials/trials-list' },
+ component: () => import('@/views/trials/trials-list/index')
+ },
+ {
+ path: 'trials-panel/reading/readingTracking', // 直接使用完整路径
+ component: () => import('@/views/trials/trials-panel/reading/reading-tracking/index')
+ },
+ {
+ path: 'trials-panel/setting/trial-config', // 直接使用完整路径
+ component: () => import('@/views/trials/trials-panel/setting/trial-config/index'),
+ },
+ ]
+ },
+ {
+ path: '/resetpassword',
+ component: () => import('@/views/forgetpassword/index'),
+ name: 'Resetpassword',
+ hidden: true
+ },
+ {
+ path: '/recompose',
+ component: () => import('@/views/recompose/index'),
+ name: 'Recompose',
+ hidden: true
+ },
+ {
+ path: '/email-recompose',
+ component: () => import('@/views/email-recompose/index'),
+ name: 'emailRecompose',
+ hidden: true
+ },
+ {
+ path: '/joinVerify',
+ component: () => import('@/views/joinVerify/index'),
+ name: 'joinVerify',
+ hidden: true
+ },
+ {
+ path: '/trialStats',
+ component: () => import('@/views/reviewers/trialStats'),
+ name: 'trialStats',
+ hidden: true
+ },
+ {
+ path: '/showdicom',
+ name: 'showdicoms',
+ hidden: true,
+ component: () => import('@/views/dicom-show/dicom-study')
+ },
+
+ // {
+ // path: '/showvisitdicoms',
+ // name: 'showvisitdicoms',
+ // hidden: true,
+ // component: () => import('@/views/dicom-show/dicom-visit')
+ // },
+ // {
+ // path: '/showseriesdicoms',
+ // name: 'showseriesdicoms',
+ // hidden: true,
+ // component: () => import('@/views/dicom-show/dicom-series')
+ // },
+ // {
+ // path: '/preview',
+ // name: 'previewDicoms',
+ // component: () => import('@/views/dicom-show/server-dicom-temporary'),
+ // hidden: true
+ // },
+
+ {
+ path: '/showNoneDicoms',
+ hidden: true,
+ component: () => import('@/views/none-dicom-show/index')
+ },
+ {
+ path: '/noneDicomReading',
+ name: 'noneDicomReading',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/none-dicoms/index')
+ },
+ {
+ path: '/readingDicoms',
+ component: () => import('@/views/trials/trials-panel/reading/dicoms/index'),
+ hidden: true
+ },
+ {
+ path: '/nonedicoms',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/dicoms/none-dicoms')
+ },
+ {
+ path: '/readingPage',
+ name: 'readingPage',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/reading-page/index')
+ },
+ {
+ path: '/petct',
+ name: 'petct',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt')
+ },
+ {
+ path: '/visitDicomReview',
+ name: 'visitDicomReview',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/dicoms/index')
+ },
+ {
+ path: '/visitNondicomReview',
+ name: 'visitNondicomReview',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/none-dicoms/index')
+ },
+ {
+ path: '/globalReview',
+ name: 'globalReview',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/global-review/index')
+ },
+ {
+ path: '/adReview',
+ name: 'adReview',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/ad-review/index')
+ },
+ {
+ path: '/oncologyReview',
+ name: 'oncologyReview',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/reading/oncology-review/index')
+ },
+
+ {
+ path: '/imagesShare',
+ name: 'imagesShare',
+ component: () => import('@/views/share/images'),
+ hidden: true
+ },
+ {
+ path: '/clinicalData',
+ name: 'clinicalData',
+ component: () => import('@/views/trials/trials-panel/clinical-data/index'),
+ hidden: true
+ },
+ {
+ path: '/researchLogin',
+ name: 'researchLogin',
+ component: () => import('@/views/research/login'),
+ hidden: true
+ },
+ {
+ path: '/researchForm',
+ name: 'researchForm',
+ component: () => import('@/views/research/form'),
+ hidden: true
+ },
+ {
+ path: '/trialsResume',
+ component: () => import('@/views/trials/trials-panel/enrolled-reviewers/resume/index'),
+ hidden: true
+ },
+ {
+ path: '/ReviewersResearch',
+ component: () => import('@/views/reviewers/ReviewersResearch'),
+ hidden: true
+ },
+ {
+ path: '/ReviewersResearchForm',
+ component: () => import('@/views/reviewers/ReviewersResearchForm'),
+ hidden: true
+ },
+ {
+ path: '/blindResumeInfo',
+ component: () => import('@/views/blindResumeInfo/index'),
+ hidden: true
+ },
+ {
+ path: '/showvisitdicoms',
+ name: 'showvisitdicoms',
+ hidden: true,
+ component: () => import('@/views/dicom-show/dicom-visit')
+ },
+ {
+ path: '/criterionquestions',
+ name: 'criterionquestions',
+ hidden: true,
+ component: () => import('@/views/trials/trials-panel/setting/reading-unit/preview')
+ },
+ // {
+ // path: '/audit',
+ // name: 'audit',
+ // component: () => import('@/views/trials/audit'),
+ // hidden: true
+ // },
+ {
+ path: '/error',
+ component: () => import('@/views/error'),
+ hidden: true
+ },
+ {
+ path: '/404',
+ component: () => import('@/views/404'),
+ hidden: true
+ },
+ {
+ path: '/editUser',
+ component: Layout,
+ redirect: '/editUser/baiscInfo',
+ hidden: true,
+ children: [{
+ path: 'baiscInfo',
+ name: 'BaiscInfo',
+ component: () => import('@/views/user/editInfo')
+ },
+ {
+ path: 'account',
+ name: 'Account',
+ component: () => import('@/views/user/account')
+ }
+ ]
+ }
+]
+
+const createRouter = () => new Router({
+ mode: 'history',
+ base: '/',
+ scrollBehavior: () => ({ y: 0 }),
+ routes: constantRoutes
+})
+
+const router = createRouter()
+
+export function resetRouter() {
+ const newRouter = createRouter()
+ router.matcher = newRouter.matcher // reset router
+}
+
+export default router
diff --git a/src/settings.js b/src/settings.js
new file mode 100644
index 0000000..63027ab
--- /dev/null
+++ b/src/settings.js
@@ -0,0 +1,23 @@
+// eslint-disable-next-line no-undef
+module.exports = {
+
+ title: 'IRCIS',
+
+ /**
+ * @type {boolean} true | false
+ * @description 是否需要标签查看
+ */
+ tagsView: false,
+
+ /**
+ * @type {boolean} true | false
+ * @description 是否固定Header
+ */
+ fixedHeader: true,
+
+ /**
+ * @type {boolean} true | false
+ * @description 是否在侧边栏中显示Logo
+ */
+ sidebarLogo: false
+}
diff --git a/src/store/getters.js b/src/store/getters.js
new file mode 100644
index 0000000..817ebfa
--- /dev/null
+++ b/src/store/getters.js
@@ -0,0 +1,48 @@
+const getters = {
+ sidebar: state => state.app.sidebar,
+ device: state => state.app.device,
+ token: state => state.user.token,
+ name: state => state.user.name,
+ permissions: state => state.user.permissions,
+ tree: state => state.user.tree,
+ userName: state => state.user.userName,
+ userId: state => state.user.userId,
+ routes: state => state.permission.routes,
+ asyncRoutes: state => state.permission.addRoutes,
+ visitedViews: state => state.tagsView.visitedViews,
+ cachedViews: state => state.tagsView.cachedViews,
+ dictionaryList: state => state.global.dictionaryList,
+ hospitalList: state => state.global.hospitalList,
+ sponsorList: state => state.global.sponsorList,
+ croList: state => state.global.croList,
+ siteList: state => state.global.siteList,
+ noticeList: state => state.global.noticeList,
+ reviewersQuery: state => state.reviewer.reviewersQuery,
+ isEnglish: state => state.reviewer.isEnglish,
+ trialDetailActiveName: state => state.trials.trialDetailActiveName,
+ trialQuery: state => state.trials.trialQuery,
+ subjectQuery: state => state.trials.subjectQuery,
+ visitPlanQuery: state => state.trials.visitPlanQuery,
+ visitPointQuery: state => state.trials.visitPointQuery,
+ studyListQuery: state => state.trials.studyListQuery,
+ reviewerList: state => state.financials.reviewerList,
+ rankList: state => state.financials.rankList,
+ financialsActiveName: state => state.financials.financialsActiveName,
+ paymentQuery: state => state.financials.paymentQuery,
+ paymentHistoryQuery: state => state.financials.paymentHistoryQuery,
+ revenusQuery: state => state.financials.revenusQuery,
+ visitTaskList: state => state.reading.visitTaskList,
+ organList: state => state.reading.organList,
+ seriesStack: state => state.reading.seriesStack,
+ activeHangingAgreement: state => state.reading.activeHangingAgreement,
+ currentTaskId: state => state.reading.currentTaskId,
+ currentReadingTaskState: state => state.reading.currentReadingTaskState,
+ activeSeries: state => state.reading.activeSeries,
+ lastCanvasTaskId: state => state.reading.lastCanvasTaskId,
+ imageQuality: state => state.reading.imageQuality,
+ language: state => state.lang.language,
+ TotalNeedSignSystemDocCount: state => state.user.TotalNeedSignSystemDocCount,
+ TotalNeedSignTrialDocCount: state => state.user.TotalNeedSignTrialDocCount,
+ TrialStatusStr: state => state.user.TrialStatusStr
+}
+export default getters
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..c0e0436
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,35 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+import getters from './getters'
+import app from './modules/app'
+import settings from './modules/settings'
+import user from './modules/user'
+import permission from './modules/permission'
+import tagsView from './modules/tagsView'
+import reviewer from './modules/reviewer'
+import global from './modules/global'
+import trials from './modules/trials'
+import financials from './modules/financials'
+import reading from './modules/reading'
+import lang from './modules/lang'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+ modules: {
+ app,
+ settings,
+ user,
+ permission,
+ tagsView,
+ global,
+ reviewer,
+ trials,
+ financials,
+ reading,
+ lang
+ },
+ getters
+})
+
+export default store
diff --git a/src/store/modules/app.js b/src/store/modules/app.js
new file mode 100644
index 0000000..0807e2c
--- /dev/null
+++ b/src/store/modules/app.js
@@ -0,0 +1,46 @@
+const state = {
+ sidebar: {
+ opened: zzSessionStorage.getItem('sidebarStatus') ? !!+zzSessionStorage.getItem('sidebarStatus') : true,
+ withoutAnimation: false
+ },
+ device: 'desktop'
+}
+
+const mutations = {
+ TOGGLE_SIDEBAR: state => {
+ state.sidebar.opened = !state.sidebar.opened
+ state.sidebar.withoutAnimation = false
+ if (state.sidebar.opened) {
+ zzSessionStorage.setItem('sidebarStatus', 1)
+ } else {
+ zzSessionStorage.setItem('sidebarStatus', 0)
+ }
+ },
+ CLOSE_SIDEBAR: (state, withoutAnimation) => {
+ zzSessionStorage.setItem('sidebarStatus', 0)
+ state.sidebar.opened = false
+ state.sidebar.withoutAnimation = withoutAnimation
+ },
+ TOGGLE_DEVICE: (state, device) => {
+ state.device = device
+ }
+}
+
+const actions = {
+ toggleSideBar({ commit }) {
+ commit('TOGGLE_SIDEBAR')
+ },
+ closeSideBar({ commit }, { withoutAnimation }) {
+ commit('CLOSE_SIDEBAR', withoutAnimation)
+ },
+ toggleDevice({ commit }, device) {
+ commit('TOGGLE_DEVICE', device)
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/financials.js b/src/store/modules/financials.js
new file mode 100644
index 0000000..66dd4c4
--- /dev/null
+++ b/src/store/modules/financials.js
@@ -0,0 +1,81 @@
+import { getReviewerSelectList, getRankDic } from '@/api/financials'
+const getDefaultState = () => {
+ return {
+ reviewerList: {},
+ rankList: {},
+ financialsActiveName: 'MonthlyPayment',
+ paymentQuery: null,
+ paymentHistoryQuery: null,
+ revenusQuery: null
+ }
+}
+const state = getDefaultState()
+const mutations = {
+ RESET_FINANCIALS: (state) => {
+ Object.assign(state, getDefaultState())
+ },
+ SET_REVIEWER: (state, reviewerList) => {
+ state.reviewerList = reviewerList
+ },
+ SET_RANK: (state, rankList) => {
+ state.rankList = rankList
+ },
+ SET_ACTIVENAME: (state, activeName) => {
+ state.financialsActiveName = activeName
+ },
+ SET_PAYMENTQUERYPARAM: (state, query) => {
+ state.paymentQuery = query
+ },
+ SET_PAYMENTHISTORYQUERYPARAM: (state, query) => {
+ state.paymentHistoryQuery = query
+ },
+ SET_REVENUSQUERYPARAM: (state, query) => {
+ state.revenusQuery = query
+ }
+}
+const actions = {
+ getReviewer({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getReviewerSelectList().then(response => {
+ if (response.IsSuccess) {
+ response.Result.forEach(element => {
+ element.info = `${element.FullName} (${element.Code})`
+ })
+ commit('SET_REVIEWER', response.Result)
+ resolve()
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ getRank({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getRankDic().then(response => {
+ if (response.IsSuccess) {
+ commit('SET_RANK', response.Result)
+ resolve()
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ setActiveName({ commit }, activeName) {
+ commit('SET_ACTIVENAME', activeName)
+ },
+ resetState({ commit }) {
+ commit('RESET_FINANCIALS')
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/global.js b/src/store/modules/global.js
new file mode 100644
index 0000000..3c4ac99
--- /dev/null
+++ b/src/store/modules/global.js
@@ -0,0 +1,151 @@
+import { getAllDictionary, getHospitalList, getAllSponsorList, getAllCROList, getAllSiteList, getUserNoticeList } from '@/api/global'
+const getDefaultState = () => {
+ return {
+ dictionaryList: {},
+ hospitalList: {},
+ sponsorList: {},
+ croList: {},
+ siteList: {},
+ noticeList: JSON.parse(zzSessionStorage.getItem('noticeList'))
+ }
+}
+const state = getDefaultState()
+const mutations = {
+ RESET_GLOBAL: (state) => {
+ Object.assign(state, getDefaultState())
+ },
+ SET_DICTIONARY: (state, dictionaryList) => {
+ state.dictionaryList = dictionaryList
+ },
+ SET_HOSPITAL: (state, hospitalList) => {
+ state.hospitalList = hospitalList
+ },
+ SET_SPONSOR: (state, sponsorList) => {
+ state.sponsorList = sponsorList
+ },
+ SET_CRO: (state, croList) => {
+ state.croList = croList
+ },
+ SET_SITE: (state, siteList) => {
+ state.siteList = siteList
+ },
+ SET_NOTICE: (state, noticeList = []) => {
+ zzSessionStorage.setItem('noticeList', JSON.stringify(noticeList))
+ state.noticeList = noticeList
+ }
+}
+const actions = {
+ getDictionary({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getAllDictionary().then(response => {
+ if (response.IsSuccess) {
+ commit('SET_DICTIONARY', response.Result.DicList)
+ resolve(response.Result.DicList)
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ setDictionary({ commit }, dictionary) {
+ commit('SET_DICTIONARY', dictionary)
+ },
+
+ getHospital({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getHospitalList().then(response => {
+ if (response.IsSuccess) {
+ commit('SET_HOSPITAL', response.Result)
+ resolve(response.Result)
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ setHospital({ commit }, hospital) {
+ commit('SET_HOSPITAL', hospital)
+ },
+
+ getSponsorList({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getAllSponsorList().then(response => {
+ if (response.IsSuccess) {
+ commit('SET_SPONSOR', response.Result)
+ resolve(response.Result)
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ setSponsor({ commit }, sponsor) {
+ commit('SET_SPONSOR', sponsor)
+ },
+ getCROList({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getAllCROList().then(response => {
+ if (response.IsSuccess) {
+ commit('SET_CRO', response.Result)
+ resolve(response.Result)
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ setCRO({ commit }, cro) {
+ commit('SET_CRO', cro)
+ },
+ getSiteList({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getAllSiteList().then(response => {
+ if (response.IsSuccess) {
+ commit('SET_SITE', response.Result)
+ resolve(response.Result)
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ setSite({ commit }, site) {
+ commit('SET_SITE', site)
+ },
+ getNoticeList({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getUserNoticeList().then(response => {
+ if (response.IsSuccess) {
+ var noticeList = []
+ response.Result.forEach(el => {
+ noticeList.push({ Id: el.Id, Content: el.NoticeContent, NoticeTypeEnum: el.NoticeTypeEnum })
+ })
+
+ commit('SET_NOTICE', noticeList)
+ resolve(noticeList)
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/lang.js b/src/store/modules/lang.js
new file mode 100644
index 0000000..12529d3
--- /dev/null
+++ b/src/store/modules/lang.js
@@ -0,0 +1,34 @@
+const getStorage = function(key) {
+ const str = zzSessionStorage.getItem(key)
+ // const str = localStorage.getItem(key)
+ if (!str) {
+ var lang = 'zh'
+ // localStorage.setItem(key, lang)
+ zzSessionStorage.setItem('lang', lang)
+ return lang
+ }
+ return str
+}
+const setLang = function(language) {
+ // const json = JSON.stringify(obj)
+ zzSessionStorage.setItem('lang', language)
+ // localStorage.setItem('lang', language)
+}
+const state = {
+ language: getStorage('lang')
+}
+
+const mutations = {
+
+ setLanguage: (state, language) => {
+ state.language = language
+ setLang(language)
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations
+}
+
diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js
new file mode 100644
index 0000000..69368dd
--- /dev/null
+++ b/src/store/modules/permission.js
@@ -0,0 +1,132 @@
+import { constantRoutes } from '@/router'
+import Layout from '@/layout'
+import TrialsLayout from '@/views/trials/trials-layout'
+// 遍历后台传来的路由字符串,转换为组件对象
+function filterAsyncRouter(asyncRouterMap = [], lastRouter = false, type = false) {
+ return asyncRouterMap.filter(route => {
+ delete route.ParentId
+ delete route.MenuId
+ delete route.ApiPath
+ if (route.Redirect) {
+ route.redirect = route.Redirect
+ delete route.Redirect
+ }
+ if (route.IsInTabDisplay) {
+ route.tabHiddn = route.IsInTabDisplay
+ delete route.IsInTabDisplay
+ }
+ if (route.MenuName) {
+ route.name = route.MenuName
+ delete route.MenuName
+ }
+ if (route.IsDisplay) {
+ route.hidden = route.IsDisplay
+ delete route.IsDisplay
+ }
+ if (route.Path) {
+ route.path = route.Path
+ if (route.IsExternalLink && ~route.Path.indexOf('http')) {
+ route.path = route.Path
+ } else if (route.IsExternalLink) {
+ route.path = `${window.location.protocol}//${window.location.host}${route.Path}`
+ } else {
+ route.path = route.Path
+ }
+ delete route.Path
+ }
+ route.meta = { icon: route.MenuIcon }
+ if (route.Meta) {
+ // eslint-disable-next-line
+ route.meta = eval('(' + route.Meta + ')')
+ route.meta.icon = route.MenuIcon
+ delete route.Meta
+ }
+ delete route.MenuIcon
+ if (type && route.Children) {
+ route.children = filterChildren(route.Children)
+ }
+ // Layout ParentView 组件特殊处理
+ if (route.Component === '') {
+ if (route.name === 'Trials') {
+ route.component = TrialsLayout
+ } else {
+ route.component = Layout
+ }
+ } else {
+ route.component = loadView(route.Component)
+ }
+ delete route.Component
+ if (route.Children != null && route.Children && route.Children.length) {
+ route.children = filterAsyncRouter(route.Children, route, type)
+ delete route['Children']
+ } else {
+ delete route['Children']
+ delete route['redirect']
+ }
+ return true
+ })
+}
+
+function filterChildren(childrenMap, lastRouter = false) {
+ var children = []
+ childrenMap.forEach((el, index) => {
+ if (el.children && el.children.length) {
+ if (el.component === 'ParentView' && !lastRouter) {
+ el.children.forEach(c => {
+ c.path = el.path + '/' + c.path
+ if (c.children && c.children.length) {
+ children = children.concat(filterChildren(c.children, c))
+ return
+ }
+ children.push(c)
+ })
+ return
+ }
+ }
+ if (lastRouter) {
+ el.path = lastRouter.path + '/' + el.path
+ }
+ children = children.concat(el)
+ })
+ return children
+}
+
+export const loadView = (view) => {
+ // if (process.env.NODE_ENV === 'development') {
+ return (resolve) => require([`@/${view}.vue`], resolve)
+ // } else {
+ // // 使用 import 实现生产环境的路由懒加载
+ // return () => import(`@/${view}`)
+ // }
+}
+
+const state = {
+ routes: [],
+ // addRoutes: []
+}
+
+const mutations = {
+ // SET_ROUTES: (state, routes) => {
+ // state.addRoutes = routes
+ // state.routes = constantRoutes.concat(routes)
+ // // zzSessionStorage.setItem('Menus', JSON.stringify(state.routes))
+ // }
+}
+
+const actions = {
+ // generateRoutes({ commit }) {
+ // return new Promise(resolve => {
+ // var newTree = JSON.parse(zzSessionStorage.getItem('newTree'))
+ // const sidebarRoutes = filterAsyncRouter(newTree || [])
+ // commit('SET_ROUTES', sidebarRoutes)
+ // resolve(sidebarRoutes)
+ // })
+ // }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/reading.js b/src/store/modules/reading.js
new file mode 100644
index 0000000..bec75dd
--- /dev/null
+++ b/src/store/modules/reading.js
@@ -0,0 +1,895 @@
+import {
+ getRelatedVisitTask,
+ getTableAnswerRowInfoList,
+ getDicomReadingQuestionAnswer,
+ getReadingQuestionAndAnswer,
+ getReadingOrganList,
+ deleteCustomTag
+}
+ from '@/api/trials'
+import Vue from 'vue'
+import { getCustomTag } from '@/api/reading'
+
+import requestPoolManager from '@/utils/request-pool'
+import { getReadingVisitStudyList } from '@/api/trials'
+const hangingAgreement = [
+ { name: 'A', row: 1, col: 1 },
+ { name: 'A|A', row: 1, col: 2 },
+ { name: 'A|B', row: 1, col: 2 },
+ { name: 'A|A|A|A', row: 2, col: 2 }
+]
+const getDefaultState = () => {
+ return {
+ // visitTaskList: [],
+ visitTaskList: sessionStorage.getItem('visitTaskList') ? JSON.parse(sessionStorage.getItem('visitTaskList')) : [],
+ organList: [],
+ seriesStack: [],
+ activeHangingAgreement: hangingAgreement[0],
+ currentTaskId: '',
+ currentReadingTaskState: 2,
+ activeSeries: {},
+ lastCanvasTaskId: '',
+ imageQuality: null
+ }
+}
+function getQuestions(questions) {
+ questions.forEach(item => {
+ if (item.Type === 'table' && item.TableQuestions && item.TableQuestions.Answers.length > 0) {
+ item.TableQuestions.Answers.forEach(answerObj => {
+ answerObj.lesionPart = getQuestionAnswer(item.TableQuestions.Questions, 8, answerObj)
+ answerObj.loctation = getQuestionAnswer(item.TableQuestions.Questions, 6, answerObj)
+ answerObj.lesionLength = getQuestionAnswer(item.TableQuestions.Questions, 0, answerObj)
+ answerObj.lesionShort = getQuestionAnswer(item.TableQuestions.Questions, 1, answerObj)
+ answerObj.isDicomReading = answerObj.IsDicomReading === 'True'
+ var isLymphLesion = getQuestionAnswer(item.TableQuestions.Questions, 2, answerObj)
+ isLymphLesion = isLymphLesion ? parseInt(isLymphLesion) : null
+ answerObj.isLymphLesion = isLymphLesion
+ answerObj.lesionState = getQuestionAnswer(item.TableQuestions.Questions, 7, answerObj)
+ var lesionNum = getQuestionAnswer(item.TableQuestions.Questions, 11, answerObj)
+ answerObj.lesionNum = lesionNum
+ if (answerObj.RowId) {
+ var idx = item.TableQuestions.Questions.findIndex(i => i.QuestionMark === 11)
+ if (idx > -1) {
+ // pcwg
+ answerObj.saveTypeEnum = isNaN(parseInt(answerObj.lesionNum)) ? 1 : 2
+ } else {
+ answerObj.saveTypeEnum = isNaN(parseInt(answerObj.lesionState)) ? 1 : 2
+ }
+ } else {
+ answerObj.saveTypeEnum = 0
+ }
+ })
+ }
+ if (item.Childrens.length > 0) {
+ getQuestions(item.Childrens)
+ }
+ })
+ return questions
+}
+function findQuestionAndRemoveLesion(questions, obj) {
+ for (var i = 0; i < questions.length; i++) {
+ if (questions[i].Type === 'table' && questions[i].TableQuestions && (questions[i].LesionType === obj.lesionType) && questions[i].TableQuestions.Answers.length > 0) {
+ var idx = questions[i].TableQuestions.Answers.findIndex(i => String(i.RowIndex) === String(obj.rowIndex))
+ if (idx > -1) {
+ questions[i].TableQuestions.Answers.splice(idx, 1)
+ break
+ }
+ }
+ if (questions[i].Childrens.length > 0) {
+ findQuestionAndRemoveLesion(questions[i].Childrens, obj)
+ }
+ }
+ return questions
+}
+function findQuestionAndUpdateLesion(questions, obj) {
+ for (var i = 0; i < questions.length; i++) {
+ var item = questions[i]
+ if (item.Type === 'table' && item.Id === obj.questionId) {
+ var idx = item.TableQuestions.Answers.findIndex(i => i.RowIndex === obj.rowIndex)
+ item.TableQuestions.Answers[idx].isLymphLesion = obj.isLymphLesion
+ item.TableQuestions.Answers[idx].loctation = obj.lesionOrgan
+ item.TableQuestions.Answers[idx].lesionPart = obj.lesionPart
+ item.TableQuestions.Answers[idx].lesionLength = obj.lesionLength
+ item.TableQuestions.Answers[idx].lesionShort = obj.lesionShort
+ item.TableQuestions.Answers[idx].lesionNum = obj.lesionNum
+ item.TableQuestions.Answers[idx].saveTypeEnum = obj.saveTypeEnum
+ item.TableQuestions.Answers[idx].lesionState = obj.lesionState
+ for (const i in obj.anwsers) {
+ if (i === 'MeasureData' && obj.anwsers[i]) {
+ item.TableQuestions.Answers[idx].InstanceId = obj.anwsers[i].instanceId
+ item.TableQuestions.Answers[idx].SeriesId = obj.anwsers[i].seriesId
+ item.TableQuestions.Answers[idx][i] = JSON.stringify(obj.anwsers[i])
+ } else {
+ item.TableQuestions.Answers[idx][i] = String(obj.anwsers[i])
+ }
+ }
+ break
+ }
+ if (item.Childrens.length > 0) {
+ this.findQuestionAndUpdateLesion(item.Childrens, obj)
+ }
+ }
+ return questions
+}
+function findQuestionAndAddLesion(questions, obj) {
+ for (var i = 0; i < questions.length; i++) {
+ if (questions[i].Type === 'table' && questions[i].TableQuestions && (questions[i].LesionType === obj.lesionType)) {
+ var sourceObj = {}
+ questions[i].TableQuestions.Questions.forEach(item => {
+ sourceObj[item.Id] = ''
+ })
+ var targetObj = Object.assign(sourceObj, obj.lesionObj)
+ targetObj.IsCurrentTaskAdd = 'True'
+ questions[i].TableQuestions.Answers.push(targetObj)
+ break
+ }
+ if (questions[i].Childrens.length > 0) {
+ findQuestionAndAddLesion(questions[i].Childrens, obj)
+ }
+ }
+ return questions
+}
+function getQuestionAnswer(questions, questionMark, answers) {
+ var idx = questions.findIndex(i => i.QuestionMark === questionMark)
+ if (idx > -1) {
+ var questionId = questions[idx].Id
+ return answers[questionId]
+ } else {
+ return ''
+ }
+}
+
+const state = getDefaultState
+
+const mutations = {
+}
+
+const actions = {
+ getOrganInfo({ state }, visitTaskId) {
+ return new Promise(resolve => {
+ getReadingOrganList({ visitTaskId: visitTaskId }).then(res => {
+ state.organList = res.Result
+ sessionStorage.setItem('organList', state.organList.length > 0 ? JSON.stringify(state.organList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ })
+ },
+ getVisitTasks({ state }, visitTaskId) {
+ return new Promise(resolve => {
+ getRelatedVisitTask({ visitTaskId: visitTaskId }).then(res => {
+ res.Result.forEach(item => {
+ item.questionsInit = false
+ item.readingQuestionsInit = false
+ item.measureDataInit = false
+ item.IsInit = false
+ })
+ state.visitTaskList = res.Result
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ const currentTaskIdx = res.Result.findIndex(item => item.IsCurrentTask)
+ if (currentTaskIdx > -1) {
+ state.currentTaskId = res.Result[currentTaskIdx].VisitTaskId
+ state.currentReadingTaskState = res.Result[currentTaskIdx].ReadingTaskState
+ }
+ resolve()
+ }).catch(() => { resolve() })
+ })
+ },
+ resetVisitTasks({ state }) {
+ return new Promise(resolve => {
+ sessionStorage.setItem('visitTaskList', '')
+ state.visitTaskList = []
+ state.currentTaskId = ''
+ state.activeSeries = {}
+ state.lastCanvasTaskId = ''
+ state.imageQuality = null
+ resolve()
+ })
+ },
+ getMasterSeries({ state }, obj) {
+ return new Promise(resolve => {
+ var seriesInfo = {}
+ var i = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ getReadingVisitStudyList(obj.trialId, obj.visitId, obj.visitTaskId).then(res => {
+ var studyList = state.visitTaskList[i].StudyList
+ var idx = res.Result.findIndex(study => study.IsCriticalSequence)
+ if (idx > -1) {
+ var study = res.Result[idx]
+ seriesInfo.StudyId = study.StudyId
+ seriesInfo.StudyCode = study.StudyCode
+ seriesInfo.Modalities = study.Modalities
+ seriesInfo.SeriesCount = study.SeriesCount
+ seriesInfo.InstanceCount = study.InstanceCount
+ seriesInfo.InstanceCount = study.InstanceCount
+ seriesInfo.IsDicom = study.IsDicom
+ seriesInfo.PreviewImageCount = 0
+ seriesInfo.IsCriticalSequence = study.IsCriticalSequence
+ var seriesList = []
+ study.SeriesList.forEach((series, index) => {
+ const imageIds = []
+
+ series.InstancePathList.forEach((path) => {
+ imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
+ })
+ seriesList.push({
+ isDicom: study.IsDicom,
+ imageIds: imageIds,
+ instanceList: series.InstanceList,
+ seriesId: series.Id,
+ imageIdIndex: 0,
+ seriesUid: series.SeriesInstanceUid,
+ seriesNumber: series.SeriesNumber,
+ sliceThickness: series.SliceThickness,
+ modality: series.Modality,
+ description: series.Description,
+ previewImageUrl: study.IsDicom ? series.ImageResizePath ? Vue.prototype.OSSclientConfig.basePath + series.ImageResizePath : `/api/series/preview/${series.Id}` : Vue.prototype.OSSclientConfig.basePath + `${series.NoneDicomFileFirstFile}`,
+ instanceCount: series.InstanceCount,
+ prefetchInstanceCount: series.InstanceCount,
+ loadStatus: true,
+ imageloadedArr: series.InstanceList,
+ studyId: study.StudyId,
+ studyIndex: 0,
+ seriesIndex: index,
+ taskBlindName: state.visitTaskList[i].TaskBlindName,
+ visitTaskId: obj.visitTaskId,
+ readingTaskState: state.visitTaskList[i].ReadingTaskState,
+ isBaseLineTask: state.visitTaskList[i].IsBaseLineTask,
+ isCurrentTask: state.visitTaskList[i].IsCurrentTask,
+ isLoading: false,
+ isBeMark: series.IsBeMark
+ })
+ })
+ seriesInfo.SeriesList = seriesList
+
+ studyList.unshift(seriesInfo)
+ studyList.forEach((study, sIdx) => {
+ study.SeriesList.forEach(series => {
+ series.studyIndex = sIdx
+ })
+ })
+ }
+
+ state.visitTaskList[i].StudyList = studyList
+ resolve(seriesInfo)
+ }).catch(() => { resolve() })
+ })
+ },
+ getNextVisitTask({ state }, obj) {
+ return new Promise(resolve => {
+ getRelatedVisitTask({ visitTaskId: obj.visitTaskId }).then(res => {
+ state.visitTaskList.forEach(item => {
+ item.ReadingTaskState = 2
+ item.IsCurrentTask = false
+ })
+ var idx = res.Result.findIndex(item => item.IsCurrentTask === true)
+ if (idx > -1) {
+ var obj = res.Result[idx]
+ obj.questionsInit = false
+ obj.readingQuestionsInit = false
+ obj.measureDataInit = false
+ obj.studyListInit = false
+ obj.IsInit = false
+ obj.MeasureData = []
+ obj.Questions = []
+ obj.ReadingQuestions = []
+ obj.StudyList = []
+ var i = state.visitTaskList.findIndex(i => i.VisitId === res.Result[idx].VisitId)
+ if (i > -1) {
+ state.visitTaskList.splice(i, 1)
+ requestPoolManager.resetCachedTask()
+ }
+ state.visitTaskList.push(obj)
+ }
+
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ })
+ },
+ setVisitTaskReadingTaskState({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (index > -1) {
+ state.visitTaskList[index].ReadingTaskState = obj.readingTaskState
+ state.visitTaskList[index].StudyList.forEach(study => {
+ study.SeriesList.forEach(series => {
+ series.readingTaskState = obj.readingTaskState
+ })
+ })
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+
+ getDicomReadingQuestionAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (state.visitTaskList[index].questionsInit) {
+ resolve()
+ } else {
+ var params = {
+ trialId: obj.trialId,
+ visitTaskId: obj.visitTaskId
+ }
+ getDicomReadingQuestionAnswer(params).then(res => {
+ state.visitTaskList[index].Questions = res.Result
+ state.visitTaskList[index].questionsInit = true
+ state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ }
+ })
+ },
+ refreshDicomReadingQuestionAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+
+ var params = {
+ trialId: obj.trialId,
+ visitTaskId: obj.visitTaskId
+ }
+ getDicomReadingQuestionAnswer(params).then(res => {
+ state.visitTaskList[index].Questions = res.Result
+ state.visitTaskList[index].questionsInit = true
+ state.visitTaskList[index].QuestionMarkInfoList = res.OtherInfo.QuestionMarkInfoList
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ })
+ },
+ getReadingQuestionAndAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (state.visitTaskList[index].readingQuestionsInit) {
+ resolve()
+ } else {
+ var params = {
+ trialId: obj.trialId,
+ visitTaskId: obj.visitTaskId
+ }
+ getReadingQuestionAndAnswer(params).then(res => {
+ var list = getQuestions(res.Result.SinglePage)
+ state.visitTaskList[index].ReadingQuestions = list
+ state.visitTaskList[index].readingQuestionsInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ }
+ })
+ },
+ refreshReadingQuestionAndAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var params = {
+ trialId: obj.trialId,
+ visitTaskId: obj.visitTaskId
+ }
+ getReadingQuestionAndAnswer(params).then(res => {
+ var list = getQuestions(res.Result.SinglePage)
+ state.visitTaskList[index].ReadingQuestions = list
+ state.visitTaskList[index].readingQuestionsInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ })
+ },
+ setReadingQuestionAndAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (index > -1) {
+ state.visitTaskList[index].ReadingQuestions = obj.questions
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ addReadingQuestionAndAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (index > -1) {
+ var questions = state.visitTaskList[index].ReadingQuestions
+ questions = findQuestionAndAddLesion(questions, obj)
+ state.visitTaskList[index].ReadingQuestions = questions
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ updateReadingQuesstionAndAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (index > -1) {
+ var questions = state.visitTaskList[index].ReadingQuestions
+ questions = findQuestionAndUpdateLesion(questions, obj)
+ state.visitTaskList[index].ReadingQuestions = questions
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ removeReadingQuestionAndAnswer({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (index > -1) {
+ var questions = state.visitTaskList[index].ReadingQuestions
+ questions = findQuestionAndRemoveLesion(questions, obj)
+ state.visitTaskList[index].ReadingQuestions = questions
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ getCustomizeMeasuredData({ state }, visitTaskId) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
+ if (state.visitTaskList[index].measureDataInit) {
+ resolve()
+ } else {
+ getCustomTag({ visitTaskId: visitTaskId }).then(res => {
+ var arr = []
+ console.log(res.Result)
+ res.Result.forEach(el => {
+ if (el.MeasureData) {
+ el.MeasureData = JSON.parse(el.MeasureData)
+ }
+ arr.push(el)
+ })
+ state.visitTaskList[index].MeasureData = arr
+ state.visitTaskList[index].measureDataInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ }
+ })
+ },
+ getMeasuredData({ state }, visitTaskId) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
+ if (state.visitTaskList[index].measureDataInit) {
+ resolve()
+ } else {
+ getTableAnswerRowInfoList(visitTaskId).then(res => {
+ var arr = []
+ res.Result.forEach(el => {
+ if (el.MeasureData) {
+ el.MeasureData = JSON.parse(el.MeasureData)
+ el.MeasureData.data.remark = el.OrderMarkName
+ }
+ if (el.OtherMeasureData) {
+ el.OtherMeasureData = JSON.parse(el.OtherMeasureData)
+ el.OtherMeasureData.data.remark = el.OrderMarkName
+ }
+ arr.push(el)
+ })
+ state.visitTaskList[index].MeasureData = arr
+ state.visitTaskList[index].measureDataInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ }
+ })
+ },
+ removeCustomizeMeasuredData({ state }, obj) {
+ return new Promise(async resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+
+ // var uuid = obj.measureData.data.uuid
+ // var idx = measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
+ console.log(obj, measureData)
+ var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id)
+ console.log('idx', idx)
+ if (idx > -1) {
+ if (measureData[idx].FristAddTaskId) {
+ measureData[idx].MeasureData = ''
+ console.log('清除标记成功', idx)
+ } else {
+ measureData.splice(idx, 1)
+ console.log('移除标记成功', idx)
+ }
+ await deleteCustomTag(obj.questionInfo.Id)
+ state.visitTaskList[index].MeasureData = measureData
+ } else if (obj.orderMarkName) {
+ const i = measureData.findIndex(item => item.QuestionId === obj.questionId && item.OrderMarkName === obj.orderMarkName)
+ if (i > -1) {
+ if (measureData[i].FristAddTaskId) {
+ measureData[i].MeasureData = ''
+ console.log('清除标记成功', i)
+ } else {
+ measureData.splice(i, 1)
+ console.log('移除标记成功', i)
+ }
+ }
+ await deleteCustomTag(obj.questionInfo.Id)
+ state.visitTaskList[index].MeasureData = measureData
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ refreshCustomizeMeasuredData({ state }, visitTaskId) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
+ getCustomTag({ visitTaskId: visitTaskId }).then(res => {
+ var arr = []
+ console.log(res.Result)
+ res.Result.forEach(el => {
+ if (el.MeasureData) {
+ el.MeasureData = JSON.parse(el.MeasureData)
+ }
+ arr.push(el)
+ })
+ state.visitTaskList[index].MeasureData = arr
+ state.visitTaskList[index].measureDataInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ })
+ },
+ refreshMeasuredData({ state }, visitTaskId) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
+ getTableAnswerRowInfoList(visitTaskId).then(res => {
+ var arr = []
+ res.Result.forEach(el => {
+ if (el.MeasureData) {
+ el.MeasureData = JSON.parse(el.MeasureData)
+ el.MeasureData.data.remark = el.OrderMarkName
+ }
+ arr.push(el)
+ })
+ state.visitTaskList[index].MeasureData = arr
+ state.visitTaskList[index].measureDataInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ })
+ },
+ getNoneDicomMeasuredData({ state }, visitTaskId) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+ var noneDicomMeasureData = measureData.filter(item => !item.IsDicomReading)
+ resolve(noneDicomMeasureData)
+ })
+ },
+ addMeasuredData({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+ // var idx = measureData.findIndex(item => item.MeasureData.uuid === obj.data.MeasureData.data.uuid)
+ var idx = measureData.findIndex(item => item.QuestionId === obj.data.QuestionId && item.RowIndex === obj.data.RowIndex)
+ if (idx > -1) {
+ for (const k in state.visitTaskList[index].MeasureData[idx]) {
+ if (k !== 'Id' && obj.data[k]) {
+ state.visitTaskList[index].MeasureData[idx][k] = obj.data[k]
+ }
+ }
+
+ // state.visitTaskList[index].MeasureData[idx].MeasureData = obj.data.MeasureData
+ console.log('更新标记成功', idx)
+ } else {
+ state.visitTaskList[index].MeasureData.push(obj.data)
+ console.log('新增标记成功')
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ console.log(state.visitTaskList)
+ resolve()
+ })
+ },
+ addOrUpdateNonTargetMeasuredData({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+ console.log('addOrUpdateNonTargetMeasuredData')
+ var idx = measureData.findIndex(item => item.QuestionId === obj.data.QuestionId && item.OrderMarkName === obj.data.OrderMarkName)
+ if (idx > -1) {
+ for (const k in state.visitTaskList[index].MeasureData[idx]) {
+ if (k !== 'Id' && obj.data[k]) {
+ state.visitTaskList[index].MeasureData[idx][k] = obj.data[k]
+ }
+ }
+ console.log('更新标记成功', idx)
+ } else {
+ state.visitTaskList[index].MeasureData.push(obj.data)
+ console.log('新增标记成功')
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ removeNonTargetMeasuredData({ state }, obj) {
+ return new Promise(resolve => {
+ console.log('removeNonTargetMeasuredData')
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+ var idx = measureData.findIndex(item => item.QuestionId === obj.questionId)
+ if (idx > -1) {
+ if (measureData[idx].FristAddTaskId) {
+ measureData[idx].MeasureData = ''
+ console.log('清除标记成功', idx)
+ } else {
+ measureData.splice(idx, 1)
+ console.log('移除标记成功', idx)
+ }
+ state.visitTaskList[index].MeasureData = measureData
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ addCustomizeMeasuredData({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+ console.log(measureData, obj)
+ // var idx = measureData.findIndex(item => item.MeasureData.uuid === obj.data.MeasureData.data.uuid)
+ if (!obj.questionInfo) {
+ state.visitTaskList[index].MeasureData.push({
+ MeasureData: obj,
+ SeriesId: obj.seriesId,
+ StudyId: obj.studyId,
+ InstanceId: obj.instanceId,
+ Id: obj.Id
+ })
+ console.log('新增标记成功')
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }
+ var idx = measureData.findIndex(item => item.Id === obj.questionInfo.Id)
+ if (idx > -1) {
+ for (const k in state.visitTaskList[index].MeasureData[idx]) {
+ if (k !== 'Id' && obj.MeasureData.data[k]) {
+ state.visitTaskList[index].MeasureData[idx][k] = obj.MeasureData.data[k]
+ }
+ }
+ // state.visitTaskList[index].MeasureData[idx].MeasureData = obj.data.MeasureData
+ console.log('更新标记成功', idx)
+ } else {
+ state.visitTaskList[index].MeasureData.push(obj.MeasureData.data)
+ console.log('新增标记成功')
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ removeMeasuredData({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+
+ // var uuid = obj.measureData.data.uuid
+ // var idx = measureData.findIndex(item => item.MeasureData && item.MeasureData.data && item.MeasureData.data.uuid === uuid)
+ var idx = measureData.findIndex(item => item.QuestionId === obj.questionId && item.RowIndex === obj.rowIndex)
+ if (idx > -1) {
+ if (measureData[idx].FristAddTaskId) {
+ measureData[idx].MeasureData = ''
+ console.log('清除标记成功', idx)
+ } else {
+ measureData.splice(idx, 1)
+ console.log('移除标记成功', idx)
+ }
+ state.visitTaskList[index].MeasureData = measureData
+ } else if (obj.orderMarkName) {
+ const i = measureData.findIndex(item => item.QuestionId === obj.questionId && item.OrderMarkName === obj.orderMarkName)
+ if (i > -1) {
+ if (measureData[i].FristAddTaskId) {
+ measureData[i].MeasureData = ''
+ console.log('清除标记成功', i)
+ } else {
+ measureData.splice(i, 1)
+ console.log('移除标记成功', i)
+ }
+ }
+ state.visitTaskList[index].MeasureData = measureData
+ }
+ // if (idx > -1) {
+ // measureData.splice(idx, 1)
+
+ // state.visitTaskList[index].MeasureData = measureData
+ // console.log('移除标记成功', idx)
+ // } else if (obj.orderMarkName) {
+ // const i = measureData.findIndex(item => item.QuestionId === obj.questionId && item.OrderMarkName === obj.orderMarkName)
+ // measureData.splice(i, 1)
+
+ // state.visitTaskList[index].MeasureData = measureData
+ // }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ updateMeasureDataStatus({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].MeasureData
+ var idx = measureData.findIndex(item => item.QuestionId === obj.questionId && item.RowIndex === obj.rowIndex)
+ if (idx > -1 && measureData[idx].MeasureData) {
+ measureData[idx].MeasureData.data.status = obj.status
+ state.visitTaskList[index].MeasureData = measureData
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ getStudyInfo({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (state.visitTaskList[index].studyListInit) {
+ resolve()
+ } else {
+ var studyList = []
+ // getVisitStudyList
+ // getReadingVisitStudyList
+ getReadingVisitStudyList(obj.trialId, obj.subjectVisitId, obj.visitTaskId).then(res => {
+ res.Result.forEach((study, studyIndex) => {
+ const data = {}
+ data.StudyId = study.StudyId
+ data.StudyCode = study.StudyCode
+ data.Modalities = study.Modalities
+ data.SeriesCount = study.SeriesCount
+ data.InstanceCount = study.InstanceCount
+ data.InstanceCount = study.InstanceCount
+ data.IsDicom = study.IsDicom
+ data.PreviewImageCount = 0
+ data.IsCriticalSequence = study.IsCriticalSequence
+ var seriesList = []
+ study.SeriesList.forEach((series, seriesIndex) => {
+ const imageIds = []
+ try {
+ // if (~window.location.href.indexOf('3c210000-3e2c-0016-4247-08dabf28e96b')) {
+ series.InstancePathList.forEach((path) => {
+ // var path = id.split('/')[id.split('/').length - 1]
+ imageIds.push(`wadouri:${localStorage.getItem('location') !== 'USA' ? Vue.prototype.OSSclientConfig.basePath : Vue.prototype.OSSclientConfig.basePath}${path}`)
+ })
+ } catch (e) {
+ console.log(e)
+ }
+ seriesList.push({
+ isDicom: study.IsDicom,
+ imageIds: imageIds,
+ instanceList: series.InstanceList,
+ seriesId: series.Id,
+ imageIdIndex: 0,
+ seriesUid: series.SeriesInstanceUid,
+ seriesNumber: series.SeriesNumber,
+ sliceThickness: series.SliceThickness,
+ modality: series.Modality,
+ description: series.Description,
+ previewImageUrl: study.IsDicom ? series.ImageResizePath ? Vue.prototype.OSSclientConfig.basePath + series.ImageResizePath : `/api/series/preview/${series.Id}` : Vue.prototype.OSSclientConfig.basePath + `${series.NoneDicomFileFirstFile}`,
+ instanceCount: series.InstanceCount,
+ prefetchInstanceCount: 0,
+ loadStatus: false,
+ imageloadedArr: [],
+ studyId: study.StudyId,
+ studyIndex: studyIndex,
+ seriesIndex: seriesIndex,
+ taskBlindName: state.visitTaskList[index].TaskBlindName,
+ visitTaskId: obj.visitTaskId,
+ readingTaskState: state.visitTaskList[index].ReadingTaskState,
+ isBaseLineTask: state.visitTaskList[index].IsBaseLineTask,
+ isCurrentTask: state.visitTaskList[index].IsCurrentTask,
+ isLoading: false,
+ isBeMark: series.IsBeMark,
+ ww: series.WindowWidth,
+ wc: series.WindowCenter
+ })
+ })
+ data.SeriesList = seriesList
+ studyList.push(data)
+ })
+ state.visitTaskList[index].StudyList = studyList
+ state.visitTaskList[index].studyListInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ }).catch(() => { resolve() })
+ }
+ })
+ },
+
+ updateStudyList({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ if (index > -1) {
+ var studyList = state.visitTaskList[index].StudyList || []
+ if (studyList) {
+ for (var i = 0; i < studyList.length; i++) {
+ for (var j = 0; j < studyList[i].SeriesList.length; j++) {
+ if (studyList[i].SeriesList[j].seriesUid === obj.seriesUid || !studyList[i].SeriesList[j].seriesUid) {
+ var idx = studyList[i].SeriesList[j].imageIds.findIndex(image => image === obj.imageId)
+ if (idx > -1 && studyList[i].SeriesList[j].imageloadedArr.indexOf(obj.imageId) < 0) {
+ ++studyList[i].SeriesList[j].prefetchInstanceCount
+ studyList[i].SeriesList[j].imageloadedArr.push(obj.imageId)
+ // studyList[i].SeriesList[j].isLoading = true
+ if (studyList[i].SeriesList[j].prefetchInstanceCount >= studyList[i].SeriesList[j].instanceCount) {
+ studyList[i].SeriesList[j].prefetchInstanceCount = studyList[i].SeriesList[j].instanceCount
+ // 设置当前序列状态为已下载完成
+ studyList[i].SeriesList[j].loadStatus = true
+ }
+ }
+ }
+ }
+ }
+ }
+ state.visitTaskList[index].StudyList = studyList
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ } else {
+ // console.log(obj)
+ }
+ resolve()
+ })
+ },
+ setStatus({ state }, obj) {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ state.visitTaskList[index].IsInit = true
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ },
+ setActiveSeries({ state }, series) {
+ return new Promise(resolve => {
+ state.activeSeries = series
+ resolve()
+ })
+ },
+ setLastCanvasTaskId({ state }, taskId) {
+ return new Promise(resolve => {
+ state.lastCanvasTaskId = taskId
+ resolve()
+ })
+ },
+ setCurrentReadingTaskState({ state }, readingTaskState) {
+ return new Promise(resolve => {
+ state.currentReadingTaskState = readingTaskState
+ resolve()
+ })
+ },
+ setSeriesStack({ state }, seriesStack) {
+ state.seriesStack = seriesStack
+ },
+ setImageQuality({ state }, imageQuality) {
+ state.imageQuality = isNaN(parseInt(imageQuality)) ? null : parseInt(imageQuality)
+ },
+ addQuestionMeasuredData({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].QuestionMarkInfoList
+ var idx = measureData.findIndex(item => item.QuestionId === obj.data.QuestionId)
+ if (idx > -1) {
+ for (const k in state.visitTaskList[index].QuestionMarkInfoList[idx]) {
+ if (k !== 'Id' && obj.data[k]) {
+ state.visitTaskList[index].QuestionMarkInfoList[idx][k] = obj.data[k]
+ }
+ }
+ console.log('更新标记成功', idx)
+ } else {
+ state.visitTaskList[index].QuestionMarkInfoList.push(obj.data)
+ console.log('新增标记成功')
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ },
+ removeQuestionMeasuredData({ state }, obj) {
+ return new Promise(resolve => {
+ var index = state.visitTaskList.findIndex(i => i.VisitTaskId === obj.visitTaskId)
+ var measureData = state.visitTaskList[index].QuestionMarkInfoList
+ if (obj.orderMarkName) {
+ const i = measureData.findIndex(item => item.QuestionId === obj.questionId && item.OrderMarkName === obj.orderMarkName)
+ if (i > -1) {
+ measureData[i].MeasureData = ''
+ console.log('清除标记成功', i)
+ }
+ state.visitTaskList[index].QuestionMarkInfoList = measureData
+ }
+ sessionStorage.setItem('visitTaskList', state.visitTaskList.length > 0 ? JSON.stringify(state.visitTaskList) : '')
+ resolve()
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
+
diff --git a/src/store/modules/reviewer.js b/src/store/modules/reviewer.js
new file mode 100644
index 0000000..e61aff8
--- /dev/null
+++ b/src/store/modules/reviewer.js
@@ -0,0 +1,33 @@
+const getDefaultState = () => {
+ return {
+ reviewersQuery: null,
+ isEnglish: true
+ }
+}
+const state = getDefaultState
+
+const mutations = {
+ RESET_STATE: (state) => {
+ Object.assign(state, getDefaultState())
+ },
+ SET_QUERYPARAM: (state, query) => {
+ state.reviewersQuery = query
+ },
+ SET_ISENGLISH: (state, isEnglish) => {
+ state.isEnglish = isEnglish
+ }
+}
+
+const actions = {
+ resetState({ commit }) {
+ commit('RESET_STATE')
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
+
diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js
new file mode 100644
index 0000000..d2e9a56
--- /dev/null
+++ b/src/store/modules/settings.js
@@ -0,0 +1,32 @@
+import defaultSettings from '@/settings'
+
+const { showSettings, tagsView, fixedHeader, sidebarLogo } = defaultSettings
+
+const state = {
+ showSettings: showSettings,
+ tagsView: tagsView,
+ fixedHeader: fixedHeader,
+ sidebarLogo: sidebarLogo
+}
+
+const mutations = {
+ CHANGE_SETTING: (state, { key, value }) => {
+ if (Object.prototype.hasOwnProperty.call(state, key)) {
+ state[key] = value
+ }
+ }
+}
+
+const actions = {
+ changeSetting({ commit }, data) {
+ commit('CHANGE_SETTING', data)
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
+
diff --git a/src/store/modules/tagsView.js b/src/store/modules/tagsView.js
new file mode 100644
index 0000000..57e7242
--- /dev/null
+++ b/src/store/modules/tagsView.js
@@ -0,0 +1,160 @@
+const state = {
+ visitedViews: [],
+ cachedViews: []
+}
+
+const mutations = {
+ ADD_VISITED_VIEW: (state, view) => {
+ if (state.visitedViews.some(v => v.path === view.path)) return
+ state.visitedViews.push(
+ Object.assign({}, view, {
+ title: view.meta.title || 'no-name'
+ })
+ )
+ },
+ ADD_CACHED_VIEW: (state, view) => {
+ if (state.cachedViews.includes(view.name)) return
+ if (!view.meta.noCache) {
+ state.cachedViews.push(view.name)
+ }
+ },
+
+ DEL_VISITED_VIEW: (state, view) => {
+ for (const [i, v] of state.visitedViews.entries()) {
+ if (v.path === view.path) {
+ state.visitedViews.splice(i, 1)
+ break
+ }
+ }
+ },
+ DEL_CACHED_VIEW: (state, view) => {
+ const index = state.cachedViews.indexOf(view.name)
+ index > -1 && state.cachedViews.splice(index, 1)
+ },
+
+ DEL_OTHERS_VISITED_VIEWS: (state, view) => {
+ state.visitedViews = state.visitedViews.filter(v => {
+ return v.meta.affix || v.path === view.path
+ })
+ },
+ DEL_OTHERS_CACHED_VIEWS: (state, view) => {
+ const index = state.cachedViews.indexOf(view.name)
+ if (index > -1) {
+ state.cachedViews = state.cachedViews.slice(index, index + 1)
+ } else {
+ // if index = -1, there is no cached tags
+ state.cachedViews = []
+ }
+ },
+
+ DEL_ALL_VISITED_VIEWS: state => {
+ // keep affix tags
+ const affixTags = state.visitedViews.filter(tag => tag.meta.affix)
+ state.visitedViews = affixTags
+ },
+ DEL_ALL_CACHED_VIEWS: state => {
+ state.cachedViews = []
+ },
+
+ UPDATE_VISITED_VIEW: (state, view) => {
+ for (let v of state.visitedViews) {
+ if (v.path === view.path) {
+ v = Object.assign(v, view)
+ break
+ }
+ }
+ }
+}
+
+const actions = {
+ addView({ dispatch }, view) {
+ dispatch('addVisitedView', view)
+ dispatch('addCachedView', view)
+ },
+ addVisitedView({ commit }, view) {
+ commit('ADD_VISITED_VIEW', view)
+ },
+ addCachedView({ commit }, view) {
+ commit('ADD_CACHED_VIEW', view)
+ },
+
+ delView({ dispatch, state }, view) {
+ return new Promise(resolve => {
+ dispatch('delVisitedView', view)
+ dispatch('delCachedView', view)
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews]
+ })
+ })
+ },
+ delVisitedView({ commit, state }, view) {
+ return new Promise(resolve => {
+ commit('DEL_VISITED_VIEW', view)
+ resolve([...state.visitedViews])
+ })
+ },
+ delCachedView({ commit, state }, view) {
+ return new Promise(resolve => {
+ commit('DEL_CACHED_VIEW', view)
+ resolve([...state.cachedViews])
+ })
+ },
+
+ delOthersViews({ dispatch, state }, view) {
+ return new Promise(resolve => {
+ dispatch('delOthersVisitedViews', view)
+ dispatch('delOthersCachedViews', view)
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews]
+ })
+ })
+ },
+ delOthersVisitedViews({ commit, state }, view) {
+ return new Promise(resolve => {
+ commit('DEL_OTHERS_VISITED_VIEWS', view)
+ resolve([...state.visitedViews])
+ })
+ },
+ delOthersCachedViews({ commit, state }, view) {
+ return new Promise(resolve => {
+ commit('DEL_OTHERS_CACHED_VIEWS', view)
+ resolve([...state.cachedViews])
+ })
+ },
+
+ delAllViews({ dispatch, state }, view) {
+ return new Promise(resolve => {
+ dispatch('delAllVisitedViews', view)
+ dispatch('delAllCachedViews', view)
+ resolve({
+ visitedViews: [...state.visitedViews],
+ cachedViews: [...state.cachedViews]
+ })
+ })
+ },
+ delAllVisitedViews({ commit, state }) {
+ return new Promise(resolve => {
+ commit('DEL_ALL_VISITED_VIEWS')
+ resolve([...state.visitedViews])
+ })
+ },
+ delAllCachedViews({ commit, state }) {
+ return new Promise(resolve => {
+ commit('DEL_ALL_CACHED_VIEWS')
+ resolve([...state.cachedViews])
+ })
+ },
+
+ updateVisitedView({ commit }, view) {
+ commit('UPDATE_VISITED_VIEW', view)
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
diff --git a/src/store/modules/trials.js b/src/store/modules/trials.js
new file mode 100644
index 0000000..5fd2c20
--- /dev/null
+++ b/src/store/modules/trials.js
@@ -0,0 +1,68 @@
+import { getSignText } from '@/api/trials'
+const getDefaultState = () => {
+ return {
+ trialDetailActiveName: '',
+ trialQuery: null,
+ subjectQuery: null,
+ visitPlanQuery: null,
+ visitPointQuery: null,
+ studyListQuery: null
+ }
+}
+
+const state = getDefaultState
+
+const mutations = {
+ RESET_TRIALS: (state) => {
+ Object.assign(state, getDefaultState())
+ },
+ SET_ACTIVENAME: (state, activeName) => {
+ state.trialDetailActiveName = activeName
+ },
+ SET_QUERYPARAM: (state, trialQuery) => {
+ state.trialQuery = trialQuery
+ },
+ SET_SUBJECTPARAM: (state, subjectQuery) => {
+ state.subjectQuery = subjectQuery
+ },
+ SET_VISITPLANPARAM: (state, visitPlanQuery) => {
+ state.visitPlanQuery = visitPlanQuery
+ },
+ SET_VISITPOINTPARAM: (state, visitPointQuery) => {
+ state.visitPointQuery = visitPointQuery
+ },
+ SET_STUDYLISTPARAM: (state, studyListQuery) => {
+ state.studyListQuery = studyListQuery
+ }
+}
+
+const actions = {
+ setActiveName({ commit }, activeName) {
+ commit('SET_ACTIVENAME', activeName)
+ },
+ resetState({ commit }) {
+ commit('RESET_TRIALS')
+ },
+ getSignInfo({ commit }, signInfo) {
+ const { signCode } = signInfo
+ return new Promise((resolve, reject) => {
+ getSignText(signCode).then(response => {
+ if (response.IsSuccess) {
+ resolve(response.Result)
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
+
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 0000000..406d325
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,292 @@
+import { getToken, setToken, removeToken, setName, removeName } from '@/utils/auth'
+import { login, getUserMenuTree, getUserPermissions, getUserLoginRoleList, loginSelectUserRole } from '@/api/user'
+import { getUser } from '@/api/admin'
+
+import { resetRouter } from '@/router'
+import md5 from 'js-md5'
+const getDefaultState = () => {
+ return {
+ token: getToken(),
+ name: '',
+ userTypeShortName: "",
+ userName: '',
+ userId: '',
+ identityUserId: '',
+ avatar: '',
+ permissions: [],
+ tree: [],
+ /* eslint-disable */
+ TotalNeedSignSystemDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0,
+ TotalNeedSignTrialDocCount: eval(process.env.VUE_APP_WORD_FOR_PERMISSION) ? null : 0,
+ IsFirstSysDocNeedSign: false,
+ TrialStatusStr: null,
+ isTestUser: false,
+ roles: []
+ }
+}
+
+const state = getDefaultState()
+
+const mutations = {
+ SET_ROLES: (state, roles) => {
+ state.roles = roles
+ },
+ RESET_STATE: (state) => {
+ Object.assign(state, getDefaultState())
+ },
+ SET_TOKEN: (state, token) => {
+ zzSessionStorage.setItem('TokenKey', token)
+ // document.cookie = 'access_token=' + token + ';path=/'
+ state.token = token
+ },
+ SET_NAME: (state, name) => {
+ state.name = name
+ },
+ SET_USERTYPESHORTNAME: (state, userTypeShortName) => {
+ state.userTypeShortName = userTypeShortName
+ },
+ SET_USERNAME: (state, name) => {
+ state.userName = name
+ },
+ SET_TREE: (state, tree) => {
+ state.tree = tree
+ },
+ SET_PERMISSIONS: (state, permissions) => {
+ state.permissions = permissions
+ },
+ SET_AVATAR: (state, avatar) => {
+ state.avatar = avatar
+ },
+ SET_USERID: (state, id) => {
+ state.userId = id
+ },
+ SET_IDENTITYUSERID: (state, id) => {
+ state.identityUserId = id
+ },
+ SET_ISTESTUSER: (state, isTestUser) => {
+ state.isTestUser = eval(isTestUser)
+ },
+ SET_NEED_SIGN_SYSTEM_DOC_COUNT: (state, TotalNeedSignSystemDocCount) => {
+ /* eslint-disable */
+ if (eval(process.env.VUE_APP_WORD_FOR_PERMISSION) && !state.isTestUser) {
+ zzSessionStorage.setItem('TotalNeedSignSystemDocCount', TotalNeedSignSystemDocCount)
+ state.TotalNeedSignSystemDocCount = TotalNeedSignSystemDocCount
+ } else {
+ zzSessionStorage.setItem('TotalNeedSignSystemDocCount', 0)
+ state.TotalNeedSignSystemDocCount = 0
+ }
+ },
+ SET_NEED_SIGN_TRIALS_DOC_COUNT: (state, TotalNeedSignTrialDocCount) => {
+ if (eval(process.env.VUE_APP_WORD_FOR_PERMISSION) && !state.isTestUser) {
+ zzSessionStorage.setItem('TotalNeedSignTrialDocCount', TotalNeedSignTrialDocCount)
+ state.TotalNeedSignTrialDocCount = TotalNeedSignTrialDocCount
+ } else {
+ zzSessionStorage.setItem('TotalNeedSignTrialDocCount', 0)
+ state.TotalNeedSignTrialDocCount = 0
+ }
+ },
+ SET_TRIAL_STATUS_STR: (state, TrialStatusStr) => {
+ zzSessionStorage.setItem('TrialStatusStr', TrialStatusStr)
+ state.TrialStatusStr = TrialStatusStr
+ }
+}
+
+const actions = {
+ // user login
+ setRoles({ commit }, roles) {
+ commit('SET_ROLES', roles)
+ },
+ changeUserName({ commit }, userName) {
+ commit('SET_USERNAME', userName)
+ },
+ // user login
+ login({ commit }, userInfo) {
+ const { username, password, UserId } = userInfo
+ return new Promise((resolve, reject) => {
+ let data = {
+ UserName: username.trim(), Password: md5(password)
+ }
+ if (UserId) {
+ data.UserId = UserId;
+ }
+ getUserLoginRoleList(data).then(async response => {
+ if (response.IsSuccess) {
+ zzSessionStorage.removeItem('lastWorkbench')
+ zzSessionStorage.setItem('my_username', username.trim())
+ zzSessionStorage.setItem('my_password', md5(password))
+ zzSessionStorage.setItem('my_EMail', response.Result.BasicInfo.EMail)
+ localStorage.setItem('CompanyInfo', JSON.stringify(response.Result.CompanyInfo))
+ const data = response.Result
+ commit('SET_ROLES', data.BasicInfo.AccountList)
+ if (data.BasicInfo.IsFirstAdd || data.BasicInfo.LoginState === 1) {
+ try {
+ zzSessionStorage.setItem('userId', data.BasicInfo.Id)
+ commit('SET_TOKEN', data.JWTStr)
+ setToken(data.JWTStr)
+ resolve(response.Result)
+ } catch (e) {
+ console.log(e)
+ }
+ } else {
+ try {
+ zzSessionStorage.setItem('IsAdmin', data.BasicInfo.IsAdmin)
+ zzSessionStorage.setItem('IsReviewer', data.BasicInfo.IsReviewer)
+ zzSessionStorage.setItem('userName', data.BasicInfo.UserName)
+ commit('SET_TOKEN', data.JWTStr)
+ // commit('SET_NAME', data.BasicInfo.UserName)
+ zzSessionStorage.setItem('isTestUser', data.BasicInfo.IsTestUser)
+ commit('SET_ISTESTUSER', data.BasicInfo.IsTestUser)
+ commit('SET_USERNAME', data.BasicInfo.UserName)
+ setToken(data.JWTStr)
+ // setName(data.BasicInfo.RealName)
+ // const userString = decodeURIComponent(escape(window.atob(data.JWTStr.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
+ // const user = JSON.parse(userString)
+ // zzSessionStorage.setItem('userId', user.identityUserId)
+ // commit('SET_IDENTITYUSERID', user.identityUserId)
+ // zzSessionStorage.setItem('identityUserId', user.identityUserId)
+ // zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
+ // var permissions = await getUserPermissions()
+ // var menuTree = await getUserMenuTree()
+ // commit('SET_TREE', menuTree.Result)
+ // commit('SET_PERMISSIONS', permissions.Result)
+ // zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result))
+ // zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result))
+ } catch (e) {
+ console.log(e)
+ }
+ resolve(response.Result)
+ }
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ loginByRole({ commit }, userInfo) {
+ const { userRoleId } = userInfo
+ let params = {
+ userRoleId
+ }
+ return new Promise((resolve, reject) => {
+
+ loginSelectUserRole(params).then(async response => {
+ if (response.IsSuccess) {
+ const data = response.Result
+
+ try {
+ commit('SET_TOKEN', data)
+ setToken(data)
+ commit('SET_USERID', userRoleId)
+ zzSessionStorage.setItem('userId', userRoleId)
+ const userString = decodeURIComponent(escape(window.atob(data.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
+ const user = JSON.parse(userString)
+ zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
+ commit('SET_USERTYPESHORTNAME', user.userTypeShortName)
+ commit('SET_NAME', user.fullName)
+ setName(user.fullName)
+ commit('SET_IDENTITYUSERID', user.identityUserId)
+ zzSessionStorage.setItem('identityUserId', user.identityUserId)
+ zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
+ var permissions = await getUserPermissions()
+ var menuTree = await getUserMenuTree()
+ commit('SET_TREE', menuTree.Result)
+ commit('SET_PERMISSIONS', permissions.Result)
+ zzSessionStorage.setItem('newTree', JSON.stringify(menuTree.Result))
+ zzSessionStorage.setItem('permissions', JSON.stringify(permissions.Result))
+ zzSessionStorage.removeItem('lastWorkbench')
+ } catch (e) {
+ console.log(e)
+ }
+ resolve(response.Result)
+
+ } else {
+ reject(response.ErrorMessage)
+ }
+ }).catch(() => {
+ reject()
+ })
+ })
+ },
+ setTree({ commit }, tree) {
+ commit('SET_TREE', tree)
+ },
+ setPermissions({ commit }, permissions) {
+ commit('SET_PERMISSIONS', permissions)
+ },
+ setTotalNeedSignSystemDocCount({ commit }, TotalNeedSignSystemDocCount) {
+ commit('SET_NEED_SIGN_SYSTEM_DOC_COUNT', TotalNeedSignSystemDocCount)
+ },
+ setTotalNeedSignTrialDocCount({ commit }, TotalNeedSignTrialDocCount) {
+ commit('SET_NEED_SIGN_TRIALS_DOC_COUNT', TotalNeedSignTrialDocCount)
+ },
+ setTrialStatusStr({ commit }, TrialStatusStr) {
+ commit('SET_TRIAL_STATUS_STR', TrialStatusStr)
+ },
+ // get user info
+ getInfo({ commit, state }) {
+ const token = state.token
+ // 解析jwt
+ const userString = decodeURIComponent(escape(window.atob(token.split('.')[1].replace(/-/g, '+').replace(/_/g, '/'))))
+ commit('SET_TREE', JSON.parse(zzSessionStorage.getItem('newTree')))
+ commit('SET_PERMISSIONS', JSON.parse(zzSessionStorage.getItem('permissions')))
+ commit('SET_ISTESTUSER', zzSessionStorage.getItem('isTestUser'))
+ const user = JSON.parse(userString)
+ commit('SET_NAME', user.realName)
+ commit('SET_USERID', user.id)
+ commit('SET_USERNAME', zzSessionStorage.getItem('userName'))
+ commit('SET_NEED_SIGN_SYSTEM_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignSystemDocCount')))
+ commit('SET_NEED_SIGN_TRIALS_DOC_COUNT', parseInt(zzSessionStorage.getItem('TotalNeedSignTrialDocCount')))
+ zzSessionStorage.setItem('userName', user.name)
+ zzSessionStorage.setItem('userId', user.id)
+ zzSessionStorage.setItem('userTypeShortName', user.userTypeShortName)
+ zzSessionStorage.setItem('userTypeEnumInt', user.userTypeEnumInt)
+ return user
+ },
+ updateInfo({ commit, state }) {
+ commit('SET_NAME', zzSessionStorage.getItem('realName'))
+ },
+ // 获取用户信息
+ getUserInfo({ commit, state }) {
+ return new Promise((resolve, reject) => {
+ getUser().then(res => {
+ if (res.Result) {
+ commit('SET_ROLES', res.Result.AccountList)
+ }
+ resolve(res.Result)
+ }).catch(err => {
+ reject(err)
+ })
+ })
+ },
+ // user logout
+ logout({ commit, state }) {
+ removeToken() // must remove token first
+ // resetRouter()
+ removeName()
+ zzSessionStorage.clear()
+ commit('RESET_STATE')
+ },
+ setToken({ commit }, token) {
+ commit('SET_TOKEN', token)
+ },
+
+ // remove token
+ resetToken({ commit }) {
+ return new Promise(resolve => {
+ document.cookie = ''
+ removeToken() // must remove token first
+ commit('RESET_STATE')
+ resolve()
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ mutations,
+ actions
+}
+
diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss
new file mode 100644
index 0000000..0062411
--- /dev/null
+++ b/src/styles/element-ui.scss
@@ -0,0 +1,49 @@
+// cover some element-ui styles
+
+.el-breadcrumb__inner,
+.el-breadcrumb__inner a {
+ font-weight: 400 !important;
+}
+
+.el-upload {
+ input[type="file"] {
+ display: none !important;
+ }
+}
+
+.el-upload__input {
+ display: none;
+}
+
+
+// to fixed https://github.com/ElemeFE/element/issues/2461
+.el-dialog {
+ transform: none;
+ left: 0;
+ position: relative;
+ margin: 0 auto;
+}
+
+// refine element ui upload
+.upload-container {
+ .el-upload {
+ width: 100%;
+
+ .el-upload-dragger {
+ width: 100%;
+ height: 200px;
+ }
+ }
+}
+
+// dropdown
+.el-dropdown-menu {
+ a {
+ display: block
+ }
+}
+
+// to fix el-date-picker css style
+.el-range-separator {
+ box-sizing: content-box;
+}
diff --git a/src/styles/index.scss b/src/styles/index.scss
new file mode 100644
index 0000000..2bb4686
--- /dev/null
+++ b/src/styles/index.scss
@@ -0,0 +1,280 @@
+@import "./variables.scss";
+@import "./mixin.scss";
+@import "./transition.scss";
+@import "./element-ui.scss";
+@import "./sidebar.scss";
+
+body {
+ height: 100%;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ text-rendering: optimizeLegibility;
+ font-family: "Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;
+ // font-family:"Helvetica Neue", Helvetica, Arial, sans-serif;
+ // font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
+ // "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial,
+ // sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
+ // font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
+}
+
+label {
+ font-weight: 500;
+}
+
+html {
+ height: 100%;
+ box-sizing: border-box;
+}
+
+#app {
+ height: 100%;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+a:focus,
+a:active {
+ outline: none;
+}
+
+a,
+a:focus,
+a:hover {
+ cursor: pointer;
+ color: inherit;
+ text-decoration: none;
+}
+
+div:focus {
+ outline: none;
+}
+body .el-table th.gutter {
+ display: table-cell !important;
+}
+
+.clearfix {
+ &:after {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+ }
+}
+.el-loading-mask {
+ background-color: rgba(255, 255, 255, 0.5);
+}
+
+// main-container global css
+.app-container {
+ padding: 10px;
+ position: relative;
+ height: 100%;
+ overflow-y: auto;
+
+ .table-container {
+ height: calc(100% - 100px);
+ }
+ // .pagination-container{
+ // text-align: right;
+ // }
+ .form-container {
+ .title-wrapper {
+ position: relative;
+ height: 40px;
+ line-height: 40px;
+ background: #e4ebf1;
+ border-left: 3px solid #0fc8e0;
+ font-size: 13px;
+ margin-bottom: 10px;
+ p {
+ margin: 0;
+ padding-left: 5px;
+ }
+ .add {
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ height: 30px;
+ margin-top: -15px;
+ }
+ }
+ .el-dialog__body {
+ padding: 0 10px;
+ }
+ .el-date-editor.el-input,
+ .el-date-editor.el-input__inner,
+ .el-select {
+ width: 100%;
+ }
+ }
+}
+.data-list {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+ .toolbar {
+ display: flex;
+ }
+ .data-table {
+ flex: 1;
+ padding: 5px 0px;
+ }
+ .pagination {
+ height: 32px;
+ text-align: right;
+ }
+}
+
+.is-fullscreen{
+ .el-dialog__headerbtn{
+ top:10px;
+ font-size: 30px;
+ }
+ .el-dialog__body{
+ height: calc(100% - 70px);
+ padding: 0 20px;
+ .base-modal-body{
+ padding: 10px 20px;
+ height: 100%;
+ overflow-y: auto;
+ }
+ }
+ .el-dialog__footer{
+ padding: 10px;
+ }
+ .link-breadcrumb{
+ cursor: pointer;
+ color: #428bca;
+ }
+}
+
+.base-dialog-wrapper{
+ .el-dialog__header{
+ padding: 15px;
+ }
+ .base-dialog-body{
+ border: 1px solid #e0e0e0;
+ padding:10px;
+ max-height:600px;
+ overflow-y: auto;
+ }
+ .base-dialog-footer{
+ text-align:right;
+ margin-top:10px;
+ }
+ .el-dialog__body{
+ padding:10px;
+ }
+ .el-dialog__footer{
+ padding: 10px;
+ }
+}
+.el-descriptions{
+ box-sizing:border-box;
+ font-size:14px;
+ color:#303133
+}
+.el-descriptions__header{
+ display:flex;
+ justify-content:space-between;
+ align-items:center;
+ margin-bottom:20px
+}
+.el-descriptions__title{
+ font-size:16px;
+ font-weight:700
+}
+.el-descriptions__body{
+ color:#606266;
+ background-color:#fff
+}
+.el-descriptions__body .el-descriptions__table{
+ border-collapse:collapse;
+ width:100%;
+ table-layout:fixed
+}
+.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{
+ box-sizing:border-box;
+ text-align:left;
+ font-weight:400;
+ line-height:1.5
+}
+.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{
+ text-align:left
+}
+.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{
+ text-align:center
+}
+.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{
+ text-align:right
+}
+.el-descriptions .is-bordered{
+ table-layout:auto
+}
+.el-descriptions .is-bordered .el-descriptions-item__cell{
+ border:1px solid #ebeef5;
+ padding:12px 10px
+}
+.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{
+ padding-bottom:12px
+}
+.el-descriptions--medium.is-bordered .el-descriptions-item__cell{
+ padding:10px
+}
+.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{
+ padding-bottom:10px
+}
+.el-descriptions--small{
+ font-size:12px
+}
+.el-descriptions--small.is-bordered .el-descriptions-item__cell{
+ padding:8px 10px
+}
+.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{
+ padding-bottom:8px
+}
+.el-descriptions--mini{
+ font-size:12px
+}
+.el-descriptions--mini.is-bordered .el-descriptions-item__cell{
+ padding:6px 10px
+}
+.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{
+ padding-bottom:6px
+}
+.el-descriptions-item{
+ vertical-align:top
+}
+.el-descriptions-item__container{
+ display:flex
+}
+.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{
+ display:inline-flex;
+ align-items:baseline
+}
+.el-descriptions-item__container .el-descriptions-item__content{
+ flex:1
+}
+.el-descriptions-item__label.has-colon:after{
+ content:":";
+ position:relative;
+ top:-.5px
+}
+.el-descriptions-item__label.is-bordered-label{
+ font-weight:700;
+ color:#909399;
+ background:#fafafa
+}
+.el-descriptions-item__label:not(.is-bordered-label){
+ margin-right:10px
+}
+.el-descriptions-item__content{
+ word-break:break-word;
+ overflow-wrap:break-word
+}
diff --git a/src/styles/mixin.scss b/src/styles/mixin.scss
new file mode 100644
index 0000000..36b74bb
--- /dev/null
+++ b/src/styles/mixin.scss
@@ -0,0 +1,28 @@
+@mixin clearfix {
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
+ }
+}
+
+@mixin scrollBar {
+ &::-webkit-scrollbar-track-piece {
+ background: #d3dce6;
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #99a9bf;
+ border-radius: 20px;
+ }
+}
+
+@mixin relative {
+ position: relative;
+ width: 100%;
+ height: 100%;
+}
diff --git a/src/styles/sidebar.scss b/src/styles/sidebar.scss
new file mode 100644
index 0000000..587dda0
--- /dev/null
+++ b/src/styles/sidebar.scss
@@ -0,0 +1,219 @@
+$menuText:#909399;
+$menuActiveText:#606266;
+$subMenuActiveText:#5a5c5f;
+
+$menuBg:#ebebeb;
+$menuHover:#dfdede;
+
+$subMenuBg:#e4e4e4;
+$subMenuHover:#dfdede;
+$sideBarWidth: 200px;
+#app {
+
+ .main-container {
+ min-height: 100%;
+ transition: margin-left .28s;
+ margin-left: $sideBarWidth;
+ position: relative;
+ }
+
+ .sidebar-container {
+ transition: width 0.28s;
+ width: $sideBarWidth !important;
+ background-color: $menuBg;
+ height: 100%;
+ position: fixed;
+ font-size: 0px;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1001;
+ overflow: hidden;
+
+ // reset element-ui css
+ .horizontal-collapse-transition {
+ transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
+ }
+
+ .scrollbar-wrapper {
+ overflow-x: hidden !important;
+ }
+
+ .el-scrollbar__bar.is-vertical {
+ right: 0px;
+ }
+
+ .el-scrollbar {
+ height: 100%;
+ }
+
+ &.has-logo {
+ .el-scrollbar {
+ height: calc(100% - 50px);
+ }
+ }
+
+ .is-horizontal {
+ display: none;
+ }
+
+ a {
+ display: inline-block;
+ width: 100%;
+ overflow: hidden;
+ }
+
+ .svg-icon {
+ margin-right: 16px;
+ }
+
+ .el-menu {
+ border: none;
+ height: 100%;
+ width: 100% !important;
+ }
+
+ // menu hover
+ .submenu-title-noDropdown,
+ .el-submenu__title {
+ &:hover {
+ background-color: $menuHover !important;
+ }
+ }
+
+ .is-active>.el-submenu__title {
+ color: $subMenuActiveText !important;
+ }
+
+ & .nest-menu .el-submenu>.el-submenu__title,
+ & .el-submenu .el-menu-item {
+ min-width: $sideBarWidth !important;
+ background-color: $subMenuBg !important;
+
+ &:hover {
+ background-color: $subMenuHover !important;
+ }
+ }
+ }
+
+ .hideSidebar {
+ .sidebar-container {
+ width: 54px !important;
+ }
+
+ .main-container {
+ margin-left: 54px;
+ }
+
+ .submenu-title-noDropdown {
+ padding: 0 !important;
+ position: relative;
+
+ .el-tooltip {
+ padding: 0 !important;
+
+ .svg-icon {
+ margin-left: 20px;
+ }
+ }
+ }
+
+ .el-submenu {
+ overflow: hidden;
+
+ &>.el-submenu__title {
+ padding: 0 !important;
+
+ .svg-icon {
+ margin-left: 20px;
+ }
+
+ .el-submenu__icon-arrow {
+ display: none;
+ }
+ }
+ }
+
+ .el-menu--collapse {
+ .el-submenu {
+ &>.el-submenu__title {
+ &>span {
+ height: 0;
+ width: 0;
+ overflow: hidden;
+ visibility: hidden;
+ display: inline-block;
+ }
+ }
+ }
+ }
+ }
+
+ .el-menu--collapse .el-menu .el-submenu {
+ min-width: $sideBarWidth !important;
+ }
+
+ // mobile responsive
+ .mobile {
+ .main-container {
+ margin-left: 0px;
+ }
+
+ .sidebar-container {
+ transition: transform .28s;
+ width: $sideBarWidth !important;
+ }
+
+ &.hideSidebar {
+ .sidebar-container {
+ pointer-events: none;
+ transition-duration: 0.3s;
+ transform: translate3d(-$sideBarWidth, 0, 0);
+ }
+ }
+ }
+
+ .withoutAnimation {
+
+ .main-container,
+ .sidebar-container {
+ transition: none;
+ }
+ }
+}
+
+// when menu collapsed
+.el-menu--vertical {
+ &>.el-menu {
+ .svg-icon {
+ margin-right: 16px;
+ }
+ }
+
+ .nest-menu .el-submenu>.el-submenu__title,
+ .el-menu-item {
+ &:hover {
+ // you can use $subMenuHover
+ background-color: $menuHover !important;
+ }
+ }
+
+ // the scroll bar appears when the subMenu is too long
+ >.el-menu--popup {
+ max-height: 100vh;
+ overflow-y: auto;
+
+ &::-webkit-scrollbar-track-piece {
+ background: #d3dce6;
+ }
+
+ &::-webkit-scrollbar {
+ width: 6px;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background: #99a9bf;
+ border-radius: 20px;
+ }
+ }
+}
diff --git a/src/styles/transition.scss b/src/styles/transition.scss
new file mode 100644
index 0000000..4cb27cc
--- /dev/null
+++ b/src/styles/transition.scss
@@ -0,0 +1,48 @@
+// global transition css
+
+/* fade */
+.fade-enter-active,
+.fade-leave-active {
+ transition: opacity 0.28s;
+}
+
+.fade-enter,
+.fade-leave-active {
+ opacity: 0;
+}
+
+/* fade-transform */
+.fade-transform-leave-active,
+.fade-transform-enter-active {
+ transition: all .5s;
+}
+
+.fade-transform-enter {
+ opacity: 0;
+ transform: translateX(-30px);
+}
+
+.fade-transform-leave-to {
+ opacity: 0;
+ transform: translateX(30px);
+}
+
+/* breadcrumb transition */
+.breadcrumb-enter-active,
+.breadcrumb-leave-active {
+ transition: all .5s;
+}
+
+.breadcrumb-enter,
+.breadcrumb-leave-active {
+ opacity: 0;
+ transform: translateX(20px);
+}
+
+.breadcrumb-move {
+ transition: all .5s;
+}
+
+.breadcrumb-leave-active {
+ position: absolute;
+}
diff --git a/src/styles/variables.scss b/src/styles/variables.scss
new file mode 100644
index 0000000..7cc8562
--- /dev/null
+++ b/src/styles/variables.scss
@@ -0,0 +1,34 @@
+// sidebar 灰白色
+$menuText:#909399;
+$menuActiveText:#606266;
+$subMenuActiveText:#5a5c5f;
+
+$menuBg:#ebebeb;
+$menuHover:#dfdede;
+
+$subMenuBg:#e4e4e4;
+$subMenuHover:#dfdede;
+
+// sidebar 墨绿色
+// $menuText:rgb(206, 203, 203);
+// $menuActiveText:#fff;
+// $subMenuActiveText:#fff;
+
+// $menuBg:#607D8B;
+// $menuHover:#698b9b;
+
+// $subMenuBg:#607D8B;
+// $subMenuHover:#698b9b;
+
+$sideBarWidth: 200px;
+
+:export {
+ menuText: $menuText;
+ menuActiveText: $menuActiveText;
+ subMenuActiveText: $subMenuActiveText;
+ menuBg: $menuBg;
+ menuHover: $menuHover;
+ subMenuBg: $subMenuBg;
+ subMenuHover: $subMenuHover;
+ sideBarWidth: $sideBarWidth;
+}
diff --git a/src/utils/.DS_Store b/src/utils/.DS_Store
new file mode 100644
index 0000000..f70d529
Binary files /dev/null and b/src/utils/.DS_Store differ
diff --git a/src/utils/auth.js b/src/utils/auth.js
new file mode 100644
index 0000000..d77acd1
--- /dev/null
+++ b/src/utils/auth.js
@@ -0,0 +1,45 @@
+
+
+export function getToken() {
+
+ return zzSessionStorage.getItem('TokenKey')
+}
+
+export function setToken(token) {
+
+ return zzSessionStorage.setItem('TokenKey', token)
+}
+
+export function removeToken() {
+
+ return zzSessionStorage.removeItem('TokenKey')
+}
+
+export function getName() {
+ return zzSessionStorage.getItem('Name')
+
+}
+
+export function setName(name) {
+ return zzSessionStorage.setItem('Name', name)
+
+}
+
+export function removeName() {
+ return zzSessionStorage.removeItem('Name')
+
+}
+
+export function getUserName() {
+ return zzSessionStorage.getItem('UserName')
+
+}
+export function setUserName(name) {
+ return zzSessionStorage.setItem('UserName', name)
+
+}
+
+export function removeUserName() {
+ return zzSessionStorage.removeItem('UserName')
+
+}
diff --git a/src/utils/dcmUpload/anonymization.js b/src/utils/dcmUpload/anonymization.js
new file mode 100644
index 0000000..d75ae17
--- /dev/null
+++ b/src/utils/dcmUpload/anonymization.js
@@ -0,0 +1,53 @@
+import dicomParser from "dicom-parser";
+import dcmjs from 'dcmjs'
+
+export const anonymization = function (file, config) {
+ return new Promise(async (resolve, reject) => {
+ try {
+ const reader = new FileReader()
+ let AnonymizeFixedList = config.AnonymizeFixedList
+ let AnonymizeNotFixedList = config.AnonymizeNotFixedList
+ let DicomStoreInfo = config.DicomStoreInfo
+ reader.onload = async (event) => {
+ let buffer = event.target.result
+ let data = dicomParser.parseDicom(new Uint8Array(buffer))
+ let dataset = dcmjs.data.DicomMessage.readFile(buffer)
+ console.log(dataset.dict)
+ for (var i = 0; i < AnonymizeFixedList.length; i++) {
+ let AnonymizeFixed = AnonymizeFixedList[i]
+ if (dataset.dict[AnonymizeFixed.Group + AnonymizeFixed.Element]) {
+ dataset.dict[AnonymizeFixed.Group + AnonymizeFixed.Element].Value[0] = AnonymizeFixed.ReplaceValue
+ } else {
+ dataset.dict[AnonymizeFixed.Group + AnonymizeFixed.Element] = {
+ vr: AnonymizeFixed.ValueRepresentation,
+ Value: [
+ AnonymizeFixed.ReplaceValue
+ ]
+ }
+ }
+ }
+ for (var i = 0; i < AnonymizeNotFixedList.length; i++) {
+ let AnonymizeNotFixed = AnonymizeNotFixedList[i]
+ if (dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element]) {
+ dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element].Value[0] = DicomStoreInfo[AnonymizeNotFixed.ReplaceValue] ? DicomStoreInfo[AnonymizeNotFixed.ReplaceValue].toString() : ''
+ } else {
+ dataset.dict[AnonymizeNotFixed.Group + AnonymizeNotFixed.Element] = {
+ vr: AnonymizeNotFixed.ValueRepresentation,
+ Value: [
+ DicomStoreInfo[AnonymizeNotFixed.ReplaceValue]
+ ]
+ }
+ }
+ }
+ let newDicomFile = dataset.write()
+ const bufferArray = new Uint8Array(newDicomFile)
+ const blob = new Blob([bufferArray], { type: 'application/octet-stream' })
+ resolve({blob, data})
+ };
+ reader.readAsArrayBuffer(file);
+ } catch (e) {
+ console.log(e)
+ reject(e)
+ }
+ })
+}
diff --git a/src/utils/dcmUpload/dcmUpload.js b/src/utils/dcmUpload/dcmUpload.js
new file mode 100644
index 0000000..e217c4f
--- /dev/null
+++ b/src/utils/dcmUpload/dcmUpload.js
@@ -0,0 +1,43 @@
+import Vue from 'vue'
+import { encoder } from './encoder'
+import { anonymization } from './anonymization'
+export const dcmUpload = async function(name, file, config){
+ return new Promise(async resolve => {
+ try {
+ // let blob = await encoder(file)
+ // let blob = await fileToBlob(file)
+ let blob = await anonymization(file, config)
+ let res = await Vue.prototype.OSSclient.put(name, blob.blob)
+ resolve({
+ ...res,
+ image: blob.data
+ })
+ // let OSSclientA = await OSSclient
+ // let blob = await encoder(file)
+ // let res = await OSSclient.put(name, blob.blob)
+
+
+ } catch (e) {
+ resolve(false)
+ console.log(e)
+ }
+ })
+}
+function fileToBlob(file) {
+ // 创建 FileReader 对象
+ let reader = new FileReader();
+ return new Promise(resolve => {
+ // FileReader 添加 load 事件
+ reader.addEventListener('load', (e) => {
+ let blob;
+ if (typeof e.target.result === 'object') {
+ blob = new Blob([e.target.result])
+ } else {
+ blob = e.target.result
+ }
+ resolve(blob)
+ })
+ // FileReader 以 ArrayBuffer 格式 读取 File 对象中数据
+ reader.readAsArrayBuffer(file)
+ })
+}
diff --git a/src/utils/dcmUpload/encoder.js b/src/utils/dcmUpload/encoder.js
new file mode 100644
index 0000000..ff06bcd
--- /dev/null
+++ b/src/utils/dcmUpload/encoder.js
@@ -0,0 +1,63 @@
+import dicomParser from "dicom-parser";
+import dcmjs from 'dcmjs'
+const CharLs = require('@cornerstonejs/codec-charls')
+const codecWrapper = {
+ codec: undefined,
+ Decoder: undefined,
+ Encoder: undefined,
+ encoderName: "JpegLSEncoder",
+ decoderName: "JpegLSDecoder",
+};
+function setCodec(codecConfig, encoderName, decoderName, codec = {}) {
+ codecConfig.Encoder = codec[encoderName];
+ codecConfig.Decoder = codec[decoderName];
+ codecConfig.codec = codec;
+}
+CharLs().then(res => {
+ setCodec(codecWrapper, codecWrapper.encoderName, codecWrapper.decoderName, res);
+})
+
+export const encoder = function (file) {
+ return new Promise(async (resolve, reject) => {
+ try {
+ const reader = new FileReader()
+ reader.onload = async (event) => {
+ let buffer = event.target.result
+ let data = dicomParser.parseDicom(new Uint8Array(buffer))
+ let frameCount = data.string('x00280008')
+ let height = data.uint16('x00280011')
+ let width = data.uint16('x00280010')
+ let bitsPerSample = data.uint16('x00280100')
+ let componentCount = data.string('x00280004')
+ let transportSyntax = data.string('x00020010')
+ let dataset = dcmjs.data.DicomMessage.readFile(buffer)
+ let pixelDataElement = data.elements.x7fe00010
+ let pixelDataOffset = pixelDataElement.dataOffset
+ let pixelDataLength = pixelDataElement.length
+ let pixelDataBytes = data.byteArray.subarray(pixelDataOffset, pixelDataOffset + pixelDataLength)
+ if ((transportSyntax === '1.2.840.10008.1.2.1' || transportSyntax === '1.2.840.10008.1.2') && ~componentCount.indexOf('MONOCHROME') && !frameCount) {
+ let encoder = new codecWrapper.Encoder()
+ let decodedBytes = encoder.getDecodedBuffer({width: width, height: height, bitsPerSample: bitsPerSample, componentCount: 1})
+ encoder.setNearLossless(0)
+ decodedBytes.set(pixelDataBytes)
+ encoder.encode()
+ let encodedBytes = encoder.getEncodedBuffer();
+ dataset.dict['7FE00010'].Value[0] = encodedBytes.buffer
+ dataset.meta['00020010'].Value[0] = '1.2.840.10008.1.2.4.80'
+ let newDicomFile = dataset.write()
+ const bufferArray = new Uint8Array(newDicomFile)
+ const blob = new Blob([bufferArray], { type: 'application/octet-stream' })
+ resolve({blob, data})
+ } else {
+ const bufferArray = new Uint8Array(buffer);
+ const blob = new Blob([bufferArray], { type: 'application/octet-stream' });
+ resolve({blob, pixelDataBytes})
+ }
+ };
+ reader.readAsArrayBuffer(file);
+ } catch (e) {
+ console.log(e)
+ reject(e)
+ }
+ })
+}
diff --git a/src/utils/dialog.js b/src/utils/dialog.js
new file mode 100644
index 0000000..4c7c2dd
--- /dev/null
+++ b/src/utils/dialog.js
@@ -0,0 +1,119 @@
+import Vue from 'vue'
+Vue.directive('dialogDrag', {
+ bind(el, binding, vnode, oldVnode) {
+ const dialogHeaderEl = el.querySelector('.el-dialog__header')
+ const dragDom = el.querySelector('.el-dialog')
+ // dialogHeaderEl.style.cursor = 'move';
+ dialogHeaderEl.style.cssText += ';cursor:move;'
+ dragDom.style.cssText += ';top:0px;'
+
+ // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+ const sty = (function() {
+ if (window.document.currentStyle) {
+ return (dom, attr) => dom.currentStyle[attr]
+ } else {
+ return (dom, attr) => getComputedStyle(dom, false)[attr]
+ }
+ })()
+ dialogHeaderEl.onmousedown = e => {
+ // 鼠标按下,计算当前元素距离可视区的距离
+ const disX = e.clientX - dialogHeaderEl.offsetLeft
+ const disY = e.clientY - dialogHeaderEl.offsetTop
+ const screenWidth = document.body.clientWidth // body当前宽度
+ const screenHeight = document.documentElement.clientHeight // 可见区域高度(应为body高度,可某些环境下无法获取)
+ const dragDomWidth = dragDom.offsetWidth // 对话框宽度
+ const dragDomheight = dragDom.offsetHeight // 对话框高度
+ const minDragDomLeft = dragDom.offsetLeft
+ const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth
+ const minDragDomTop = dragDom.offsetTop
+ const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight
+ // 获取到的值带px 正则匹配替换
+ let styL = sty(dragDom, 'left')
+ let styT = sty(dragDom, 'top')
+ // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+ if (styL.includes('%')) {
+ // eslint-disable-next-line no-useless-escape
+ styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100)
+ // eslint-disable-next-line no-useless-escape
+ styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100)
+ } else {
+ styL = +styL.replace(/\px/g, '')
+ styT = +styT.replace(/\px/g, '')
+ }
+
+ document.onmousemove = function(e) {
+ // 通过事件委托,计算移动的距离
+ let left = e.clientX - disX
+ let top = e.clientY - disY
+
+ // 边界处理
+ if (-left > minDragDomLeft) {
+ left = -minDragDomLeft
+ } else if (left > maxDragDomLeft) {
+ left = maxDragDomLeft
+ }
+ if (-top > minDragDomTop) {
+ top = -minDragDomTop
+ } else if (top > maxDragDomTop) {
+ top = maxDragDomTop
+ }
+
+ // 移动当前元素
+ dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`
+ }
+
+ document.onmouseup = function(e) {
+ document.onmousemove = null
+ document.onmouseup = null
+ }
+ return false
+ }
+ }
+})
+// v-dialogDrag: 弹窗拖拽
+// Vue.directive('dialogDrag', {
+// bind(el, binding, vnode, oldVnode) {
+// const dialogHeaderEl = el.querySelector('.el-dialog__header')
+// const dragDom = el.querySelector('.el-dialog')
+// dialogHeaderEl.style.cursor = 'move'
+
+// // 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
+// const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null)
+
+// dialogHeaderEl.onmousedown = (e) => {
+// // 鼠标按下,计算当前元素距离可视区的距离
+// const disX = e.clientX - dialogHeaderEl.offsetLeft
+// const disY = e.clientY - dialogHeaderEl.offsetTop
+
+// // 获取到的值带px 正则匹配替换
+// let styL, styT
+
+// // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
+// if (sty.left.includes('%')) {
+// styL = +document.body.clientWidth * (+sty.left.replace(/\%/g, '') / 100)
+// styT = +document.body.clientHeight * (+sty.top.replace(/\%/g, '') / 100)
+// } else {
+// styL = +sty.left.replace(/\px/g, '')
+// styT = +sty.top.replace(/\px/g, '')
+// }
+
+// document.onmousemove = function(e) {
+// // 通过事件委托,计算移动的距离
+// const l = e.clientX - disX
+// const t = e.clientY - disY
+
+// // 移动当前元素
+// dragDom.style.left = `${l + styL}px`
+// dragDom.style.top = `${t + styT}px`
+
+// // 将此时的位置传出去
+// // binding.value({x:e.pageX,y:e.pageY})
+// }
+
+// document.onmouseup = function(e) {
+// document.onmousemove = null
+// document.onmouseup = null
+// }
+// }
+// }
+// })
diff --git a/src/utils/dicom-store.js b/src/utils/dicom-store.js
new file mode 100644
index 0000000..52d56f0
--- /dev/null
+++ b/src/utils/dicom-store.js
@@ -0,0 +1,4 @@
+
+export default {
+ studyList: []
+}
diff --git a/src/utils/dict/Dict.js b/src/utils/dict/Dict.js
new file mode 100644
index 0000000..104bd6e
--- /dev/null
+++ b/src/utils/dict/Dict.js
@@ -0,0 +1,82 @@
+import Vue from 'vue'
+import { mergeRecursive } from "@/utils/ruoyi";
+import DictMeta from './DictMeta'
+import DictData from './DictData'
+
+const DEFAULT_DICT_OPTIONS = {
+ types: [],
+}
+
+/**
+ * @classdesc 字典
+ * @property {Object} label 标签对象,内部属性名为字典类型名称
+ * @property {Object} dict 字段数组,内部属性名为字典类型名称
+ * @property {Array.} _dictMetas 字典元数据数组
+ */
+export default class Dict {
+ constructor() {
+ this.owner = null
+ this.label = {}
+ this.type = {}
+ }
+
+ init(options) {
+ if (options instanceof Array) {
+ options = { types: options }
+ }
+ const opts = mergeRecursive(DEFAULT_DICT_OPTIONS, options)
+ if (opts.types === undefined) {
+ throw new Error('need dict types')
+ }
+ const ps = []
+ this._dictMetas = opts.types.map(t => DictMeta.parse(t))
+ this._dictMetas.forEach(dictMeta => {
+ const type = dictMeta.type
+ Vue.set(this.label, type, {})
+ Vue.set(this.type, type, [])
+ if (dictMeta.lazy) {
+ return
+ }
+ ps.push(loadDict(this, dictMeta))
+ })
+ return Promise.all(ps)
+ }
+
+ /**
+ * 重新加载字典
+ * @param {String} type 字典类型
+ */
+ reloadDict(type) {
+ const dictMeta = this._dictMetas.find(e => e.type === type)
+ if (dictMeta === undefined) {
+ return Promise.reject(`the dict meta of ${type} was not found`)
+ }
+ return loadDict(this, dictMeta)
+ }
+}
+
+/**
+ * 加载字典
+ * @param {Dict} dict 字典
+ * @param {DictMeta} dictMeta 字典元数据
+ * @returns {Promise}
+ */
+function loadDict(dict, dictMeta) {
+ return dictMeta.request(dictMeta)
+ .then(response => {
+ const type = dictMeta.type
+ let dicts = dictMeta.responseConverter(response, dictMeta)
+ if (!(dicts instanceof Array)) {
+ console.error('the return of responseConverter must be Array.')
+ dicts = []
+ } else if (dicts.filter(d => d instanceof DictData).length !== dicts.length) {
+ console.error('the type of elements in dicts must be DictData')
+ dicts = []
+ }
+ dict.type[type].splice(0, Number.MAX_SAFE_INTEGER, ...dicts)
+ dicts.forEach(d => {
+ Vue.set(dict.label[type], d.value, d.label)
+ })
+ return dicts
+ })
+}
diff --git a/src/utils/dict/DictConverter.js b/src/utils/dict/DictConverter.js
new file mode 100644
index 0000000..0cf5df8
--- /dev/null
+++ b/src/utils/dict/DictConverter.js
@@ -0,0 +1,17 @@
+import DictOptions from './DictOptions'
+import DictData from './DictData'
+
+export default function(dict, dictMeta) {
+ const label = determineDictField(dict, dictMeta.labelField, ...DictOptions.DEFAULT_LABEL_FIELDS)
+ const value = determineDictField(dict, dictMeta.valueField, ...DictOptions.DEFAULT_VALUE_FIELDS)
+ return new DictData(dict[label], dict[value], dict)
+}
+
+/**
+ * 确定字典字段
+ * @param {DictData} dict
+ * @param {...String} fields
+ */
+function determineDictField(dict, ...fields) {
+ return fields.find(f => Object.prototype.hasOwnProperty.call(dict, f))
+}
diff --git a/src/utils/dict/DictData.js b/src/utils/dict/DictData.js
new file mode 100644
index 0000000..afc763e
--- /dev/null
+++ b/src/utils/dict/DictData.js
@@ -0,0 +1,13 @@
+/**
+ * @classdesc 字典数据
+ * @property {String} label 标签
+ * @property {*} value 标签
+ * @property {Object} raw 原始数据
+ */
+export default class DictData {
+ constructor(label, value, raw) {
+ this.label = label
+ this.value = value
+ this.raw = raw
+ }
+}
diff --git a/src/utils/dict/DictMeta.js b/src/utils/dict/DictMeta.js
new file mode 100644
index 0000000..efcc66e
--- /dev/null
+++ b/src/utils/dict/DictMeta.js
@@ -0,0 +1,37 @@
+import { mergeRecursive } from '@/utils/ruoyi'
+import DictOptions from './DictOptions'
+
+/**
+ * @classdesc 字典元数据
+ * @property {String} type 类型
+ * @property {Function} request 请求
+ * @property {String} label 标签字段
+ * @property {String} value 值字段
+ */
+export default class DictMeta {
+ constructor(options) {
+ this.type = options.type
+ this.request = options.request
+ this.responseConverter = options.responseConverter
+ this.labelField = options.labelField
+ this.valueField = options.valueField
+ this.lazy = options.lazy === true
+ }
+}
+
+/**
+ * 解析字典元数据
+ * @param {Object} options
+ * @returns {DictMeta}
+ */
+DictMeta.parse = function(options) {
+ let opts = null
+ if (typeof options === 'string') {
+ opts = DictOptions.metas[options] || {}
+ opts.type = options
+ } else if (typeof options === 'object') {
+ opts = options
+ }
+ opts = mergeRecursive(DictOptions.metas['*'], opts)
+ return new DictMeta(opts)
+}
diff --git a/src/utils/dict/DictOptions.js b/src/utils/dict/DictOptions.js
new file mode 100644
index 0000000..7f8164e
--- /dev/null
+++ b/src/utils/dict/DictOptions.js
@@ -0,0 +1,51 @@
+import { mergeRecursive } from "@/utils/ruoyi";
+import dictConverter from './DictConverter'
+
+export const options = {
+ metas: {
+ '*': {
+ /**
+ * 字典请求,方法签名为function(dictMeta: DictMeta): Promise
+ */
+ request: (dictMeta) => {
+ console.log(`load dict ${dictMeta.type}`)
+ return Promise.resolve([])
+ },
+ /**
+ * 字典响应数据转换器,方法签名为function(response: Object, dictMeta: DictMeta): DictData
+ */
+ responseConverter,
+ labelField: 'label',
+ valueField: 'value',
+ },
+ },
+ /**
+ * 默认标签字段
+ */
+ DEFAULT_LABEL_FIELDS: ['label', 'name', 'title', 'Value'],
+ /**
+ * 默认值字段
+ */
+ DEFAULT_VALUE_FIELDS: ['value', 'id', 'uid', 'key', 'Id'],
+}
+
+/**
+ * 映射字典
+ * @param {Object} response 字典数据
+ * @param {DictMeta} dictMeta 字典元数据
+ * @returns {DictData}
+ */
+function responseConverter(response, dictMeta) {
+ const dicts = response.Result instanceof Array ? response.Result : response
+ if (dicts === undefined) {
+ console.warn(`no dict data of "${dictMeta.type}" found in the response`)
+ return []
+ }
+ return dicts.map(d => dictConverter(d, dictMeta))
+}
+
+export function mergeOptions(src) {
+ mergeRecursive(options, src)
+}
+
+export default options
diff --git a/src/utils/dict/index.js b/src/utils/dict/index.js
new file mode 100644
index 0000000..8493302
--- /dev/null
+++ b/src/utils/dict/index.js
@@ -0,0 +1,33 @@
+import Dict from './Dict'
+import { mergeOptions } from './DictOptions'
+
+export default function(Vue, options) {
+ mergeOptions(options)
+ Vue.mixin({
+ data() {
+ if (this.$options.dicts === undefined || this.$options.dicts === null) {
+ return {}
+ }
+ const dict = new Dict()
+ dict.owner = this
+ return {
+ dict
+ }
+ },
+ created() {
+ if (!(this.dict instanceof Dict)) {
+ return
+ }
+ options.onCreated && options.onCreated(this.dict)
+ this.dict.init(this.$options.dicts).then(() => {
+ options.onReady && options.onReady(this.dict)
+ this.$nextTick(() => {
+ this.$emit('dictReady', this.dict)
+ if (this.$options.methods && this.$options.methods.onDictReady instanceof Function) {
+ this.$options.methods.onDictReady.call(this, this.dict)
+ }
+ })
+ })
+ },
+ })
+}
diff --git a/src/utils/export.js b/src/utils/export.js
new file mode 100644
index 0000000..2eee50f
--- /dev/null
+++ b/src/utils/export.js
@@ -0,0 +1,66 @@
+import Excel from 'exceljs'
+export function exportExcelWithTotal(sheetName, columns, title, conditional, headerArr, data, totalRow, numFmts, merge) {
+ var workbook = new Excel.Workbook()
+ var sheet = workbook.addWorksheet(sheetName)
+ sheet.columns = columns
+ const maxColCode = String.fromCharCode(64 + columns.length)
+ // 处理标题
+ sheet.mergeCells(`A1:${maxColCode}2`)
+ sheet.getCell('A1').value = title
+ sheet.getCell('A1').alignment = { vertical: 'middle', horizontal: 'center' }
+ sheet.getCell('A1').font = { name: 'SimSun', family: 4, size: 13, bold: true }
+ sheet.mergeCells(`A3:${maxColCode}3`)
+ sheet.getCell('A3').value = conditional
+ sheet.getCell('A3').alignment = { vertical: 'middle', horizontal: 'right' }
+ // 列头
+ sheet.getRow(4).values = headerArr
+ sheet.getRow(4).font = { name: 'SimSun', family: 4, size: 11, bold: true }
+ sheet.getRow(4).alignment = { vertical: 'middle', horizontal: 'left' }
+
+ sheet.addRows(data)
+ numFmts.forEach(element => {
+ sheet.getColumn(element.colIndex).numFmt = element.format
+ })
+ sheet.addRow(totalRow)
+ sheet.getRow(data.length + 5).font = { name: 'SimSun', family: 4, size: 11, bold: true }
+ if (merge) {
+ sheet.mergeCells(merge)
+ }
+ sheet.eachRow((row, number) => {
+ if (number > 3) {
+ row.eachCell(cell => {
+ cell.alignment = { vertical: 'center', horizontal: 'left' }
+ cell.border = {
+ top: { style: 'thin' },
+ left: { style: 'thin' },
+ bottom: { style: 'thin' },
+ right: { style: 'thin' }
+ }
+ })
+ }
+ })
+
+ workbook.xlsx
+ .writeBuffer({
+ base64: true
+ })
+ .then(function(xls64) {
+ var data = new Blob([xls64], {
+ type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
+ })
+ if ('msSaveOrOpenBlob' in navigator) {
+ window.navigator.msSaveOrOpenBlob(data, `${sheetName} ${title}.xlsx`)
+ } else {
+ var a = document.createElement('a')
+ var url = URL.createObjectURL(data)
+ a.href = url
+ a.download = `${sheetName} ${title}.xlsx`
+ document.body.appendChild(a)
+ a.click()
+ setTimeout(function() {
+ document.body.removeChild(a)
+ window.URL.revokeObjectURL(url)
+ }, 0)
+ }
+ })
+}
diff --git a/src/utils/float-operation.js b/src/utils/float-operation.js
new file mode 100644
index 0000000..8d94caa
--- /dev/null
+++ b/src/utils/float-operation.js
@@ -0,0 +1,96 @@
+
+/*
+ * 判断obj是否为一个整数
+*/
+function isInteger(obj) {
+ return Math.floor(obj) === obj
+}
+
+/*
+ * 将一个浮点数转成整数,返回整数和倍数
+ * @param floatNum {number} 小数
+ * @return {object}
+ * {times:100, num: 314}
+*/
+function toInteger(floatNum) {
+ var ret = { times: 1, num: 0 }
+ if (isInteger(floatNum)) {
+ ret.num = floatNum
+ return ret
+ }
+ var strfi = floatNum + ''
+ var dotPos = strfi.indexOf('.')
+ var len = strfi.substr(dotPos + 1).length
+ var times = Math.pow(10, len)
+ var intNum = parseInt(floatNum * times + 0.5, 10)
+ ret.times = times
+ ret.num = intNum
+ return ret
+}
+
+/*
+ *
+ * @param a {number} 运算数1
+ * @param b {number} 运算数2
+ * @param op {string} 运算类型,有加减乘除
+ *
+*/
+function operation(a, b, op) {
+ var o1 = toInteger(a)
+ var o2 = toInteger(b)
+ var n1 = o1.num
+ var n2 = o2.num
+ var t1 = o1.times
+ var t2 = o2.times
+ var max = t1 > t2 ? t1 : t2
+ var result = null
+ switch (op) {
+ case 'add':
+ if (t1 === t2) { // 两个小数位数相同
+ result = n1 + n2
+ } else if (t1 > t2) { // o1 小数位 大于 o2
+ result = n1 + n2 * (t1 / t2)
+ } else { // o1 小数位 小于 o2
+ result = n1 * (t2 / t1) + n2
+ }
+ return result / max
+ case 'subtract':
+ if (t1 === t2) {
+ result = n1 - n2
+ } else if (t1 > t2) {
+ result = n1 - n2 * (t1 / t2)
+ } else {
+ result = n1 * (t2 / t1) - n2
+ }
+ return result / max
+ case 'multiply':
+ result = (n1 * n2) / (t1 * t2)
+ return result
+ case 'divide':
+ result = (n1 / n2) * (t2 / t1)
+ return result
+ }
+}
+
+function add(a, b) {
+ return operation(a, b, 'add')
+}
+
+function subtract(a, b) {
+ return operation(a, b, 'subtract')
+}
+
+function multiply(a, b) {
+ return operation(a, b, 'multiply')
+}
+
+function divide(a, b) {
+ return operation(a, b, 'divide')
+}
+export default {
+ add: add,
+ subtract: subtract,
+ multiply: multiply,
+ divide: divide
+}
+
diff --git a/src/utils/fontsize.js b/src/utils/fontsize.js
new file mode 100644
index 0000000..afaaaa8
--- /dev/null
+++ b/src/utils/fontsize.js
@@ -0,0 +1,6 @@
+export function fontSize(res) {
+ const clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
+ if (!clientWidth) return
+ const fontSize = 100 * (clientWidth / 1920)
+ return res * fontSize
+}
diff --git a/src/utils/formatter.js b/src/utils/formatter.js
new file mode 100644
index 0000000..b0219e5
--- /dev/null
+++ b/src/utils/formatter.js
@@ -0,0 +1,152 @@
+// eslint-disable-next-line no-extend-native
+Date.prototype.format = function(fmt) {
+ var o = {
+ 'M+': this.getMonth() + 1, // 月份
+ 'd+': this.getDate(), // 日
+ 'h+': this.getHours(), // 小时
+ 'm+': this.getMinutes(), // 分
+ 's+': this.getSeconds(), // 秒
+ 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
+ S: this.getMilliseconds() // 毫秒
+ }
+ if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
+ for (var k in o) {
+ if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)) }
+ }
+ return fmt
+}
+
+export function formatUTCTime(utc) {
+ if (utc !== '0001-01-01T00:00:00Z') {
+ const date = new Date(utc)
+ // 格式化时间
+ return FormatTime(date, 'yyyy-MM-dd')
+ } else {
+ return ''
+ }
+}
+
+export function fmtDate(obj) {
+ var date = new Date(obj)
+ var y = 1900 + date.getYear()
+ var m = '0' + (date.getMonth() + 1)
+ var d = '0' + date.getDate()
+ return y + '-' + m.substring(m.length - 2, m.length) + '-' + d.substring(d.length - 2, d.length)
+}
+
+export function parseISOLocal(s) {
+ var b = s.split(/\D/)
+
+ return new Date(b[0], b[1] - 1, b[2])
+}
+
+export function FormatTime(date, fmt) {
+ const o = {
+ 'y+': date.getFullYear(),
+ 'M+': date.getMonth() + 1, // 月份
+ 'd+': date.getDate(), // 日
+ 'h+': date.getHours(), // 小时
+ 'm+': date.getMinutes(), // 分
+ 's+': date.getSeconds(), // 秒
+ 'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
+ 'S+': date.getMilliseconds() // 毫秒
+ }
+ for (const k in o) {
+ if (new RegExp('(' + k + ')').test(fmt)) {
+ if (k === 'y+') {
+ fmt = fmt.replace(RegExp.$1, ('' + o[k]).substr(4 - RegExp.$1.length))
+ } else if (k === 'S+') {
+ let lens = RegExp.$1.length
+ lens = lens === 1 ? 3 : lens
+ fmt = fmt.replace(RegExp.$1, ('00' + o[k]).substr(('' + o[k]).length - 1, lens))
+ } else {
+ fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length))
+ }
+ }
+ }
+ return fmt
+}
+export function fn(time) {
+ var date = new Date(time)
+ var len = time.toString().length
+ // 时间戳不足13位则在后面加零
+ if (len < 13) {
+ var sub = 13 - len
+ sub = Math.pow(10, sub)
+ date = new Date(time * sub)
+ }
+ var y = date.getFullYear() + '-'
+ var M = date.getMonth() + 1
+ M = (M < 10 ? '0' + M : M) + '-'
+ var d = date.getDate()
+ d = (d < 10 ? '0' + d : d) + ' '
+ var h = date.getHours()
+ h = (h < 10 ? '0' + h : h) + ':'
+ var m = date.getMinutes()
+ m = (m < 10 ? '0' + m : m) + ':'
+ var s = date.getSeconds()
+ s = s < 10 ? '0' + s : s
+ return y + M + d + h + m + s
+}
+
+export function getLast3Month() {
+ var now = new Date()
+ var year = now.getFullYear()
+ var month = now.getMonth() + 1 // 0-11表示1-12月
+ var day = now.getDate()
+ var dateObj = {}
+ if (parseInt(month) < 10) {
+ month = '0' + month
+ }
+ if (parseInt(day) < 10) {
+ day = '0' + day
+ }
+
+ dateObj.now = year + '-' + month
+
+ if (parseInt(month) === 1) {
+ // 如果是1月份,则取上一年的10月份
+ dateObj.last = parseInt(year) - 1 + '-10'
+ return dateObj
+ }
+ if (parseInt(month) === 2) {
+ // 如果是2月份,则取上一年的11月份
+ dateObj.last = parseInt(year) - 1 + '-11'
+ return dateObj
+ }
+ if (parseInt(month) === 3) {
+ // 如果是3月份,则取上一年的12月份
+ dateObj.last = parseInt(year) - 1 + '-12'
+ return dateObj
+ } else {
+ dateObj.last = year + '-0' + (parseInt(month) - 3)
+ return dateObj
+ }
+}
+
+export function num2Money(num, cent, isThousand) {
+ if (num == null) return '0.0'
+ num = num.toString().replace(/\$|\,/g, '')
+ // 检查传入数值为数值类型
+ if (isNaN(num)) num = '0'
+ // 获取符号(正/负数)
+ var sign = num === (num = Math.abs(num))
+ num = Math.floor(num * Math.pow(10, cent) + 0.50000000001) // 把指定的小数位先转换成整数.多余的小数位四舍五入
+ var cents = num % Math.pow(10, cent) // 求出小数位数值
+ num = Math.floor(num / Math.pow(10, cent)).toString() // 求出整数位数值
+ cents = cents.toString() // 把小数位转换成字符串,以便求小数位长度
+ // 补足小数位到指定的位数
+ while (cents.length < cent) cents = '0' + cents
+ if (isThousand) {
+ // 对整数部分进行千分位格式化.
+ for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) { num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3)) }
+ }
+ if (cent > 0) return (sign ? '' : '-') + num + '.' + cents
+ // return Number( (((sign) ? '' : '-') + num + '.' + cents))
+ else return (sign ? '' : '-') + num
+ // return Number((((sign) ? '' : '-') + num))
+}
+
+export function fomatFloat(src, pos) {
+ return Math.round(src * Math.pow(10, pos)) / Math.pow(10, pos)
+}
diff --git a/src/utils/get-page-title.js b/src/utils/get-page-title.js
new file mode 100644
index 0000000..07e6c60
--- /dev/null
+++ b/src/utils/get-page-title.js
@@ -0,0 +1,10 @@
+import defaultSettings from '@/settings'
+
+const title = defaultSettings.title || 'IRCIS'
+
+export default function getPageTitle(pageTitle) {
+ if (pageTitle) {
+ return `${pageTitle} - ${title}`
+ }
+ return `${title}`
+}
diff --git a/src/utils/hasPermi.js b/src/utils/hasPermi.js
new file mode 100644
index 0000000..93777c3
--- /dev/null
+++ b/src/utils/hasPermi.js
@@ -0,0 +1,26 @@
+/**
+ * 获取权限布尔值
+ * Copyright (c) 2019 ruoyi
+ */
+import store from '@/store'
+
+export function xfHasPermi(Premis, qorh) {
+ var value = Premis
+ if (value && value instanceof Array && value.length > 0) {
+ const permissionFlag = value
+ const permissions = ( store.getters && store.getters.permissions ) || []
+ let hasPermissions
+ if (qorh && qorh === '&&') {
+ hasPermissions = permissionFlag.every(v => {
+ return permissions.includes(v)
+ })
+ } else {
+ hasPermissions = permissions.some(permission => {
+ return permissionFlag.includes(permission)
+ })
+ }
+ return hasPermissions
+ } else {
+ throw new Error(`请设置操作权限标签值`)
+ }
+}
diff --git a/src/utils/history.js b/src/utils/history.js
new file mode 100644
index 0000000..dad2d01
--- /dev/null
+++ b/src/utils/history.js
@@ -0,0 +1,46 @@
+
+
+/**
+ * 修改地址栏参数,不跳转(替换参数或新增参数)
+ * @param {string} name 参数名称
+ * @param {string} value 参数值
+ */
+export function changeURLStatic(name,value) {
+ var url = location.href
+ var reg = eval('/([\?|&]'+name+'=)[^&]*/gi')
+ var url2=''
+ value = value.toString().replace(/(^\s*)|(\s*$)/g,"") //移除首尾空格
+ if(!value){
+ url2 = url.replace(reg , '') //正则替换
+ }else{
+ if(url.match(reg)){
+ url2 = url.replace(reg , '$1' + value) //正则替换
+ }else{
+ url2 = url + (url.indexOf('?') > -1 ? '&' : '?') + name + '=' +value //没有参数添加参数
+ }
+ }
+ history.replaceState(null,null, url2) //替换地址栏
+}
+
+/**
+ * 获取地址栏参数
+ * @param {string} name 要获取的参数名 注:获取不到是为null
+ * @param {string} value 参数值
+ */
+export function getQueryString(param) {
+ var currentUrl = window.location.href //获取当前链接
+ var arr = currentUrl.split("?")//分割域名和参数界限
+ if (arr.length > 1) {
+ arr = arr[1].split("&")//分割参数
+ for (var i = 0; i < arr.length; i++) {
+ var tem = arr[i].split("=") //分割参数名和参数内容
+ if (tem[0] == param) {
+ return tem[1]
+ }
+ }
+ return null
+ }
+ else {
+ return null
+ }
+}
diff --git a/src/utils/htmlToPdf.js b/src/utils/htmlToPdf.js
new file mode 100644
index 0000000..b1443ba
--- /dev/null
+++ b/src/utils/htmlToPdf.js
@@ -0,0 +1,134 @@
+// 导出页面为PDF格式
+// import html2Canvas from 'html2canvas'
+// import jsPDF from 'jspdf'
+
+// pdf导出:消除分页内容割裂的具体步骤
+// 主要思路:pfd导出页面背景设置为纯白色, 根据内容之间的空白像素点来分页导出。
+
+// 0、导出页面等比例转换成a4纸的格式, 此时宽度为a4w, 高度为H。
+// 1、从高度为H的导出页面(已转换)取出一页a4纸高宽度内容, 内容高度为a4h, 位置标记高度h0(h0 = 0,从h0高度开始取), 页面宽度为a4w。
+// 2、对高度范围为h (h = a4h + h0) 到h0, 宽度为a4w的内容从下到上, 从左到右遍历像素点。
+// 3、当连续遍历到p (p是一个阈值, 一般设为10; 根据实际情形调整) 个白色(#fff)像素点时, 停止遍历。
+// 4、记录此时的遍历高度h1 (h0 < h1 < h) ; 宽度为a4w, 高度范围为h1到h0的内容就是这一页要展示的内容(把该内容复制到新的canvas里, 然后将该canvas利用pdf导出来)。
+// 5、更新位置高度h0 (h0 = h0 + h1)。
+// 6、循环【1】到【5】直到 h0 > H 时跳出循环。
+
+// export default {
+// install(Vue) {
+// Vue.prototype.getPdf = function(pdfDom) {
+// this.loading = true // 显示导出loading
+
+// const title = this.htmlTitle // PDF导出文件描述
+// const w = document.querySelector(pdfDom).offsetWidth // 获得该容器的宽
+// const h = document.querySelector(pdfDom).offsetHeight // 获得该容器的高
+// const scale = 1 // 定义缩放倍数
+
+// const canvas = document.createElement('canvas') // 定义画布canvas
+
+// // PDF内容失真处理
+// canvas.width = w * scale // 将画布宽&&高放大两倍
+// canvas.height = h * scale
+// canvas.state = false // canvas生成pdf过程状态
+// canvas.getContext('2d').scale(scale, scale)
+
+// const options = {
+// scale: scale,
+// canvas: canvas,
+// width: w,
+// height: h,
+// background: '#ffffff'
+// }
+
+// html2Canvas(document.querySelector(pdfDom), options).then(function(canvas) {
+// const a4Width = 552.28 // A4纸原始宽度为592.28, 这里减去了左右间距2个20
+// const a4Height = 801.89 // A4纸原始高度为841.89, 这里减去了左右间距2个20
+// const a4HeightRef = Math.floor(canvas.width / a4Width * a4Height) // html页面在a4纸中的高度 ,这里向下取整, 后面与这个变量相关的值都是近似值
+// const pageData = canvas.toDataURL('image/jpeg', 1.0)
+
+// let actualHeight = canvas.height // html页面在canvas中的高度
+// let positionHeight = 0 // canvas分页, 位置高度
+// // eslint-disable-next-line new-cap
+// const pdf = new jsPDF('x', 'pt', 'a4')
+// const currentCanvas = document.createElement('canvas') // 遍历canvas, 每一页生成的临时canvas
+// let height // canvas分页, 每页实际分割的高度(如果每页没有空白, 该高度=a4HeightRef, 有空白的, 会将下面的空白高度去掉)
+
+// function createPdfPage(canvas) {
+// if (actualHeight > 0) {
+// let checkCount = 0 // 统计出现空白的次数, 按照每页像素点从下到上, 从左到右同时去遍历; 这里根据实际PDF出现的内容, 灵活调整阈值, 使其分割更为合理(这里的阈值为10)
+
+// if (actualHeight > a4HeightRef) {
+// let currentHeight = positionHeight + a4HeightRef // 当前单页
+
+// for (let i = currentHeight; i >= positionHeight; --i) {
+// let isWrite = true
+
+// for (let j = 0; j < canvas.width; ++j) {
+// const c = canvas.getContext('2d').getImageData(j, i, 1, 1).data // 获取横轴为j, 纵轴为i, 高度宽度均为1的像素数据[255,255,255,0.8]
+
+// if (c[0] !== 0xff || c[1] !== 0xff || c[2] !== 0xff) {
+// isWrite = false
+// break
+// }
+// }
+
+// if (isWrite) {
+// ++checkCount
+// if (checkCount >= 10) {
+// currentHeight = i
+// break
+// }
+// } else {
+// ++checkCount
+// }
+// }
+
+// height = Math.round(currentHeight - positionHeight)
+// } else {
+// height = actualHeight
+// }
+
+// currentCanvas.width = canvas.width
+// currentCanvas.height = height
+// // 将当前遍历的canvas页内容复制到新的currentCanvas中
+// currentCanvas.getContext('2d').drawImage(canvas, 0, positionHeight, canvas.width, height, 0, 0, canvas.width, height)
+// pdf.addPage()
+// // 将currentCanvas添加到页面中
+// pdf.addImage(currentCanvas.toDataURL('image/jpeg', 1.0), 'JPEG', 20, 20, a4Width, a4Width / currentCanvas.width * height)
+// actualHeight -= height
+// positionHeight += height
+
+// if (actualHeight > 0) {
+// createPdfPage(canvas)
+// } else {
+// pdf.save(`${title}.pdf`)
+// canvas.state = true
+// }
+// }
+// }
+
+// // 当内容未超过pdf一页显示的范围, 无需分页
+// if (actualHeight < a4HeightRef) {
+// // 这里默认执行了一次pdf.addPage();
+// pdf.addImage(pageData, 'JPEG', 20, 20, a4Width, a4Width / canvas.width * actualHeight)
+// pdf.save(`${title}.pdf`)
+// canvas.state = true
+// } else {
+// // 删除第一张空白页
+// // html2Canvas方法默认就有一页pdf,即在进入createPdfPage()方法前就已经执行了一次pdf.addPage();
+// pdf.deletePage(1)
+// createPdfPage(canvas)
+// }
+// })
+// .then(() => {
+// if (canvas.state) {
+// this.loading = false
+// } else {
+// this.$message({
+// message: 'Error exporting pdf',
+// type: 'error'
+// })
+// }
+// })
+// }
+// }
+// }
diff --git a/src/utils/index.js b/src/utils/index.js
new file mode 100644
index 0000000..00d9b59
--- /dev/null
+++ b/src/utils/index.js
@@ -0,0 +1,62 @@
+
+/**
+ * Parse the time to string
+ * @param {(Object|string|number)} time
+ * @param {string} cFormat
+ * @returns {string | null}
+ */
+export function parseTime(time, cFormat) {
+ if (arguments.length === 0) {
+ return null
+ }
+ const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+ time = parseInt(time)
+ }
+ if ((typeof time === 'number') && (time.toString().length === 10)) {
+ time = time * 1000
+ }
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay()
+ }
+ const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
+ const value = formatObj[key]
+ // Note: getDay() returns 0 on Sunday
+ if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }
+ return value.toString().padStart(2, '0')
+ })
+ return time_str
+}
+
+/**
+ * @param {string} url
+ * @returns {Object}
+ */
+export function param2Obj(url) {
+ const search = url.split('?')[1]
+ if (!search) {
+ return {}
+ }
+ return JSON.parse(
+ '{"' +
+ decodeURIComponent(search)
+ .replace(/"/g, '\\"')
+ .replace(/&/g, '","')
+ .replace(/=/g, '":"')
+ .replace(/\+/g, ' ') +
+ '"}'
+ )
+}
+
diff --git a/src/utils/oss.js b/src/utils/oss.js
new file mode 100644
index 0000000..a055be1
--- /dev/null
+++ b/src/utils/oss.js
@@ -0,0 +1,140 @@
+const OSS = require('ali-oss')
+const router = require('@/router');
+import Vue from 'vue'
+const { GetObjectStoreToken } = require('../api/user.js')
+
+Vue.prototype.OSSclientConfig = {
+}
+
+
+async function ossGenerateSTS() {
+ let res = null;
+ if (localStorage.getItem('stsToken')) {
+ res = JSON.parse(localStorage.getItem('stsToken'))
+ } else {
+ res = await GetObjectStoreToken()
+ localStorage.setItem('stsToken', JSON.stringify(res))
+ }
+
+ // res.Result.ObjectStoreUse = 'AWS';
+ Vue.prototype.OSSclientConfig = { ...res.Result[res.Result.ObjectStoreUse] }
+ Vue.prototype.OSSclientConfig.ObjectStoreUse = res.Result.ObjectStoreUse;
+ Vue.prototype.OSSclientConfig.basePath = Vue.prototype.OSSclientConfig.viewEndpoint
+ switch (res.Result.ObjectStoreUse) {
+ case 'AliyunOSS':
+ Vue.prototype.OSSclientConfig.bucket = Vue.prototype.OSSclientConfig.bucketName
+ Vue.prototype.OSSclientConfig.stsToken = Vue.prototype.OSSclientConfig.securityToken
+ Vue.prototype.OSSclientConfig.timeout = 10 * 60 * 1000
+ let OSSclient = await RefreshClient(OSSclient)
+ Vue.prototype.OSSclient = {
+ put: async function (objectName, object) {
+ OSSclient = await RefreshClient(OSSclient)
+ return new Promise(async (resolve, reject) => {
+ try {
+ let _vm = router.default.app
+ if (_vm._route.path !== '/trials/trials-panel/visit/crc-upload') {
+ var objectItem = objectName.split('/')
+ // objectItem[objectItem.length - 1] = new Date().getTime() + '_' + objectItem[objectItem.length - 1]
+ objectItem[objectItem.length - 1] = `${objectItem[objectItem.length - 1].substring(
+ 0,
+ objectItem[objectItem.length - 1].lastIndexOf('.')
+ )}__${new Date().getTime()}${objectItem[objectItem.length - 1].substring(
+ objectItem[objectItem.length - 1].lastIndexOf('.')
+ ).toLocaleLowerCase()}`
+ objectName = objectItem.join('/')
+ }
+ let res = await OSSclient.put(objectName, object)
+ if (res && res.url) {
+ resolve({
+ name: objectName,
+ url: res.url
+ })
+ } else {
+ reject()
+ }
+ } catch (e) {
+ console.log(e)
+ reject()
+ }
+ })
+ },
+ }
+ break
+ }
+ return
+}
+// client过期刷新
+async function RefreshClient(client) {
+ let config = await getSTSToken(Vue.prototype.OSSclientConfig.expiration);
+ if (config) {
+ // config.Result.ObjectStoreUse = 'AWS'
+ switch (config.Result.ObjectStoreUse) {
+ case 'AliyunOSS': {
+ Vue.prototype.OSSclientConfig = { ...config.Result[config.Result.ObjectStoreUse] }
+ Vue.prototype.OSSclientConfig.ObjectStoreUse = config.Result.ObjectStoreUse;
+ Vue.prototype.OSSclientConfig.basePath = Vue.prototype.OSSclientConfig.viewEndpoint;
+ Vue.prototype.OSSclientConfig.bucket = Vue.prototype.OSSclientConfig.bucketName
+ Vue.prototype.OSSclientConfig.stsToken = Vue.prototype.OSSclientConfig.securityToken
+ Vue.prototype.OSSclientConfig.timeout = 10 * 60 * 1000
+ return new OSS(Vue.prototype.OSSclientConfig);
+ }
+ }
+
+ } else {
+ return client;
+ }
+}
+function decodeUtf8(bytes) {
+ let str = bytes.split('?');
+ let str2 = str[0].split('/');
+ let name = str2[str2.length - 1];
+ name = encodeURIComponent(name);
+ str.shift();
+ str2.pop();
+ return str2.join("/") + '/' + name;
+}
+const queue = []
+let loading = false;
+// 获取凭证
+function getSTSToken(credentials) {
+ return new Promise(async (resolve, reject) => {
+ let isExpired = isCredentialsExpired(credentials);
+ if (isExpired) {
+ if (loading) {
+ queue.push({ resolve, reject })
+ }
+ if (!loading) {
+ loading = true;
+ let res = await GetObjectStoreToken();
+ loading = false;
+ localStorage.setItem('stsToken', JSON.stringify(res))
+ resolve(res)
+ let p = queue.shift();
+ while (p) {
+ p.resolve(res)
+ p = queue.shift();
+ }
+ }
+
+ } else {
+ // console.log("凭证未过期");
+ resolve(false)
+ }
+
+ })
+}
+/**
+* oss判断临时凭证是否到期。
+**/
+function isCredentialsExpired(credentials) {
+ if (!credentials) {
+ return true;
+ }
+ const expireDate = new Date(credentials);
+ const now = new Date();
+ // 如果有效期不足五分钟,视为过期。
+ return expireDate.getTime() - now.getTime() <= 300000;
+
+}
+
+export const OSSclient = ossGenerateSTS
diff --git a/src/utils/permission.js b/src/utils/permission.js
new file mode 100644
index 0000000..83504bc
--- /dev/null
+++ b/src/utils/permission.js
@@ -0,0 +1,20 @@
+export default {
+ install(Vue) {
+ Vue.prototype.checkPermission = function(menuName, btnName) {
+ const funcArr = zzSessionStorage.getItem('FuncTree') ? JSON.parse(zzSessionStorage.getItem('FuncTree')) : {}
+ if (Object.keys(funcArr).length !== 0) {
+ if (funcArr[menuName] && funcArr[menuName] instanceof Array && funcArr[menuName].length > 0) {
+ const permissionBtn = btnName
+ const hasPermission = funcArr[menuName].some(item => {
+ return permissionBtn === item
+ })
+ return hasPermission
+ } else {
+ return false
+ }
+ } else {
+ return false
+ }
+ }
+ }
+}
diff --git a/src/utils/request-download.js b/src/utils/request-download.js
new file mode 100644
index 0000000..d972d91
--- /dev/null
+++ b/src/utils/request-download.js
@@ -0,0 +1,112 @@
+import axios from 'axios'
+import { Message, MessageBox } from 'element-ui'
+import store from '@/store'
+import router from '@/router'
+axios.defaults.withCredentials = false
+const service = axios.create({
+ baseURL: '/api',
+ timeout: 2 * 360000, // request timeout
+ withCredentials: false
+})
+
+// request interceptor
+service.interceptors.request.use(
+ config => {
+ config.headers['Content-Type'] = 'application/json;charset=UTF-8'
+ var language = zzSessionStorage.getItem('lang')
+ config.headers['Accept-Language'] = language === 'en'?'en-US,en;q=0.5':'zh-CN,zh;q=0.9'
+ console.log(config.headers)
+ if (store.getters.token) {
+ config.headers.Authorization = `Bearer ${store.getters.token}`
+ }
+ return config
+ },
+ error => {
+ return Promise.reject(error)
+ }
+)
+
+service.interceptors.response.use(
+ response => {
+ const res = response.data
+ let fileReader = new FileReader();
+ fileReader.onload = function() {
+ try {
+ let jsonData = JSON.parse(fileReader.result); // 如果是普通对象数据,后台转换失败
+ if (!jsonData.IsSuccess && jsonData.ErrorMessage) {
+ MessageBox.confirm(jsonData.ErrorMessage, {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => {}
+ })
+ return Promise.reject(jsonData)
+ }
+ } catch (err) { // 解析成对象失败,说明是正常的文件流
+ let contentDisposition = response.headers['content-disposition']
+ let fileName = ''
+ if (contentDisposition) {
+ fileName = contentDisposition.split('; ')[2].split('=')[1].split("\'")[2]
+ fileName = decodeURI(fileName)
+ }
+ const a = document.createElement('a')
+ // xls类型: application/vnd.ms-excel
+ // xlsx类型:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+ const href = URL.createObjectURL(new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' }))
+ a.download = fileName
+ a.href = href
+ a.click()
+ URL.revokeObjectURL(href)
+ return Promise.resolve(res)
+ }
+ };
+ fileReader.readAsText(res)
+ },
+ error => {
+ var message = ''
+ if (error && error.response) {
+ const status = error.response.status
+ switch (status) {
+ case 400: message = store.state.lang.language === 'en'? 'Request error' : '请求错误'; break
+ case 401: message = store.state.lang.language === 'en'? 'Not authorized or login timed out. Please log in again.' : '未授权或登陆超时,请重新登录'; break
+ case 403: message = error.response.data.ErrorMessage; break
+ case 404: message = store.state.lang.language === 'en'? 'Request address error' : `请求地址出错`; break
+ case 405: message = store.state.lang.language === 'en'? 'Interface parameter error or request method inconsistency' : `接口参数传递错误,或者请求方法不一致`; break
+ case 408: message = store.state.lang.language === 'en'? 'Request timed out' : '请求超时'; break
+ case 429: message = store.state.lang.language === 'en'? 'The application service limits the traffic. Your requests are too frequent. Please try again later.' : '应用服务限流,您的请求过于频繁,请稍后再试'; break
+ case 500: message = store.state.lang.language === 'en'? 'Internal server error, and unable to complete the request. Software release might be in process. Please contact the administrator.' : '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break
+ case 501: message = store.state.lang.language === 'en'? 'Service has not been implemented.' : '服务未实现'; break
+ case 502: message = store.state.lang.language === 'en'? 'System is being upgraded. Please wait patiently.' : '系统正在升级,请耐心等待。'; break
+ case 503: message = store.state.lang.language === 'en'? 'Service is not available' : '服务不可用'; break
+ case 504: message = store.state.lang.language === 'en'? 'Gateway timed out' : '网关超时'; break
+ case 505: message = store.state.lang.language === 'en'? 'HTTP version is not supported' : 'HTTP版本不受支持'; break
+ default: break
+ }
+ if (error.response.status === 401) {
+ if (store.getters.token) {
+ Message({
+ message: message,
+ type: 'warning',
+ showClose: true
+ })
+ store.dispatch('user/logout').then(() => {
+ router.push(`/login`)
+ this.$i18n.locale = 'zh'
+ this.setLanguage('zh')
+ this.$updateDictionary()
+ })
+ }
+ } else {
+ MessageBox.confirm(message, '警告', {
+ type: 'warning',
+ showCancelButton: false,
+ confirmButtonText: '确定',
+ callback: action => {}
+ })
+ }
+ }
+
+ return Promise.reject(new Error(message || 'Error'))
+ }
+)
+
+export default service
diff --git a/src/utils/request-pool.js b/src/utils/request-pool.js
new file mode 100644
index 0000000..3ad5091
--- /dev/null
+++ b/src/utils/request-pool.js
@@ -0,0 +1,158 @@
+import * as cornerstone from 'cornerstone-core'
+var taskPool = [] // 请求池
+let numRequest = 0 // 正在执行数量
+const maxRequest = 4 // 可配置
+let taskTimer // 轮询的定时器
+var pendingList =[]
+var cachedTask = {} // 存放的任务数据
+const maxTask = 6
+
+
+// 预加载池的添加
+function addTaskIntoPool(task) {
+ return new Promise((resolve, reject) => {
+ taskPool.forEach(task=>{
+ task.priority = task.priority
+ })
+ const cache = cachedTask[task.key]
+ const callback = (executeRes) => {
+ if (executeRes.success) {
+ resolve(executeRes.res)
+ } else {
+ reject(executeRes.err)
+ }
+ }
+ const priority = task.priority || 0;
+ if (cache) {
+ cache.priority = priority
+ task.callback =callback
+ } else {
+ task.callback =callback
+ cachedTask[task.key] = task
+ taskPool.push(task)
+ }
+ })
+}
+// 执行下载
+function executeTask() {
+ if (taskPool.length > 0) {
+ numRequest = 0
+ const executeRequest = maxRequest - numRequest
+
+ if (executeRequest > 0) {
+
+ for (let i = 0; i < executeRequest; i++) {
+ sortTaskPool()
+
+ const task = taskPool.shift()
+ if (!task) {
+ return
+ }
+ numRequest++
+ task.execute().then((res) => {
+ numRequest--
+ task.callback({ success: true, res })
+ executeTask()
+ }, (err) => {
+ numRequest--
+ task.callback({ success: false,err })
+ executeTask()
+ })
+ }
+ }
+ }else{
+ startTaskTimer()
+ }
+}
+function sortTaskPool() {
+ if (taskPool.length > 0) {
+ taskPool.sort((a, b) => b.priority-a.priority )
+
+ }
+}
+
+// 轮询检查请求池中是否有请求需要执行
+function startTaskTimer() {
+ if(taskTimer){
+ clearInterval(taskTimer)
+ taskTimer = null
+ }
+ taskTimer = setInterval(() => {
+ if (taskPool.length > 0) {
+ stopTaskTimer()
+ executeTask()
+ }else{
+ return
+ }
+ }, 50)
+}
+
+// 停止轮询
+function stopTaskTimer() {
+ clearInterval(taskTimer)
+ taskTimer = null
+}
+function loadAndCacheImagePlus(imageId,seriesId, priority) {
+ return new Promise((resolve, reject) => {
+ const imageLoadObject = cornerstone.imageCache.getImageLoadObject(imageId)
+ if (imageLoadObject) {
+ imageLoadObject.promise.then((image) => {
+ resolve(image)
+ }, (err) => {
+ reject(err)
+ })
+ } else {
+ const imageTask = buildImageRequestTask(imageId,seriesId, { priority })
+ addTaskIntoPool(imageTask).then((res) => {
+ resolve(res)
+ }).catch(e => {
+ reject(e)
+ })
+ }
+ })
+}
+function removeTask(seriesId){
+ stopTaskTimer()
+ if (taskPool.length > 0) {
+ for(var i =taskPool.length-1; i>=0;i--){
+ if(taskPool[i] && taskPool[i].seriesId === seriesId){
+ delete cachedTask[taskPool[i].key]
+ taskPool.splice(i,1)
+
+ }
+ }
+
+ }
+ startTaskTimer()
+}
+function resetRequestPool(){
+ taskPool = []
+ pendingList =[]
+ cachedTask = {}
+}
+function resetCachedTask(){
+ taskPool = []
+ pendingList =[]
+ cachedTask = {}
+}
+function buildImageRequestTask(imageId,seriesId, config = {}) {
+ return {
+ key: imageId,
+ seriesId:seriesId,
+ ...config,
+ execute: () => {
+ return cornerstone.loadAndCacheImage(imageId)
+ }
+ };
+}
+
+export default {
+ addTaskIntoPool,
+ executeTask,
+ startTaskTimer,
+ stopTaskTimer,
+ loadAndCacheImagePlus,
+ removeTask,
+ resetRequestPool,
+ resetCachedTask
+}
diff --git a/src/utils/request.js b/src/utils/request.js
new file mode 100644
index 0000000..aad3639
--- /dev/null
+++ b/src/utils/request.js
@@ -0,0 +1,141 @@
+import axios from 'axios'
+import { Message, MessageBox, Alert } from 'element-ui'
+import store from '@/store'
+import router from '@/router'
+import Vue from 'vue'
+axios.defaults.withCredentials = false
+const service = axios.create({
+ baseURL: '/api',
+ timeout: 2 * 360000, // request timeout
+ withCredentials: false
+})
+var path
+// request interceptor
+// var lang = store.state.lang.language
+
+service.interceptors.request.use(
+ async config => {
+ path = router && router.app && router.app._route && router.app._route.path
+ config.headers['Content-Type'] = 'application/json;charset=UTF-8'
+ var language = zzSessionStorage.getItem('lang')
+ config.headers['Accept-Language'] = language === 'en' ? 'en-US,en;q=0.5' : 'zh-CN,zh;q=0.9'
+ if (store.getters.token) {
+ config.headers.Authorization = `Bearer ${store.getters.token}`
+ }
+ try {
+ if (eval(process.env.VUE_APP_LOGIN_FOR_PERMISSION)) {
+ if (!path || path === '/ReviewersResearchForm' || path === '/ReviewersResearch' || path === '/login' || path === '/researchForm' || path === '/researchLogin' || path === '/email-recompose' || path === '/recompose' || path === '/resetpassword' || path === '/error') {
+ return config
+ }
+ if (store.state.user.userId !== zzSessionStorage.getItem('userId')) {
+ window.location.href = `/login`
+ zzSessionStorage.removeItem('lastWorkbench')
+ Alert(store.state.lang.language === 'en' ? 'The same browser only allows one user account to be logged in at a time.' : '同一浏览器只允许同时登陆一个账户', {
+ type: 'warning',
+ })
+ }
+ }
+ } catch (e) {
+ console.log(e)
+ }
+ return config
+ },
+ error => {
+ // console.log(error)
+ return Promise.reject(error)
+ }
+)
+
+service.interceptors.response.use(
+ response => {
+ const res = response.data
+ if (res.IsSuccess) {
+ return Promise.resolve(res)
+ } else if (res.IsSuccess === false) {
+ if (res.Code !== 5) {
+ MessageBox.confirm(res.ErrorMessage, {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => { }
+ })
+ }
+ return Promise.reject(res)
+ } else {
+ return Promise.resolve(res)
+ }
+ },
+ error => {
+ var message = ''
+ if (error && error.response) {
+ const status = error.response.status
+ if (error.response.data && error.response.data.Code === -1) {
+ store.dispatch('user/logout').then(() => {
+ router.push(`/login`)
+ this.$i18n.locale = 'zh'
+ this.setLanguage('zh')
+ this.$updateDictionary()
+ })
+ }
+ switch (status) {
+ case 400: message = store.state.lang.language === 'en' ? 'Request error' : '请求错误'; break
+ case 401: message = store.state.lang.language === 'en' ? 'Not authorized or login timed out. Please log in again.' : '未授权或登陆超时,请重新登录'; break
+ case 403: message = error.response.data.ErrorMessage; break
+ case 404: message = store.state.lang.language === 'en' ? 'Request address error' : `请求地址出错`; break
+ case 405: message = store.state.lang.language === 'en' ? 'Interface parameter error or request method inconsistency' : `接口参数传递错误,或者请求方法不一致`; break
+ case 408: message = store.state.lang.language === 'en' ? 'Request timed out' : '请求超时'; break
+ case 429: message = store.state.lang.language === 'en' ? 'The application service limits the traffic. Your requests are too frequent. Please try again later.' : '应用服务限流,您的请求过于频繁,请稍后再试'; break
+ case 500: message = store.state.lang.language === 'en' ? 'Internal server error, and unable to complete the request. Software release might be in process. Please contact the administrator.' : '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break
+ case 501: message = store.state.lang.language === 'en' ? 'Service has not been implemented.' : '服务未实现'; break
+ case 502: message = store.state.lang.language === 'en' ? 'System is being upgraded. Please wait patiently.' : '系统正在升级,请耐心等待。'; break
+ case 503: message = store.state.lang.language === 'en' ? 'Service is not available' : '服务不可用'; break
+ case 504: message = store.state.lang.language === 'en' ? 'Gateway timed out' : '网关超时'; break
+ case 505: message = store.state.lang.language === 'en' ? 'HTTP version is not supported' : 'HTTP版本不受支持'; break
+ default: break
+ }
+ if (error.response.status === 401) {
+ if (store.getters.token) {
+ if (message !== '') {
+ Message({
+ message: message,
+ type: 'warning',
+ showClose: true
+ })
+ }
+ store.dispatch('user/logout').then(() => {
+ router.push(`/login`)
+ this.$i18n.locale = 'zh'
+ this.setLanguage('zh')
+ this.$updateDictionary()
+ })
+ } else {
+ Message({
+ message: store.state.lang.language === 'en' ? 'You are not authorized to access the interface' : '您无权访问接口',
+ type: 'warning',
+ showClose: true
+ })
+ }
+ } else {
+ if (message !== '') {
+ MessageBox.confirm(message, store.state.lang.language === 'en' ? 'Warning' : '警告', {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => { }
+ })
+ }
+ }
+ }
+ if (!window.navigator.onLine) {
+ MessageBox.confirm(store.state.lang.language === 'en' ? 'Please check your network' : '请检查您的网络', store.state.lang.language === 'en' ? 'Warning' : '警告', {
+ type: 'warning',
+ showCancelButton: false,
+ callback: action => { }
+ })
+ }
+ return Promise.reject(new Error(message || 'Error'))
+ }
+)
+
+
+
+
+export default service
diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js
new file mode 100644
index 0000000..0d2b29a
--- /dev/null
+++ b/src/utils/ruoyi.js
@@ -0,0 +1,217 @@
+/**
+ * 通用js方法封装处理
+ * Copyright (c) 2019 ruoyi
+ */
+
+// 日期格式化
+export function parseTime(time, pattern) {
+ if (arguments.length === 0 || !time) {
+ return null
+ }
+ const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+ time = parseInt(time)
+ } else if (typeof time === 'string') {
+ time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '')
+ }
+ if ((typeof time === 'number') && (time.toString().length === 10)) {
+ time = time * 1000
+ }
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay()
+ }
+ const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+ let value = formatObj[key]
+ // Note: getDay() returns 0 on Sunday
+ if (key === 'a') {
+ return ['日', '一', '二', '三', '四', '五', '六'][value]
+ }
+ if (result.length > 0 && value < 10) {
+ value = '0' + value
+ }
+ return value || 0
+ })
+ return time_str
+}
+
+// 表单重置
+export function resetForm(refName) {
+ if (this.$refs[refName]) {
+ this.$refs[refName].resetFields()
+ }
+}
+
+// 添加日期范围
+export function addDateRange(params, dateRange, propName) {
+ const search = params
+ search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {}
+ dateRange = Array.isArray(dateRange) ? dateRange : []
+ if (typeof (propName) === 'undefined') {
+ search.params['beginTime'] = dateRange[0]
+ search.params['endTime'] = dateRange[1]
+ } else {
+ search.params['begin' + propName] = dateRange[0]
+ search.params['end' + propName] = dateRange[1]
+ }
+ return search
+}
+
+// 回显数据字典
+export function selectDictLabel(datas, value) {
+ var actions = []
+ Object.keys(datas).some((key) => {
+ if (datas[key].value == ('' + value)) {
+ actions.push(datas[key].label)
+ return true
+ }
+ })
+ return actions.join('')
+}
+
+// 回显数据字典(字符串数组)
+export function selectDictLabels(datas, value, separator) {
+ var actions = []
+ var currentSeparator = undefined === separator ? ',' : separator
+ var temp = value.split(currentSeparator)
+ Object.keys(value.split(currentSeparator)).some((val) => {
+ Object.keys(datas).some((key) => {
+ if (datas[key].dictValue == ('' + temp[val])) {
+ actions.push(datas[key].dictLabel + currentSeparator)
+ }
+ })
+ })
+ return actions.join('').substring(0, actions.join('').length - 1)
+}
+
+// 字符串格式化(%s )
+export function sprintf(str) {
+ var args = arguments; var flag = true; var i = 1
+ str = str.replace(/%s/g, function() {
+ var arg = args[i++]
+ if (typeof arg === 'undefined') {
+ flag = false
+ return ''
+ }
+ return arg
+ })
+ return flag ? str : ''
+}
+
+// 转换字符串,undefined,null等转化为""
+export function praseStrEmpty(str) {
+ if (!str || str == 'undefined' || str == 'null') {
+ return ''
+ }
+ return str
+}
+
+// 如果name有值返回key=参数的键值对的值 返回url上所有键值对的结果集
+export function params (name) {
+ var rs = urlsearch()
+ if (rs != null) {
+ if (name) {
+ return rs[name]
+ }
+ }
+ return rs
+}
+function urlsearch () {
+ var rs = null
+ var name, value
+ var str = location.href
+ var num = str.indexOf('?')
+ str = str.substr(num + 1)
+ var arr = str.split('&')
+ if (arr.length > 0) {
+ rs = {}
+ for (var i = 0; i < arr.length; i++) {
+ num = arr[i].indexOf('=')
+ if (num > 0) {
+ name = arr[i].substring(0, num)
+ value = arr[i].substr(num + 1)
+ rs[name] = decodeURI(value)
+ }
+ }
+ }
+ return rs
+}
+
+// 数据合并
+export function mergeRecursive(source, target) {
+ for (var p in target) {
+ try {
+ if (target[p].constructor == Object) {
+ source[p] = mergeRecursive(source[p], target[p])
+ } else {
+ source[p] = target[p]
+ }
+ } catch (e) {
+ source[p] = target[p]
+ }
+ }
+ return source
+}
+
+/**
+ * 构造树型结构数据
+ * @param {*} data 数据源
+ * @param {*} id id字段 默认 'id'
+ * @param {*} parentId 父节点字段 默认 'parentId'
+ * @param {*} children 孩子节点字段 默认 'children'
+ */
+export function handleTree(data, id, parentId, children) {
+ var config = {
+ id: id || 'id',
+ parentId: parentId || 'parentId',
+ childrenList: children || 'children'
+ }
+
+ var childrenListMap = {}
+ var nodeIds = {}
+ var tree = []
+
+ for (var d of data) {
+ var parentId = d[config.parentId]
+ if (childrenListMap[parentId] == null) {
+ childrenListMap[parentId] = []
+ }
+ nodeIds[d[config.id]] = d
+ childrenListMap[parentId].push(d)
+ }
+
+ for (var d of data) {
+ var parentId = d[config.parentId]
+ if (nodeIds[parentId] == null) {
+ tree.push(d)
+ }
+ }
+
+ for (var t of tree) {
+ adaptToChildrenList(t)
+ }
+
+ function adaptToChildrenList(o) {
+ if (childrenListMap[o[config.id]] !== null) {
+ o[config.childrenList] = childrenListMap[o[config.id]]
+ }
+ if (o[config.childrenList]) {
+ for (var c of o[config.childrenList]) {
+ adaptToChildrenList(c)
+ }
+ }
+ }
+
+ return tree
+}
diff --git a/src/utils/scroll-to.js b/src/utils/scroll-to.js
new file mode 100644
index 0000000..b52731e
--- /dev/null
+++ b/src/utils/scroll-to.js
@@ -0,0 +1,55 @@
+Math.easeInOutQuad = function(t, b, c, d) {
+ t /= d / 2
+ if (t < 1) {
+ return c / 2 * t * t + b
+ }
+ t--
+ return -c / 2 * (t * (t - 2) - 1) + b
+}
+
+var requestAnimFrame = (function() {
+ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) }
+})()
+
+/**
+ *
+ * @param {number} amount
+ */
+function move(amount) {
+ document.documentElement.scrollTop = amount
+ document.body.parentNode.scrollTop = amount
+ document.body.scrollTop = amount
+}
+
+function position() {
+ return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop
+}
+
+/**
+ * @param {number} to
+ * @param {number} duration
+ * @param {Function} callback
+ */
+export function scrollTo(to, duration, callback) {
+ const start = position()
+ const change = to - start
+ const increment = 20
+ let currentTime = 0
+ duration = (typeof (duration) === 'undefined') ? 500 : duration
+ var animateScroll = function() {
+ currentTime += increment
+
+ var val = Math.easeInOutQuad(currentTime, start, change, duration)
+
+ move(val)
+
+ if (currentTime < duration) {
+ requestAnimFrame(animateScroll)
+ } else {
+ if (callback && typeof (callback) === 'function') {
+ callback()
+ }
+ }
+ }
+ animateScroll()
+}
diff --git a/src/utils/validate.js b/src/utils/validate.js
new file mode 100644
index 0000000..9c6b3e9
--- /dev/null
+++ b/src/utils/validate.js
@@ -0,0 +1,8 @@
+
+/**
+ * @param {string} path
+ * @returns {Boolean}
+ */
+export function isExternal(path) {
+ return /^(https?:|mailto:|tel:)/.test(path)
+}
diff --git a/src/utils/xf.js b/src/utils/xf.js
new file mode 100644
index 0000000..730d248
--- /dev/null
+++ b/src/utils/xf.js
@@ -0,0 +1,186 @@
+/**
+ * 通用js方法封装处理
+ * Copyright (c) 2019 ruoyi
+ */
+
+// 日期格式化
+export function parseTime(time, pattern) {
+ if (arguments.length === 0 || !time) {
+ return null
+ }
+ const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
+ let date
+ if (typeof time === 'object') {
+ date = time
+ } else {
+ if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
+ time = parseInt(time)
+ } else if (typeof time === 'string') {
+ time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), '');
+ }
+ if ((typeof time === 'number') && (time.toString().length === 10)) {
+ time = time * 1000
+ }
+ date = new Date(time)
+ }
+ const formatObj = {
+ y: date.getFullYear(),
+ m: date.getMonth() + 1,
+ d: date.getDate(),
+ h: date.getHours(),
+ i: date.getMinutes(),
+ s: date.getSeconds(),
+ a: date.getDay()
+ }
+ const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
+ let value = formatObj[key]
+ // Note: getDay() returns 0 on Sunday
+ if (key === 'a') {
+ return ['日', '一', '二', '三', '四', '五', '六'][value]
+ }
+ if (result.length > 0 && value < 10) {
+ value = '0' + value
+ }
+ return value || 0
+ })
+ return time_str
+}
+
+// 表单重置
+export function resetForm(refName) {
+ if (this.$refs[refName]) {
+ this.$refs[refName].resetFields();
+ }
+}
+
+// 添加日期范围
+export function addDateRange(params, dateRange, propName) {
+ let search = params;
+ search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {};
+ dateRange = Array.isArray(dateRange) ? dateRange : [];
+ if (typeof (propName) === 'undefined') {
+ search.params['beginTime'] = dateRange[0];
+ search.params['endTime'] = dateRange[1];
+ } else {
+ search.params['begin' + propName] = dateRange[0];
+ search.params['end' + propName] = dateRange[1];
+ }
+ return search;
+}
+
+// 回显数据字典
+export function selectDictLabel(datas, value) {
+ var actions = [];
+ Object.keys(datas).some((key) => {
+ if (datas[key].value == ('' + value)) {
+ actions.push(datas[key].label);
+ return true;
+ }
+ })
+ return actions.join('');
+}
+
+// 回显数据字典(字符串数组)
+export function selectDictLabels(datas, value, separator) {
+ var actions = [];
+ var currentSeparator = undefined === separator ? "," : separator;
+ var temp = value.split(currentSeparator);
+ Object.keys(value.split(currentSeparator)).some((val) => {
+ Object.keys(datas).some((key) => {
+ if (datas[key].dictValue == ('' + temp[val])) {
+ actions.push(datas[key].dictLabel + currentSeparator);
+ }
+ })
+ })
+ return actions.join('').substring(0, actions.join('').length - 1);
+}
+
+// 字符串格式化(%s )
+export function sprintf(str) {
+ var args = arguments, flag = true, i = 1;
+ str = str.replace(/%s/g, function () {
+ var arg = args[i++];
+ if (typeof arg === 'undefined') {
+ flag = false;
+ return '';
+ }
+ return arg;
+ });
+ return flag ? str : '';
+}
+
+// 转换字符串,undefined,null等转化为""
+export function praseStrEmpty(str) {
+ if (!str || str == "undefined" || str == "null") {
+ return "";
+ }
+ return str;
+}
+
+// 数据合并
+export function mergeRecursive(source, target) {
+ for (var p in target) {
+ try {
+ if (target[p].constructor == Object) {
+ source[p] = mergeRecursive(source[p], target[p]);
+ } else {
+ source[p] = target[p];
+ }
+ } catch (e) {
+ source[p] = target[p];
+ }
+ }
+ return source
+}
+
+/**
+ * 构造树型结构数据
+ * @param {*} data 数据源
+ * @param {*} id id字段 默认 'id'
+ * @param {*} parentId 父节点字段 默认 'parentId'
+ * @param {*} children 孩子节点字段 默认 'children'
+ */
+export function handleTree(data, id, parentId, children) {
+ var config = {
+ id: id || 'id',
+ parentId: parentId || 'parentId',
+ childrenList: children || 'children'
+ }
+
+ var childrenListMap = {}
+ var nodeIds = {}
+ var tree = []
+
+ for (var d of data) {
+ var parentId = d[config.parentId]
+ if (childrenListMap[parentId] == null) {
+ childrenListMap[parentId] = []
+ }
+ nodeIds[d[config.id]] = d
+ childrenListMap[parentId].push(d)
+ }
+
+ for (var d of data) {
+ var parentId = d[config.parentId];
+ if (nodeIds[parentId] == null) {
+ tree.push(d)
+ }
+ }
+
+ for (var t of tree) {
+ adaptToChildrenList(t)
+ }
+
+ function adaptToChildrenList(o) {
+ if (childrenListMap[o[config.id]] !== null) {
+ o[config.childrenList] = childrenListMap[o[config.id]]
+ }
+ if (o[config.childrenList]) {
+ for (var c of o[config.childrenList]) {
+ adaptToChildrenList(c)
+ }
+ }
+ }
+
+ return tree
+}
diff --git a/src/views/.DS_Store b/src/views/.DS_Store
new file mode 100644
index 0000000..a724b9e
Binary files /dev/null and b/src/views/.DS_Store differ
diff --git a/src/views/404.vue b/src/views/404.vue
new file mode 100644
index 0000000..9bf87db
--- /dev/null
+++ b/src/views/404.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
OOPS!
+
+
Please check that the URL you entered is correct, or click the button below to return to the homepage.
+
Back
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/log/index.vue b/src/views/admin/log/index.vue
new file mode 100644
index 0000000..ba2dddd
--- /dev/null
+++ b/src/views/admin/log/index.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/log/log.js b/src/views/admin/log/log.js
new file mode 100644
index 0000000..0d00be5
--- /dev/null
+++ b/src/views/admin/log/log.js
@@ -0,0 +1,60 @@
+// 日志列表配置信息
+export const columns = [
+ { type: 'index' },
+ { prop: 'LogCategory', label: 'Category', minWidth: 50, sortable: 'custom', showOverflowTooltip: true },
+ { prop: 'ApiPath', label: 'Api', minWidth: 100, sortable: 'custom', showOverflowTooltip: true },
+ // { prop: 'Params', label: 'Params', minWidth: 150, showOverflowTooltip: false },
+ // { prop: 'Result', label: 'Result', minWidth: 150, showOverflowTooltip: false },
+ { prop: 'RequestTime', label: 'Request Time', minWidth: 100, sortable: 'custom', showOverflowTooltip: true },
+ { prop: 'ElapsedMilliseconds', label: 'Elapsed Milliseconds', minWidth: 100, showOverflowTooltip: true },
+ { prop: 'OptUserName', label: 'Operator', minWidth: 100, sortable: 'custom', showOverflowTooltip: true },
+ { prop: 'ClientIP', label: 'Client IP', minWidth: 100, showOverflowTooltip: true },
+ { prop: 'Status', label: 'Status', minWidth: 70, sortable: 'custom', showOverflowTooltip: true },
+ { prop: 'Message', label: 'Message', minWidth: 70, showOverflowTooltip: true }
+]
+const Category = [
+ { label: 'Reviewer', value: 'Reviewer' },
+ { label: 'Trial', value: 'Trial' },
+ { label: 'Enroll', value: 'Enroll' },
+ { label: 'Workload', value: 'Workload' },
+ { label: 'Common', value: 'Common' },
+ { label: 'Institution', value: 'Institution' },
+ { label: 'Financial', value: 'Financial' },
+ { label: 'Management', value: 'Management' },
+ { label: 'Image', value: 'Image' }
+]
+export const searchForm = [
+ {
+ type: 'Select',
+ label: 'Category:',
+ prop: 'LogCategory',
+ width: '120px',
+ placeholder: '',
+ options: Category,
+ props: { label: 'label', value: 'value' },
+ change: scope => ''
+ },
+ {
+ type: 'Input',
+ label: 'Keyword:',
+ prop: 'Keyword',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Custom',
+ slot: 'beginTimeSlot',
+ label: 'Begin Time:',
+ prop: 'BeginTime'
+ },
+ {
+ type: 'Custom',
+ slot: 'endTimeSlot',
+ label: 'End Time:',
+ prop: 'EndTime'
+ }
+]
+export const searchHandle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' }
+]
diff --git a/src/views/admin/menu/components/MenuForm.vue b/src/views/admin/menu/components/MenuForm.vue
new file mode 100644
index 0000000..2e6ae7d
--- /dev/null
+++ b/src/views/admin/menu/components/MenuForm.vue
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
+
diff --git a/src/views/admin/menu/index.vue b/src/views/admin/menu/index.vue
new file mode 100644
index 0000000..9e3c337
--- /dev/null
+++ b/src/views/admin/menu/index.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
diff --git a/src/views/admin/menu/menu.js b/src/views/admin/menu/menu.js
new file mode 100644
index 0000000..2b60bdd
--- /dev/null
+++ b/src/views/admin/menu/menu.js
@@ -0,0 +1,6 @@
+export const model_cfg = {
+ visible: false,
+ title: '',
+ width: '600px',
+ showClose: true
+}
diff --git a/src/views/admin/role/components/RoleForm.vue b/src/views/admin/role/components/RoleForm.vue
new file mode 100644
index 0000000..dbfbe3d
--- /dev/null
+++ b/src/views/admin/role/components/RoleForm.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/admin/role/components/RoleFunction.vue b/src/views/admin/role/components/RoleFunction.vue
new file mode 100644
index 0000000..8baf5ca
--- /dev/null
+++ b/src/views/admin/role/components/RoleFunction.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/role/components/RoleMenu.vue b/src/views/admin/role/components/RoleMenu.vue
new file mode 100644
index 0000000..214a049
--- /dev/null
+++ b/src/views/admin/role/components/RoleMenu.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
diff --git a/src/views/admin/role/index.vue b/src/views/admin/role/index.vue
new file mode 100644
index 0000000..96fc5c7
--- /dev/null
+++ b/src/views/admin/role/index.vue
@@ -0,0 +1,149 @@
+
+
+
+
+ New
+
+
+
+ {{ scope.row.Type === 1?'Trial':scope.row.Type === 2?'Reviewer':scope.row.Type === 3?'Other':'' }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/admin/role/role.js b/src/views/admin/role/role.js
new file mode 100644
index 0000000..3d1dfcd
--- /dev/null
+++ b/src/views/admin/role/role.js
@@ -0,0 +1,80 @@
+// 角色列表配置信息
+export const role_columns = [
+ { type: 'index' },
+
+ {
+ prop: 'UserType',
+ label: 'User Type',
+ minWidth: 120,
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'UserTypeShortName',
+ label: 'Shortname',
+ minWidth: 100,
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Type',
+ label: 'Group',
+ hidden: true,
+ minWidth: 100,
+ showOverflowTooltip: true,
+ slot: 'TypeSlot'
+ },
+
+ {
+ prop: 'Description',
+ label: 'Description',
+ minWidth: 100,
+ showOverflowTooltip: true },
+ {
+ type: 'operate',
+ label: 'Action',
+ minWidth: 100,
+ operates: [
+ // { name: 'Permission', type: 'primary', emitKey: 'permission' },
+ { name: 'Edit', type: 'primary', emitKey: 'edit' },
+ { name: 'Delete', type: 'danger', emitKey: 'delete' }
+ ] }
+]
+export const model_cfg = {
+ visible: false,
+ title: '',
+ width: '600px',
+ showClose: true
+}
+export const editRoleForm = [
+ {
+ type: 'Input',
+ label: 'Role Name',
+ prop: 'RoleName',
+ width: '100%',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Description',
+ prop: 'RoleDescription',
+ width: '100%',
+ placeholder: ''
+ }
+]
+export const editData = {
+ RoleName: null,
+ RoleDescription: null
+}
+export const editRules = {
+ RoleName: [
+ { required: true, message: 'Please specify', trigger: 'blur' },
+ { max: 50, message: 'The maximum length is 50' }
+ ],
+ RoleDescription: [
+ { max: 500, message: 'The maximum length is 500' }
+ ]
+
+}
+export const editHandle = [
+ { label: 'Cancel', type: 'primary', emitKey: 'cancel' },
+ { label: 'Save', type: 'primary', emitKey: 'save' }
+]
diff --git a/src/views/admin/user/add/index.vue b/src/views/admin/user/add/index.vue
new file mode 100644
index 0000000..ad9ae93
--- /dev/null
+++ b/src/views/admin/user/add/index.vue
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/src/views/admin/user/components/Account.vue b/src/views/admin/user/components/Account.vue
new file mode 100644
index 0000000..2d6293f
--- /dev/null
+++ b/src/views/admin/user/components/Account.vue
@@ -0,0 +1,39 @@
+
+
+
+
+ Reset Password
+
+
+
+
diff --git a/src/views/admin/user/components/UserInfo.vue b/src/views/admin/user/components/UserInfo.vue
new file mode 100644
index 0000000..c77558a
--- /dev/null
+++ b/src/views/admin/user/components/UserInfo.vue
@@ -0,0 +1,217 @@
+
+
+
+
+ Basic Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Male
+ Female
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Affiliation
+
+
+
+ Internal
+ External
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
diff --git a/src/views/admin/user/edit/index.vue b/src/views/admin/user/edit/index.vue
new file mode 100644
index 0000000..921b2c8
--- /dev/null
+++ b/src/views/admin/user/edit/index.vue
@@ -0,0 +1,40 @@
+
+
+
+
diff --git a/src/views/admin/user/index.vue b/src/views/admin/user/index.vue
new file mode 100644
index 0000000..d559fac
--- /dev/null
+++ b/src/views/admin/user/index.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/views/admin/user/list/index.vue b/src/views/admin/user/list/index.vue
new file mode 100644
index 0000000..e1baab2
--- /dev/null
+++ b/src/views/admin/user/list/index.vue
@@ -0,0 +1,139 @@
+
+
+
+
+ New
+
+
+
+
+ {{ scope.row.Sex?'Male':'Female' }}
+
+
+ {{ scope.row.RoleNameList.map(role => role.RoleName).join(',') }}
+
+
+ {{ scope.row.Status?'Enable':'Disable' }}
+
+
+
+
+
diff --git a/src/views/admin/user/list/list.js b/src/views/admin/user/list/list.js
new file mode 100644
index 0000000..fae4078
--- /dev/null
+++ b/src/views/admin/user/list/list.js
@@ -0,0 +1,136 @@
+// 用户列表配置信息
+export const columns = [
+ { type: 'index' },
+ {
+ prop: 'UserCode',
+ label: 'S/N',
+ width: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'UserName',
+ label: 'User ID',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'RealName',
+ label: 'Name',
+ minWidth: 120,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Sex',
+ label: 'Gender',
+ hidden: true,
+ slot: 'genderSlot',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Phone',
+ label: 'Phone',
+ minWidth: 120,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'EMail',
+ label: 'EMail',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'OrganizationName',
+ label: 'Organization',
+ minWidth: 130,
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'UserType',
+ label: 'User Type',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ // {
+ // prop: 'RoleNameList',
+ // label: 'Roles',
+ // hidden: true,
+ // slot: 'roleSlot',
+ // minWidth: 250,
+ // showOverflowTooltip: true
+ // },
+ {
+ prop: 'Status',
+ label: 'Status',
+ hidden: true,
+ slot: 'statusSlot',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true },
+ { type: 'operate',
+ label: 'Action',
+ minWidth: 200,
+ operates: [
+ { name: 'Edit', type: 'primary', emitKey: 'editCb' },
+ { name: 'Delete', type: 'danger', emitKey: 'deleteCb' }
+ ] }
+]
+
+// 用户列表查询表单配置信息
+export const searchForm = [
+ {
+ type: 'Input',
+ label: 'User ID:',
+ prop: 'UserName',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Phone:',
+ prop: 'Phone',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Organization:',
+ prop: 'OrganizationName',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Select',
+ label: 'Status:',
+ prop: 'UserState',
+ width: '100px',
+ options: [
+ { label: 'Enable', value: 1 },
+ { label: 'Disable', value: 0 }
+ ],
+ props: { label: 'label', value: 'value' },
+ change: scope => '',
+ placeholder: ''
+ },
+ {
+ type: 'Select',
+ label: 'User Type:',
+ prop: 'UserType',
+ width: '160px',
+ options: [], // 下拉选项
+ props: { label: 'UserType', value: 'Id' }, // 下拉选项配置信息,必填
+ placeholder: ''
+ }
+]
+// 用户列表查询表单事件配置信息
+export const searchHandle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' }
+]
diff --git a/src/views/blindResumeInfo/components/Agreements.vue b/src/views/blindResumeInfo/components/Agreements.vue
new file mode 100644
index 0000000..07a78a1
--- /dev/null
+++ b/src/views/blindResumeInfo/components/Agreements.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ View
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/BasicInfo.vue b/src/views/blindResumeInfo/components/BasicInfo.vue
new file mode 100644
index 0000000..e097903
--- /dev/null
+++ b/src/views/blindResumeInfo/components/BasicInfo.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+ {{ basicInfo.BlindName }}
+
+
+
+
+ {{ basicInfo.BlindNameCN }}
+
+
+
+
+ {{ basicInfo.Sex === 0?'Male':'Female' }}
+ {{ basicInfo.Sex === 0?'男':'女' }}
+
+
+
+
+
+ {{ (Array.isArray(basicInfo.Title)&& basicInfo.Title.length > 0) ? basicInfo.TitleList.join(', ') : '' }}
+
+
+ {{ (Array.isArray(basicInfo.TitleCNList)&& basicInfo.TitleCNList.length > 0) ? basicInfo.TitleCNList.join(', ') : '' }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/Comment.vue b/src/views/blindResumeInfo/components/Comment.vue
new file mode 100644
index 0000000..664e726
--- /dev/null
+++ b/src/views/blindResumeInfo/components/Comment.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/Credentials.vue b/src/views/blindResumeInfo/components/Credentials.vue
new file mode 100644
index 0000000..d5e6130
--- /dev/null
+++ b/src/views/blindResumeInfo/components/Credentials.vue
@@ -0,0 +1,182 @@
+
+
+
+ Download
+
+
+
+
+
+
+
+
+
+ View
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/EducationTraining.vue b/src/views/blindResumeInfo/components/EducationTraining.vue
new file mode 100644
index 0000000..c3bf8c3
--- /dev/null
+++ b/src/views/blindResumeInfo/components/EducationTraining.vue
@@ -0,0 +1,188 @@
+
+
+
Education (in chronological order)
+
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Degree:scope.row.DegreeCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Major:scope.row.MajorCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Organization:scope.row.OrganizationCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.City:scope.row.CityCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Province:scope.row.ProvinceCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Country:scope.row.CountryCN }}
+
+
+
+
+
+
Postgraduate Training (in chronological order)
+
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Training:scope.row.TrainingCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Major:scope.row.MajorCN }}
+
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Hospital:scope.row.HospitalCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.School:scope.row.SchoolCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.City:scope.row.CityCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Province:scope.row.ProvinceCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Country:scope.row.CountryCN }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/Employment.vue b/src/views/blindResumeInfo/components/Employment.vue
new file mode 100644
index 0000000..f616dbb
--- /dev/null
+++ b/src/views/blindResumeInfo/components/Employment.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ {{ employment.Department }}
+ {{ employment.DepartmentCN }}
+
+
+
+
+ {{ employment.Rank }}
+ {{ employment.RankCN }}
+
+
+
+
+ {{ employment.Physician }}
+ {{ employment.PhysicianCN }}
+
+
+
+
+ {{ employment.Position }}
+ {{ employment.PositionCN }}
+
+
+
+
+
+
+
+ {{ employment.HospitalName }}
+ {{ employment.HospitalNameCN }}
+
+
+
+
+ {{ employment.UniversityAffiliated }}
+ {{ employment.UniversityAffiliatedCN }}
+
+
+
+
+ {{ employment.City }}
+ {{ employment.CityCN }}
+
+
+
+
+ {{ employment.Province }}
+ {{ employment.ProvinceCN }}
+
+
+
+
+ {{ employment.Country }}
+ {{ employment.CountryCN }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/ResearchPublication.vue b/src/views/blindResumeInfo/components/ResearchPublication.vue
new file mode 100644
index 0000000..4f15d34
--- /dev/null
+++ b/src/views/blindResumeInfo/components/ResearchPublication.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/Resume.vue b/src/views/blindResumeInfo/components/Resume.vue
new file mode 100644
index 0000000..3d9b4bf
--- /dev/null
+++ b/src/views/blindResumeInfo/components/Resume.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+ {{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'' }}
+
+
+
+
+
+ Download
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/Specialty.vue b/src/views/blindResumeInfo/components/Specialty.vue
new file mode 100644
index 0000000..bbda130
--- /dev/null
+++ b/src/views/blindResumeInfo/components/Specialty.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ {{ specialty.Speciality }}
+ {{ specialty.SpecialityCN }}
+
+
+
+ {{ specialty.Subspeciality }}
+ {{ specialty.SubspecialityCNList }}
+
+
+
+ {{ specialty.ReadingType }}
+ {{ specialty.ReadingTypeCNList }}
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/StatusInfo.vue b/src/views/blindResumeInfo/components/StatusInfo.vue
new file mode 100644
index 0000000..9ac7760
--- /dev/null
+++ b/src/views/blindResumeInfo/components/StatusInfo.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+ {{ statusList.Submitted }}
+
+ {{ statusList.Submitted }}
+
+
+
+
+
+ {{ statusList.Approved }}
+
+ {{ statusList.Approved }}
+
+
+
+
+
+ {{ statusList.Reading }}
+
+ {{ statusList.Reading }}
+
+
+
+
+ {{ holiday }}
+ Planned Vacation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/components/TrialExperience.vue b/src/views/blindResumeInfo/components/TrialExperience.vue
new file mode 100644
index 0000000..a5b51bd
--- /dev/null
+++ b/src/views/blindResumeInfo/components/TrialExperience.vue
@@ -0,0 +1,122 @@
+
+
+
Clinical Trial Experience
+
+
+
+
+
+ {{ scope.row.EvaluationCriteriaList.length>0? scope.row.EvaluationCriteriaList.join(', '):'' }}
+
+
+
+
+
+
+
+
+ {{ GCP }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/index.vue b/src/views/blindResumeInfo/index.vue
new file mode 100644
index 0000000..aefbda8
--- /dev/null
+++ b/src/views/blindResumeInfo/index.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
diff --git a/src/views/blindResumeInfo/info.vue b/src/views/blindResumeInfo/info.vue
new file mode 100644
index 0000000..c3e1c2c
--- /dev/null
+++ b/src/views/blindResumeInfo/info.vue
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dashboard/bigdata.vue b/src/views/dashboard/bigdata.vue
new file mode 100644
index 0000000..f4cb4bd
--- /dev/null
+++ b/src/views/dashboard/bigdata.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dashboard/components/distribution-map.vue b/src/views/dashboard/components/distribution-map.vue
new file mode 100644
index 0000000..ed1a44f
--- /dev/null
+++ b/src/views/dashboard/components/distribution-map.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
diff --git a/src/views/dashboard/components/enrollments-of-reviewers.vue b/src/views/dashboard/components/enrollments-of-reviewers.vue
new file mode 100644
index 0000000..d7a5560
--- /dev/null
+++ b/src/views/dashboard/components/enrollments-of-reviewers.vue
@@ -0,0 +1,167 @@
+
+
+
+
diff --git a/src/views/dashboard/components/enrollments-per-quarter.vue b/src/views/dashboard/components/enrollments-per-quarter.vue
new file mode 100644
index 0000000..a360307
--- /dev/null
+++ b/src/views/dashboard/components/enrollments-per-quarter.vue
@@ -0,0 +1,208 @@
+
+
+
+
diff --git a/src/views/dashboard/components/latest-reads.vue b/src/views/dashboard/components/latest-reads.vue
new file mode 100644
index 0000000..34f8fb7
--- /dev/null
+++ b/src/views/dashboard/components/latest-reads.vue
@@ -0,0 +1,199 @@
+
+
+
Latest 10 Reads
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dashboard/components/reviewers-stats.vue b/src/views/dashboard/components/reviewers-stats.vue
new file mode 100644
index 0000000..c22f4bc
--- /dev/null
+++ b/src/views/dashboard/components/reviewers-stats.vue
@@ -0,0 +1,140 @@
+
+
+
+
diff --git a/src/views/dashboard/components/workload-of-months.vue b/src/views/dashboard/components/workload-of-months.vue
new file mode 100644
index 0000000..ba694c5
--- /dev/null
+++ b/src/views/dashboard/components/workload-of-months.vue
@@ -0,0 +1,267 @@
+
+
+
+
diff --git a/src/views/dashboard/components/workload-of-reviewers.vue b/src/views/dashboard/components/workload-of-reviewers.vue
new file mode 100644
index 0000000..9742d6d
--- /dev/null
+++ b/src/views/dashboard/components/workload-of-reviewers.vue
@@ -0,0 +1,266 @@
+
+
+
+
+
diff --git a/src/views/dashboard/components/workload-stats.vue b/src/views/dashboard/components/workload-stats.vue
new file mode 100644
index 0000000..7a16c25
--- /dev/null
+++ b/src/views/dashboard/components/workload-stats.vue
@@ -0,0 +1,152 @@
+
+
+
+
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
new file mode 100644
index 0000000..9268863
--- /dev/null
+++ b/src/views/dashboard/index.vue
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dicom-show/dicom-preview.vue b/src/views/dicom-show/dicom-preview.vue
new file mode 100644
index 0000000..3f70ea9
--- /dev/null
+++ b/src/views/dicom-show/dicom-preview.vue
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+
+
+
+ {{ studyTitle }}
+
+
+ {{ seriesCount }} Series
+
+
+
+
+
+
+
+
#{{ item.seriesTitle }}
+
{{ item.instanceCount }} image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dicom-show/dicom-series.vue b/src/views/dicom-show/dicom-series.vue
new file mode 100644
index 0000000..42480d0
--- /dev/null
+++ b/src/views/dicom-show/dicom-series.vue
@@ -0,0 +1,416 @@
+
+
+
+
+
+
+
+
+
+ {{ studyCode }}
+
+
+ {{ description }}
+
+
+ {{ modality }} : {{ seriesCount }} Series
+
+
+
+
+
+
+
+ #{{ item.seriesNumber }}
+
+
+ {{ item.modality }}: {{ item.instanceCount }} image
+
+
+ T: {{ item.sliceThickness }}
+
+
+ {{ item.description }}
+
+
+ {{ item.prefetchInstanceCount }}/{{ item.instanceCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dicom-show/dicom-study.vue b/src/views/dicom-show/dicom-study.vue
new file mode 100644
index 0000000..6ff0470
--- /dev/null
+++ b/src/views/dicom-show/dicom-study.vue
@@ -0,0 +1,708 @@
+/* eslint-disable vue/this-in-template */
+
+
+
+
+
+
+
+
+
+
+ {{ studyCode }}
+
+
+ {{ description }}
+
+
+ {{ modality }} : {{ seriesCount }} Series
+
+
+
+
+
+
+
+
+ Key Images
+
+
+ #{{ item.seriesNumber }}
+
+
+ {{ item.modality }}: {{ item.instanceCount }} image
+
+
+ T: {{ item.sliceThickness }}
+
+
+ {{ item.description }}
+
+
+ {{ item.prefetchInstanceCount }}/{{ item.instanceCount }}
+
+
+
+
+
+
+ {{ $t('trials:audit:table:isReading') }}
+
+
+ {{ $t('trials:audit:table:isDelete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dicom-show/dicom-visit.vue b/src/views/dicom-show/dicom-visit.vue
new file mode 100644
index 0000000..323fab5
--- /dev/null
+++ b/src/views/dicom-show/dicom-visit.vue
@@ -0,0 +1,732 @@
+
+
+
+
+
+
+
+
+
+ {{ visitInfo }}
+
+
+
+
+
+ {{ study.StudyCode }}
+
+
+ {{ study.Description }}
+
+
+ {{ study.Modalities }} : {{ study.SeriesCount }} Series
+
+
+
+
+
+
+ #{{ series.seriesNumber }}
+
+
+ {{ series.modality }}: {{ series.instanceCount }} image
+
+
+ T: {{ series.sliceThickness }}
+
+
+ {{ series.description }}
+
+
+ {{ series.prefetchInstanceCount }}/{{ series.instanceCount }}
+
+
+
+
+
+
+ {{ $t('trials:audit:table:isReading') }}
+
+
+ {{ $t('trials:audit:table:isDelete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ study.VisitName }}
+
: {{ study.StudyCode }}
+
+
+ {{ study.Modalities }} : {{ study.SeriesCount }} Series
+
+
+ {{ study.Description }}
+
+
+
+
+
+
+
+
+
+ Key Images
+
+
+ #{{ seriesItem.seriesNumber }}
+
+
+ {{ seriesItem.modality }}: {{ seriesItem.instanceCount }} image
+
+
+ T: {{ seriesItem.sliceThickness }}
+
+
+ {{ seriesItem.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dicom-show/server-dicom-temporary.vue b/src/views/dicom-show/server-dicom-temporary.vue
new file mode 100644
index 0000000..0a83b36
--- /dev/null
+++ b/src/views/dicom-show/server-dicom-temporary.vue
@@ -0,0 +1,462 @@
+/* eslint-disable vue/this-in-template */
+
+
+
+
+
+
+
+
+
+
+ {{ studyCode }}
+
+
+ {{ description }}
+
+
+ {{ modality }} : {{ seriesCount }} Series
+
+
+
+
+
+
+
+ Key Images
+
+
+ #{{ item.seriesNumber }}
+
+
+ {{ item.modality }}: {{ item.instanceCount }} image
+
+
+ T: {{ item.sliceThickness }}
+
+
+ {{ item.description }}
+
+
+ {{ item.prefetchInstanceCount }}/{{ item.instanceCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/.DS_Store b/src/views/dictionary/.DS_Store
new file mode 100644
index 0000000..51beb78
Binary files /dev/null and b/src/views/dictionary/.DS_Store differ
diff --git a/src/views/dictionary/attachment/components/CommonTemplate/TemplateForm.vue b/src/views/dictionary/attachment/components/CommonTemplate/TemplateForm.vue
new file mode 100644
index 0000000..b110748
--- /dev/null
+++ b/src/views/dictionary/attachment/components/CommonTemplate/TemplateForm.vue
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select
+
+ (must be in xlsx/xls/doc/docx format)
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/CommonTemplate/index.vue b/src/views/dictionary/attachment/components/CommonTemplate/index.vue
new file mode 100644
index 0000000..b8743cf
--- /dev/null
+++ b/src/views/dictionary/attachment/components/CommonTemplate/index.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('Common_File_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+ 下载
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/EmailTemplate/TemplateForm.vue b/src/views/dictionary/attachment/components/EmailTemplate/TemplateForm.vue
new file mode 100644
index 0000000..a08e301
--- /dev/null
+++ b/src/views/dictionary/attachment/components/EmailTemplate/TemplateForm.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select
+
+ (must be in xlsx/xls/doc/docx format)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/EmailTemplate/index.vue b/src/views/dictionary/attachment/components/EmailTemplate/index.vue
new file mode 100644
index 0000000..4180d94
--- /dev/null
+++ b/src/views/dictionary/attachment/components/EmailTemplate/index.vue
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Common_File_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+
+
+ {{ $fd('CriterionType',scope.row.CriterionTypeEnum) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+ 下载
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/ExportTemplate/TemplateForm.vue b/src/views/dictionary/attachment/components/ExportTemplate/TemplateForm.vue
new file mode 100644
index 0000000..d0f0af5
--- /dev/null
+++ b/src/views/dictionary/attachment/components/ExportTemplate/TemplateForm.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select
+
+ (must be in xlsx/xls/doc/docx format)
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/ExportTemplate/index.vue b/src/views/dictionary/attachment/components/ExportTemplate/index.vue
new file mode 100644
index 0000000..37f8a35
--- /dev/null
+++ b/src/views/dictionary/attachment/components/ExportTemplate/index.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('Common_File_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+ 下载
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/SignatureTemplate/TemplateForm.vue b/src/views/dictionary/attachment/components/SignatureTemplate/TemplateForm.vue
new file mode 100644
index 0000000..98d14bf
--- /dev/null
+++ b/src/views/dictionary/attachment/components/SignatureTemplate/TemplateForm.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Select
+
+ (must be in pdf format)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/SignatureTemplate/index.vue b/src/views/dictionary/attachment/components/SignatureTemplate/index.vue
new file mode 100644
index 0000000..96eef3b
--- /dev/null
+++ b/src/views/dictionary/attachment/components/SignatureTemplate/index.vue
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.NeedConfirmedUserTypes?scope.row.NeedConfirmedUserTypes.join(', '):'' }}
+
+
+
+
+ {{ scope.row.IsDeleted?'Yes':'No' }}
+
+
+
+
+
+
+
+ 预览
+
+
+ 编辑
+
+
+ 废除
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/UploadTemplate/TemplateForm.vue b/src/views/dictionary/attachment/components/UploadTemplate/TemplateForm.vue
new file mode 100644
index 0000000..4b32cc0
--- /dev/null
+++ b/src/views/dictionary/attachment/components/UploadTemplate/TemplateForm.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select
+
+ (must be in xlsx/xls/doc/docx format)
+
+
+
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/components/UploadTemplate/index.vue b/src/views/dictionary/attachment/components/UploadTemplate/index.vue
new file mode 100644
index 0000000..1cdb925
--- /dev/null
+++ b/src/views/dictionary/attachment/components/UploadTemplate/index.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('Common_File_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+ 下载
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/attachment/index.vue b/src/views/dictionary/attachment/index.vue
new file mode 100644
index 0000000..cf5cb67
--- /dev/null
+++ b/src/views/dictionary/attachment/index.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/checkConfig/index.vue b/src/views/dictionary/checkConfig/index.vue
new file mode 100644
index 0000000..0564e03
--- /dev/null
+++ b/src/views/dictionary/checkConfig/index.vue
@@ -0,0 +1,1182 @@
+
+
+
+
+
+
diff --git a/src/views/dictionary/checkConfig/oldIndex.vue b/src/views/dictionary/checkConfig/oldIndex.vue
new file mode 100644
index 0000000..43ffe8e
--- /dev/null
+++ b/src/views/dictionary/checkConfig/oldIndex.vue
@@ -0,0 +1,411 @@
+
+
+
+
+
+
diff --git a/src/views/dictionary/dictionary/components/DictionaryForm.vue b/src/views/dictionary/dictionary/components/DictionaryForm.vue
new file mode 100644
index 0000000..bc35f0d
--- /dev/null
+++ b/src/views/dictionary/dictionary/components/DictionaryForm.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/dictionary/dictionary.js b/src/views/dictionary/dictionary/dictionary.js
new file mode 100644
index 0000000..bc13706
--- /dev/null
+++ b/src/views/dictionary/dictionary/dictionary.js
@@ -0,0 +1,91 @@
+export const dictionary_col1 = [
+ { type: 'index' },
+ {
+ prop: 'KeyName',
+ label: 'Key',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Value',
+ label: 'Value',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'ValueCN',
+ label: 'Value CN',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'ShowOrder',
+ label: 'Show Order',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Description',
+ label: 'Description',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ { type: 'operate',
+ label: 'Action',
+ minWidth: 150,
+ operates: [
+ { name: 'Edit', type: 'primary', emitKey: 'edit' },
+ { name: 'Delete', type: 'danger', emitKey: 'delete' }
+ ] }
+]
+export const dictionary_col2 = [
+ { type: 'index' },
+ {
+ prop: 'KeyName',
+ label: 'Key',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Value',
+ label: 'Value',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'ShowOrder',
+ label: 'Show Order',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Description',
+ label: 'Description',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ { type: 'operate',
+ label: 'Action',
+ minWidth: 150,
+ operates: [
+ { name: 'Edit', type: 'primary', emitKey: 'edit' },
+ { name: 'Delete', type: 'danger', emitKey: 'delete' }
+ ] }
+]
+export const dictionary_form = []
+export const dictionary_handle = []
+export const dictionary_model = {
+ visible: false,
+ title: '',
+ width: '600px',
+ showClose: true
+}
diff --git a/src/views/dictionary/dictionary/index.vue b/src/views/dictionary/dictionary/index.vue
new file mode 100644
index 0000000..a09eeb2
--- /dev/null
+++ b/src/views/dictionary/dictionary/index.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
diff --git a/src/views/dictionary/email/components/EmailForm.vue b/src/views/dictionary/email/components/EmailForm.vue
new file mode 100644
index 0000000..5459236
--- /dev/null
+++ b/src/views/dictionary/email/components/EmailForm.vue
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+ 是
+ 否
+
+
+
+
+ 是
+ 否
+
+
+
+
+ 是
+ 否
+
+
+
+
+ 点击上传
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/email/index.vue b/src/views/dictionary/email/index.vue
new file mode 100644
index 0000000..fc4396f
--- /dev/null
+++ b/src/views/dictionary/email/index.vue
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+ 场景配置
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.IsReturnRequired?'是':'否' }}
+
+
+
+
+ {{ scope.row.IsUrgent?'是':'否' }}
+
+
+
+
+ {{ scope.row.IsAutoSend?'是':'否' }}
+
+
+
+
+ {{ scope.row.IsEnable?'是':'否' }}
+
+
+
+
+
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/CROs.vue b/src/views/dictionary/institutions/components/CROs.vue
new file mode 100644
index 0000000..711d1f7
--- /dev/null
+++ b/src/views/dictionary/institutions/components/CROs.vue
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+ Search
+ Reset
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/CroForm.vue b/src/views/dictionary/institutions/components/CroForm.vue
new file mode 100644
index 0000000..63552c0
--- /dev/null
+++ b/src/views/dictionary/institutions/components/CroForm.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/HospitalForm.vue b/src/views/dictionary/institutions/components/HospitalForm.vue
new file mode 100644
index 0000000..9c5897c
--- /dev/null
+++ b/src/views/dictionary/institutions/components/HospitalForm.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/Hospitals.vue b/src/views/dictionary/institutions/components/Hospitals.vue
new file mode 100644
index 0000000..180b327
--- /dev/null
+++ b/src/views/dictionary/institutions/components/Hospitals.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+ Reset
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/SiteForm.vue b/src/views/dictionary/institutions/components/SiteForm.vue
new file mode 100644
index 0000000..669fdba
--- /dev/null
+++ b/src/views/dictionary/institutions/components/SiteForm.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/Sites.vue b/src/views/dictionary/institutions/components/Sites.vue
new file mode 100644
index 0000000..09daef6
--- /dev/null
+++ b/src/views/dictionary/institutions/components/Sites.vue
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+ Reset
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/SponsorForm.vue b/src/views/dictionary/institutions/components/SponsorForm.vue
new file mode 100644
index 0000000..d7d55c5
--- /dev/null
+++ b/src/views/dictionary/institutions/components/SponsorForm.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/components/Sponsors.vue b/src/views/dictionary/institutions/components/Sponsors.vue
new file mode 100644
index 0000000..db31ad9
--- /dev/null
+++ b/src/views/dictionary/institutions/components/Sponsors.vue
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+ Search
+ Reset
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/index.vue b/src/views/dictionary/institutions/index.vue
new file mode 100644
index 0000000..621d1a1
--- /dev/null
+++ b/src/views/dictionary/institutions/index.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/institutions/rindex.vue b/src/views/dictionary/institutions/rindex.vue
new file mode 100644
index 0000000..53ecc6d
--- /dev/null
+++ b/src/views/dictionary/institutions/rindex.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/bool/index.vue b/src/views/dictionary/newdictionary/bool/index.vue
new file mode 100644
index 0000000..31a6fd7
--- /dev/null
+++ b/src/views/dictionary/newdictionary/bool/index.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ 新建
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ 编辑
+
+
+ 子项
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/components/DictionaryChild.vue b/src/views/dictionary/newdictionary/components/DictionaryChild.vue
new file mode 100644
index 0000000..93b3913
--- /dev/null
+++ b/src/views/dictionary/newdictionary/components/DictionaryChild.vue
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+ 新建
+
+
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/components/DictionaryChildAddOrUpdateForm.vue b/src/views/dictionary/newdictionary/components/DictionaryChildAddOrUpdateForm.vue
new file mode 100644
index 0000000..24b0aee
--- /dev/null
+++ b/src/views/dictionary/newdictionary/components/DictionaryChildAddOrUpdateForm.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/components/DictionaryTypeConfigForm.vue b/src/views/dictionary/newdictionary/components/DictionaryTypeConfigForm.vue
new file mode 100644
index 0000000..2894fc9
--- /dev/null
+++ b/src/views/dictionary/newdictionary/components/DictionaryTypeConfigForm.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/config/index.vue b/src/views/dictionary/newdictionary/config/index.vue
new file mode 100644
index 0000000..0355d9c
--- /dev/null
+++ b/src/views/dictionary/newdictionary/config/index.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ 配置字典分组
+ 新建
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ 编辑
+
+
+ 子项
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/enum/index.vue b/src/views/dictionary/newdictionary/enum/index.vue
new file mode 100644
index 0000000..fc0f0a3
--- /dev/null
+++ b/src/views/dictionary/newdictionary/enum/index.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ 新建
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ 编辑
+
+
+ 子项
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/index.vue b/src/views/dictionary/newdictionary/index.vue
new file mode 100644
index 0000000..3648748
--- /dev/null
+++ b/src/views/dictionary/newdictionary/index.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/list/components/BatchAddForm.vue b/src/views/dictionary/newdictionary/list/components/BatchAddForm.vue
new file mode 100644
index 0000000..0b663f7
--- /dev/null
+++ b/src/views/dictionary/newdictionary/list/components/BatchAddForm.vue
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+ {{ $t('common:button:delete') }}
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/list/components/DictionaryChild.vue b/src/views/dictionary/newdictionary/list/components/DictionaryChild.vue
new file mode 100644
index 0000000..68e4be0
--- /dev/null
+++ b/src/views/dictionary/newdictionary/list/components/DictionaryChild.vue
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+ 新建
+
+
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/list/components/DictionaryChildAddOrUpdateForm.vue b/src/views/dictionary/newdictionary/list/components/DictionaryChildAddOrUpdateForm.vue
new file mode 100644
index 0000000..22dc8db
--- /dev/null
+++ b/src/views/dictionary/newdictionary/list/components/DictionaryChildAddOrUpdateForm.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/list/components/DictionaryTypeConfigForm.vue b/src/views/dictionary/newdictionary/list/components/DictionaryTypeConfigForm.vue
new file mode 100644
index 0000000..09a9e42
--- /dev/null
+++ b/src/views/dictionary/newdictionary/list/components/DictionaryTypeConfigForm.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/list/index.vue b/src/views/dictionary/newdictionary/list/index.vue
new file mode 100644
index 0000000..1d99476
--- /dev/null
+++ b/src/views/dictionary/newdictionary/list/index.vue
@@ -0,0 +1,253 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ 新建
+ 批量新建
+
+
+
+
+
+
+
+ {{ DataTypeEnumList[scope.row.DataTypeEnum] }}
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ 编辑
+
+
+ 子项
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/select/index.vue b/src/views/dictionary/newdictionary/select/index.vue
new file mode 100644
index 0000000..3ab7d35
--- /dev/null
+++ b/src/views/dictionary/newdictionary/select/index.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ 配置字典分组
+ 新建
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ 编辑
+
+
+ 子项
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/setting/DictionaryTypeConfigForm.vue b/src/views/dictionary/newdictionary/setting/DictionaryTypeConfigForm.vue
new file mode 100644
index 0000000..f161f92
--- /dev/null
+++ b/src/views/dictionary/newdictionary/setting/DictionaryTypeConfigForm.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/newdictionary/setting/index.vue b/src/views/dictionary/newdictionary/setting/index.vue
new file mode 100644
index 0000000..b50f580
--- /dev/null
+++ b/src/views/dictionary/newdictionary/setting/index.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ New
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/sign/components/SceneConfigForm.vue b/src/views/dictionary/sign/components/SceneConfigForm.vue
new file mode 100644
index 0000000..7d4ca13
--- /dev/null
+++ b/src/views/dictionary/sign/components/SceneConfigForm.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/sign/components/SceneList.vue b/src/views/dictionary/sign/components/SceneList.vue
new file mode 100644
index 0000000..4a68db9
--- /dev/null
+++ b/src/views/dictionary/sign/components/SceneList.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+ Add
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/sign/components/SignTemplateForm.vue b/src/views/dictionary/sign/components/SignTemplateForm.vue
new file mode 100644
index 0000000..d8869a5
--- /dev/null
+++ b/src/views/dictionary/sign/components/SignTemplateForm.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/sign/index.vue b/src/views/dictionary/sign/index.vue
new file mode 100644
index 0000000..f1340a6
--- /dev/null
+++ b/src/views/dictionary/sign/index.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit
+
+
+ 场景配置
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/AddCriterion.vue b/src/views/dictionary/template/components/AddCriterion.vue
new file mode 100644
index 0000000..06e1ec7
--- /dev/null
+++ b/src/views/dictionary/template/components/AddCriterion.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/AddDICOMConfig.vue b/src/views/dictionary/template/components/AddDICOMConfig.vue
new file mode 100644
index 0000000..f4d63eb
--- /dev/null
+++ b/src/views/dictionary/template/components/AddDICOMConfig.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/template/components/Anonymization.vue b/src/views/dictionary/template/components/Anonymization.vue
new file mode 100644
index 0000000..d976aca
--- /dev/null
+++ b/src/views/dictionary/template/components/Anonymization.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/ClinicalDataConfig.vue b/src/views/dictionary/template/components/ClinicalDataConfig.vue
new file mode 100644
index 0000000..6a57e13
--- /dev/null
+++ b/src/views/dictionary/template/components/ClinicalDataConfig.vue
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 查询
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+ {{ $fd('ClinicalDataUploadRole',scope.row.UploadRole) }}
+
+
+
+
+ {{ $fd('ClinicalLevel',scope.row.ClinicalDataLevel) }}
+
+
+
+
+
+ {{ $fd('ClinicalUploadType',scope.row.ClinicalUploadType) }}
+
+
+
+
+ {{ scope.row.CriterionEnumList.map(v => $fd('CriterionType', v)).toString() }}
+
+
+
+
+ {{ scope.row.FileName }}
+
+
+
+
+ 启用
+ 禁用
+
+
+
+
+
+
+
+ 问题配置
+
+
+ 下载
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/ClinicalDataForm.vue b/src/views/dictionary/template/components/ClinicalDataForm.vue
new file mode 100644
index 0000000..e894d7f
--- /dev/null
+++ b/src/views/dictionary/template/components/ClinicalDataForm.vue
@@ -0,0 +1,283 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 选择
+
+ (必须是doc/docx格式)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/ClinicalQuestionConfig.vue b/src/views/dictionary/template/components/ClinicalQuestionConfig.vue
new file mode 100644
index 0000000..fa7ba97
--- /dev/null
+++ b/src/views/dictionary/template/components/ClinicalQuestionConfig.vue
@@ -0,0 +1,336 @@
+
+
+
+
+
+
+
+
+
+ {{ $fd('ClinicalQuestionType',scope.row.ClinicalQuestionType) }}
+
+
+
+
+
+
+ {{ $fd('ShowQuestion',scope.row.ClinicalQuestionShowEnum) }}
+
+
+
+
+ {{ $fd('YesOrNo',scope.row.IsRequired) }}
+
+
+
+
+
+ 编辑
+
+
+ 查看
+
+
+ 表格问题
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/ClinicalQuestionForm.vue b/src/views/dictionary/template/components/ClinicalQuestionForm.vue
new file mode 100644
index 0000000..1139e53
--- /dev/null
+++ b/src/views/dictionary/template/components/ClinicalQuestionForm.vue
@@ -0,0 +1,519 @@
+
+
+
+
+ {typeChange(val, form)})">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {isShowQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/ClinicalQuestionTableForm.vue b/src/views/dictionary/template/components/ClinicalQuestionTableForm.vue
new file mode 100644
index 0000000..8239f3f
--- /dev/null
+++ b/src/views/dictionary/template/components/ClinicalQuestionTableForm.vue
@@ -0,0 +1,405 @@
+
+
+
+
+ {qsTypeChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ {qsTypeChange(val, form)})"
+ >
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/ClinicalQuestionTableQsList.vue b/src/views/dictionary/template/components/ClinicalQuestionTableQsList.vue
new file mode 100644
index 0000000..4284ac0
--- /dev/null
+++ b/src/views/dictionary/template/components/ClinicalQuestionTableQsList.vue
@@ -0,0 +1,219 @@
+
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ClinicalTableQuestionType',scope.row.ClinicalTableQuestionType) }}
+
+
+
+
+
+ {{ $fd('YesOrNo',scope.row.IsRequired) }}
+
+
+
+
+
+ 查看
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/CriterionDictionary.vue b/src/views/dictionary/template/components/CriterionDictionary.vue
new file mode 100644
index 0000000..42b35fb
--- /dev/null
+++ b/src/views/dictionary/template/components/CriterionDictionary.vue
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+ {{scope.$index + 1}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 配置
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+ {{ scope.$index + 1}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/CriterionDictionaryConfig.vue b/src/views/dictionary/template/components/CriterionDictionaryConfig.vue
new file mode 100644
index 0000000..edd996d
--- /dev/null
+++ b/src/views/dictionary/template/components/CriterionDictionaryConfig.vue
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+ {{scope.$index + 1}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {crterionDictionaryGroupChange(v, scope.row)}" size="mini">
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/CriterionFormItem.vue b/src/views/dictionary/template/components/CriterionFormItem.vue
new file mode 100644
index 0000000..923ca02
--- /dev/null
+++ b/src/views/dictionary/template/components/CriterionFormItem.vue
@@ -0,0 +1,405 @@
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/CriterionQuestionForm.vue b/src/views/dictionary/template/components/CriterionQuestionForm.vue
new file mode 100644
index 0000000..b1bd512
--- /dev/null
+++ b/src/views/dictionary/template/components/CriterionQuestionForm.vue
@@ -0,0 +1,838 @@
+
+
+
+
+ {typeChange(val, form)})">
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {questionGenreChange(val, form)})"
+ >
+
+ 无
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+ {form.DefaultValue = null}">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {isShowQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {isJudgeQuestionChange(val, form)})">
+ {{ item.label }}
+
+
+
+ {isRequiredChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {relevanceQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/CriterionsBaseData.vue b/src/views/dictionary/template/components/CriterionsBaseData.vue
new file mode 100644
index 0000000..817f745
--- /dev/null
+++ b/src/views/dictionary/template/components/CriterionsBaseData.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/CriterionsConfig.vue b/src/views/dictionary/template/components/CriterionsConfig.vue
new file mode 100644
index 0000000..b2b50bd
--- /dev/null
+++ b/src/views/dictionary/template/components/CriterionsConfig.vue
@@ -0,0 +1,380 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Criterion_Question_Type',scope.row.Type) }}
+
+
+
+
+ {{ $fd('QuestionRequired',scope.row.IsRequired) }}
+
+
+
+
+ {{ $fd('ShowQuestion',scope.row.ShowQuestion) }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsJudgeQuestion) }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsShowInDicom) }}
+
+
+
+
+
+
+
+ {{ $fd('GlobalReadingShowType', scope.row.GlobalReadingShowType) }}
+
+
+
+
+
+ {{ $fd('LimitEdit', scope.row.LimitEdit) }}
+
+
+
+
+
+ 编辑
+
+
+ 查看
+
+
+ 表格问题
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/CriterionsTmp.vue b/src/views/dictionary/template/components/CriterionsTmp.vue
new file mode 100644
index 0000000..4143101
--- /dev/null
+++ b/src/views/dictionary/template/components/CriterionsTmp.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+ 重置
+ 查询
+
+
+
+ 添加
+
+
+
+
+
+
+
+
+
+ {{ $fd('CriterionType',scope.row.CriterionType) }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsCompleteConfig) }}
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+ 编辑
+
+
+ eCRF
+
+
+ 基础数据
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/DictionaryTypeConfig.vue b/src/views/dictionary/template/components/DictionaryTypeConfig.vue
new file mode 100644
index 0000000..3bf49d6
--- /dev/null
+++ b/src/views/dictionary/template/components/DictionaryTypeConfig.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/DictionaryTypeConfigForm.vue b/src/views/dictionary/template/components/DictionaryTypeConfigForm.vue
new file mode 100644
index 0000000..459b33b
--- /dev/null
+++ b/src/views/dictionary/template/components/DictionaryTypeConfigForm.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/template/components/ECRF.vue b/src/views/dictionary/template/components/ECRF.vue
new file mode 100644
index 0000000..13e92fb
--- /dev/null
+++ b/src/views/dictionary/template/components/ECRF.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/EfficacyAssessment.vue b/src/views/dictionary/template/components/EfficacyAssessment.vue
new file mode 100644
index 0000000..b2e290f
--- /dev/null
+++ b/src/views/dictionary/template/components/EfficacyAssessment.vue
@@ -0,0 +1,263 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(item.DictionaryKey ,Number(scope.row[item.ColumnKey])) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/EfficacyAssessmentForm.vue b/src/views/dictionary/template/components/EfficacyAssessmentForm.vue
new file mode 100644
index 0000000..de7737c
--- /dev/null
+++ b/src/views/dictionary/template/components/EfficacyAssessmentForm.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/EvaluationOfGlobalConfig.vue b/src/views/dictionary/template/components/EvaluationOfGlobalConfig.vue
new file mode 100644
index 0000000..2178c84
--- /dev/null
+++ b/src/views/dictionary/template/components/EvaluationOfGlobalConfig.vue
@@ -0,0 +1,319 @@
+
+
+
+ 阅片规则
+
+ {{ $fd('YesOrNo', IsMustGlobalReading) }}
+
+
+ 配置
+
+
+
+ 阅片问题
+
+ 配置
+
+
+
+
+
+
+ {{scope.$index + 1}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsBaseLineUse) }}
+ {{ $fd('YesOrNo', scope.row.IsBaseLineUse) }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsFollowVisitUse) }}
+ {{ $fd('YesOrNo', scope.row.IsFollowVisitUse) }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $forceUpdate()"
+ >
+
+ {{$fd('YesOrNo', scope.row.IsBaseLineUse)}}
+
+
+
+
+ $forceUpdate()"
+ >
+
+ {{$fd('YesOrNo', scope.row.IsFollowVisitUse)}}
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/EvaluationOfOncologyConfig.vue b/src/views/dictionary/template/components/EvaluationOfOncologyConfig.vue
new file mode 100644
index 0000000..e3e7331
--- /dev/null
+++ b/src/views/dictionary/template/components/EvaluationOfOncologyConfig.vue
@@ -0,0 +1,219 @@
+
+
+
+ 阅片规则
+
+ {{ $fd('YesOrNo', IsOncologyReading)}}
+
+
+ 配置
+
+
+
+ 阅片问题
+
+ 配置
+
+
+
+
+
+
+
+ {{scope.$index + 1}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/IncreaseFields.vue b/src/views/dictionary/template/components/IncreaseFields.vue
new file mode 100644
index 0000000..2a52609
--- /dev/null
+++ b/src/views/dictionary/template/components/IncreaseFields.vue
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/LesionTypeForm.vue b/src/views/dictionary/template/components/LesionTypeForm.vue
new file mode 100644
index 0000000..b6aa2d8
--- /dev/null
+++ b/src/views/dictionary/template/components/LesionTypeForm.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/LesionTypeTbl.vue b/src/views/dictionary/template/components/LesionTypeTbl.vue
new file mode 100644
index 0000000..313d085
--- /dev/null
+++ b/src/views/dictionary/template/components/LesionTypeTbl.vue
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('LesionType',scope.row.LesionType) }}
+
+
+
+
+ {{ $fd('OrganType',scope.row.OrganType) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/MedicalAudit.vue b/src/views/dictionary/template/components/MedicalAudit.vue
new file mode 100644
index 0000000..96406c9
--- /dev/null
+++ b/src/views/dictionary/template/components/MedicalAudit.vue
@@ -0,0 +1,280 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 重置
+ 查询
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('LanguageType', scope.row.LanguageType) }}
+
+
+
+
+
+ {{ $fd('QcType', scope.row.Type) }}
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+
+ {{$fd('CriterionType', scope.row.CriterionTypeEnum)}}
+
+
+
+
+
+
+ {{$fd('YesOrNo', scope.row.IsGeneral)}}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsRequired) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/MedicalAuditForm.vue b/src/views/dictionary/template/components/MedicalAuditForm.vue
new file mode 100644
index 0000000..7cef95d
--- /dev/null
+++ b/src/views/dictionary/template/components/MedicalAuditForm.vue
@@ -0,0 +1,287 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {typeChange(val, form)})">
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', form.IsGeneral) }}
+
+
+
+
+
+
+
+
+ {readingCategoryChange(val, form)})">
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+ 启用
+ 停用
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
diff --git a/src/views/dictionary/template/components/OrganForm.vue b/src/views/dictionary/template/components/OrganForm.vue
new file mode 100644
index 0000000..26dac22
--- /dev/null
+++ b/src/views/dictionary/template/components/OrganForm.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/OrgansTbl.vue b/src/views/dictionary/template/components/OrgansTbl.vue
new file mode 100644
index 0000000..04eed43
--- /dev/null
+++ b/src/views/dictionary/template/components/OrgansTbl.vue
@@ -0,0 +1,489 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:baseDataCfg:button:set') }}
+
+
+
+ 病灶关联配置
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('OrganType',scope.row.OrganType) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo', scope.row.IsLymphNodes) }}
+
+ {{ $fd('ReadingYesOrNo', scope.row.IsLymphNodes) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsCanEditPosition) }}
+
+ {{ $fd('YesOrNo', scope.row.IsCanEditPosition) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/QSFormItem.vue b/src/views/dictionary/template/components/QSFormItem.vue
new file mode 100644
index 0000000..7638d0a
--- /dev/null
+++ b/src/views/dictionary/template/components/QSFormItem.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+ {{ val }}
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/QcQuestionForm.vue b/src/views/dictionary/template/components/QcQuestionForm.vue
new file mode 100644
index 0000000..7d2daa9
--- /dev/null
+++ b/src/views/dictionary/template/components/QcQuestionForm.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {typeChange(val, form)})">
+
+
+
+
+
+
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+ 启用
+ 停用
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/dictionary/template/components/QcQuestionPreview.vue b/src/views/dictionary/template/components/QcQuestionPreview.vue
new file mode 100644
index 0000000..005cb0c
--- /dev/null
+++ b/src/views/dictionary/template/components/QcQuestionPreview.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/QcQuestions.vue b/src/views/dictionary/template/components/QcQuestions.vue
new file mode 100644
index 0000000..11e7a58
--- /dev/null
+++ b/src/views/dictionary/template/components/QcQuestions.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+ Preview
+
+ New
+
+
+
+
+
+
+
+
+
+ {{ $fd('LanguageType', scope.row.LanguageType) }}
+
+
+
+
+ {{ scope.row.Type=== 'radio'?'单选框':scope.row.Type=== 'select'?'下拉框':scope.row.Type=== 'input'?'文本框':scope.row.Type=== 'textarea'?'多行文本框':'' }}
+
+
+
+
+
+
+
+
+ {{ scope.row.IsRequired?'是':'否' }}
+
+
+
+
+ {{ scope.row.IsEnable?'启用':'停用' }}
+
+
+
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/SettingForm.vue b/src/views/dictionary/template/components/SettingForm.vue
new file mode 100644
index 0000000..0d10318
--- /dev/null
+++ b/src/views/dictionary/template/components/SettingForm.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/TableQsForm.vue b/src/views/dictionary/template/components/TableQsForm.vue
new file mode 100644
index 0000000..0807b2a
--- /dev/null
+++ b/src/views/dictionary/template/components/TableQsForm.vue
@@ -0,0 +1,661 @@
+
+
+
+
+ {qsTypeChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {tableQuestionTypeChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {isShowQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+ {isRequiredChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+ {relevanceQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/TableQsList.vue b/src/views/dictionary/template/components/TableQsList.vue
new file mode 100644
index 0000000..565b4b3
--- /dev/null
+++ b/src/views/dictionary/template/components/TableQsList.vue
@@ -0,0 +1,300 @@
+
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Criterion_Question_Type',scope.row.Type) }}
+
+
+
+
+ {{ $fd('TableQuestionType',scope.row.TableQuestionType) }}
+
+
+
+
+
+
+
+ {{ $fd('OrganColumn',scope.row.DataTableColumn) }}
+
+
+
+
+ {{ $fd('ShowQuestion',scope.row.ShowQuestion) }}
+
+
+
+
+ {{ $fd('QuestionRequired',scope.row.IsRequired) }}
+
+
+
+
+ {{ $fd('YesOrNo',scope.row.IsJudgeQuestion) }}
+
+
+
+
+
+
+
+
+ {{ scope.row.Type === 'upload'?scope.row.ImageCount:'' }}
+
+
+
+
+ {{ scope.row.MaxRowCount?scope.row.MaxRowCount:'' }}
+
+
+
+
+
+
+ 查看
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/components/TemplateForm.vue b/src/views/dictionary/template/components/TemplateForm.vue
new file mode 100644
index 0000000..c584741
--- /dev/null
+++ b/src/views/dictionary/template/components/TemplateForm.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
+
diff --git a/src/views/dictionary/template/email/components/AttachmentForm.vue b/src/views/dictionary/template/email/components/AttachmentForm.vue
new file mode 100644
index 0000000..2dc7e59
--- /dev/null
+++ b/src/views/dictionary/template/email/components/AttachmentForm.vue
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Select
+
+ (must be in xlsx/xls/doc/docx format)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/email/components/AttachmentList.vue b/src/views/dictionary/template/email/components/AttachmentList.vue
new file mode 100644
index 0000000..490886d
--- /dev/null
+++ b/src/views/dictionary/template/email/components/AttachmentList.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('Common_File_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+
+
+ {{ $fd('CriterionType',scope.row.CriterionTypeEnum) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+ 下载
+
+
+ 编辑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/email/components/EmailForm.vue b/src/views/dictionary/template/email/components/EmailForm.vue
new file mode 100644
index 0000000..de98c38
--- /dev/null
+++ b/src/views/dictionary/template/email/components/EmailForm.vue
@@ -0,0 +1,364 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {v === 1 ? form.EmailCron = null : null}" clearable class="mr">
+
+
+
+
+
+
+
+ 生成 cron
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+ {form.CriterionTypeEnum = null}">
+ 是
+ 否
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/email/components/EmailList.vue b/src/views/dictionary/template/email/components/EmailList.vue
new file mode 100644
index 0000000..6b5bfbf
--- /dev/null
+++ b/src/views/dictionary/template/email/components/EmailList.vue
@@ -0,0 +1,397 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+ 重置
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TrialCriterionName }}
+
+
+
+
+
+
+ {{ $fd('BusinessLevel',scope.row.BusinessLevelEnum) }}
+
+
+
+
+ {{ $fd('BusinessModule',scope.row.BusinessModuleEnum) }}
+
+
+
+
+ {{ $fd('Email_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+ {{ scope.row.ToUserTypeList.length > 0?scope.row.ToUserTypeList.map(v => $fd('UserType', v)).join('、'):'' }}
+
+
+
+
+
+ {{ scope.row.CopyUserTypeList.length > 0?scope.row.CopyUserTypeList.map(v => $fd('UserType', v)).join('、'):'' }}
+
+
+
+
+ {{ $fd('EmailUrgent',scope.row.EmailUrgentEnum) }}
+
+
+
+
+
+
+
+ {{ scope.row.FileName }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsReturnRequired) }}
+
+ {{ $fd('YesOrNo', scope.row.IsReturnRequired) }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsAutoSend) }}
+
+ {{ $fd('YesOrNo', scope.row.IsAutoSend) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/email/index.vue b/src/views/dictionary/template/email/index.vue
new file mode 100644
index 0000000..1b167f4
--- /dev/null
+++ b/src/views/dictionary/template/email/index.vue
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/index.vue b/src/views/dictionary/template/index.vue
new file mode 100644
index 0000000..78f1aad
--- /dev/null
+++ b/src/views/dictionary/template/index.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/list.vue b/src/views/dictionary/template/list.vue
new file mode 100644
index 0000000..f5579c8
--- /dev/null
+++ b/src/views/dictionary/template/list.vue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+ New
+ Setting
+
+
+
+
+
+
+
+ Name:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/rindex.vue b/src/views/dictionary/template/rindex.vue
new file mode 100644
index 0000000..e0ecc11
--- /dev/null
+++ b/src/views/dictionary/template/rindex.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/setting.vue b/src/views/dictionary/template/setting.vue
new file mode 100644
index 0000000..437fd98
--- /dev/null
+++ b/src/views/dictionary/template/setting.vue
@@ -0,0 +1,182 @@
+
+
+
+
+
+ New
+
+
+
+
+
+ {{ scope.row.ModalityList && scope.row.ModalityList.length>0?scope.row.ModalityList.join(', '):'' }}
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/sign/components/SceneConfigForm.vue b/src/views/dictionary/template/sign/components/SceneConfigForm.vue
new file mode 100644
index 0000000..7d4ca13
--- /dev/null
+++ b/src/views/dictionary/template/sign/components/SceneConfigForm.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/sign/components/SceneList.vue b/src/views/dictionary/template/sign/components/SceneList.vue
new file mode 100644
index 0000000..4a68db9
--- /dev/null
+++ b/src/views/dictionary/template/sign/components/SceneList.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+ Add
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/sign/components/SignTemplateForm.vue b/src/views/dictionary/template/sign/components/SignTemplateForm.vue
new file mode 100644
index 0000000..d8869a5
--- /dev/null
+++ b/src/views/dictionary/template/sign/components/SignTemplateForm.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/sign/index.vue b/src/views/dictionary/template/sign/index.vue
new file mode 100644
index 0000000..f1340a6
--- /dev/null
+++ b/src/views/dictionary/template/sign/index.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit
+
+
+ 场景配置
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/dictionary/template/template.js b/src/views/dictionary/template/template.js
new file mode 100644
index 0000000..e417d99
--- /dev/null
+++ b/src/views/dictionary/template/template.js
@@ -0,0 +1,102 @@
+/** ** template list config data *****/
+export const template_cols = [
+ { type: 'index' },
+ {
+ prop: 'Name',
+ label: 'Name',
+ minWidth: 110,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Modality',
+ label: 'Modality',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Description',
+ label: 'Description',
+ minWidth: 110,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ { type: 'operate',
+ label: 'Action',
+ minWidth: 150,
+ operates: [
+ { name: 'Items', type: 'primary', emitKey: 'items' },
+ { name: 'Edit', type: 'primary', emitKey: 'edit' },
+ { name: 'Delete', type: 'danger', emitKey: 'delete' }
+ ] }
+]
+export const template_form = [
+ {
+ type: 'Input',
+ label: 'Name:',
+ prop: 'Name',
+ width: '120px',
+ placeholder: ''
+ }
+]
+export const template_handle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' }
+]
+export const template_model = {
+ visible: false,
+ title: '',
+ width: '600px',
+ showClose: true
+}
+
+/** ** template settings config data *****/
+export const setting_cols = [
+ { type: 'index' },
+ {
+ prop: 'Name',
+ label: 'Item',
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'ModalityList',
+ label: 'Modality',
+ hidden: true,
+ slot: 'modalitySlot',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Description',
+ label: 'Description',
+ showOverflowTooltip: true
+ },
+ { type: 'operate',
+ label: 'Action',
+ minWidth: 150,
+ operates: [
+ { name: 'Edit', type: 'primary', emitKey: 'edit' },
+ { name: 'Delete', type: 'danger', emitKey: 'delete' }
+ ] }
+]
+export const setting_form = [
+ {
+ type: 'Select2',
+ label: 'Modality:',
+ prop: 'ModalityId',
+ width: '150px',
+ options: {}, // 下拉选项
+ placeholder: ''
+ }
+]
+export const setting_handle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' }
+]
+export const setting_model = {
+ visible: false,
+ title: '',
+ width: '600px',
+ showClose: true
+}
diff --git a/src/views/email-recompose/index.vue b/src/views/email-recompose/index.vue
new file mode 100644
index 0000000..b478b24
--- /dev/null
+++ b/src/views/email-recompose/index.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+ {{ $t('recompose:title:init') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('recompose:button:cancel') }}
+
+
+
+ {{ $t('recompose:button:save') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/ad/AD.vue b/src/views/enrollmentTrials/Reading/ad/AD.vue
new file mode 100644
index 0000000..95d2798
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/ad/AD.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+ Subject ID:
+
+
+ Status:
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited==0?'No':scope.row.Expedited==1?'24H':'48H' }}
+
+
+
+
+
+
+
+ {{ handleStatus(scope.row.Status) }}
+
+
+
+
+
+
+
+ Detail
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/ad/adTask.vue b/src/views/enrollmentTrials/Reading/ad/adTask.vue
new file mode 100644
index 0000000..ef85ace
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/ad/adTask.vue
@@ -0,0 +1,517 @@
+
+
+
+
+
+
+
+ Global1
+
+
+
+
+
+
+ {{ scope.row.VisitName + ' ' }}
+ CRF
+ Image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Global2
+
+
+
+
+
+
+ {{ scope.row.VisitName + ' ' }}
+ CRF
+ Image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Global1
+ Global2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/global/Global.vue b/src/views/enrollmentTrials/Reading/global/Global.vue
new file mode 100644
index 0000000..134138c
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/global/Global.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
+ Subject ID:
+
+
+ Status:
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited==0?'No':scope.row.Expedited==1?'24H':'48H' }}
+
+
+
+
+
+
+
+
+ {{ handleStatus(scope.row.Status) }}
+
+
+
+
+
+
+
+ Read
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/global/globalTask.vue b/src/views/enrollmentTrials/Reading/global/globalTask.vue
new file mode 100644
index 0000000..9e61f0c
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/global/globalTask.vue
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.VisitName + ' ' }}
+ CRF
+ Image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/index.vue b/src/views/enrollmentTrials/Reading/index.vue
new file mode 100644
index 0000000..a202fa2
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/index.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/routerView.vue b/src/views/enrollmentTrials/Reading/routerView.vue
new file mode 100644
index 0000000..7d4275d
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/routerView.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/tp/TP.vue b/src/views/enrollmentTrials/Reading/tp/TP.vue
new file mode 100644
index 0000000..c3ec28c
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/tp/TP.vue
@@ -0,0 +1,220 @@
+
+
+
+
+ Subject ID:
+
+
+ Status:
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited==0?'No':scope.row.Expedited==1?'24H':'48H' }}
+
+
+
+
+
+
+
+
+ {{ handleStatus(scope.row.Status) }}
+
+
+
+
+
+
+ Read
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/tp/baselineTask.vue b/src/views/enrollmentTrials/Reading/tp/baselineTask.vue
new file mode 100644
index 0000000..e43b4eb
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/tp/baselineTask.vue
@@ -0,0 +1,855 @@
+
+
+
+
+
+
+
+ Qualified
+ Non-Qualified
+
+
+
+
+ Affect
+ Non-Affect
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.TULOC + ' ' + scope.row.TULAT + ' ' + scope.row.TUDIR
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.TULOC + ' ' + scope.row.TULAT + ' ' + scope.row.TUDIR
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.TULOC + ' ' + scope.row.TULAT + ' ' + scope.row.TUDIR
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SOD(mm):
+
+
+ Non-nodular Lesions SOD(mm):
+
+
+
+
+
+
+
+
+ Present
+ Absent
+ NE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/Reading/tp/visitTask.vue b/src/views/enrollmentTrials/Reading/tp/visitTask.vue
new file mode 100644
index 0000000..8469dee
--- /dev/null
+++ b/src/views/enrollmentTrials/Reading/tp/visitTask.vue
@@ -0,0 +1,2912 @@
+
+
+
+
+
+
+
+ Qualified
+ Non-Qualified
+
+
+
+
+
+
+ Lesions Operate:
+ Merge
+ SplitCount:
+
+ Split
+
+
+
+
+
+
+
+
+
+ {{
+ (scope.row.TULOC || '') +
+ ' ' +
+ (scope.row.TULAT || '') +
+ ' ' +
+ (scope.row.TUDIR || '')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Delete
+
+
+
+
+
+
+
+
+ Lesions Operate:
+ Merge
+ SplitCount:
+
+ Split
+
+
+
+
+
+
+
+
+
+ {{
+ (scope.row.TULOC || '') +
+ ' ' +
+ (scope.row.TULAT || '') +
+ ' ' +
+ (scope.row.TUDIR || '')
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.TULOC +
+ ' ' +
+ scope.row.TULAT +
+ ' ' +
+ scope.row.TUDIR
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.TULOC +
+ ' ' +
+ scope.row.TULAT +
+ ' ' +
+ scope.row.TUDIR
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.TULOC +
+ ' ' +
+ scope.row.TULAT +
+ ' ' +
+ scope.row.TUDIR
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.TULOC +
+ ' ' +
+ scope.row.TULAT +
+ ' ' +
+ scope.row.TUDIR
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sum of Diameter(SOD)(mm) :{{ SumOfDiameter }}
+
+
+ Non-nodular Lesions SOD(mm) :{{ NonnodularLesionsSOD }}
+
+
+ Baseline SOD :{{ BaselineSOD }}
+
+
+
+ Baseline SOD % change :{{ BaselineSODChange }}
+
+
+
+
+
+ Timepoint of Nadir SOD :{{
+ TimepointOfNadirSOD + '(' + MinVisitInfo.MinSum + ')'
+ }}
+
+
+
+ Nadir SOD increase(mm) :{{ NadirSODIncrease }}
+
+
+ Nadir SOD % increase :{{ NadirSODIncreasePercent }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/enrollmentTrials/index.vue b/src/views/enrollmentTrials/index.vue
new file mode 100644
index 0000000..38c84b8
--- /dev/null
+++ b/src/views/enrollmentTrials/index.vue
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+
+
+
+
+
+ {{
+ scope.row.Expedited == 0
+ ? 'No'
+ : scope.row.Expedited == 1
+ ? '24H'
+ : '48H'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ WorkLoad
+ Enroll
+
+
+
+
+
+
+
+ Reject Enroll
+ Confirm Enroll
+
+
+
+
+
+
diff --git a/src/views/error.vue b/src/views/error.vue
new file mode 100644
index 0000000..db3aa91
--- /dev/null
+++ b/src/views/error.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
+
{{$t('common:title:error')}}!
+
{{ message }}
+
{{ $t('common:title:goHome') }}
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/analysis/components/ReviewerAnalysis.vue b/src/views/financials/analysis/components/ReviewerAnalysis.vue
new file mode 100644
index 0000000..85540d8
--- /dev/null
+++ b/src/views/financials/analysis/components/ReviewerAnalysis.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+ {{ scope.row.PaymentUSD | rounding }}
+
+
+
+
+
+ {{ scope.row.RevenusUSD | rounding }}
+ ({{ scope.row.MissingTrialCodes.join(',') }} need setting trial unit price)
+
+ {{ scope.row.RevenusUSD | rounding }}
+
+
+
+
+ {{ scope.row.GrossProfit | rounding }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/analysis/components/TrialAnanlysis.vue b/src/views/financials/analysis/components/TrialAnanlysis.vue
new file mode 100644
index 0000000..b4c1f06
--- /dev/null
+++ b/src/views/financials/analysis/components/TrialAnanlysis.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited==0?'No':scope.row.Expedited==1?'24H':'48H' }}
+
+
+
+
+
+ {{ scope.row.PaymentUSD | rounding }}
+
+
+
+
+
+ Missing Trial unit price
+
+ {{ scope.row.RevenusUSD | rounding }}
+
+
+
+
+ {{ scope.row.GrossProfit | rounding }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/analysis/index.vue b/src/views/financials/analysis/index.vue
new file mode 100644
index 0000000..5a2647b
--- /dev/null
+++ b/src/views/financials/analysis/index.vue
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To
+
+ Reset
+ Search
+ Export Excel
+ Verify
+
+
+
+
+
+
+
+ Month:
+ {{ item.YearMonth }}
+ ({{ item.ReviewerNameList.join(', ') }} not locked)
+
+
+
+
+ Trial ID:
+ {{ item.trialCode }}
+ ({{ item.priceType.join(', ') }} did not set unit price)
+
+
+
+
+
+
diff --git a/src/views/financials/index.vue b/src/views/financials/index.vue
new file mode 100644
index 0000000..2ab3832
--- /dev/null
+++ b/src/views/financials/index.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/adjustment.vue b/src/views/financials/monthlyPayment/adjustment.vue
new file mode 100644
index 0000000..3b0d70b
--- /dev/null
+++ b/src/views/financials/monthlyPayment/adjustment.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
+ Reset
+ Search
+ New
+
+
+
+
+
+ {{ scope.row.LastName + ' / ' + scope.row.FirstName }}
+
+
+
+
+ {{ scope.row.AdjustPaymentUSD | rounding }}
+
+
+
+ {{ scope.row.AdjustPaymentCNY | rounding }}
+
+
+
+
+
+
+ Edit
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/AdjustmentForm.vue b/src/views/financials/monthlyPayment/components/AdjustmentForm.vue
new file mode 100644
index 0000000..8634362
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/AdjustmentForm.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+ {{ item.info }}
+ {{ item.ChineseName }}
+
+
+
+
+
+
+
+
+ Tips: Exchange Rate: {{ exchangeRate }}
+ Amount(¥): {{ (adjustmentForm.AdjustPaymentUSD*exchangeRate).toFixed(2) }}
+ Exchange rate is not set.
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/ExchangeRate.vue b/src/views/financials/monthlyPayment/components/ExchangeRate.vue
new file mode 100644
index 0000000..0020389
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/ExchangeRate.vue
@@ -0,0 +1,198 @@
+
+
+
+
+ Reset
+ Search
+ New
+
+
+
+
+
+
+
+
+
+
+
+ Edit
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/RankBasedRates.vue b/src/views/financials/monthlyPayment/components/RankBasedRates.vue
new file mode 100644
index 0000000..40450dc
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/RankBasedRates.vue
@@ -0,0 +1,324 @@
+
+
+
+
Rank-Based Rates
+
New
+
+
+
+
+
+
+ {{ scope.row.Training | rounding }}
+
+
+
+
+ {{ scope.row.RefresherTraining | rounding }}
+
+
+
+
+
+ {{ scope.row.Timepoint | rounding }}
+
+
+
+
+
+ {{ scope.row.TimepointIn48H | rounding }}
+
+
+
+
+ {{ scope.row.TimepointIn24H | rounding }}
+
+
+
+
+
+
+ {{ scope.row.Adjudication | rounding }}
+
+
+
+
+
+ {{ scope.row.AdjudicationIn48H | rounding }}
+
+
+
+
+ {{ scope.row.AdjudicationIn24H | rounding }}
+
+
+
+
+
+ {{ scope.row.Global | rounding }}
+
+
+
+
+
+ {{ scope.row.Downtime | rounding }}
+
+
+
+
+
+ Edit
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/RevenusForm.vue b/src/views/financials/monthlyPayment/components/RevenusForm.vue
new file mode 100644
index 0000000..3bf757f
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/RevenusForm.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/ReviewersData.vue b/src/views/financials/monthlyPayment/components/ReviewersData.vue
new file mode 100644
index 0000000..d4c2545
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/ReviewersData.vue
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+
+ {{ scope.row.LastName + ' / ' + scope.row.FirstName }}
+
+
+
+ {{ scope.row.DoctorNameInBank?scope.row.DoctorNameInBank:scope.row.ChineseName }}
+
+
+
+
+
+
+
+ {{ scope.row.Additional | rounding }}
+
+
+
+
+
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/TrialsData.vue b/src/views/financials/monthlyPayment/components/TrialsData.vue
new file mode 100644
index 0000000..6185354
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/TrialsData.vue
@@ -0,0 +1,392 @@
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited == 0?'No':scope.row.Expedited == 1?'24-Hour':'48-Hour' }}
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+
+
+ close
+
+
+ {{ scope.row.DoctorsNames }}
+
+
+
+
+
+
+
+ View
+ Delete
+
+
+ Upload
+
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/TrialsDataReviewers.vue b/src/views/financials/monthlyPayment/components/TrialsDataReviewers.vue
new file mode 100644
index 0000000..6ebbb34
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/TrialsDataReviewers.vue
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+ {{ scope.row.LastName + scope.row.FirstName }}
+
+
+
+
+
+
+
+ {{ scope.row.Training | rounding }}
+
+
+
+
+ {{ scope.row.RefresherTraining | rounding }}
+
+
+
+
+
+ {{ scope.row.Timepoint | rounding }}
+
+
+
+
+ {{ scope.row.Timepoint48H | rounding }}
+
+
+
+
+ {{ scope.row.Timepoint24H | rounding }}
+
+
+
+
+
+
+ {{ scope.row.Adjudication | rounding }}
+
+
+
+
+ {{ scope.row.Adjudication48H | rounding }}
+
+
+
+
+ {{ scope.row.Adjudication24H | rounding }}
+
+
+
+
+
+ {{ scope.row.Global | rounding }}
+
+
+
+
+
+ {{ scope.row.Downtime | rounding }}
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/TrialsDataReviewersForm.vue b/src/views/financials/monthlyPayment/components/TrialsDataReviewersForm.vue
new file mode 100644
index 0000000..740c39d
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/TrialsDataReviewersForm.vue
@@ -0,0 +1,205 @@
+
+
+
+
+ {{ form.ReviewerCode }}
+
+
+
+ {{ form.LastName + form.FirstName }}
+
+
+
+ {{ form.ChineseName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/UploadSow.vue b/src/views/financials/monthlyPayment/components/UploadSow.vue
new file mode 100644
index 0000000..f24d6a2
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/UploadSow.vue
@@ -0,0 +1,132 @@
+
+
+
+ Upload
+ (must be in pdf format)
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/components/VolumeReward.vue b/src/views/financials/monthlyPayment/components/VolumeReward.vue
new file mode 100644
index 0000000..0850234
--- /dev/null
+++ b/src/views/financials/monthlyPayment/components/VolumeReward.vue
@@ -0,0 +1,349 @@
+
+
+
+
Volume Reward
+
{{ tipInfo }}
+
Save
+
New
+
+
+
+
+
+
+
+ {{ scope.row.Price | rounding }}
+
+
+
+
+ Edit
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/detail.vue b/src/views/financials/monthlyPayment/detail.vue
new file mode 100644
index 0000000..41de2d2
--- /dev/null
+++ b/src/views/financials/monthlyPayment/detail.vue
@@ -0,0 +1,559 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Export Excel
+ Export PDF
+
+
+
+
+
+
+ {{ scope.row.TrialCode!='Adjustment'? scope.row.PaymentType :scope.row.AdjustmentView.AdjustType }}
+
+
+
+
+ {{ scope.row.TrialCode!='Adjustment'? scope.row.Count : scope.row.AdjustmentView.Note }}
+
+
+
+
+ {{ scope.row.BasePrice | rounding }}
+
+
+
+
+ {{ scope.row.PersonalAdditional | rounding }}
+
+
+
+
+ {{ scope.row.TrialAdditional | rounding }}
+
+
+
+
+ {{ scope.row.TotalUnitPrice | rounding }}
+
+
+
+
+ {{ scope.row.PaymentUSD | rounding }}
+
+
+
+
+ {{ 'Setting Needed' }}
+ {{ scope.row.PaymentCNY }}
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/index.vue b/src/views/financials/monthlyPayment/index.vue
new file mode 100644
index 0000000..c0339e2
--- /dev/null
+++ b/src/views/financials/monthlyPayment/index.vue
@@ -0,0 +1,1267 @@
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+ Lock
+ Calculate
+ Export Summary
+ Export Details
+
+ Export Payrolls
+
+ Adjustment
+ Settings
+
+
+
+
+
+
+ {{ scope.row.LastName + ' / ' + scope.row.FirstName }}
+
+
+ {{ scope.row.DoctorNameInBank?scope.row.DoctorNameInBank:scope.row.ChineseName }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 'Current month: ' + scope.row.PaymentUSD }}
+
+ {{ 'Adjustment: ' + scope.row.AdjustPaymentUSD }}
+
+
+ {{
+ !scope.row.IDCard || !scope.row.BankCardNumber || !scope.row.RankName
+ ? 'Setting Needed'
+ : scope.row.TotalPaymentUSD.toFixed(2)
+ }}
+
+
+
+
+
+
+
+
+ {{ scope.row.ExchangeRate | rounding }}
+
+
+
+
+
+
+ {{ 'Current month: ' + scope.row.PaymentCNY }}
+
+ {{ 'Adjustment: ' + scope.row.AdjustPaymentCNY }}
+
+
+ {{ scope.row.ExchangeRate > 0 ? scope.row.TotalPaymentCNY : 'Setting Needed' }}
+
+
+
+
+ {{ scope.row.IsLock?'Locked':'Pending' }}
+
+
+
+ Detail
+
+ Setting
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/monthlyPayment/setting.vue b/src/views/financials/monthlyPayment/setting.vue
new file mode 100644
index 0000000..0347fa4
--- /dev/null
+++ b/src/views/financials/monthlyPayment/setting.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/paymentHistory/components/AdjustmentList.vue b/src/views/financials/paymentHistory/components/AdjustmentList.vue
new file mode 100644
index 0000000..7f43603
--- /dev/null
+++ b/src/views/financials/paymentHistory/components/AdjustmentList.vue
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName + ' / ' + scope.row.FirstName }}
+
+
+
+
+
+ {{ scope.row.AdjustPaymentUSD | rounding }}
+
+
+
+
+ {{ scope.row.AdjustPaymentCNY }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/paymentHistory/components/PaymentList.vue b/src/views/financials/paymentHistory/components/PaymentList.vue
new file mode 100644
index 0000000..d7fa6bf
--- /dev/null
+++ b/src/views/financials/paymentHistory/components/PaymentList.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+ {{ scope.row.TotalUSD | rounding }}
+
+
+
+
+ {{ scope.row.TotalCNY }}
+
+
+
+
+ Detail
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/paymentHistory/detail.vue b/src/views/financials/paymentHistory/detail.vue
new file mode 100644
index 0000000..0bbd18e
--- /dev/null
+++ b/src/views/financials/paymentHistory/detail.vue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TrialPaymentList?scope.row.TrialPaymentList.filter(item=>item.TrialCode==val.TrialCode)[0]==null?0:scope.row.TrialPaymentList.filter(item=>item.TrialCode==val.TrialCode)[0].TrialPayment:0 }}
+
+
+
+
+
+ {{ scope.row.VolumeReward | rounding }}
+
+
+
+
+ {{ scope.row.AdjustmentUSD | rounding }}
+
+
+
+
+ {{ scope.row.TotalUSD | rounding }}
+
+
+
+
+
+
+ {{ scope.row.TotalCNY }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/financials/paymentHistory/index.vue b/src/views/financials/paymentHistory/index.vue
new file mode 100644
index 0000000..3d5297e
--- /dev/null
+++ b/src/views/financials/paymentHistory/index.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+ To
+
+ Reset
+ Search
+ Export Excel
+
+
+
+
+
+
diff --git a/src/views/financials/revenues/components/RevenusForm.vue b/src/views/financials/revenues/components/RevenusForm.vue
new file mode 100644
index 0000000..c9b0781
--- /dev/null
+++ b/src/views/financials/revenues/components/RevenusForm.vue
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
diff --git a/src/views/financials/revenues/index.vue b/src/views/financials/revenues/index.vue
new file mode 100644
index 0000000..760da37
--- /dev/null
+++ b/src/views/financials/revenues/index.vue
@@ -0,0 +1,478 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To
+
+ Reset
+ Search
+ Export Excel
+ Verify
+ Settings
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.Total | rounding }}
+ (Need setting trial unit price)
+
+
+ {{ scope.row.Total | rounding }}
+ ({{ scope.row.MissingTrialCodes.join(',') }} need setting trial unit price)
+
+ {{ scope.row.Total | rounding }}
+
+
+
+
+
+
+
+
+ Trial ID:
+ {{ item.trialCode }}
+ ({{ item.priceType.join(', ') }} did not set unit price)
+
+
+
+
+ No data.
+
+
+
+
+
+
diff --git a/src/views/financials/revenues/revenues.js b/src/views/financials/revenues/revenues.js
new file mode 100644
index 0000000..997f26a
--- /dev/null
+++ b/src/views/financials/revenues/revenues.js
@@ -0,0 +1,29 @@
+const cols1 = [
+ { label: 'Trial ID', width: '90', prop: 'TrialCode' },
+ { label: 'Expedited', width: '110', prop: 'Expedited' },
+ { label: 'Indication', width: '110', prop: 'Indication' },
+
+ { label: 'CRO', width: '90', prop: 'Cro' },
+ { label: 'Name', width: '90', prop: 'FullName' },
+ { label: 'Name CN', width: '100', prop: 'ChineseName' },
+ { label: 'Reviewer ID', width: '115', prop: 'ReviewerCode' },
+ { label: 'Month', width: '100', prop: 'YearMonth' }
+]
+const cols2 = [
+ { label: 'Trial ID', width: '105', prop: 'TrialCode' },
+ { label: 'Expedited', width: '105', prop: 'Expedited' },
+ { label: 'Indication', width: '105', prop: 'Indication' },
+ { label: 'CRO', width: '105', prop: 'Cro' }
+
+]
+const cols3 = [
+ { label: 'Name', width: '105', prop: 'FullName' },
+ { label: 'Name CN', width: '105', prop: 'ChineseName' },
+ { label: 'Reviewer ID', width: '120', prop: 'ReviewerCode' }
+]
+
+const cols4 = [{ label: 'Month', width: '100', prop: 'YearMonth' }]
+
+export function getColumns(type) {
+ return type === 0 ? cols1 : type === 1 ? cols2 : type === 2 ? cols3 : type === 3 ? cols4 : []
+}
diff --git a/src/views/financials/revenues/setting.vue b/src/views/financials/revenues/setting.vue
new file mode 100644
index 0000000..3bfb02b
--- /dev/null
+++ b/src/views/financials/revenues/setting.vue
@@ -0,0 +1,272 @@
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited === 0? 'No':scope.row.Expedited === 1? '24-Hour':'48-Hour' }}
+
+
+
+
+
+ {{ scope.row.Training | rounding }}
+
+
+
+
+ {{ scope.row.RefresherTraining | rounding }}
+
+
+
+
+
+ {{ scope.row.Timepoint | rounding }}
+
+
+
+
+ {{ scope.row.TimepointIn48H | rounding }}
+
+
+
+
+ {{ scope.row.TimepointIn24H | rounding }}
+
+
+
+
+
+
+ {{ scope.row.Adjudication | rounding }}
+
+
+
+
+ {{ scope.row.AdjudicationIn48H | rounding }}
+
+
+
+
+ {{ scope.row.AdjudicationIn24H | rounding }}
+
+
+
+
+
+ {{ scope.row.Global | rounding }}
+
+
+
+
+
+ {{ scope.row.Downtime | rounding }}
+
+
+
+
+
+ Edit
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/forgetpassword/index.vue b/src/views/forgetpassword/index.vue
new file mode 100644
index 0000000..83986c4
--- /dev/null
+++ b/src/views/forgetpassword/index.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ sendTitle }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('passwordReset:button:verify') }}
+
+
+
+
+
+
+
+ {{ item.UserName }}
+ {{ item.UserType }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('passwordReset:button:cancel') }}
+
+
+
+ {{ $t('passwordReset:button:submit') }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/joinVerify/index.vue b/src/views/joinVerify/index.vue
new file mode 100644
index 0000000..ef1bab1
--- /dev/null
+++ b/src/views/joinVerify/index.vue
@@ -0,0 +1,143 @@
+
+
+
+
+ 是否参与的临床试验项目:{{ trialInfo.ExperimentName }}(试验方案号:{{ trialInfo.ResearchProgramNo }}) 的独立影像评估工作。请选择:
+
+
+
+ 是
+ 否
+
+
+
+
+
+
+ 确定
+
+
+
+
+
+
+
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
new file mode 100644
index 0000000..8f86910
--- /dev/null
+++ b/src/views/login/index.vue
@@ -0,0 +1,686 @@
+
+
+
+
+
+
+
+
+
{{ $t('login:title:system') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('login:button:login') }}
+
+
+
+ 工作站配置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 本地工作站
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ OSS配置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EICS配置
+
+
+
+
+
+
+
+
+ 取消
+ 确定
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/login/topLang.vue b/src/views/login/topLang.vue
new file mode 100644
index 0000000..9a18a56
--- /dev/null
+++ b/src/views/login/topLang.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+ 中文
+
+ English
+
+
+
+
+
+
+
+
diff --git a/src/views/none-dicom-show/components/form.vue b/src/views/none-dicom-show/components/form.vue
new file mode 100644
index 0000000..b0d3a4d
--- /dev/null
+++ b/src/views/none-dicom-show/components/form.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+ 重置
+
+
+
+
diff --git a/src/views/none-dicom-show/components/image-viewer.vue b/src/views/none-dicom-show/components/image-viewer.vue
new file mode 100644
index 0000000..25ca1c2
--- /dev/null
+++ b/src/views/none-dicom-show/components/image-viewer.vue
@@ -0,0 +1,455 @@
+/* eslint-disable no-unused-vars */
+
+
+
+
+
+
+ {{ `${index+1} / ${urlList.length}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/none-dicom-show/components/preview.vue b/src/views/none-dicom-show/components/preview.vue
new file mode 100644
index 0000000..e44411b
--- /dev/null
+++ b/src/views/none-dicom-show/components/preview.vue
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无数据
+
+
+
+
![]()
+
+ {{ `${index+1}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/none-dicom-show/index.vue b/src/views/none-dicom-show/index.vue
new file mode 100644
index 0000000..00a50cb
--- /dev/null
+++ b/src/views/none-dicom-show/index.vue
@@ -0,0 +1,261 @@
+
+
+
+
+ {{$t('trials:none-dicom-show:fileList')}}
+
+
+
+
+
+ {{ study.CodeView }}
+ {{ study.Modality }}
+ {{ getBodyPart(study.BodyPart) }}
+
+
+
+ 暂无数据
+
+
+
+ {{ `${j+1}. ${item.FileName}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/none-dicom-show/multiple.vue b/src/views/none-dicom-show/multiple.vue
new file mode 100644
index 0000000..009766b
--- /dev/null
+++ b/src/views/none-dicom-show/multiple.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+
{{ `${item.CodeView} (Modality: ${item.Modality})` }}
+
+
+ -
+ {{ file.FileName }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:message:downloadFile') }}
+ {{ $t('common:button:download') }}
+
+
+
+
+
+
diff --git a/src/views/none-dicom-show/single.vue b/src/views/none-dicom-show/single.vue
new file mode 100644
index 0000000..76626cc
--- /dev/null
+++ b/src/views/none-dicom-show/single.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:message:downloadFile') }}
+ {{ $t('common:button:download') }}
+
+
+
+
+
+
+
diff --git a/src/views/recompose/index.vue b/src/views/recompose/index.vue
new file mode 100644
index 0000000..03d6287
--- /dev/null
+++ b/src/views/recompose/index.vue
@@ -0,0 +1,163 @@
+
+
+
+
+
+ {{ $t('recompose:title:init') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('recompose:button:cancel') }}
+
+
+
+ {{ $t('recompose:button:save') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/redirect.vue b/src/views/redirect.vue
new file mode 100644
index 0000000..db4c1d6
--- /dev/null
+++ b/src/views/redirect.vue
@@ -0,0 +1,12 @@
+
diff --git a/src/views/redirect/index.vue b/src/views/redirect/index.vue
new file mode 100644
index 0000000..386e40b
--- /dev/null
+++ b/src/views/redirect/index.vue
@@ -0,0 +1,17 @@
+
diff --git a/src/views/research/components/BaseInfo.vue b/src/views/research/components/BaseInfo.vue
new file mode 100644
index 0000000..4b3ca86
--- /dev/null
+++ b/src/views/research/components/BaseInfo.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
diff --git a/src/views/research/components/EquipmentForm.vue b/src/views/research/components/EquipmentForm.vue
new file mode 100644
index 0000000..7b802af
--- /dev/null
+++ b/src/views/research/components/EquipmentForm.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/research/components/EquipmentList.vue b/src/views/research/components/EquipmentList.vue
new file mode 100644
index 0000000..fbcaf29
--- /dev/null
+++ b/src/views/research/components/EquipmentList.vue
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:edit') }}
+
+
+
+ {{ $t('common:button:delete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/research/components/ParticipantForm.vue b/src/views/research/components/ParticipantForm.vue
new file mode 100644
index 0000000..5490a67
--- /dev/null
+++ b/src/views/research/components/ParticipantForm.vue
@@ -0,0 +1,282 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.UserType }}
+
+
+
+
+
+ {{ errorMsg }}
+
+
+
+
+
+
+
diff --git a/src/views/research/components/ParticipantList.vue b/src/views/research/components/ParticipantList.vue
new file mode 100644
index 0000000..eb7d30a
--- /dev/null
+++ b/src/views/research/components/ParticipantList.vue
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+ {{ `${scope.row.LastName} / ${scope.row.FirstName}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsGenerateAccount) }}
+
+
+
+
+
+
+
+ {{ $fd('IsJoin', scope.row.IsJoin) }}
+ {{ $fd('IsJoin', scope.row.IsJoin) }}
+
+
+
+
+
+
+ {{ $t('common:button:edit') }}
+
+
+
+ {{ $t('common:button:delete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/research/form.vue b/src/views/research/form.vue
new file mode 100644
index 0000000..c04498b
--- /dev/null
+++ b/src/views/research/form.vue
@@ -0,0 +1,312 @@
+
+
+
+
+
diff --git a/src/views/research/login.vue b/src/views/research/login.vue
new file mode 100644
index 0000000..c93dec3
--- /dev/null
+++ b/src/views/research/login.vue
@@ -0,0 +1,346 @@
+
+
+
+
+
+ {{ $t('trials:researchForm:title:question') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:researchForm:button:updateQsForm') }}
+
+
+
+ {{ $t('trials:researchForm:button:cancelUpdateQsForm') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ this.$t('trials:researchForm:button:send') }} {{sendTitle ? `${sendTitle}` : null}}
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/research/topLang.vue b/src/views/research/topLang.vue
new file mode 100644
index 0000000..9a18a56
--- /dev/null
+++ b/src/views/research/topLang.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+ 中文
+
+ English
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/Agreements.vue b/src/views/resumeInfo/components/Agreements.vue
new file mode 100644
index 0000000..dd9e7a1
--- /dev/null
+++ b/src/views/resumeInfo/components/Agreements.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ View
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/BasicInfo.vue b/src/views/resumeInfo/components/BasicInfo.vue
new file mode 100644
index 0000000..e22bcfc
--- /dev/null
+++ b/src/views/resumeInfo/components/BasicInfo.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+ {{ basicInfo.LastName }}
+
+
+
+
+ {{ basicInfo.FirstName }}
+
+
+
+
+ {{ basicInfo.ChineseName }}
+
+
+
+
+ {{ basicInfo.ReviewerCode }}
+
+
+
+
+
+
+
+ {{ basicInfo.Sex === 0?'Male':'Female' }}
+ {{ basicInfo.Sex === 0?'男':'女' }}
+
+
+
+
+
+ {{ (Array.isArray(basicInfo.Title)&& basicInfo.Title.length > 0) ? basicInfo.TitleList.join(', ') : '' }}
+
+
+ {{ (Array.isArray(basicInfo.TitleCNList)&& basicInfo.TitleCNList.length > 0) ? basicInfo.TitleCNList.join(', ') : '' }}
+
+
+
+
+
+ {{ basicInfo.Phone }}
+
+
+
+
+ {{ basicInfo.EMail }}
+
+
+
+
+
+
+
+ {{ basicInfo.WeChat }}
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/Comment.vue b/src/views/resumeInfo/components/Comment.vue
new file mode 100644
index 0000000..664e726
--- /dev/null
+++ b/src/views/resumeInfo/components/Comment.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/Credentials.vue b/src/views/resumeInfo/components/Credentials.vue
new file mode 100644
index 0000000..cecd3d9
--- /dev/null
+++ b/src/views/resumeInfo/components/Credentials.vue
@@ -0,0 +1,185 @@
+
+
+
+ Download
+
+
+
+
+
+
+
+
+
+
+
+
+ View
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/EducationTraining.vue b/src/views/resumeInfo/components/EducationTraining.vue
new file mode 100644
index 0000000..98d6ada
--- /dev/null
+++ b/src/views/resumeInfo/components/EducationTraining.vue
@@ -0,0 +1,194 @@
+
+
+
Education (in chronological order)
+
+
+
+
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Degree:scope.row.DegreeCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Major:scope.row.MajorCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Organization:scope.row.OrganizationCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.City:scope.row.CityCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Province:scope.row.ProvinceCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Country:scope.row.CountryCN }}
+
+
+
+
+
+
Postgraduate Training (in chronological order)
+
+
+
+
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Training:scope.row.TrainingCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Major:scope.row.MajorCN }}
+
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Hospital:scope.row.HospitalCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.School:scope.row.SchoolCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.City:scope.row.CityCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Province:scope.row.ProvinceCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.Country:scope.row.CountryCN }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/Employment.vue b/src/views/resumeInfo/components/Employment.vue
new file mode 100644
index 0000000..f616dbb
--- /dev/null
+++ b/src/views/resumeInfo/components/Employment.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+ {{ employment.Department }}
+ {{ employment.DepartmentCN }}
+
+
+
+
+ {{ employment.Rank }}
+ {{ employment.RankCN }}
+
+
+
+
+ {{ employment.Physician }}
+ {{ employment.PhysicianCN }}
+
+
+
+
+ {{ employment.Position }}
+ {{ employment.PositionCN }}
+
+
+
+
+
+
+
+ {{ employment.HospitalName }}
+ {{ employment.HospitalNameCN }}
+
+
+
+
+ {{ employment.UniversityAffiliated }}
+ {{ employment.UniversityAffiliatedCN }}
+
+
+
+
+ {{ employment.City }}
+ {{ employment.CityCN }}
+
+
+
+
+ {{ employment.Province }}
+ {{ employment.ProvinceCN }}
+
+
+
+
+ {{ employment.Country }}
+ {{ employment.CountryCN }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/ResearchPublication.vue b/src/views/resumeInfo/components/ResearchPublication.vue
new file mode 100644
index 0000000..34fd0fe
--- /dev/null
+++ b/src/views/resumeInfo/components/ResearchPublication.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/Resume.vue b/src/views/resumeInfo/components/Resume.vue
new file mode 100644
index 0000000..e10d1cd
--- /dev/null
+++ b/src/views/resumeInfo/components/Resume.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.Language===1?'CH':scope.row.Language===2?'EN':'' }}
+
+
+
+
+
+ Download
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/Specialty.vue b/src/views/resumeInfo/components/Specialty.vue
new file mode 100644
index 0000000..bbda130
--- /dev/null
+++ b/src/views/resumeInfo/components/Specialty.vue
@@ -0,0 +1,58 @@
+
+
+
+
+ {{ specialty.Speciality }}
+ {{ specialty.SpecialityCN }}
+
+
+
+ {{ specialty.Subspeciality }}
+ {{ specialty.SubspecialityCNList }}
+
+
+
+ {{ specialty.ReadingType }}
+ {{ specialty.ReadingTypeCNList }}
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/StatusInfo.vue b/src/views/resumeInfo/components/StatusInfo.vue
new file mode 100644
index 0000000..9ac7760
--- /dev/null
+++ b/src/views/resumeInfo/components/StatusInfo.vue
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+
+ {{ statusList.Submitted }}
+
+ {{ statusList.Submitted }}
+
+
+
+
+
+ {{ statusList.Approved }}
+
+ {{ statusList.Approved }}
+
+
+
+
+
+ {{ statusList.Reading }}
+
+ {{ statusList.Reading }}
+
+
+
+
+ {{ holiday }}
+ Planned Vacation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/components/TrialExperience.vue b/src/views/resumeInfo/components/TrialExperience.vue
new file mode 100644
index 0000000..35d8ba9
--- /dev/null
+++ b/src/views/resumeInfo/components/TrialExperience.vue
@@ -0,0 +1,131 @@
+
+
+
Clinical Trial Experience
+
+
+
+
+
+
+
+
+ {{ scope.row.EvaluationCriteriaList.length>0? scope.row.EvaluationCriteriaList.join(', '):'' }}
+
+
+
+
+
+
+
+
+ {{ GCP }}
+ View
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/resumeInfo/index.vue b/src/views/resumeInfo/index.vue
new file mode 100644
index 0000000..f62ee46
--- /dev/null
+++ b/src/views/resumeInfo/index.vue
@@ -0,0 +1,200 @@
+
+
+
+
+
+
+
+
{{ title }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/reviewers/ReviewersResearch.vue b/src/views/reviewers/ReviewersResearch.vue
new file mode 100644
index 0000000..84b8f39
--- /dev/null
+++ b/src/views/reviewers/ReviewersResearch.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+ 独立阅片人信息填写
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ sendTitle }}
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/reviewers/ReviewersResearchForm.vue b/src/views/reviewers/ReviewersResearchForm.vue
new file mode 100644
index 0000000..ae9b990
--- /dev/null
+++ b/src/views/reviewers/ReviewersResearchForm.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/reviewers/components/Agreements.vue b/src/views/reviewers/components/Agreements.vue
new file mode 100644
index 0000000..1bfda4b
--- /dev/null
+++ b/src/views/reviewers/components/Agreements.vue
@@ -0,0 +1,316 @@
+
+
+
+
Consultant Agreement
+
+
+
+
(must be in pdf format)
+
+
+
+
+
+
+
+
+ View
+ Delete
+
+
+
+
+
+
+ {{$t('trials:enrolledReviews:message:SOW')}}
+
+ Upload
+
+
+ Template
+
+
+
+
+
+
+ {{ scope.row.CriterionName }}
+
+
+
+
+
+
+
+
+
+
+
+
+ View
+ Edit
+ Delete
+
+
+
+
+
+ {{$t('trials:enrolledReviews:message:EQC')}}
+
+ Upload
+
+
+
+
+
+ {{ scope.row.CriterionName }}
+
+
+
+
+
+
+
+
+
+
+
+
+ View
+ Edit
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
+
+
diff --git a/src/views/reviewers/components/BasicInfo.vue b/src/views/reviewers/components/BasicInfo.vue
new file mode 100644
index 0000000..8463d6c
--- /dev/null
+++ b/src/views/reviewers/components/BasicInfo.vue
@@ -0,0 +1,276 @@
+
+
+
+
+
diff --git a/src/views/reviewers/components/Credentials.vue b/src/views/reviewers/components/Credentials.vue
new file mode 100644
index 0000000..d8dcc3e
--- /dev/null
+++ b/src/views/reviewers/components/Credentials.vue
@@ -0,0 +1,120 @@
+
+
+
+
+ Diploma of the highest medical degree 最高医学学位毕业证书
+
+
+
+
+ Template
+
+
+
+
+ Medical Qualification Certificate 医师资格证
+
+
+ Template
+
+
+
+
+
+
+ Practice License 医师执业证
+
+
+ Template
+
+
+
+
+
+
Modality Certificate 大型医用设备上岗证
+
+
+ CT
+
+
+ Template
+
+
+
+
+
+
+ MRI
+
+
+ Template
+
+
+
+
+
+
+ NM
+
+
+ Template
+
+
+
+
+
+
+ US
+
+
+ Template
+
+
+
+
+
+
+
+
+
diff --git a/src/views/reviewers/components/EducationTraining.vue b/src/views/reviewers/components/EducationTraining.vue
new file mode 100644
index 0000000..0ae527f
--- /dev/null
+++ b/src/views/reviewers/components/EducationTraining.vue
@@ -0,0 +1,651 @@
+
+
+
+
+
diff --git a/src/views/reviewers/components/Employment.vue b/src/views/reviewers/components/Employment.vue
new file mode 100644
index 0000000..ca6fd2d
--- /dev/null
+++ b/src/views/reviewers/components/Employment.vue
@@ -0,0 +1,463 @@
+
+
+
+
+
diff --git a/src/views/reviewers/components/GcpCertificate.vue b/src/views/reviewers/components/GcpCertificate.vue
new file mode 100644
index 0000000..597f601
--- /dev/null
+++ b/src/views/reviewers/components/GcpCertificate.vue
@@ -0,0 +1,213 @@
+
+
+
+ Yes
+ No
+
+
+
+ Upload
+ (must be in pdf format)
+
+
+
+
+ Save
+
+
+
+
+
+
diff --git a/src/views/reviewers/components/ResearchPublication.vue b/src/views/reviewers/components/ResearchPublication.vue
new file mode 100644
index 0000000..7b0362c
--- /dev/null
+++ b/src/views/reviewers/components/ResearchPublication.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
diff --git a/src/views/reviewers/components/Resumes.vue b/src/views/reviewers/components/Resumes.vue
new file mode 100644
index 0000000..1c2c157
--- /dev/null
+++ b/src/views/reviewers/components/Resumes.vue
@@ -0,0 +1,353 @@
+
+
+
+
Resume
+
+
+
(must be in doc,docx format)
+
+
+
+
+
+
+
+
+ {{ scope.row.IsOfficial === true?'Yes':'No' }}
+
+
+
+
+ {{ scope.row.Language===1?'中文':'English' }}
+
+
+
+
+
+ Download
+ Delete
+ Set as Official
+
+
+
+
+
+
+
中文简历
+
+
(必须是 doc,docx 格式)
+
+
+
+
+
+
+
+
+ {{ scope.row.IsOfficial === true?'Yes':'No' }}
+
+
+
+
+ {{ scope.row.Language===1?'中文':'English' }}
+
+
+
+
+
+ Download
+ Delete
+ Set as Official
+
+
+
+
+
+ Language:
+
+ English
+ 中文
+
+
+
+
+
+
+
diff --git a/src/views/reviewers/components/ReviewerList.vue b/src/views/reviewers/components/ReviewerList.vue
new file mode 100644
index 0000000..d6d4f04
--- /dev/null
+++ b/src/views/reviewers/components/ReviewerList.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+ {{ scope.row.LastName + ' / ' + scope.row.FirstName }}
+
+
+
+
+
+
+
+ {{ scope.row.Reading }}
+
+ {{ scope.row.Reading }}
+
+
+
+
+
+ {{ scope.row.Finished }}
+
+ {{ scope.row.Finished }}
+
+
+
+
+
+ {{ scope.row.SpecialityId === otherId ? scope.row.SpecialityOther : isEnglish?scope.row.Speciality:scope.row.SpecialityCN }}
+
+
+
+
+
+
+ {{ scope.row.SubspecialityList.length>0?scope.row.SubspecialityList.join(', '):'' }}
+
+
+ {{ scope.row.SubspecialityCNList.length>0?scope.row.SubspecialityCNList.join(', '):'' }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.HospitalName:scope.row.HospitalNameCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.City:scope.row.CityCN }}
+
+
+
+
+
+
+ Detail
+
+
+ Edit
+
+
+
+
+
+
diff --git a/src/views/reviewers/components/Setting.vue b/src/views/reviewers/components/Setting.vue
new file mode 100644
index 0000000..e4cf68e
--- /dev/null
+++ b/src/views/reviewers/components/Setting.vue
@@ -0,0 +1,327 @@
+
+
+
+
diff --git a/src/views/reviewers/components/Specialty.vue b/src/views/reviewers/components/Specialty.vue
new file mode 100644
index 0000000..b362d63
--- /dev/null
+++ b/src/views/reviewers/components/Specialty.vue
@@ -0,0 +1,294 @@
+
+
+
+
+
diff --git a/src/views/reviewers/components/TrialExperience.vue b/src/views/reviewers/components/TrialExperience.vue
new file mode 100644
index 0000000..d6dfa7f
--- /dev/null
+++ b/src/views/reviewers/components/TrialExperience.vue
@@ -0,0 +1,302 @@
+
+
+
+
diff --git a/src/views/reviewers/detail.vue b/src/views/reviewers/detail.vue
new file mode 100644
index 0000000..2af48b6
--- /dev/null
+++ b/src/views/reviewers/detail.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
+
diff --git a/src/views/reviewers/edit.vue b/src/views/reviewers/edit.vue
new file mode 100644
index 0000000..dd4c749
--- /dev/null
+++ b/src/views/reviewers/edit.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/reviewers/index.vue b/src/views/reviewers/index.vue
new file mode 100644
index 0000000..62d13bd
--- /dev/null
+++ b/src/views/reviewers/index.vue
@@ -0,0 +1,770 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+ Reset
+ Download CV
+
+ 采集链接
+
+
+
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+ Reset
+ Back
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName + ' / ' + scope.row.FirstName }}
+
+
+
+
+
+
+
+
+ {{ scope.row.Reading }}
+
+ {{ scope.row.Reading }}
+
+
+
+
+
+ {{ scope.row.Finished }}
+
+ {{ scope.row.Finished }}
+
+
+
+
+
+ {{ scope.row.SpecialityId === otherId ? scope.row.SpecialityOther : isEnglish?scope.row.Speciality:scope.row.SpecialityCN }}
+
+
+
+
+
+
+ {{ scope.row.SubspecialityList.length>0?scope.row.SubspecialityList.join(', '):'' }}
+
+
+ {{ scope.row.SubspecialityCNList.length>0?scope.row.SubspecialityCNList.join(', '):'' }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.HospitalName:scope.row.HospitalNameCN }}
+
+
+
+
+
+
+ {{ isEnglish?scope.row.City:scope.row.CityCN }}
+
+
+
+
+
+
+ {{ scope.row.IsVirtual ? 'Yes' : 'No' }}
+
+
+
+
+
+
+ {{ scope.row.ReviewStatus === 1 ? 'Yes' : 'No' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 成功创建分享链接
+
+
+ 个人简历填写链接:
+
+
+ 复制链接
+
+
+
+
+
+
+
+
+ English
+ 中文
+
+
+
+ Cancel
+ Ok
+
+
+
+
+
+
diff --git a/src/views/reviewers/new.vue b/src/views/reviewers/new.vue
new file mode 100644
index 0000000..9eafd86
--- /dev/null
+++ b/src/views/reviewers/new.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/reviewers/trialStats.vue b/src/views/reviewers/trialStats.vue
new file mode 100644
index 0000000..e85094e
--- /dev/null
+++ b/src/views/reviewers/trialStats.vue
@@ -0,0 +1,190 @@
+
+
+
+ {{ doctorName }} ' {{ listQuery.Status==5?"Pending":listQuery.Status==8?"Approved":"Reading" }} trials
+
+
+
+
+
+
+
+ {{ scope.row.Expedited==0?'No':scope.row.Expedited==1?'24H':'48H' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/share/images.vue b/src/views/share/images.vue
new file mode 100644
index 0000000..2052098
--- /dev/null
+++ b/src/views/share/images.vue
@@ -0,0 +1,79 @@
+
+
+
+
IRC Management System
+
+ 请输入提取码:
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
diff --git a/src/views/statistics/components/ByReviewer.vue b/src/views/statistics/components/ByReviewer.vue
new file mode 100644
index 0000000..33bdc40
--- /dev/null
+++ b/src/views/statistics/components/ByReviewer.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.EntryRate }}%
+
+
+
+
+
+
+
+
diff --git a/src/views/statistics/components/ByTrial.vue b/src/views/statistics/components/ByTrial.vue
new file mode 100644
index 0000000..0d93eb6
--- /dev/null
+++ b/src/views/statistics/components/ByTrial.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited==0?'No':scope.row.Expedited==1?'24H':'48H' }}
+
+
+
+
+
+ {{ scope.row.ReviewerNameList }}
+
+
+ {{ scope.row.ReviewerNameCNList }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/statistics/components/EnrollmentsStats.vue b/src/views/statistics/components/EnrollmentsStats.vue
new file mode 100644
index 0000000..42b201c
--- /dev/null
+++ b/src/views/statistics/components/EnrollmentsStats.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ To
+
+ Reset
+ Search
+ Export Excel
+
+
+
+
+
+
+
+
+
diff --git a/src/views/statistics/components/EnrollmentsStatsByReviewer.vue b/src/views/statistics/components/EnrollmentsStatsByReviewer.vue
new file mode 100644
index 0000000..ba94365
--- /dev/null
+++ b/src/views/statistics/components/EnrollmentsStatsByReviewer.vue
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Export Excel
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.EntryRate }}%
+
+
+
+
+
+
diff --git a/src/views/statistics/components/ParticipatesStats.vue b/src/views/statistics/components/ParticipatesStats.vue
new file mode 100644
index 0000000..a7638c2
--- /dev/null
+++ b/src/views/statistics/components/ParticipatesStats.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ trialInfo.row.Expedited===0?'No':trialInfo.row.Expedited===1?'24H':'48H' }}
+
+
+
+
+
+
+
+
+ {{ scope.row.TrialCount }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/statistics/components/TrialEnrollmentsStats.vue b/src/views/statistics/components/TrialEnrollmentsStats.vue
new file mode 100644
index 0000000..922759b
--- /dev/null
+++ b/src/views/statistics/components/TrialEnrollmentsStats.vue
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Export Excel
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.Expedited==0?'No':scope.row.Expedited==1?'24H':'48H' }}
+
+
+
+
+
+
+ {{ scope.row.ReviewerNameList }}
+
+
+ {{ scope.row.ReviewerNameCNList }}
+
+
+
+
+
+
+
diff --git a/src/views/statistics/components/WorkloadStats.vue b/src/views/statistics/components/WorkloadStats.vue
new file mode 100644
index 0000000..e270215
--- /dev/null
+++ b/src/views/statistics/components/WorkloadStats.vue
@@ -0,0 +1,511 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Export Excel
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/statistics/index.vue b/src/views/statistics/index.vue
new file mode 100644
index 0000000..ff23d8f
--- /dev/null
+++ b/src/views/statistics/index.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/statistics/statistics.js b/src/views/statistics/statistics.js
new file mode 100644
index 0000000..b102a1f
--- /dev/null
+++ b/src/views/statistics/statistics.js
@@ -0,0 +1,145 @@
+/** ** workload statistics list config data ** **/
+export const workloadStats_form = [
+ {
+ type: 'Custom',
+ slot: 'croSlot',
+ label: 'CRO:',
+ prop: 'CROId'
+ },
+ {
+ type: 'Input',
+ label: 'Trial ID:',
+ prop: 'TrialCode',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Custom',
+ slot: 'hospitalSlot',
+ label: 'Hospital:',
+ prop: 'HospitalId'
+ },
+ {
+ type: 'Input',
+ label: 'Reviewer ID:',
+ prop: 'Reviewer',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Custom',
+ slot: 'beginDateSlot',
+ label: 'Begin Date:',
+ prop: 'BeginDate'
+ },
+ {
+ type: 'Custom',
+ slot: 'endDateSlot',
+ label: 'End Date:',
+ prop: 'EndDate'
+ }
+]
+export const workloadStats_handle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' },
+ { label: 'Export', type: 'primary', emitKey: 'export', slot: 'exportSlot' }
+]
+
+/** ** reviewer enrollment statistics list config data ** **/
+export const enrollStats_form = [
+ {
+ type: 'Custom',
+ slot: 'hospitalSlot',
+ label: 'Hospital:',
+ prop: 'HospitalId'
+ },
+ {
+ type: 'Input',
+ label: 'Reviewer ID:',
+ prop: 'Reviewer',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Custom',
+ slot: 'beginDateSlot',
+ label: 'Begin Date:',
+ prop: 'BeginDate'
+ },
+ {
+ type: 'Custom',
+ slot: 'endDateSlot',
+ label: 'End Date:',
+ prop: 'EndDate'
+ }
+]
+export const enrollStats_handle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' },
+ { label: 'Export', type: 'primary', emitKey: 'export', slot: 'exportSlot' }
+]
+
+/** ** trial enrollment statistics list config data ** **/
+export const trialStats_form = [
+ {
+ type: 'Custom',
+ slot: 'croSlot',
+ label: 'CRO:',
+ prop: 'CroId'
+ },
+ {
+ type: 'Input',
+ label: 'Trial ID:',
+ prop: 'TrialCode',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Indication:',
+ prop: 'Indication',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Custom',
+ slot: 'beginDateSlot',
+ label: 'Begin Date:',
+ prop: 'BeginDate'
+ },
+ {
+ type: 'Custom',
+ slot: 'endDateSlot',
+ label: 'End Date:',
+ prop: 'EndDate'
+ }
+]
+export const trialStats_handle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' },
+ { label: 'Export', type: 'primary', emitKey: 'export', slot: 'exportSlot' }
+]
+
+/** ** participate statistics list config data ** **/
+export const participate_form = [
+ {
+ type: 'Input',
+ label: 'User Name:',
+ prop: 'UserInfo',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Organization:',
+ prop: 'OrganizationName',
+ width: '120px',
+ placeholder: ''
+ }
+]
+export const participate_handle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' }
+ // { label: 'Export', type: 'primary', emitKey: 'export', slot: 'exportSlot' }
+]
+
diff --git a/src/views/system/.DS_Store b/src/views/system/.DS_Store
new file mode 100644
index 0000000..8622de6
Binary files /dev/null and b/src/views/system/.DS_Store differ
diff --git a/src/views/system/i18n/components/BatchAddForm.vue b/src/views/system/i18n/components/BatchAddForm.vue
new file mode 100644
index 0000000..ebe88ec
--- /dev/null
+++ b/src/views/system/i18n/components/BatchAddForm.vue
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+ {{ $t('common:button:delete') }}
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
diff --git a/src/views/system/i18n/components/I18nForm.vue b/src/views/system/i18n/components/I18nForm.vue
new file mode 100644
index 0000000..91f7d24
--- /dev/null
+++ b/src/views/system/i18n/components/I18nForm.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
diff --git a/src/views/system/i18n/index.vue b/src/views/system/i18n/index.vue
new file mode 100644
index 0000000..01de7af
--- /dev/null
+++ b/src/views/system/i18n/index.vue
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+ 新增
+
+
+ 批量新增
+
+
+
+
+
+
+
+
+ {{ $fd('InternationalizationType', scope.row.InternationalizationType) }}
+
+
+ {{ $fd('InternationalizationType', scope.row.InternationalizationType) }}
+
+
+ {{ $fd('InternationalizationType', scope.row.InternationalizationType) }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('InternationalizationKeyState', scope.row.State) }}
+
+
+ {{ $fd('InternationalizationKeyState', scope.row.State) }}
+
+
+ {{ $fd('InternationalizationKeyState', scope.row.State) }}
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/log/components/LogForm.vue b/src/views/system/log/components/LogForm.vue
new file mode 100644
index 0000000..6e71ade
--- /dev/null
+++ b/src/views/system/log/components/LogForm.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 取消
+ 保存
+
+
+
+
diff --git a/src/views/system/log/index.vue b/src/views/system/log/index.vue
new file mode 100644
index 0000000..6336fc9
--- /dev/null
+++ b/src/views/system/log/index.vue
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 查询
+
+
+ 新增
+
+
+
+
+
+
+
+
+
+ {{ scope.row.PublishTime?moment(scope.row.PublishTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/menu/.DS_Store b/src/views/system/menu/.DS_Store
new file mode 100644
index 0000000..5c71a29
Binary files /dev/null and b/src/views/system/menu/.DS_Store differ
diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue
new file mode 100644
index 0000000..2414a4d
--- /dev/null
+++ b/src/views/system/menu/index.vue
@@ -0,0 +1,498 @@
+
+
+
+
+
+
diff --git a/src/views/system/menu/menu.js b/src/views/system/menu/menu.js
new file mode 100644
index 0000000..e94b552
--- /dev/null
+++ b/src/views/system/menu/menu.js
@@ -0,0 +1,127 @@
+[
+ {
+ 'MenuType': 'M',
+ 'MenuIcon': 'Trials',
+ 'MenuName': 'Trials',
+ 'Path': '/trials',
+ 'Component': '',
+ 'ShowOrder': 3,
+ 'IsEnable': true,
+ 'IsCache': false,
+ 'IsDisplay': true,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': '',
+ 'Meta': '{ title: `Trials`}',
+ 'Children': [
+ {
+ 'MenuType': 'C',
+ 'MenuIcon': '',
+ 'MenuName': 'TrialsPanel',
+ 'Path': '/trials/trials-panel',
+ 'Component': 'views/trials/trials-panel/index',
+ 'ShowOrder': 2,
+ 'IsEnable': false,
+ 'IsCache': false,
+ 'IsDisplay': false,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': 'trials:trials-panel',
+ 'Meta': '{ title: `panel`,breadcrumb: true, activeMenu: `/trials/trials-list` }',
+ 'Children': [
+ {
+ 'MenuType': 'C',
+ 'MenuIcon': '',
+ 'MenuName': 'enrolled-reviewers',
+ 'Path': '/trials/trials-panel/enrolled-reviewers',
+ 'Component': 'views/trials/trials-panel/enrolled-reviewers/index',
+ 'ShowOrder': 3,
+ 'IsEnable': false,
+ 'IsCache': false,
+ 'IsDisplay': false,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': 'trials:trials-panel:enrolled-reviewers',
+ 'Meta': '{ breadcrumb: false, hidden: true, activeMenu: `/trials/trials-list` }',
+ 'Children': [{
+ 'MenuType': 'C',
+ 'MenuIcon': '',
+ 'MenuName': 'enroll-list',
+ 'Path': '/trials/trials-panel/enrolled-reviewers/list',
+ 'Component': 'views/trials/trials-panel/enrolled-reviewers/list/index',
+ 'ShowOrder': 1,
+ 'IsEnable': false,
+ 'IsCache': false,
+ 'IsDisplay': false,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': 'trials:trials-panel:enrolled-reviewers:list',
+ 'Meta': '{ title: `Enrolled-reviewers`, hidden: true, activeMenu: `/trials/trials-list` }',
+ 'Children': []
+ }, {
+ 'MenuType': 'C',
+ 'MenuIcon': '',
+ 'MenuName': 'enroll',
+ 'Path': '/trials/trials-panel/enrolled-reviewers/enroll',
+ 'Component': 'views/trials/trials-panel/enrolled-reviewers/enroll/index',
+ 'ShowOrder': 2,
+ 'IsEnable': false,
+ 'IsCache': false,
+ 'IsDisplay': false,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': 'trials:trials-panel:enrolled-reviewers:enroll',
+ 'Meta': '{ title: `Enroll`, hidden: true, activeMenu: `/trials/trials-list` }',
+ 'Children': []
+ }, {
+ 'MenuType': 'C',
+ 'MenuIcon': '',
+ 'MenuName': 'stats',
+ 'Path': '/trials/trials-panel/enrolled-reviewers/stats',
+ 'Component': 'views/trials/trials-panel/enrolled-reviewers/stats/index',
+ 'ShowOrder': 3,
+ 'IsEnable': false,
+ 'IsCache': false,
+ 'IsDisplay': false,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': 'trials:trials-panel:enrolled-reviewers:stats',
+ 'Meta': '{ title: `Stats`, hidden: true, activeMenu: `/trials/trials-list` }',
+ 'Children': []
+ }]
+ }
+ ]
+ }]
+ },
+ {
+ 'MenuType': 'M',
+ 'MenuIcon': 'druid',
+ 'MenuName': 'Statistics',
+ 'Path': '/statistics',
+ 'Component': '',
+ 'ShowOrder': 4,
+ 'IsEnable': true,
+ 'IsCache': false,
+ 'IsDisplay': true,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': '',
+ 'Meta': '',
+ 'Children': [{
+ 'MenuType': 'C',
+ 'MenuIcon': '',
+ 'MenuName': 'StatisticsList',
+ 'Path': '/statistics/statistics-list',
+ 'Component': 'views/statistics/index',
+ 'ShowOrder': 1,
+ 'IsEnable': false,
+ 'IsCache': false,
+ 'IsDisplay': false,
+ 'IsInTabDisplay': false,
+ 'IsExternalLink': false,
+ 'PermissionStr': 'statistics:statistics-list',
+ 'Meta': '{ title: `Statistics`, breadcrumb: false, }',
+ 'Children': []
+ }]
+ }
+]
diff --git a/src/views/system/notice/components/from.vue b/src/views/system/notice/components/from.vue
new file mode 100644
index 0000000..5511b64
--- /dev/null
+++ b/src/views/system/notice/components/from.vue
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/system/notice/index.vue b/src/views/system/notice/index.vue
new file mode 100644
index 0000000..5178b7f
--- /dev/null
+++ b/src/views/system/notice/index.vue
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 新增
+
+
+
+
+
+
+ {{ dict.type.NoteLevel.find(v => {return v.raw.Code * 1 === scope.row.NoticeLevelEnum}) ? dict.type.NoteLevel.find(v => {return v.raw.Code * 1 === scope.row.NoticeLevelEnum}).label : '' }}
+
+
+
+
+ {{ dict.type.NoteType.find(v => {return v.raw.Code * 1 === scope.row.NoticeTypeEnum}) ? dict.type.NoteType.find(v => {return v.raw.Code * 1 === scope.row.NoticeTypeEnum}).label : '' }}
+
+
+
+
+ {{ scope.row.NoticeContent }}
+
+
+
+
+
+ {{ dict.type.NoticeState.find(v => {return v.raw.Code * 1 === scope.row.ActualNoticeStateEnum}) ? dict.type.NoticeState.find(v => {return v.raw.Code * 1 === scope.row.ActualNoticeStateEnum}).label : '' }}
+
+
+
+
+
+ {{ dict.type.NoticeApplicableTrial.find(v => {return v.raw.Code * 1 === scope.row.ApplicableProjectEnum}) ? dict.type.NoticeApplicableTrial.find(v => {return v.raw.Code * 1 === scope.row.ApplicableProjectEnum}).label : '' }}
+
+
+
+
+ {{ scope.row.NoticeUserTypeList.map(v => v.UserTypeShortName).toString() }}
+
+
+
+
+ {{ dict.type.NoticeMode.find(v => {return v.raw.Code * 1 === scope.row.NoticeModeEnum}) ? dict.type.NoticeMode.find(v => {return v.raw.Code * 1 === scope.row.NoticeModeEnum}).label : '' }}
+
+
+
+
+ {{ scope.row.StartDate }}-{{ scope.row.EndDate }}
+
+
+
+
+
+
+ {{ scope.row.StartDate ? scope.row.StartDate: scope.row.CreateTime }}
+
+
+
+
+ {{ scope.row.FileName }}
+
+
+
+
+ 编辑
+ 发布
+ 撤回
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/role/components/RoleForm.vue b/src/views/system/role/components/RoleForm.vue
new file mode 100644
index 0000000..ce44f7f
--- /dev/null
+++ b/src/views/system/role/components/RoleForm.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 展开/折叠
+ 全选/全不选
+ 父子联动
+
+
+
+
+
+
+ Cancel
+
+ Save
+
+
+
+
diff --git a/src/views/system/role/components/RoleFunction.vue b/src/views/system/role/components/RoleFunction.vue
new file mode 100644
index 0000000..8baf5ca
--- /dev/null
+++ b/src/views/system/role/components/RoleFunction.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/role/components/RoleMenu.vue b/src/views/system/role/components/RoleMenu.vue
new file mode 100644
index 0000000..214a049
--- /dev/null
+++ b/src/views/system/role/components/RoleMenu.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
new file mode 100644
index 0000000..af573cc
--- /dev/null
+++ b/src/views/system/role/index.vue
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 新增
+
+
+
+
+
+
+
+
+ {{ scope.row.UserTypeGroupList.map(v => {return v.GroupName}).toString() }}
+
+
+
+
+
+ {{ $fd('UserType',scope.row.UserTypeEnum) }}
+
+
+
+
+
+ Edit
+ Delete
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/role/role.js b/src/views/system/role/role.js
new file mode 100644
index 0000000..3d1dfcd
--- /dev/null
+++ b/src/views/system/role/role.js
@@ -0,0 +1,80 @@
+// 角色列表配置信息
+export const role_columns = [
+ { type: 'index' },
+
+ {
+ prop: 'UserType',
+ label: 'User Type',
+ minWidth: 120,
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'UserTypeShortName',
+ label: 'Shortname',
+ minWidth: 100,
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Type',
+ label: 'Group',
+ hidden: true,
+ minWidth: 100,
+ showOverflowTooltip: true,
+ slot: 'TypeSlot'
+ },
+
+ {
+ prop: 'Description',
+ label: 'Description',
+ minWidth: 100,
+ showOverflowTooltip: true },
+ {
+ type: 'operate',
+ label: 'Action',
+ minWidth: 100,
+ operates: [
+ // { name: 'Permission', type: 'primary', emitKey: 'permission' },
+ { name: 'Edit', type: 'primary', emitKey: 'edit' },
+ { name: 'Delete', type: 'danger', emitKey: 'delete' }
+ ] }
+]
+export const model_cfg = {
+ visible: false,
+ title: '',
+ width: '600px',
+ showClose: true
+}
+export const editRoleForm = [
+ {
+ type: 'Input',
+ label: 'Role Name',
+ prop: 'RoleName',
+ width: '100%',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Description',
+ prop: 'RoleDescription',
+ width: '100%',
+ placeholder: ''
+ }
+]
+export const editData = {
+ RoleName: null,
+ RoleDescription: null
+}
+export const editRules = {
+ RoleName: [
+ { required: true, message: 'Please specify', trigger: 'blur' },
+ { max: 50, message: 'The maximum length is 50' }
+ ],
+ RoleDescription: [
+ { max: 500, message: 'The maximum length is 500' }
+ ]
+
+}
+export const editHandle = [
+ { label: 'Cancel', type: 'primary', emitKey: 'cancel' },
+ { label: 'Save', type: 'primary', emitKey: 'save' }
+]
diff --git a/src/views/system/user/add/index.vue b/src/views/system/user/add/index.vue
new file mode 100644
index 0000000..ad9ae93
--- /dev/null
+++ b/src/views/system/user/add/index.vue
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/src/views/system/user/components/Account.vue b/src/views/system/user/components/Account.vue
new file mode 100644
index 0000000..2d6293f
--- /dev/null
+++ b/src/views/system/user/components/Account.vue
@@ -0,0 +1,39 @@
+
+
+
+
+ Reset Password
+
+
+
+
diff --git a/src/views/system/user/components/UserInfo.vue b/src/views/system/user/components/UserInfo.vue
new file mode 100644
index 0000000..224573c
--- /dev/null
+++ b/src/views/system/user/components/UserInfo.vue
@@ -0,0 +1,234 @@
+
+
+
+
+ Basic Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Male
+ Female
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Affiliation
+
+
+
+ Internal
+ External
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
diff --git a/src/views/system/user/edit/index.vue b/src/views/system/user/edit/index.vue
new file mode 100644
index 0000000..921b2c8
--- /dev/null
+++ b/src/views/system/user/edit/index.vue
@@ -0,0 +1,40 @@
+
+
+
+
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
new file mode 100644
index 0000000..d559fac
--- /dev/null
+++ b/src/views/system/user/index.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/views/system/user/list/index.vue b/src/views/system/user/list/index.vue
new file mode 100644
index 0000000..383a2c2
--- /dev/null
+++ b/src/views/system/user/list/index.vue
@@ -0,0 +1,150 @@
+
+
+
+
+ New
+
+
+
+
+ {{ scope.row.Sex?'Male':'Female' }}
+
+
+ {{ scope.row.RoleNameList.map(role => role.RoleName).join(',') }}
+
+
+ {{scope.row.IsZhiZhun ? 'Internal' : 'External'}}
+
+
+ {{scope.row.IsTestUser ? 'Yes' : 'No'}}
+
+
+ {{ scope.row.Status?'Enable':'Disable' }}
+
+
+
+
+
+
diff --git a/src/views/system/user/list/list.js b/src/views/system/user/list/list.js
new file mode 100644
index 0000000..5fffb38
--- /dev/null
+++ b/src/views/system/user/list/list.js
@@ -0,0 +1,185 @@
+// 用户列表配置信息
+export const columns = [
+ { type: 'index' },
+ {
+ prop: 'UserCode',
+ label: 'S/N',
+ width: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'UserName',
+ label: 'User Name',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'RealName',
+ label: 'Real Name',
+ minWidth: 120,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Sex',
+ label: 'Gender',
+ hidden: true,
+ slot: 'genderSlot',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'Phone',
+ label: 'Phone',
+ minWidth: 120,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'EMail',
+ label: 'EMail',
+ minWidth: 150,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'OrganizationName',
+ label: 'Organization',
+ minWidth: 130,
+ showOverflowTooltip: true
+ },
+ {
+ prop: 'UserType',
+ label: 'User Type',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true
+ },
+ // {
+ // prop: 'RoleNameList',
+ // label: 'Roles',
+ // hidden: true,
+ // slot: 'roleSlot',
+ // minWidth: 250,
+ // showOverflowTooltip: true
+ // },
+ {
+ prop: 'IsZhiZhun',
+ label: 'Internal Or External:',
+ hidden: true,
+ slot: 'isZhiZhunSlot',
+ minWidth: 140,
+ sortable: 'custom',
+ showOverflowTooltip: true },
+ {
+ prop: 'IsTestUser',
+ label: 'Is Test User',
+ hidden: true,
+ slot: 'isTestUserSlot',
+ minWidth: 120,
+ sortable: 'custom',
+ showOverflowTooltip: true },
+ {
+ prop: 'Status',
+ label: 'Status',
+ hidden: true,
+ slot: 'statusSlot',
+ minWidth: 100,
+ sortable: 'custom',
+ showOverflowTooltip: true },
+ { type: 'operate',
+ label: 'Action',
+ minWidth: 200,
+ operates: [
+ { name: 'Edit', type: 'primary', emitKey: 'editCb' },
+ { name: 'Delete', type: 'danger', emitKey: 'deleteCb' }
+ ] }
+]
+
+// 用户列表查询表单配置信息
+export const searchForm = [
+ {
+ type: 'Input',
+ label: 'User Name:',
+ prop: 'UserName',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Real Name:',
+ prop: 'RealName',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Phone:',
+ prop: 'Phone',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Input',
+ label: 'Organization:',
+ prop: 'OrganizationName',
+ width: '120px',
+ placeholder: ''
+ },
+ {
+ type: 'Select',
+ label: 'Internal Or External:',
+ prop: 'IsZhiZhun',
+ width: '100px',
+ options: [
+ { label: 'Internal', value: true },
+ { label: 'External', value: false }
+ ],
+ props: { label: 'label', value: 'value' },
+ change: scope => '',
+ placeholder: ''
+ },
+ {
+ type: 'Select',
+ label: 'Is Test User:',
+ prop: 'IsTestUser',
+ width: '100px',
+ options: [
+ { label: 'Yes', value: true },
+ { label: 'No', value: false }
+ ],
+ props: { label: 'label', value: 'value' },
+ change: scope => '',
+ placeholder: ''
+ },
+ {
+ type: 'Select',
+ label: 'Status:',
+ prop: 'UserState',
+ width: '100px',
+ options: [
+ { label: 'Enable', value: 1 },
+ { label: 'Disable', value: 0 }
+ ],
+ props: { label: 'label', value: 'value' },
+ change: scope => '',
+ placeholder: ''
+ },
+ {
+ type: 'Select',
+ label: 'User Type:',
+ prop: 'UserType',
+ width: '100px',
+ options: [], // 下拉选项
+ props: { label: 'UserType', value: 'Id' }, // 下拉选项配置信息,必填
+ placeholder: ''
+ }
+]
+// 用户列表查询表单事件配置信息
+export const searchHandle = [
+ { label: 'Reset', type: 'primary', emitKey: 'reset' },
+ { label: 'Search', type: 'primary', emitKey: 'search' }
+]
diff --git a/src/views/test/videos/index.vue b/src/views/test/videos/index.vue
new file mode 100644
index 0000000..f710427
--- /dev/null
+++ b/src/views/test/videos/index.vue
@@ -0,0 +1,139 @@
+
+
+
上传视频文件
+
选择dicom文件
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/test/videos/index2.vue b/src/views/test/videos/index2.vue
new file mode 100644
index 0000000..790d1e1
--- /dev/null
+++ b/src/views/test/videos/index2.vue
@@ -0,0 +1,98 @@
+
+
+ 选择dicom文件
+
+
+
+
+
+
+
diff --git a/src/views/trials/.DS_Store b/src/views/trials/.DS_Store
new file mode 100644
index 0000000..9e6e173
Binary files /dev/null and b/src/views/trials/.DS_Store differ
diff --git a/src/views/trials/components/SignForm.vue b/src/views/trials/components/SignForm.vue
new file mode 100644
index 0000000..966c88f
--- /dev/null
+++ b/src/views/trials/components/SignForm.vue
@@ -0,0 +1,124 @@
+
+
+
+
+
diff --git a/src/views/trials/components/newSignForm.vue b/src/views/trials/components/newSignForm.vue
new file mode 100644
index 0000000..31791a2
--- /dev/null
+++ b/src/views/trials/components/newSignForm.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
diff --git a/src/views/trials/hot-keys/components/HotKeyInput.vue b/src/views/trials/hot-keys/components/HotKeyInput.vue
new file mode 100644
index 0000000..eb9b3fa
--- /dev/null
+++ b/src/views/trials/hot-keys/components/HotKeyInput.vue
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/hot-keys/components/HotKeysList.vue b/src/views/trials/hot-keys/components/HotKeysList.vue
new file mode 100644
index 0000000..c4b2b39
--- /dev/null
+++ b/src/views/trials/hot-keys/components/HotKeysList.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+ {{ $fd('ShortcutKey',item.label) }}
+
+
+
+
+
+
+ {{ $t('common:button:reset') }}
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/hot-keys/index.vue b/src/views/trials/hot-keys/index.vue
new file mode 100644
index 0000000..f29b195
--- /dev/null
+++ b/src/views/trials/hot-keys/index.vue
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-layout/components/noticeMarquee.vue b/src/views/trials/trials-layout/components/noticeMarquee.vue
new file mode 100644
index 0000000..8353ecc
--- /dev/null
+++ b/src/views/trials/trials-layout/components/noticeMarquee.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-layout/components/topLang.vue b/src/views/trials/trials-layout/components/topLang.vue
new file mode 100644
index 0000000..fb37e5a
--- /dev/null
+++ b/src/views/trials/trials-layout/components/topLang.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+ 中文
+
+ English
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-layout/components/trialsMain.vue b/src/views/trials/trials-layout/components/trialsMain.vue
new file mode 100644
index 0000000..8b10d92
--- /dev/null
+++ b/src/views/trials/trials-layout/components/trialsMain.vue
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-layout/components/trialsNavbar.vue b/src/views/trials/trials-layout/components/trialsNavbar.vue
new file mode 100644
index 0000000..bf8007d
--- /dev/null
+++ b/src/views/trials/trials-layout/components/trialsNavbar.vue
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-layout/index.vue b/src/views/trials/trials-layout/index.vue
new file mode 100644
index 0000000..51f0e7d
--- /dev/null
+++ b/src/views/trials/trials-layout/index.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-list/.DS_Store b/src/views/trials/trials-list/.DS_Store
new file mode 100644
index 0000000..ee7d3b4
Binary files /dev/null and b/src/views/trials/trials-list/.DS_Store differ
diff --git a/src/views/trials/trials-list/components/DoneList.vue b/src/views/trials/trials-list/components/DoneList.vue
new file mode 100644
index 0000000..e65b290
--- /dev/null
+++ b/src/views/trials/trials-list/components/DoneList.vue
@@ -0,0 +1,242 @@
+
+
+
+
+ {{$fd('UserType', scope.row.UserType)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.Reading_PM_ToBeApprovalCount + scope.row.Reading_SPM_ToBeApprovalCount}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-list/components/SignForm.vue b/src/views/trials/trials-list/components/SignForm.vue
new file mode 100644
index 0000000..2f4269c
--- /dev/null
+++ b/src/views/trials/trials-list/components/SignForm.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-list/components/TrialForm.vue b/src/views/trials/trials-list/components/TrialForm.vue
new file mode 100644
index 0000000..2a20246
--- /dev/null
+++ b/src/views/trials/trials-list/components/TrialForm.vue
@@ -0,0 +1,528 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:trials-list:form:cancel') }}
+
+
+ {{ $t('trials:trials-list:form:save') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-list/components/TrialStatusForm.vue b/src/views/trials/trials-list/components/TrialStatusForm.vue
new file mode 100644
index 0000000..2d6391f
--- /dev/null
+++ b/src/views/trials/trials-list/components/TrialStatusForm.vue
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+ {{ $fd('TrialStatusEnum', 'Initializing') }}
+ {{ $fd('TrialStatusEnum', 'Ongoing') }}
+
+ {{ $fd('TrialStatusEnum', 'Stopped') }}
+
+
+ {{ $fd('TrialStatusEnum', 'Completed') }}
+
+
+
+
+
+
+
+
+ {{ warningMessage }}
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
diff --git a/src/views/trials/trials-list/index.vue b/src/views/trials/trials-list/index.vue
new file mode 100644
index 0000000..eef1e35
--- /dev/null
+++ b/src/views/trials/trials-list/index.vue
@@ -0,0 +1,701 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+ Reset
+ Back
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}
+ {{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}
+ {{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}
+ {{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-myinfo/index.vue b/src/views/trials/trials-myinfo/index.vue
new file mode 100644
index 0000000..b8ed88c
--- /dev/null
+++ b/src/views/trials/trials-myinfo/index.vue
@@ -0,0 +1,385 @@
+
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:title:avater') }}
+
+
+
+ {{ user.LastName }}
+
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:title:basicInfo') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Male
+ Female
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:button:save') }}
+
+
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:title:accountInfo') }}
+
+
+
+
+ {{ user.UserName }}
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:button:update') }}
+
+
+
+
+ {{ user.Phone }}
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:button:update') }}
+
+
+
+
+ {{ user.EMail }}
+
+
+
+ {{ sendTitle }}
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:button:update') }}
+
+
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:title:updatePaasord') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:trials-myinfo:button:save') }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-notice/index.vue b/src/views/trials/trials-notice/index.vue
new file mode 100644
index 0000000..7a1876e
--- /dev/null
+++ b/src/views/trials/trials-notice/index.vue
@@ -0,0 +1,246 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+ {{ dict.type.NoteType.find(v => {return v.raw.Code * 1 === scope.row.NoticeTypeEnum}) ? dict.type.NoteType.find(v => {return v.raw.Code * 1 === scope.row.NoticeTypeEnum}).label : '' }}
+
+
+
+
+
+
+
+ {{ dict.type.NoticeState.find(v => {return v.raw.Code * 1 === scope.row.ActualNoticeStateEnum}) ? dict.type.NoticeState.find(v => {return v.raw.Code * 1 === scope.row.ActualNoticeStateEnum}).label : '' }}
+
+
+
+
+
+
+
+
+ {{ scope.row.FileName }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsRead) }}
+ {{ $fd('YesOrNo', scope.row.IsRead) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/.DS_Store b/src/views/trials/trials-panel/.DS_Store
new file mode 100644
index 0000000..ece1d11
Binary files /dev/null and b/src/views/trials/trials-panel/.DS_Store differ
diff --git a/src/views/trials/trials-panel/attachments/SPMEnrollment/components/Approval.vue b/src/views/trials/trials-panel/attachments/SPMEnrollment/components/Approval.vue
new file mode 100644
index 0000000..744192b
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/SPMEnrollment/components/Approval.vue
@@ -0,0 +1,226 @@
+
+
+
+
+
+
+ {{ $t('trials:seletctedReviews:button:approve') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.SpecialityId === otherId?(scope.row.SpecialityOther?scope.row.SpecialityOther:'Other'): scope.row.Speciality }}
+
+
+
+
+
+ {{ scope.row.SubspecialityIds.map(v => {return $fd('Subspeciality', v, 'id')}).toString() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/SPMEnrollment/index.vue b/src/views/trials/trials-panel/attachments/SPMEnrollment/index.vue
new file mode 100644
index 0000000..05625c2
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/SPMEnrollment/index.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
{{ $t('trials:seletctedReviews:title:trialInfor') }}
+
+
+
+
+
+ {{$fd('Indication', trialInfo.IndicationEnum)}}{{trialInfo.Indication ? '-' + trialInfo.Indication : '' }}
+
+
+
+ {{ (trialInfo.CriterionList && trialInfo.CriterionList.length>0)? trialInfo.CriterionList.join(', '): '' }}
+
+
+
+
+ {{ trialInfo.Modalitys }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ trialInfo.TotalReviewers }}
+
+
+
+ {{ trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).toString() }}
+
+
+
+
+
+
+
{{ $t('trials:spmEnroll:title:userList') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/attachment-management/index.vue b/src/views/trials/trials-panel/attachments/attachment-management/index.vue
new file mode 100644
index 0000000..ca48b82
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/attachment-management/index.vue
@@ -0,0 +1,309 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.RealName }}
+
+ {{ item.UserName }}
+
+
+
+
+
+
+
+
+ {{ item.UserType }}
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('IsSystemDoc', scope.row.IsSystemDoc) }}
+ {{ $fd('IsSystemDoc', scope.row.IsSystemDoc) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/enrollment/components/Approval.vue b/src/views/trials/trials-panel/attachments/enrollment/components/Approval.vue
new file mode 100644
index 0000000..ff64e65
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/enrollment/components/Approval.vue
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('DoctorTrialState', scope.row.DoctorTrialState) }}
+ {{ $fd('DoctorTrialState', scope.row.DoctorTrialState) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/enrollment/components/Confirmation.vue b/src/views/trials/trials-panel/attachments/enrollment/components/Confirmation.vue
new file mode 100644
index 0000000..ddd24a3
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/enrollment/components/Confirmation.vue
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+ {{ $t('trials:seletctedReviews:button:confirm') }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('DoctorTrialState', scope.row.DoctorTrialState) }}
+ {{ $fd('DoctorTrialState', scope.row.DoctorTrialState) }}
+ {{ $fd('DoctorTrialState', scope.row.DoctorTrialState) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/enrollment/components/Selection.vue b/src/views/trials/trials-panel/attachments/enrollment/components/Selection.vue
new file mode 100644
index 0000000..9c85b37
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/enrollment/components/Selection.vue
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+ {{ $t('trials:seletctedReviews:button:select') }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('DoctorTrialState', 16) }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.ReadingTypeIds.map(v => {return $fd('ReadingType', v, 'id')}).toString() }}
+
+
+
+
+
+ {{ scope.row.SpecialityId === otherId?(scope.row.SpecialityOther?scope.row.SpecialityOther:'Other'): scope.row.Speciality }}
+
+
+
+
+
+ {{ scope.row.SubspecialityIds.map(v => {return $fd('Subspeciality', v, 'id')}).toString() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/enrollment/components/Submission.vue b/src/views/trials/trials-panel/attachments/enrollment/components/Submission.vue
new file mode 100644
index 0000000..0213ab3
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/enrollment/components/Submission.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+ {{ $t('trials:seletctedReviews:button:submit') }}
+
+
+
+ {{ $t('trials:seletctedReviews:button:submissionDownAll') }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('DoctorTrialState', scope.row.DoctorTrialState) }}
+ {{ $fd('DoctorTrialState', 16) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:seletctedReviews:label:language') }}:
+
+ English
+ 中文
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/enrollment/index.vue b/src/views/trials/trials-panel/attachments/enrollment/index.vue
new file mode 100644
index 0000000..f37ddf2
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/enrollment/index.vue
@@ -0,0 +1,254 @@
+
+
+
+
+
+
{{ $t('trials:seletctedReviews:title:trialInfor') }}
+
+
+
+
+
+ {{$fd('Indication', trialInfo.IndicationEnum)}}{{trialInfo.Indication ? '-' + trialInfo.Indication : '' }}
+
+
+
+ {{ (trialInfo.CriterionList && trialInfo.CriterionList.length>0)? trialInfo.CriterionList.join(', '): '' }}
+
+
+
+
+ {{ trialInfo.Modalitys }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ trialInfo.TotalReviewers }}
+
+
+
+ {{ trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).toString() }}
+
+
+
+
+
+
+
+
+
{{ $t('trials:seletctedReviews:title:enrollment') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/index.vue b/src/views/trials/trials-panel/attachments/index.vue
new file mode 100644
index 0000000..5353de1
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/index.vue
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/reReading-tracking/index.vue b/src/views/trials/trials-panel/attachments/reReading-tracking/index.vue
new file mode 100644
index 0000000..0380243
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/reReading-tracking/index.vue
@@ -0,0 +1,807 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.OriginalReReadingTask.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.OriginalReReadingTask.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+
+
+
+
+
+ {{ scope.row.OriginalReReadingTask.UserName }}({{ scope.row.OriginalReReadingTask.FullName }})
+
+
+
+
+
+
+
+
+ {{ $fd('RequestReReadingType', scope.row.RequestReReadingType) }}
+ {{ $fd('RequestReReadingType', scope.row.RequestReReadingType) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.RequestReReadingRejectReason }}
+
+ {{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
+
{{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
{{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TaskName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/self-attachment/components/SignForm.vue b/src/views/trials/trials-panel/attachments/self-attachment/components/SignForm.vue
new file mode 100644
index 0000000..1aff22d
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/self-attachment/components/SignForm.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/self-attachment/index.vue b/src/views/trials/trials-panel/attachments/self-attachment/index.vue
new file mode 100644
index 0000000..2c00281
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/self-attachment/index.vue
@@ -0,0 +1,364 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:message:signTip') }}
+ {{ `(${currentMinMinutes * 60 - duration}s)` }}
+
+
+
+ {{ $t('common:button:sign') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/site-research/components/users.vue b/src/views/trials/trials-panel/attachments/site-research/components/users.vue
new file mode 100644
index 0000000..d63dbd6
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/site-research/components/users.vue
@@ -0,0 +1,403 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.UserType }}
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+ {{ $t('trials:researchRecord:dialogButton:sendEmail') }}
+
+
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${scope.row.TrialSiteSurvey.TrialSiteCode}` }}
+
+
+
+ {{ `${scope.row.TrialSiteSurvey.SiteName}` }}
+
+
+
+ {{ `${scope.row.LastName} / ${scope.row.FirstName}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsGenerateAccount) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('IsJoin', scope.row.IsJoin) }}
+ {{ $fd('IsJoin', scope.row.IsJoin) }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/attachments/site-research/index.vue b/src/views/trials/trials-panel/attachments/site-research/index.vue
new file mode 100644
index 0000000..93499ad
--- /dev/null
+++ b/src/views/trials/trials-panel/attachments/site-research/index.vue
@@ -0,0 +1,403 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:researchRecord:button:questionStaffs') }}
+
+
+
+ {{ $t('trials:researchRecord:button:questionLink') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.PreliminaryUser?scope.row.PreliminaryUser.RealName:"" }}
+
+
+
+
+
+ {{ scope.row.ReviewerUser?scope.row.ReviewerUser.RealName:"" }}
+
+
+
+
+
+ {{ $fd('ResearchRecord', scope.row.State) }}
+ {{ $fd('ResearchRecord', scope.row.State) }}
+ {{ $fd('ResearchRecord', scope.row.State) }}
+ {{ $fd('ResearchRecord', scope.row.State) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:researchRecord:message:createLinkSuccessfully') }}
+
+
+
+ {{ $t('trials:researchRecord:label:link') }}
+
+
+
+
+
+ {{ $t('trials:researchRecord:button:copyLink') }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/clinical-data/index.vue b/src/views/trials/trials-panel/clinical-data/index.vue
new file mode 100644
index 0000000..ab4c612
--- /dev/null
+++ b/src/views/trials/trials-panel/clinical-data/index.vue
@@ -0,0 +1,467 @@
+
+
+
+
+
+ {{ `${otherInfo.SubjectCode}` }}
+ ({{ `${otherInfo.ReadingNameOrTaskBlindName}` }})
+
+
+
+
{{ item.ClinicalDataSetName }}
+
+
+ {{ file.FileName }}
+
+
+
+
+ {{ from.CheckDate ? from.CheckDate.split(' ')[0] : item.ClinicalDataSetName + (index + 1) }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:table') }}
+
+
+
+
+ {{ $t('trials:clinicaldara:title:nodata') }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastTreatment') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('IsPdEnum', scope.row.IsPD) }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:pastSurgery') }}
+
+
+
+
+
+
+
+ {{ scope.row.OperationTime?moment(scope.row.OperationTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:others') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+ {{ type === 'unconfirm' ? '审批通过' : $t('common:button:confirm') }}
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
{{ $t('trials:readingPeriod:verify:title:result') }}
+
+
+
+
+
+ {{ $fd('YesOrNo', true) }}
+ N/A
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', true) }}
+ N/A
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/components/SignForm.vue b/src/views/trials/trials-panel/components/SignForm.vue
new file mode 100644
index 0000000..bcd2e5a
--- /dev/null
+++ b/src/views/trials/trials-panel/components/SignForm.vue
@@ -0,0 +1,129 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/components/UploadAcksow.vue b/src/views/trials/trials-panel/enrolled-reviewers/components/UploadAcksow.vue
new file mode 100644
index 0000000..2e640e8
--- /dev/null
+++ b/src/views/trials/trials-panel/enrolled-reviewers/components/UploadAcksow.vue
@@ -0,0 +1,138 @@
+
+
+
+ Upload
+ (must be in pdf format)
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/enroll/index.vue b/src/views/trials/trials-panel/enrolled-reviewers/enroll/index.vue
new file mode 100644
index 0000000..e69de29
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/index.vue b/src/views/trials/trials-panel/enrolled-reviewers/index.vue
new file mode 100644
index 0000000..7e163d9
--- /dev/null
+++ b/src/views/trials/trials-panel/enrolled-reviewers/index.vue
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/list/components/UploadAcksow.vue b/src/views/trials/trials-panel/enrolled-reviewers/list/components/UploadAcksow.vue
new file mode 100644
index 0000000..cac18df
--- /dev/null
+++ b/src/views/trials/trials-panel/enrolled-reviewers/list/components/UploadAcksow.vue
@@ -0,0 +1,136 @@
+
+
+
+ {{ $t('trials:enrolledReviews:button:upload') }}
+ {{ `(${$t('trials:enrolledReviews:label:mustBepdf')})` }}
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/list/index.vue b/src/views/trials/trials-panel/enrolled-reviewers/list/index.vue
new file mode 100644
index 0000000..cd4f7bf
--- /dev/null
+++ b/src/views/trials/trials-panel/enrolled-reviewers/list/index.vue
@@ -0,0 +1,822 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName }} / {{ scope.row.FirstName }}
+
+
+
+
+
+
+
+
+
+
+ {{ `${scope.row.EnrollTime}` }}
+
+
+
+
+
+
+ {return isEnableChange(scope.row, v)}"
+ />
+ {{$fd('IsEnable', scope.row.IsEnable)}}
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', item) + ' & ' + $fd('ReadingCategory', 2) }}
+
+ {{ $fd('ReadingCategory', item) }}
+ {{ $fd('ReadingCategory', item) }}
+
+
+ {{ $t('trials:enrolledReviews:button:config') }}
+
+
+
+
+
+
+ {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).StatementCriterionFileList[0].FilePath)">View
+
+
+ {{ $t('trials:enrolledReviews:label:notUpload') }}
+
+
+ {{ $t('trials:enrolledReviews:button:upload') }}
+
+
+
+
+
+
+
+ {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).AcknowledgementCriterionFileList[0].FilePath)">View
+
+
+ {{ $t('trials:enrolledReviews:label:notUpload') }}
+
+
+ {{ $t('trials:enrolledReviews:button:upload') }}
+
+
+
+
+
+
+
+ {{ scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).PendingCount }}
+ /
+ {{ scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).ComplectedCount }}
+ /
+ {{ scope.row.CriterionCategoryList.find(v => {return v.TrialReadingCriterionId === ite.TrialReadingCriterionId}).TotalCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 点击上传
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/resume/index.vue b/src/views/trials/trials-panel/enrolled-reviewers/resume/index.vue
new file mode 100644
index 0000000..de47099
--- /dev/null
+++ b/src/views/trials/trials-panel/enrolled-reviewers/resume/index.vue
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/stats/components/AddWorkload.vue b/src/views/trials/trials-panel/enrolled-reviewers/stats/components/AddWorkload.vue
new file mode 100644
index 0000000..5b47add
--- /dev/null
+++ b/src/views/trials/trials-panel/enrolled-reviewers/stats/components/AddWorkload.vue
@@ -0,0 +1,441 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:training')} ${info.clientData.Training}` }}
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:refresherTraining')} ${info.clientData.RefresherTraining}` }}
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:tp')} ${info.clientData.Timepoint}` }}
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:ad')} ${info.clientData.Adjudication}` }}
+
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:tp24H')} ${info.clientData.TimepointIn24H}` }}
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:ad24H')} ${info.clientData.AdjudicationIn24H}` }}
+
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:tp48H')} ${info.clientData.TimepointIn48H}` }}
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:ad48H')} ${info.clientData.AdjudicationIn48H}` }}
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:global')} ${info.clientData.Global}` }}
+
+
+
+
+
+
+
+ {{ `${$t('trials:stats:message:downtime')} ${info.clientData.Downtime}` }}
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/enrolled-reviewers/stats/index.vue b/src/views/trials/trials-panel/enrolled-reviewers/stats/index.vue
new file mode 100644
index 0000000..1cf8a2e
--- /dev/null
+++ b/src/views/trials/trials-panel/enrolled-reviewers/stats/index.vue
@@ -0,0 +1,457 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.WorkTimeStr }}
+
+
+
+
+ {{ scope.row.DataFrom===0?'Reviewer':scope.row.DataFrom===1?'Client':'Reconciled' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/index.vue b/src/views/trials/trials-panel/index.vue
new file mode 100644
index 0000000..5b75e3e
--- /dev/null
+++ b/src/views/trials/trials-panel/index.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/.DS_Store b/src/views/trials/trials-panel/reading/.DS_Store
new file mode 100644
index 0000000..d279394
Binary files /dev/null and b/src/views/trials/trials-panel/reading/.DS_Store differ
diff --git a/src/views/trials/trials-panel/reading/ad-review/index.vue b/src/views/trials/trials-panel/reading/ad-review/index.vue
new file mode 100644
index 0000000..6864e83
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/ad-review/index.vue
@@ -0,0 +1,730 @@
+
+
+
+
+
+ {{ $t('trials:adReview:title:subject') }}
+ {{ subjectCode }}
+ ({{ taskBlindName }})
+
+
+
+
+
+
+
{{ $t('trials:adReview:title:result') }}
+
+
+ {{ $t('trials:adReview:title:clinicalData') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].DictionaryCode, parseInt(scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer )) }}
+ {{ scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer }}
+
+
+
+ {{ $fd('YesOrNo', scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer ) }}
+
+
+ {{ $t('trials:adReview:table:view') }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer ) }}
+
+
+ {{ scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+ R1
+
+
+
+ R2
+
+
+
+
+
+
+
+
+
+ R1
+
+
+
+ R2
+
+
+
+
+
+
+
+
+ {{ $t('trials:adReview:title:adResult') }}
+
+
+
+
+
+
+ {{ $fd('ArmEnum', t.ArmEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:adReview:title:loading') }}...
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:adReview:title:previousRes') }}
+
+
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.JudgeResultArm) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/clinical-data/index.vue b/src/views/trials/trials-panel/reading/clinical-data/index.vue
new file mode 100644
index 0000000..69e2375
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/clinical-data/index.vue
@@ -0,0 +1,351 @@
+
+
+
+
+ {{ `${otherInfo.SubjectCode}` }}
+ ({{ `${otherInfo.ReadingNameOrTaskBlindName}` }})
+
+
+
+
{{ item.ClinicalDataSetName }}
+
+
+ {{ file.FileName }}
+
+
+
+
+ {{ from.CheckDate ? from.CheckDate.split(' ')[0] : '自定义临床数据' }}
+
+
+
+ {{ $t('trials:uploadClinicalData:title:table') }}
+
+
+
+
+ {{ $t('trials:clinicaldara:title:nodata') }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastTreatment') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('IsPdEnum', scope.row.IsPD) }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:pastSurgery') }}
+
+
+
+
+
+
+
+ {{ scope.row.OperationTime?moment(scope.row.OperationTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:others') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/consistency-analysis/components/DoctorConsistentRuleSubjectTable.vue b/src/views/trials/trials-panel/reading/consistency-analysis/components/DoctorConsistentRuleSubjectTable.vue
new file mode 100644
index 0000000..1442dbf
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/consistency-analysis/components/DoctorConsistentRuleSubjectTable.vue
@@ -0,0 +1,172 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsReReadingOrBackInfluenceAnalysis) }}
+ {{ $fd('YesOrNo', scope.row.IsReReadingOrBackInfluenceAnalysis) }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/consistency-analysis/components/GroupConsistentRuleSubjectTable.vue b/src/views/trials/trials-panel/reading/consistency-analysis/components/GroupConsistentRuleSubjectTable.vue
new file mode 100644
index 0000000..ba3b039
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/consistency-analysis/components/GroupConsistentRuleSubjectTable.vue
@@ -0,0 +1,182 @@
+/* eslint-disable */
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/consistency-analysis/components/ReaderRulesForm.vue b/src/views/trials/trials-panel/reading/consistency-analysis/components/ReaderRulesForm.vue
new file mode 100644
index 0000000..f53c98a
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/consistency-analysis/components/ReaderRulesForm.vue
@@ -0,0 +1,171 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/consistency-analysis/index.vue b/src/views/trials/trials-panel/reading/consistency-analysis/index.vue
new file mode 100644
index 0000000..6dbb33c
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/consistency-analysis/index.vue
@@ -0,0 +1,962 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{$t('trials:consistencyAnalysis:button:exportSelf')}}
+
+
+
+ {{$t('trials:consistencyAnalysis:button:exportGroup')}}
+
+
+
+ {{$t('trials:consistencyAnalysis:button:self')}}
+
+
+
+ {{$t('trials:consistencyAnalysis:button:group')}}
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+ {{scope.row.SubjectCode}}
+
+
+ {{$t('trials:consistencyAnalysis:table:impact')}}
+
+
+
+
+
+
+ {{scope.row.TaskName}}
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('IsSelfAnalysis', scope.row.IsSelfAnalysis) }}
+ {{ $fd('IsSelfAnalysis', scope.row.IsSelfAnalysis) }}
+
+
+
+
+
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+
+
+
+
+
+ {{scope.row.UserName}}({{scope.row.FullName}})
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+
+
+
+
+
+ {{ $fd('ReReadingApplyState', scope.row.ReReadingApplyState) }}
+ {{ $fd('ReReadingApplyState', scope.row.ReReadingApplyState) }}
+ {{ $fd('ReReadingApplyState', scope.row.ReReadingApplyState) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsReReadingOrBackInfluenceAnalysis) }}
+ {{ $fd('YesOrNo', scope.row.IsReReadingOrBackInfluenceAnalysis) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:selftConsistencyAnalysis:button:config')}}
+
+
+
+
+
+
+ {{scope.row.AnalysisDoctorUser.UserName}}({{scope.row.AnalysisDoctorUser.FullName}})
+
+
+
+
+
+
+
+
+
+
+
+ {{$fd('YesOrNo', scope.row.IsHaveReadingPeriod)}}
+ {{$fd('YesOrNo', scope.row.IsHaveReadingPeriod)}}
+
+
+
+
+
+ {{$fd('YesOrNo', scope.row.IsGenerateGlobalTask)}}
+ {{$fd('YesOrNo', scope.row.IsGenerateGlobalTask)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:grouptConsistencyAnalysis:button:config')}}
+
+ {ReaderRulesVisible2 = false; ; rowData = {}}" @getList="getList()" />
+
+
+
+
+ {ReaderRulesFormVisible = false; rowData = {}}" @getList="openTaskConsistentRule(IsSelfAnalysis)" />
+
+
+
+ {DoctorConsistentRuleSubjectTableVisible = false; ; rowData = {}}" @getList="openTaskConsistentRule(IsSelfAnalysis)" />
+
+
+
+
+
+
+
+
+
+ {{$t('trials:consistencyAnalysis:applyReread:imageReload')}}
+
+ {{$t('trials:consistencyAnalysis:applyReread:other')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/AdditionalAssessment.vue b/src/views/trials/trials-panel/reading/dicoms/components/AdditionalAssessment.vue
new file mode 100644
index 0000000..4110c17
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/AdditionalAssessment.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/AssessmentFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/AssessmentFormItem.vue
new file mode 100644
index 0000000..e76c663
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/AssessmentFormItem.vue
@@ -0,0 +1,145 @@
+
+
+
+
+ {{ language==='en'?question.GroupEnName:question.GroupName }}
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+ {{ item.label }}
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/CustomWwwcForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/CustomWwwcForm.vue
new file mode 100644
index 0000000..b7a815f
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/CustomWwwcForm.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue
new file mode 100644
index 0000000..26b51fb
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomCanvas.vue
@@ -0,0 +1,2093 @@
+
+
+
+
+
+
+
+
+ {{ stack.taskBlindName }}
+
+
+
+
+
+
+
{{ subjectCode }} {{ stack.taskBlindName }}
+
Series: #{{ dicomInfo.series }}
+
Image: #{{ dicomInfo.frame }}
+
{{ dicomInfo.modality }}
+
+
+
+ Pos: {{ mousePosition.x?mousePosition.x.toFixed(0):'' }}, {{ mousePosition.y?mousePosition.y.toFixed(0):'' }}
+
+
+ HU: {{ mousePosition.mo }}
+
+
+ SUVbw(g/ml): {{ digitPlaces === -1 ?mousePosition.suv.toFixed(3) :mousePosition.suv.toFixed(digitPlaces) }}
+
+
+ Density: {{ mousePosition.mo }}
+
+
+ W*H: {{ dicomInfo.size }}
+
+
+
+
Zoom: {{ dicomInfo.zoom }}
+
+
+
+
+
+
{{ stack.description }}
+
+
+
+
+
+
+
+
+
+ {{ markers.top }}
+
+
+ {{ markers.right }}
+
+
+
+ {{ markers.bottom }}
+
+
+ {{ markers.left }}
+
+
+
+
Location: {{ dicomInfo.location }}
+
Slice Thickness: {{ dicomInfo.thick }}mm
+
WW/WL: {{ dicomInfo.wwwc }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomEvent.js b/src/views/trials/trials-panel/reading/dicoms/components/DicomEvent.js
new file mode 100644
index 0000000..c83e261
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomEvent.js
@@ -0,0 +1,3 @@
+import Vue from 'vue'
+const DicomEvent = new Vue()
+export default DicomEvent
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomPreview.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomPreview.vue
new file mode 100644
index 0000000..62d67a8
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomPreview.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue
new file mode 100644
index 0000000..5f172c3
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/DicomViewer.vue
@@ -0,0 +1,2077 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/FusionEvent.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/FusionEvent.js
new file mode 100644
index 0000000..e376903
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/FusionEvent.js
@@ -0,0 +1,3 @@
+import Vue from 'vue'
+const FusionEvent = new Vue()
+export default FusionEvent
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt.vue
new file mode 100644
index 0000000..6cd3660
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/PetCt.vue
@@ -0,0 +1,1558 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/QuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/QuestionItem.vue
new file mode 100644
index 0000000..615261d
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/QuestionItem.vue
@@ -0,0 +1,390 @@
+
+
+
+
+ {{ language==='en'?question.GroupEnName:question.GroupName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('ValueUnit', parseInt(question.Unit)) }}
+
+
+
+ 测量
+ 清除标记
+ 定位
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+ {{ item.label }}
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Questions.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Questions.vue
new file mode 100644
index 0000000..7571368
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Questions.vue
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue
new file mode 100644
index 0000000..6ca0566
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestionItem.vue
@@ -0,0 +1,892 @@
+
+
+
+
+
+
+ {{ lesionName }}
+
+
+
+
+
+
+
+
+
+ {lesionTypeChange(val)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+ {formItemChange(val, qs)})"
+ />
+
+
+ {formItemChange(val, qs)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestions.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestions.vue
new file mode 100644
index 0000000..820587c
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/TableQuestions.vue
@@ -0,0 +1,932 @@
+
+
+
+
+
+
+
+
+ {{ language==='en'?qs.GroupEnName:qs.GroupName }}
+
+
+
+
+
+
{{ item.QuestionName }}
+
+
+
+
+
+
+
+
+
+
+ {{ getLesionName(item.OrderMark,q.RowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionPart }}
+
+
+
+
+ {{ $fd('TargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NoTargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionShort }}mm
+
+
+ {{ item.TableQuestions.Answers[i].lesionLength }}mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Viewport.vue b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Viewport.vue
new file mode 100644
index 0000000..0a2ebe1
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/Viewport.vue
@@ -0,0 +1,450 @@
+
+
+
+
+
+
+ {{ subjectCode }} {{ seriesInfo.taskBlindName }}
+
+
+ Series: #{{ seriesInfo.seriesNumber }}
+
+
Image: #{{ `${seriesInfo.imageIdIndex + 1} / ${seriesInfo.imageIds.length}` }}
+
{{ seriesInfo.modality }}
+
+
+
+
{{ seriesInfo.description }}
+
+
+
+
+
+ Pos: {{ mousePosition.index[0] }}, {{ mousePosition.index[1] }}, {{ mousePosition.index[2] }}
+
+
+ HU: {{ mousePosition.value }}
+
+
+ SUVbw(g/ml): {{ digitPlaces === -1 ?mousePosition.value.toFixed(3) :mousePosition.value.toFixed(digitPlaces) }}
+
+
+ Density: {{ mousePosition.value }}
+
+
+ W*H: {{ imageInfo.size }}
+
+
+
Zoom: {{ imageInfo.zoom }}
+
+
+
Location: {{ imageInfo.location }}
+
Slice Thickness: {{ Number(seriesInfo.sliceThickness).toFixed(2) }}mm
+
WW/WL: {{ imageInfo.wwwc }}
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/convertMultiframeImageIds.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/convertMultiframeImageIds.js
new file mode 100644
index 0000000..f9fb121
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/convertMultiframeImageIds.js
@@ -0,0 +1,65 @@
+import { metaData } from '@cornerstonejs/core'
+import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader'
+/**
+ * preloads imageIds metadata in memory
+ **/
+async function prefetchMetadataInformation(imageIdsToPrefetch) {
+ for (let i = 0; i < imageIdsToPrefetch.length; i++) {
+ await cornerstoneDICOMImageLoader.wadouri.loadImage(imageIdsToPrefetch[i])
+ .promise
+ }
+}
+
+function getFrameInformation(imageId) {
+ if (imageId.includes('wadors:')) {
+ const frameIndex = imageId.indexOf('/frames/')
+ const imageIdFrameless =
+ frameIndex > 0 ? imageId.slice(0, frameIndex + 8) : imageId
+ return {
+ frameIndex,
+ imageIdFrameless
+ }
+ } else {
+ const frameIndex = imageId.indexOf('&frame=')
+ let imageIdFrameless =
+ frameIndex > 0 ? imageId.slice(0, frameIndex + 7) : imageId
+ if (!imageIdFrameless.includes('&frame=')) {
+ imageIdFrameless = imageIdFrameless + '&frame='
+ }
+ return {
+ frameIndex,
+ imageIdFrameless
+ }
+ }
+}
+/**
+ * Receives a list of imageids possibly referring to multiframe dicom images
+ * and returns a list of imageid where each imageid referes to one frame.
+ * For each imageId representing a multiframe image with n frames,
+ * it will create n new imageids, one for each frame, and returns the new list of imageids
+ * If a particular imageid no refer to a mutiframe image data, it will be just copied into the new list
+ * @returns new list of imageids where each imageid represents a frame
+ */
+function convertMultiframeImageIds(imageIds) {
+ const newImageIds = []
+ imageIds.forEach((imageId) => {
+ const { imageIdFrameless } = getFrameInformation(imageId)
+ const instanceMetaData = metaData.get('multiframeModule', imageId)
+ if (
+ instanceMetaData &&
+ instanceMetaData.NumberOfFrames &&
+ instanceMetaData.NumberOfFrames > 1
+ ) {
+ const NumberOfFrames = instanceMetaData.NumberOfFrames
+ for (let i = 0; i < NumberOfFrames; i++) {
+ const newImageId = imageIdFrameless + (i + 1)
+ newImageIds.push(newImageId)
+ }
+ } else {
+ newImageIds.push(imageId)
+ }
+ })
+ return newImageIds
+}
+
+export { convertMultiframeImageIds, prefetchMetadataInformation }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/createImageIdsAndCacheMetaData.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/createImageIdsAndCacheMetaData.js
new file mode 100644
index 0000000..bf8213b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/createImageIdsAndCacheMetaData.js
@@ -0,0 +1,110 @@
+/* eslint-disable no-unused-vars */
+import dcmjs from 'dcmjs'
+import { calculateSUVScalingFactors } from '@cornerstonejs/calculate-suv'
+import { getPTImageIdInstanceMetadata } from './getPTImageIdInstanceMetadata'
+import { utilities } from '@cornerstonejs/core'
+import { wadouri } from '@cornerstonejs/dicom-image-loader'
+import ptScalingMetaDataProvider from './ptScalingMetaDataProvider'
+import getPixelSpacingInformation from './getPixelSpacingInformation'
+import { convertMultiframeImageIds, prefetchMetadataInformation } from './convertMultiframeImageIds'
+import removeInvalidTags from './removeInvalidTags'
+const { calibratedPixelSpacingMetadataProvider } = utilities
+function parseImageId(imageId) {
+ // build a url by parsing out the url scheme and frame index from the imageId
+ const firstColonIndex = imageId.indexOf(':')
+
+ let url = imageId.substring(firstColonIndex + 1)
+ const frameIndex = url.indexOf('frame=')
+
+ let frame
+
+ if (frameIndex !== -1) {
+ const frameStr = url.substr(frameIndex + 6)
+
+ frame = parseInt(frameStr, 10)
+ url = url.substr(0, frameIndex - 1)
+ }
+
+ return {
+ scheme: imageId.substr(0, firstColonIndex),
+ url,
+ frame
+ }
+}
+async function createImageIdsAndCacheMetaData({
+ modality,
+ imageIds
+}) {
+ await prefetchMetadataInformation(imageIds)
+ imageIds = convertMultiframeImageIds(imageIds)
+ imageIds.forEach((imageId) => {
+ const parseImage = parseImageId(imageId)
+ const imageData =
+ wadouri.dataSetCacheManager.get(parseImage.url)
+ const arrayBuffer = imageData.byteArray.buffer
+ var dicomData = dcmjs.data.DicomMessage.readFile(arrayBuffer)
+ var dataset = dcmjs.data.DicomMetaDictionary.naturalizeDataset(
+ dicomData.dict
+ )
+ dataset._meta = dcmjs.data.DicomMetaDictionary.namifyDataset(
+ dicomData.meta
+ )
+ var instanceMetaData = dataset
+ instanceMetaData = removeInvalidTags(instanceMetaData)
+ if (instanceMetaData) {
+ const pixelSpacing = getPixelSpacingInformation(instanceMetaData)
+ if (pixelSpacing) {
+ calibratedPixelSpacingMetadataProvider.add(
+ imageId,
+ // pixelSpacing.map((s) => parseFloat(s))
+ { rowPixelSpacing: parseFloat(pixelSpacing[0]),
+ columnPixelSpacing: parseFloat(pixelSpacing[1])
+ }
+ )
+ }
+ }
+ })
+ if (modality === 'PT') {
+ const InstanceMetadataArray = []
+ imageIds.forEach((imageId) => {
+ // var parseImage = parseImageId(imageId)
+ // imageId,
+ const instanceMetadata = getPTImageIdInstanceMetadata(imageId)
+ if (typeof instanceMetadata.CorrectedImage === 'string') {
+ instanceMetadata.CorrectedImage =
+ instanceMetadata.CorrectedImage.split('\\')
+ }
+
+ if (instanceMetadata) {
+ InstanceMetadataArray.push(instanceMetadata)
+ }
+ })
+ if (InstanceMetadataArray.length) {
+ // const suvScalingFactors = calculateSUVScalingFactors(
+ // InstanceMetadataArray
+ // )
+ // InstanceMetadataArray.forEach((instanceMetadata, index) => {
+ // ptScalingMetaDataProvider.addInstance(
+ // imageIds[index],
+ // suvScalingFactors[index]
+ // )
+ // })
+ try {
+ const suvScalingFactors = calculateSUVScalingFactors(
+ InstanceMetadataArray
+ )
+ InstanceMetadataArray.forEach((instanceMetadata, index) => {
+ ptScalingMetaDataProvider.addInstance(
+ imageIds[index],
+ suvScalingFactors[index]
+ )
+ })
+ } catch (error) {
+ console.log(error)
+ }
+ }
+ }
+ return imageIds
+}
+
+export { createImageIdsAndCacheMetaData }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/destory.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/destory.js
new file mode 100644
index 0000000..925a72a
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/destory.js
@@ -0,0 +1,16 @@
+
+// afterEach(function () {
+// csTools3d.destroy();
+// cache.purgeCache();
+// eventTarget.reset();
+// this.renderingEngine.destroy();
+// metaData.removeProvider(fakeMetaDataProvider);
+// imageLoader.unregisterAllImageLoaders();
+// ToolGroupManager.destroyToolGroup('stack');
+
+// this.DOMElements.forEach((el) => {
+// if (el.parentNode) {
+// el.parentNode.removeChild(el);
+// }
+// });
+// });
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getCalibratedUnits.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getCalibratedUnits.js
new file mode 100644
index 0000000..a21103d
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getCalibratedUnits.js
@@ -0,0 +1,90 @@
+import { Enums } from '@cornerstonejs/core'
+
+const { CalibrationTypes } = Enums
+const PIXEL_UNITS = 'px'
+
+/**
+ * Extracts the length units and the type of calibration for those units
+ * into the response. The length units will typically be either mm or px
+ * while the calibration type can be any of a number of different calibraiton types.
+ *
+ * Volumetric images have no calibration type, so are just the raw mm.
+ *
+ * TODO: Handle region calibration
+ *
+ * @param handles - used to detect if the spacing information is different
+ * between various points (eg angled ERMF or US Region).
+ * Currently unused, but needed for correct US Region handling
+ * @param image - to extract the calibration from
+ * image.calibration - calibration value to extract units form
+ * @returns String containing the units and type of calibration
+ */
+const getCalibratedLengthUnits = (handles, image) => {
+ const { calibration, hasPixelSpacing } = image
+ // Anachronistic - moving to using calibration consistently, but not completed yet
+ const units = hasPixelSpacing ? 'mm' : PIXEL_UNITS
+ if (!calibration || !calibration.type) {
+ return units
+ }
+ if (calibration.type === CalibrationTypes.UNCALIBRATED) {
+ return PIXEL_UNITS
+ }
+ // TODO - handle US regions properly
+ if (calibration.SequenceOfUltrasoundRegions) {
+ return 'US Region'
+ }
+ return `${units} ${calibration.type}`
+}
+
+const SQUARE = '\xb2'
+/**
+ * Extracts the area units, including the squared sign plus calibration type.
+ */
+const getCalibratedAreaUnits = (handles, image) => {
+ const { calibration, hasPixelSpacing } = image
+ const units = (hasPixelSpacing ? 'mm' : PIXEL_UNITS) + SQUARE
+ if (!calibration || !calibration.type) {
+ return units
+ }
+ if (calibration.SequenceOfUltrasoundRegions) {
+ return 'US Region'
+ }
+ return `${units} ${calibration.type}`
+}
+
+/**
+ * Gets the scale divisor for converting from internal spacing to
+ * image spacing for calibrated images.
+ */
+
+const getCalibratedScale = (image) => {
+ let scale = null
+ if (image.calibration && image.calibration.scale) {
+ scale = image.calibration.scale
+ }
+ return scale || 1
+}
+
+/** Gets the aspect ratio of the screen display relative to the image
+ * display in order to square up measurement values.
+ * That is, suppose the spacing on the image is 1, 0.5 (x,y spacing)
+ * This is displayed at 1, 1 spacing on screen, then the
+ * aspect value will be 1/0.5 = 2
+ */
+
+const getCalibratedAspect = (image) => {
+ let aspect = null
+ if (image.calibration && image.calibration.aspect) {
+ aspect = image.calibration.aspect
+ }
+ return aspect || 1
+}
+
+export default getCalibratedLengthUnits
+
+export {
+ getCalibratedAreaUnits,
+ getCalibratedLengthUnits,
+ getCalibratedScale,
+ getCalibratedAspect
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getModalityUnit.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getModalityUnit.js
new file mode 100644
index 0000000..000d210
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getModalityUnit.js
@@ -0,0 +1,35 @@
+import { metaData } from '@cornerstonejs/core'
+
+function getModalityUnit(
+ modality,
+ imageId,
+ options
+) {
+ if (modality === 'CT') {
+ return 'HU'
+ } else if (modality === 'PT') {
+ return _handlePTModality(imageId, options)
+ } else {
+ return ''
+ }
+}
+
+function _handlePTModality(imageId, options) {
+ console.log(imageId, options)
+ if (!options.isPreScaled) {
+ return 'raw'
+ }
+
+ if (options.isSuvScaled) {
+ return 'SUV'
+ }
+
+ const petSeriesModule = metaData.get('petSeriesModule', imageId)
+ let units = null
+ if (petSeriesModule && petSeriesModule.units) {
+ units = petSeriesModule.units
+ }
+ return units || 'unitless'
+}
+
+export { getModalityUnit }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getPTImageIdInstanceMetadata.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getPTImageIdInstanceMetadata.js
new file mode 100644
index 0000000..07ce115
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getPTImageIdInstanceMetadata.js
@@ -0,0 +1,233 @@
+import { metaData } from '@cornerstonejs/core'
+// import { InstanceMetadata } from '@cornerstonejs/calculate-suv'
+import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader'
+function parseImageId(imageId) {
+ // build a url by parsing out the url scheme and frame index from the imageId
+ const firstColonIndex = imageId.indexOf(':')
+
+ let url = imageId.substring(firstColonIndex + 1)
+ const frameIndex = url.indexOf('frame=')
+
+ let frame
+
+ if (frameIndex !== -1) {
+ const frameStr = url.substr(frameIndex + 6)
+
+ frame = parseInt(frameStr, 10)
+ url = url.substr(0, frameIndex - 1)
+ }
+
+ return {
+ scheme: imageId.substr(0, firstColonIndex),
+ url,
+ frame
+ }
+}
+function getMetaData(type, imageId) {
+ // const { dicomParser } = cornerstoneDICOMImageLoader.external
+ const parsedImageId = parseImageId(imageId)
+ const url = parsedImageId.url
+ const dataSet = cornerstoneDICOMImageLoader.wadouri.dataSetCacheManager.get(url)
+
+ if (!dataSet) {
+ return
+ }
+ if (type === 'petImageModule') {
+ // 1340137.4196974 240000
+ // console.log(dataSet.string('x00541300'), dataSet.string('x00181242'))
+ return {
+ frameReferenceTime: dataSet.string('x00541300') || '',
+ actualFrameDuration: dataSet.string('x00181242')
+ }
+ }
+}
+export default function getPTImageIdInstanceMetadata(imageId) {
+ const petSequenceModule = metaData.get('petIsotopeModule', imageId)
+
+ const generalSeriesModule = metaData.get('generalSeriesModule', imageId)
+ const patientStudyModule = metaData.get('patientStudyModule', imageId)
+
+ const ptSeriesModule = metaData.get('petSeriesModule', imageId)
+ // const ptImageModule = metaData.get('petImageModule', imageId)
+
+ const ptImageModule = getMetaData('petImageModule', imageId)
+ if (!petSequenceModule) {
+ throw new Error('petSequenceModule metadata is required')
+ }
+
+ const radiopharmaceuticalInfo = petSequenceModule.radiopharmaceuticalInfo
+
+ const { seriesDate, seriesTime, acquisitionDate, acquisitionTime } =
+ generalSeriesModule
+ const { patientWeight } = patientStudyModule
+ const { correctedImage, units, decayCorrection } = ptSeriesModule
+
+ if (
+ seriesDate === undefined ||
+ seriesTime === undefined ||
+ patientWeight === undefined ||
+ acquisitionDate === undefined ||
+ acquisitionTime === undefined ||
+ correctedImage === undefined ||
+ units === undefined ||
+ decayCorrection === undefined ||
+ radiopharmaceuticalInfo.radionuclideTotalDose === undefined ||
+ radiopharmaceuticalInfo.radionuclideHalfLife === undefined ||
+ (radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime === undefined &&
+ seriesDate === undefined &&
+ radiopharmaceuticalInfo.radiopharmaceuticalStartTime === undefined)
+ //
+ ) {
+ throw new Error('required metadata are missing')
+ }
+
+ const instanceMetadata = {
+ CorrectedImage: correctedImage,
+ Units: units,
+ RadionuclideHalfLife: radiopharmaceuticalInfo.radionuclideHalfLife,
+ RadionuclideTotalDose: radiopharmaceuticalInfo.radionuclideTotalDose,
+ DecayCorrection: decayCorrection,
+ PatientWeight: patientWeight,
+ SeriesDate: seriesDate,
+ SeriesTime: seriesTime,
+ AcquisitionDate: acquisitionDate,
+ AcquisitionTime: acquisitionTime
+ }
+
+ if (
+ radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime &&
+ radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime !== undefined &&
+ typeof radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime === 'string'
+ ) {
+ instanceMetadata.RadiopharmaceuticalStartDateTime =
+ radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime
+ }
+
+ if (
+ radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime &&
+ radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime !== undefined &&
+ typeof radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime !== 'string'
+ ) {
+ const dateString = convertInterfaceDateToString(
+ radiopharmaceuticalInfo.radiopharmaceuticalStartDateTime
+ )
+ instanceMetadata.RadiopharmaceuticalStartDateTime = dateString
+ }
+
+ if (
+ instanceMetadata.AcquisitionDate &&
+ instanceMetadata.AcquisitionDate !== undefined &&
+ typeof instanceMetadata.AcquisitionDate !== 'string'
+ ) {
+ const dateString = convertInterfaceDateToString(
+ instanceMetadata.AcquisitionDate
+ )
+ instanceMetadata.AcquisitionDate = dateString
+ }
+
+ if (
+ instanceMetadata.SeriesDate &&
+ instanceMetadata.SeriesDate !== undefined &&
+ typeof instanceMetadata.SeriesDate !== 'string'
+ ) {
+ const dateString = convertInterfaceDateToString(
+ instanceMetadata.SeriesDate
+ )
+ instanceMetadata.SeriesDate = dateString
+ }
+
+ if (
+ radiopharmaceuticalInfo.radiopharmaceuticalStartTime &&
+ radiopharmaceuticalInfo.radiopharmaceuticalStartTime !== undefined &&
+ typeof radiopharmaceuticalInfo.radiopharmaceuticalStartTime === 'string'
+ ) {
+ instanceMetadata.RadiopharmaceuticalStartTime =
+ radiopharmaceuticalInfo.radiopharmaceuticalStartTime
+ }
+
+ if (
+ radiopharmaceuticalInfo.radiopharmaceuticalStartTime &&
+ radiopharmaceuticalInfo.radiopharmaceuticalStartTime !== undefined &&
+ typeof radiopharmaceuticalInfo.radiopharmaceuticalStartTime !== 'string'
+ ) {
+ const timeString = convertInterfaceTimeToString(
+ radiopharmaceuticalInfo.radiopharmaceuticalStartTime
+ )
+ instanceMetadata.RadiopharmaceuticalStartTime = timeString
+ }
+
+ if (
+ instanceMetadata.AcquisitionTime &&
+ instanceMetadata.AcquisitionTime !== undefined &&
+ typeof instanceMetadata.AcquisitionTime !== 'string'
+ ) {
+ const timeString = convertInterfaceTimeToString(
+ instanceMetadata.AcquisitionTime
+ )
+ instanceMetadata.AcquisitionTime = timeString
+ }
+
+ if (
+ instanceMetadata.SeriesTime &&
+ instanceMetadata.SeriesTime !== undefined &&
+ typeof instanceMetadata.SeriesTime !== 'string'
+ ) {
+ const timeString = convertInterfaceTimeToString(
+ instanceMetadata.SeriesTime
+ )
+ instanceMetadata.SeriesTime = timeString
+ }
+
+ if (
+ ptImageModule.frameReferenceTime &&
+ ptImageModule.frameReferenceTime !== undefined
+ ) {
+ instanceMetadata.FrameReferenceTime = ptImageModule.frameReferenceTime
+ }
+
+ if (
+ ptImageModule.actualFrameDuration &&
+ ptImageModule.actualFrameDuration !== undefined
+ ) {
+ instanceMetadata.ActualFrameDuration = ptImageModule.actualFrameDuration
+ }
+
+ if (
+ patientStudyModule.patientSex &&
+ patientStudyModule.patientSex !== undefined
+ ) {
+ instanceMetadata.PatientSex = patientStudyModule.patientSex
+ }
+
+ if (
+ patientStudyModule.patientSize &&
+ patientStudyModule.patientSize !== undefined
+ ) {
+ instanceMetadata.PatientSize = patientStudyModule.patientSize
+ }
+
+ return instanceMetadata
+}
+
+function convertInterfaceTimeToString(time) {
+ const hours = `${time.hours || '00'}`.padStart(2, '0')
+ const minutes = `${time.minutes || '00'}`.padStart(2, '0')
+ const seconds = `${time.seconds || '00'}`.padStart(2, '0')
+
+ const fractionalSeconds = `${time.fractionalSeconds || '000000'}`.padEnd(
+ 6,
+ '0'
+ )
+
+ const timeString = `${hours}${minutes}${seconds}.${fractionalSeconds}`
+ return timeString
+}
+
+function convertInterfaceDateToString(date) {
+ const month = `${date.month}`.padStart(2, '0')
+ const day = `${date.day}`.padStart(2, '0')
+ const dateString = `${date.year}${month}${day}`
+ return dateString
+}
+
+export { getPTImageIdInstanceMetadata }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getPixelSpacingInformation.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getPixelSpacingInformation.js
new file mode 100644
index 0000000..8e37646
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/getPixelSpacingInformation.js
@@ -0,0 +1,136 @@
+// See https://github.com/OHIF/Viewers/blob/94a9067fe3d291d30e25a1bda5913511388edea2/platform/core/src/utils/metadataProvider/getPixelSpacingInformation.js
+
+export default function getPixelSpacingInformation(instance) {
+ // See http://gdcm.sourceforge.net/wiki/index.php/Imager_Pixel_Spacing
+
+ // TODO: Add Ultrasound region spacing
+ // TODO: Add manual calibration
+
+ // TODO: Use ENUMS from dcmjs
+ const projectionRadiographSOPClassUIDs = [
+ '1.2.840.10008.5.1.4.1.1.1', // CR Image Storage
+ '1.2.840.10008.5.1.4.1.1.1.1', // Digital X-Ray Image Storage – for Presentation
+ '1.2.840.10008.5.1.4.1.1.1.1.1', // Digital X-Ray Image Storage – for Processing
+ '1.2.840.10008.5.1.4.1.1.1.2', // Digital Mammography X-Ray Image Storage – for Presentation
+ '1.2.840.10008.5.1.4.1.1.1.2.1', // Digital Mammography X-Ray Image Storage – for Processing
+ '1.2.840.10008.5.1.4.1.1.1.3', // Digital Intra – oral X-Ray Image Storage – for Presentation
+ '1.2.840.10008.5.1.4.1.1.1.3.1', // Digital Intra – oral X-Ray Image Storage – for Processing
+ '1.2.840.10008.5.1.4.1.1.12.1', // X-Ray Angiographic Image Storage
+ '1.2.840.10008.5.1.4.1.1.12.1.1', // Enhanced XA Image Storage
+ '1.2.840.10008.5.1.4.1.1.12.2', // X-Ray Radiofluoroscopic Image Storage
+ '1.2.840.10008.5.1.4.1.1.12.2.1', // Enhanced XRF Image Storage
+ '1.2.840.10008.5.1.4.1.1.12.3' // X-Ray Angiographic Bi-plane Image Storage Retired
+ ]
+
+ const {
+ PixelSpacing,
+ ImagerPixelSpacing,
+ SOPClassUID,
+ PixelSpacingCalibrationType,
+ PixelSpacingCalibrationDescription,
+ EstimatedRadiographicMagnificationFactor,
+ SequenceOfUltrasoundRegions
+ } = instance
+
+ const isProjection = projectionRadiographSOPClassUIDs.includes(SOPClassUID)
+
+ const TYPES = {
+ NOT_APPLICABLE: 'NOT_APPLICABLE',
+ UNKNOWN: 'UNKNOWN',
+ CALIBRATED: 'CALIBRATED',
+ DETECTOR: 'DETECTOR'
+ }
+
+ if (!isProjection) {
+ return PixelSpacing
+ }
+
+ if (isProjection && !ImagerPixelSpacing) {
+ // If only Pixel Spacing is present, and this is a projection radiograph,
+ // PixelSpacing should be used, but the user should be informed that
+ // what it means is unknown
+ return {
+ PixelSpacing,
+ type: TYPES.UNKNOWN,
+ isProjection
+ }
+ } else if (
+ PixelSpacing &&
+ ImagerPixelSpacing &&
+ PixelSpacing === ImagerPixelSpacing
+ ) {
+ // If Imager Pixel Spacing and Pixel Spacing are present and they have the same values,
+ // then the user should be informed that the measurements are at the detector plane
+ return {
+ PixelSpacing,
+ type: TYPES.DETECTOR,
+ isProjection
+ }
+ } else if (
+ PixelSpacing &&
+ ImagerPixelSpacing &&
+ PixelSpacing !== ImagerPixelSpacing
+ ) {
+ // If Imager Pixel Spacing and Pixel Spacing are present and they have different values,
+ // then the user should be informed that these are "calibrated"
+ // (in some unknown manner if Pixel Spacing Calibration Type and/or
+ // Pixel Spacing Calibration Description are absent)
+ return {
+ PixelSpacing,
+ type: TYPES.CALIBRATED,
+ isProjection,
+ PixelSpacingCalibrationType,
+ PixelSpacingCalibrationDescription
+ }
+ } else if (!PixelSpacing && ImagerPixelSpacing) {
+ let CorrectedImagerPixelSpacing = ImagerPixelSpacing
+ if (EstimatedRadiographicMagnificationFactor) {
+ // Note that in IHE Mammo profile compliant displays, the value of Imager Pixel Spacing is required to be corrected by
+ // Estimated Radiographic Magnification Factor and the user informed of that.
+ // TODO: should this correction be done before all of this logic?
+ CorrectedImagerPixelSpacing = ImagerPixelSpacing.map(
+ (pixelSpacing) =>
+ pixelSpacing / EstimatedRadiographicMagnificationFactor
+ )
+ } else {
+ console.warn(
+ 'EstimatedRadiographicMagnificationFactor was not present. Unable to correct ImagerPixelSpacing.'
+ )
+ }
+
+ return {
+ PixelSpacing: CorrectedImagerPixelSpacing,
+ isProjection
+ }
+ } else if (
+ SequenceOfUltrasoundRegions &&
+ typeof SequenceOfUltrasoundRegions === 'object'
+ ) {
+ const { PhysicalDeltaX, PhysicalDeltaY } = SequenceOfUltrasoundRegions
+ const USPixelSpacing = [PhysicalDeltaX * 10, PhysicalDeltaY * 10]
+
+ return {
+ PixelSpacing: USPixelSpacing
+ }
+ } else if (
+ SequenceOfUltrasoundRegions &&
+ Array.isArray(SequenceOfUltrasoundRegions) &&
+ SequenceOfUltrasoundRegions.length > 1
+ ) {
+ console.warn(
+ 'Sequence of Ultrasound Regions > one entry. This is not yet implemented, all measurements will be shown in pixels.'
+ )
+ } else if (isProjection === false && !ImagerPixelSpacing) {
+ // If only Pixel Spacing is present, and this is not a projection radiograph,
+ // we can stop here
+ return {
+ PixelSpacing,
+ type: TYPES.NOT_APPLICABLE,
+ isProjection
+ }
+ }
+
+ console.warn(
+ 'Unknown combination of PixelSpacing and ImagerPixelSpacing identified. Unable to determine spacing.'
+ )
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initCornerstoneDICOMImageLoader.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initCornerstoneDICOMImageLoader.js
new file mode 100644
index 0000000..29ac252
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initCornerstoneDICOMImageLoader.js
@@ -0,0 +1,40 @@
+import dicomParser from 'dicom-parser'
+import * as cornerstone3D from '@cornerstonejs/core'
+import * as cornerstone3DTools from '@cornerstonejs/tools'
+import cornerstoneDICOMImageLoader from '@cornerstonejs/dicom-image-loader'
+
+window.cornerstone3D = cornerstone3D
+window.cornerstone3DTools = cornerstone3DTools
+const { preferSizeOverAccuracy, useNorm16Texture } =
+cornerstone3D.getConfiguration().rendering
+
+export default function initCornerstoneDICOMImageLoader() {
+ cornerstoneDICOMImageLoader.external.cornerstone = cornerstone3D
+ cornerstoneDICOMImageLoader.external.dicomParser = dicomParser
+ cornerstoneDICOMImageLoader.configure({
+ useWebWorkers: false,
+ decodeConfig: {
+ convertFloatPixelDataToInt: false,
+ use16BitDataType: preferSizeOverAccuracy || useNorm16Texture
+ }
+ })
+
+ let maxWebWorkers = 1
+
+ if (navigator.hardwareConcurrency) {
+ maxWebWorkers = Math.min(navigator.hardwareConcurrency, 7)
+ }
+
+ var config = {
+ maxWebWorkers,
+ startWebWorkersOnDemand: false,
+ taskConfiguration: {
+ decodeTask: {
+ initializeCodecsOnStartup: false,
+ strict: false
+ }
+ }
+ }
+
+ cornerstoneDICOMImageLoader.webWorkerManager.initialize(config)
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initLibraries.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initLibraries.js
new file mode 100644
index 0000000..9b39148
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initLibraries.js
@@ -0,0 +1,13 @@
+import initProviders from './initProviders'
+import initCornerstoneDICOMImageLoader from './initCornerstoneDICOMImageLoader'
+import initVolumeLoader from './initVolumeLoader'
+import { init as csRenderInit } from '@cornerstonejs/core'
+import { init as csToolsInit } from '@cornerstonejs/tools'
+
+export default async function initLibraries() {
+ initProviders()
+ initCornerstoneDICOMImageLoader()
+ initVolumeLoader()
+ await csRenderInit()
+ await csToolsInit()
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initProviders.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initProviders.js
new file mode 100644
index 0000000..bd49313
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initProviders.js
@@ -0,0 +1,17 @@
+import * as cornerstone3D from '@cornerstonejs/core'
+import ptScalingMetaDataProvider from './ptScalingMetaDataProvider'
+
+const { calibratedPixelSpacingMetadataProvider } = cornerstone3D.utilities
+
+export default function initProviders() {
+ cornerstone3D.metaData.addProvider(
+ ptScalingMetaDataProvider.get.bind(ptScalingMetaDataProvider),
+ 10000
+ )
+ cornerstone3D.metaData.addProvider(
+ calibratedPixelSpacingMetadataProvider.get.bind(
+ calibratedPixelSpacingMetadataProvider
+ ),
+ 11000
+ )
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initVolumeLoader.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initVolumeLoader.js
new file mode 100644
index 0000000..63d8a5d
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/initVolumeLoader.js
@@ -0,0 +1,19 @@
+import { volumeLoader } from '@cornerstonejs/core'
+import {
+ cornerstoneStreamingImageVolumeLoader,
+ cornerstoneStreamingDynamicImageVolumeLoader
+} from '@cornerstonejs/streaming-image-volume-loader'
+
+export default function initVolumeLoader() {
+ volumeLoader.registerUnknownVolumeLoader(
+ cornerstoneStreamingImageVolumeLoader
+ )
+ volumeLoader.registerVolumeLoader(
+ 'cornerstoneStreamingImageVolume',
+ cornerstoneStreamingImageVolumeLoader
+ )
+ volumeLoader.registerVolumeLoader(
+ 'cornerstoneStreamingDynamicImageVolume',
+ cornerstoneStreamingDynamicImageVolumeLoader
+ )
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/pointInShapeCallback.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/pointInShapeCallback.js
new file mode 100644
index 0000000..fbfde58
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/pointInShapeCallback.js
@@ -0,0 +1,124 @@
+import { vec3 } from 'gl-matrix'
+
+/**
+ * For each point in the image (If boundsIJK is not provided, otherwise, for each
+ * point in the provided bounding box), It runs the provided callback IF the point
+ * passes the provided criteria to be inside the shape (which is defined by the
+ * provided pointInShapeFn)
+ *
+ * @param imageData - The image data object.
+ * @param dimensions - The dimensions of the image.
+ * @param pointInShapeFn - A function that takes a point in LPS space and returns
+ * true if the point is in the shape and false if it is not.
+ * @param callback - A function that will be called for
+ * every point in the shape.
+ * @param boundsIJK - The bounds of the volume in IJK coordinates.
+ */
+function pointInShapeCallback(
+ imageData,
+ pointInShapeFn,
+ callback,
+ boundsIJK
+) {
+ let iMin, iMax, jMin, jMax, kMin, kMax
+
+ let scalarData
+
+ // if getScalarData is a method on imageData
+ if ((imageData).getScalarData) {
+ scalarData = (ImageData).getScalarData()
+ } else {
+ scalarData = (imageData)
+ .getPointData()
+ .getScalars()
+ .getData()
+ }
+
+ const dimensions = imageData.getDimensions()
+
+ if (!boundsIJK) {
+ iMin = 0
+ iMax = dimensions[0]
+ jMin = 0
+ jMax = dimensions[1]
+ kMin = 0
+ kMax = dimensions[2]
+ } else {
+ [[iMin, iMax], [jMin, jMax], [kMin, kMax]] = boundsIJK
+ }
+
+ const start = vec3.fromValues(iMin, jMin, kMin)
+
+ const direction = imageData.getDirection()
+ const rowCosines = direction.slice(0, 3)
+ const columnCosines = direction.slice(3, 6)
+ const scanAxisNormal = direction.slice(6, 9)
+
+ const spacing = imageData.getSpacing()
+ const [rowSpacing, columnSpacing, scanAxisSpacing] = spacing
+
+ // @ts-ignore will be fixed in vtk-master
+ const worldPosStart = imageData.indexToWorld(start)
+
+ const rowStep = vec3.fromValues(
+ rowCosines[0] * rowSpacing,
+ rowCosines[1] * rowSpacing,
+ rowCosines[2] * rowSpacing
+ )
+
+ const columnStep = vec3.fromValues(
+ columnCosines[0] * columnSpacing,
+ columnCosines[1] * columnSpacing,
+ columnCosines[2] * columnSpacing
+ )
+
+ const scanAxisStep = vec3.fromValues(
+ scanAxisNormal[0] * scanAxisSpacing,
+ scanAxisNormal[1] * scanAxisSpacing,
+ scanAxisNormal[2] * scanAxisSpacing
+ )
+
+ const yMultiple = dimensions[0]
+ const zMultiple = dimensions[0] * dimensions[1]
+
+ const pointsInShape = []
+ for (let k = kMin; k <= kMax; k++) {
+ for (let j = jMin; j <= jMax; j++) {
+ for (let i = iMin; i <= iMax; i++) {
+ const pointIJK = [i, j, k]
+ const dI = i - iMin
+ const dJ = j - jMin
+ const dK = k - kMin
+
+ const startWorld = worldPosStart
+
+ const pointLPS = [
+ startWorld[0] +
+ dI * rowStep[0] +
+ dJ * columnStep[0] +
+ dK * scanAxisStep[0],
+ startWorld[1] +
+ dI * rowStep[1] +
+ dJ * columnStep[1] +
+ dK * scanAxisStep[1],
+ startWorld[2] +
+ dI * rowStep[2] +
+ dJ * columnStep[2] +
+ dK * scanAxisStep[2]
+ ]
+
+ if (pointInShapeFn(pointLPS, pointIJK)) {
+ const index = k * zMultiple + j * yMultiple + i
+ const value = scalarData[index]
+
+ pointsInShape.push({ value, index, pointIJK, pointLPS })
+ if (callback !== null) {
+ callback({ value, index, pointIJK, pointLPS })
+ }
+ }
+ }
+ }
+ }
+ return pointsInShape
+}
+export { pointInShapeCallback }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/ptScalingMetaDataProvider.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/ptScalingMetaDataProvider.js
new file mode 100644
index 0000000..1ea8978
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/ptScalingMetaDataProvider.js
@@ -0,0 +1,17 @@
+import { utilities as csUtils } from '@cornerstonejs/core'
+
+const scalingPerImageId = {}
+
+function addInstance(imageId, scalingMetaData) {
+ const imageURI = csUtils.imageIdToURI(imageId)
+ scalingPerImageId[imageURI] = scalingMetaData
+}
+
+function get(type, imageId) {
+ if (type === 'scalingModule') {
+ const imageURI = csUtils.imageIdToURI(imageId)
+ return scalingPerImageId[imageURI]
+ }
+}
+
+export default { addInstance, get }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/removeInvalidTags.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/removeInvalidTags.js
new file mode 100644
index 0000000..50005d4
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/removeInvalidTags.js
@@ -0,0 +1,33 @@
+/**
+ * Remove invalid tags from a metadata and return a new object.
+ *
+ * At this time it is only removing tags that has `null` or `undefined` values
+ * which is our main goal because that breaks when `naturalizeDataset(...)` is
+ * called.
+ *
+ * Validating the tag id using regex like /^[a-fA-F0-9]{8}$/ make it run
+ * +50% slower and looping through all characteres (split+every+Set or simple
+ * FOR+Set) double the time it takes to run. It is currently taking +12ms/1k
+ * images on average which can change depending on the machine.
+ *
+ * @param srcMetadata - source metadata
+ * @returns new metadata object without invalid tags
+ */
+function removeInvalidTags(srcMetadata) {
+ // Object.create(null) make it ~9% faster
+ const dstMetadata = Object.create(null)
+ const tagIds = Object.keys(srcMetadata)
+ let tagValue
+
+ tagIds.forEach((tagId) => {
+ tagValue = srcMetadata[tagId]
+
+ if (tagValue !== undefined && tagValue !== null) {
+ dstMetadata[tagId] = tagValue
+ }
+ })
+
+ return dstMetadata
+}
+
+export { removeInvalidTags as default, removeInvalidTags }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setCtTransferFunctionForVolumeActor.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setCtTransferFunctionForVolumeActor.js
new file mode 100644
index 0000000..86ad1ef
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setCtTransferFunctionForVolumeActor.js
@@ -0,0 +1,16 @@
+const windowWidth = 400
+const windowCenter = 40
+
+const lower = windowCenter - windowWidth / 2.0
+const upper = windowCenter + windowWidth / 2.0
+
+const ctVoiRange = { lower, upper }
+
+export default function setCtTransferFunctionForVolumeActor({ volumeActor }) {
+ volumeActor
+ .getProperty()
+ .getRGBTransferFunction(0)
+ .setMappingRange(lower, upper)
+}
+
+export { ctVoiRange }
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setPetColorMapTransferFunctionForVolumeActor.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setPetColorMapTransferFunctionForVolumeActor.js
new file mode 100644
index 0000000..03aec68
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setPetColorMapTransferFunctionForVolumeActor.js
@@ -0,0 +1,26 @@
+import vtkColorMaps from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps'
+import vtkColorTransferFunction from '@kitware/vtk.js/Rendering/Core/ColorTransferFunction'
+import vtkPiecewiseFunction from '@kitware/vtk.js/Common/DataModel/PiecewiseFunction'
+
+export default function setPetColorMapTransferFunctionForVolumeActor(
+ volumeInfo
+) {
+ const { volumeActor, preset } = volumeInfo
+ const mapper = volumeActor.getMapper()
+ mapper.setSampleDistance(1.0)
+
+ const cfun = vtkColorTransferFunction.newInstance()
+ const presetToUse = preset || vtkColorMaps.getPresetByName('hsv')
+ cfun.applyColorMap(presetToUse)
+ cfun.setMappingRange(0, 5)
+
+ volumeActor.getProperty().setRGBTransferFunction(0, cfun)
+
+ // Create scalar opacity function
+ const ofun = vtkPiecewiseFunction.newInstance()
+ ofun.addPoint(0, 0.0)
+ ofun.addPoint(0.1, 0.9)
+ ofun.addPoint(5, 1.0)
+
+ volumeActor.getProperty().setScalarOpacity(0, ofun)
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setPetTransferFunctionForVolumeActor.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setPetTransferFunctionForVolumeActor.js
new file mode 100644
index 0000000..727a4be
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/js/setPetTransferFunctionForVolumeActor.js
@@ -0,0 +1,11 @@
+import { utilities } from '@cornerstonejs/core'
+
+export default function setPetTransferFunction({ volumeActor }) {
+ const rgbTransferFunction = volumeActor
+ .getProperty()
+ .getRGBTransferFunction(0)
+
+ rgbTransferFunction.setRange(0, 5)
+
+ utilities.invertRgbTransferFunction(rgbTransferFunction)
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Fusion/tools/CircleROITool.js b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/tools/CircleROITool.js
new file mode 100644
index 0000000..4d48926
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Fusion/tools/CircleROITool.js
@@ -0,0 +1,608 @@
+import {
+ eventTarget,
+ triggerEvent,
+ VolumeViewport,
+ utilities as csUtils
+} from '@cornerstonejs/core'
+
+const { transformWorldToIndex } = csUtils
+import * as cornerstoneTools from '@cornerstonejs/tools'
+const {
+ Enums,
+ utilities,
+ annotation,
+ drawing
+
+} = cornerstoneTools
+
+// const { getWorldWidthAndHeightFromTwoPoints } = utilities.planar
+// const { roundNumber } = utilities
+
+const { getAnnotations } = annotation.state
+const { isAnnotationVisible } = annotation.visibility
+const { isAnnotationLocked } = annotation.locking
+const drawHandlesSvg = drawing.drawHandles
+const drawCircleSvg = drawing.drawCircle
+const drawLinkedTextBoxSvg = drawing.drawLinkedTextBox
+const { getTextBoxCoordsCanvas } = utilities.drawing
+console.log(utilities)
+// const getCanvasCircleRadius
+// const getCanvasCircleCorners
+// const { getCanvasCircleRadius, getCanvasCircleCorners } = utilities.math.circle
+import {
+ getCalibratedLengthUnits,
+ getCalibratedAreaUnits,
+ getCalibratedScale,
+ getCalibratedAspect
+} from './../js/getCalibratedUnits'
+import { getModalityUnit } from './../js/getModalityUnit'
+import { pointInShapeCallback } from './../js/pointInShapeCallback'
+import { vec3 } from 'gl-matrix'
+class CircleROITool extends cornerstoneTools.CircleROITool {
+ static toolName;
+ // touchDragCallback: any;
+ // mouseDragCallback: any;
+ // _throttledCalculateCachedStats: any;
+ // editData: {
+ // annotation: any;
+ // viewportIdsToRender: Array;
+ // handleIndex?: number;
+ // movingTextBox?: boolean;
+ // newAnnotation?: boolean;
+ // hasMoved?: boolean;
+ // } | null;
+ // isDrawing: boolean;
+ // isHandleOutsideImage = false;
+
+ constructor(
+ toolProps,
+ defaultToolProps
+ ) {
+ super(toolProps, defaultToolProps)
+
+ this._throttledCalculateCachedStats = utilities.throttle(
+ this._calculateCachedStats,
+ 100,
+ { trailing: true }
+ )
+
+ // this._throttledCalculateCachedStats = utilities.throttle(
+ // this._calculateCachedStats,
+ // 100,
+ // { trailing: true }
+ // )
+ // this._getTextLines = this.getTextLines
+ }
+ renderAnnotation = (enabledElement, svgDrawingHelper) => {
+ let renderStatus = false
+ const { viewport } = enabledElement
+ const { element } = viewport
+ // console.log(element)
+ let annotations = getAnnotations(this.getToolName(), element)
+
+ if (!annotations || (annotations && annotations.length === 0)) {
+ return renderStatus
+ }
+
+ annotations = this.filterInteractableAnnotationsForElement(
+ element,
+ annotations
+ )
+
+ if (!annotations || (annotations && annotations.length === 0)) {
+ return renderStatus
+ }
+
+ const targetId = this.getTargetId(viewport)
+
+ const renderingEngine = viewport.getRenderingEngine()
+
+ const styleSpecifier = {
+ toolGroupId: this.toolGroupId,
+ toolName: this.getToolName(),
+ viewportId: enabledElement.viewport.id
+ }
+
+ for (let i = 0; i < annotations.length; i++) {
+ const annotation = annotations[i]
+ const { annotationUID, data } = annotation
+ const { handles } = data
+ const { points, activeHandleIndex } = handles
+
+ styleSpecifier.annotationUID = annotationUID
+
+ const lineWidth = this.getStyle('lineWidth', styleSpecifier, annotation)
+ const lineDash = this.getStyle('lineDash', styleSpecifier, annotation)
+ const color = this.getStyle('color', styleSpecifier, annotation)
+
+ const canvasCoordinates = points.map((p) =>
+ viewport.worldToCanvas(p)
+ )
+ const center = canvasCoordinates[0]
+ const radius = getCanvasCircleRadius(canvasCoordinates)
+ const canvasCorners = getCanvasCircleCorners(canvasCoordinates)
+
+ const { centerPointRadius } = this.configuration
+
+ const modalityUnitOptions = {
+ isPreScaled: utilities.viewport.isViewportPreScaled(viewport, targetId),
+
+ isSuvScaled: this.isSuvScaled(
+ viewport,
+ targetId,
+ annotation.metadata.referencedImageId
+ )
+ }
+
+ // If cachedStats does not exist, or the unit is missing (as part of import/hydration etc.),
+ // force to recalculate the stats from the points
+ if (
+ !data.cachedStats[targetId] ||
+ data.cachedStats[targetId].areaUnit === undefined
+ ) {
+ data.cachedStats[targetId] = {
+ Modality: null,
+ area: null,
+ max: null,
+ mean: null,
+ stdDev: null,
+ areaUnit: null,
+ radius: null,
+ radiusUnit: null,
+ perimeter: null
+ }
+ console.log(111111)
+ this._calculateCachedStats(
+ annotation,
+ viewport,
+ renderingEngine,
+ enabledElement,
+ modalityUnitOptions
+ )
+ } else if (annotation.invalidated) {
+ console.log(22222)
+
+ this._throttledCalculateCachedStats(
+ annotation,
+ viewport,
+ renderingEngine,
+ enabledElement,
+ modalityUnitOptions
+ )
+
+ // If the invalidated data is as a result of volumeViewport manipulation
+ // of the tools, we need to invalidate the related viewports data, so that
+ // when scrolling to the related slice in which the tool were manipulated
+ // we re-render the correct tool position. This is due to stackViewport
+ // which doesn't have the full volume at each time, and we are only working
+ // on one slice at a time.
+ if (viewport instanceof VolumeViewport) {
+ const { referencedImageId } = annotation.metadata
+
+ // invalidate all the relevant stackViewports if they are not
+ // at the referencedImageId
+ for (const targetId in data.cachedStats) {
+ if (targetId.startsWith('imageId')) {
+ const viewports = renderingEngine.getStackViewports()
+
+ const invalidatedStack = viewports.find((vp) => {
+ // The stack viewport that contains the imageId but is not
+ // showing it currently
+ const referencedImageURI =
+ csUtils.imageIdToURI(referencedImageId)
+ const hasImageURI = vp.hasImageURI(referencedImageURI)
+ const currentImageURI = csUtils.imageIdToURI(
+ vp.getCurrentImageId()
+ )
+ return hasImageURI && currentImageURI !== referencedImageURI
+ })
+
+ if (invalidatedStack) {
+ delete data.cachedStats[targetId]
+ }
+ }
+ }
+ }
+ }
+
+ // If rendering engine has been destroyed while rendering
+ if (!viewport.getRenderingEngine()) {
+ console.warn('Rendering Engine has been destroyed')
+ return renderStatus
+ }
+
+ let activeHandleCanvasCoords
+
+ if (!isAnnotationVisible(annotationUID)) {
+ continue
+ }
+
+ if (
+ !isAnnotationLocked(annotation) &&
+ !this.editData &&
+ activeHandleIndex !== null
+ ) {
+ // Not locked or creating and hovering over handle, so render handle.
+ activeHandleCanvasCoords = [canvasCoordinates[activeHandleIndex]]
+ }
+
+ if (activeHandleCanvasCoords) {
+ const handleGroupUID = '0'
+ drawHandlesSvg(
+ svgDrawingHelper,
+ annotationUID,
+ handleGroupUID,
+ activeHandleCanvasCoords,
+ {
+ color
+ }
+ )
+ }
+
+ const dataId = `${annotationUID}-circle`
+ const circleUID = '0'
+ drawCircleSvg(
+ svgDrawingHelper,
+ annotationUID,
+ circleUID,
+ center,
+ radius,
+ {
+ color,
+ lineDash,
+ lineWidth
+ },
+ dataId
+ )
+
+ // draw center point, if "centerPointRadius" configuration is valid.
+ if (centerPointRadius > 0) {
+ if (radius > 3 * centerPointRadius) {
+ drawCircleSvg(
+ svgDrawingHelper,
+ annotationUID,
+ `${circleUID}-center`,
+ center,
+ centerPointRadius,
+ {
+ color,
+ lineDash,
+ lineWidth
+ }
+ )
+ }
+ }
+
+ renderStatus = true
+
+ const options = this.getLinkedTextBoxStyle(styleSpecifier, annotation)
+ if (!options.visibility) {
+ data.handles.textBox = {
+ hasMoved: false,
+ worldPosition: [0, 0, 0],
+ worldBoundingBox: {
+ topLeft: [0, 0, 0],
+ topRight: [0, 0, 0],
+ bottomLeft: [0, 0, 0],
+ bottomRight: [0, 0, 0]
+ }
+ }
+ continue
+ }
+
+ const textLines = this.configuration.getTextLines(data, targetId)
+ if (!textLines || textLines.length === 0) {
+ continue
+ }
+
+ // Poor man's cached?
+ let canvasTextBoxCoords
+
+ if (!data.handles.textBox.hasMoved) {
+ canvasTextBoxCoords = getTextBoxCoordsCanvas(canvasCorners)
+
+ data.handles.textBox.worldPosition =
+ viewport.canvasToWorld(canvasTextBoxCoords)
+ }
+
+ const textBoxPosition = viewport.worldToCanvas(
+ data.handles.textBox.worldPosition
+ )
+
+ const textBoxUID = '1'
+ const boundingBox = drawLinkedTextBoxSvg(
+ svgDrawingHelper,
+ annotationUID,
+ textBoxUID,
+ textLines,
+ textBoxPosition,
+ canvasCoordinates,
+ {},
+ options
+ )
+
+ const { x: left, y: top, width, height } = boundingBox
+
+ data.handles.textBox.worldBoundingBox = {
+ topLeft: viewport.canvasToWorld([left, top]),
+ topRight: viewport.canvasToWorld([left + width, top]),
+ bottomLeft: viewport.canvasToWorld([left, top + height]),
+ bottomRight: viewport.canvasToWorld([left + width, top + height])
+ }
+ }
+
+ return renderStatus
+ };
+ _calculateCachedStats1 = (
+ annotation,
+ viewport,
+ renderingEngine,
+ enabledElement,
+ modalityUnitOptions
+ ) => {
+ const data = annotation.data
+ const { viewportId, renderingEngineId } = enabledElement
+
+ const { points } = data.handles
+
+ const canvasCoordinates = points.map((p) => viewport.worldToCanvas(p))
+ const { viewPlaneNormal, viewUp } = viewport.getCamera()
+
+ const [topLeftCanvas, bottomRightCanvas] = (
+ getCanvasCircleCorners(canvasCoordinates)
+ )
+
+ const topLeftWorld = viewport.canvasToWorld(topLeftCanvas)
+ const bottomRightWorld = viewport.canvasToWorld(bottomRightCanvas)
+ const { cachedStats } = data
+
+ const targetIds = Object.keys(cachedStats)
+ const worldPos1 = topLeftWorld
+ const worldPos2 = bottomRightWorld
+ for (let i = 0; i < targetIds.length; i++) {
+ const targetId = targetIds[i]
+
+ const image = this.getTargetIdImage(targetId, renderingEngine)
+
+ // If image does not exists for the targetId, skip. This can be due
+ // to various reasons such as if the target was a volumeViewport, and
+ // the volumeViewport has been decached in the meantime.
+ if (!image) {
+ continue
+ }
+
+ const { dimensions, imageData, metadata } = image
+
+ const worldPos1Index = transformWorldToIndex(imageData, worldPos1)
+
+ worldPos1Index[0] = Math.floor(worldPos1Index[0])
+ worldPos1Index[1] = Math.floor(worldPos1Index[1])
+ worldPos1Index[2] = Math.floor(worldPos1Index[2])
+
+ const worldPos2Index = transformWorldToIndex(imageData, worldPos2)
+
+ worldPos2Index[0] = Math.floor(worldPos2Index[0])
+ worldPos2Index[1] = Math.floor(worldPos2Index[1])
+ worldPos2Index[2] = Math.floor(worldPos2Index[2])
+
+ // Check if one of the indexes are inside the volume, this then gives us
+ // Some area to do stats over.
+
+ if (this._isInsideVolume(worldPos1Index, worldPos2Index, dimensions)) {
+ const iMin = Math.min(worldPos1Index[0], worldPos2Index[0])
+ const iMax = Math.max(worldPos1Index[0], worldPos2Index[0])
+
+ const jMin = Math.min(worldPos1Index[1], worldPos2Index[1])
+ const jMax = Math.max(worldPos1Index[1], worldPos2Index[1])
+
+ const kMin = Math.min(worldPos1Index[2], worldPos2Index[2])
+ const kMax = Math.max(worldPos1Index[2], worldPos2Index[2])
+
+ const boundsIJK = [
+ [iMin, iMax],
+ [jMin, jMax],
+ [kMin, kMax]
+ ]
+
+ const center = [
+ (topLeftWorld[0] + bottomRightWorld[0]) / 2,
+ (topLeftWorld[1] + bottomRightWorld[1]) / 2,
+ (topLeftWorld[2] + bottomRightWorld[2]) / 2
+ ]
+
+ const ellipseObj = {
+ center,
+ xRadius: Math.abs(topLeftWorld[0] - bottomRightWorld[0]) / 2,
+ yRadius: Math.abs(topLeftWorld[1] - bottomRightWorld[1]) / 2,
+ zRadius: Math.abs(topLeftWorld[2] - bottomRightWorld[2]) / 2
+ }
+ const { worldWidth, worldHeight } = getWorldWidthAndHeightFromTwoPoints(
+ viewPlaneNormal,
+ viewUp,
+ worldPos1,
+ worldPos2
+ )
+ const isEmptyArea = worldWidth === 0 && worldHeight === 0
+ const scale = getCalibratedScale(image)
+ const aspect = getCalibratedAspect(image)
+ const area = Math.abs(
+ Math.PI *
+ (worldWidth / scale / 2) *
+ (worldHeight / aspect / scale / 2)
+ )
+
+ const modalityUnit = getModalityUnit(
+ metadata.Modality,
+ annotation.metadata.referencedImageId,
+ modalityUnitOptions
+ )
+ const pointsInShape = pointInShapeCallback(
+ imageData,
+ (pointLPS, pointIJK) => pointInEllipse(ellipseObj, pointLPS),
+ this.configuration.statsCalculator.statsCallback,
+ boundsIJK
+ )
+
+ const stats = this.configuration.statsCalculator.getStatistics()
+
+ cachedStats[targetId] = {
+ Modality: metadata.Modality,
+ area,
+ mean: stats[1] && stats[1].value ? stats[1].value : null,
+ max: stats[0] && stats[0].value ? stats[0].value : null,
+ stdDev: stats[2] && stats[2].value ? stats[2].value : null,
+ statsArray: stats,
+ pointsInShape: pointsInShape,
+ isEmptyArea,
+ areaUnit: getCalibratedAreaUnits(null, image),
+ radius: worldWidth / 2 / scale,
+ radiusUnit: getCalibratedLengthUnits(null, image),
+ perimeter: (2 * Math.PI * (worldWidth / 2)) / scale,
+ modalityUnit
+ }
+ } else {
+ this.isHandleOutsideImage = true
+
+ cachedStats[targetId] = {
+ Modality: metadata.Modality
+ }
+ }
+ }
+
+ annotation.invalidated = false
+
+ // Dispatching annotation modified
+ const eventType = Enums.Events.ANNOTATION_MODIFIED
+
+ const eventDetail = {
+ annotation,
+ viewportId,
+ renderingEngineId
+ }
+ triggerEvent(eventTarget, eventType, eventDetail)
+
+ return cachedStats
+ }
+}
+function getCanvasCircleCorners(
+ circleCanvasPoints
+) {
+ const [center, end] = circleCanvasPoints
+ const radius = utilities.math.point.distanceToPoint(center, end)
+
+ const topLeft = [center[0] - radius, center[1] - radius]
+ const bottomRight = [center[0] + radius, center[1] + radius]
+
+ return [topLeft, bottomRight]
+}
+function getCanvasCircleRadius(
+ circleCanvasPoints
+) {
+ const [center, end] = circleCanvasPoints
+ return utilities.math.point.distanceToPoint(center, end)
+}
+function getWorldWidthAndHeightFromTwoPoints(
+ viewPlaneNormal,
+ viewUp,
+ worldPos1,
+ worldPos2
+) {
+ const viewRight = vec3.create()
+
+ vec3.cross(viewRight, viewUp, viewPlaneNormal)
+
+ const pos1 = vec3.fromValues(...worldPos1)
+ const pos2 = vec3.fromValues(...worldPos2)
+
+ const diagonal = vec3.create()
+ vec3.subtract(diagonal, pos1, pos2)
+
+ const diagonalLength = vec3.length(diagonal)
+
+ // When the two points are very close to each other return width as 0
+ // to avoid NaN the cosTheta formula calculation
+ if (diagonalLength < 0.0001) {
+ return { worldWidth: 0, worldHeight: 0 }
+ }
+
+ const cosTheta =
+ vec3.dot(diagonal, viewRight) / (diagonalLength * vec3.length(viewRight))
+
+ const sinTheta = Math.sqrt(1 - cosTheta * cosTheta)
+
+ const worldWidth = sinTheta * diagonalLength
+ const worldHeight = cosTheta * diagonalLength
+
+ return { worldWidth, worldHeight }
+}
+function pointInEllipse(
+ ellipse,
+ pointLPS
+) {
+ const { center: circleCenterWorld, xRadius, yRadius, zRadius } = ellipse
+ const [x, y, z] = pointLPS
+ const [x0, y0, z0] = circleCenterWorld
+
+ let inside = 0
+ if (xRadius !== 0) {
+ inside += ((x - x0) * (x - x0)) / (xRadius * xRadius)
+ }
+
+ if (yRadius !== 0) {
+ inside += ((y - y0) * (y - y0)) / (yRadius * yRadius)
+ }
+
+ if (zRadius !== 0) {
+ inside += ((z - z0) * (z - z0)) / (zRadius * zRadius)
+ }
+
+ return inside <= 1
+}
+// function defaultGetTextLines(data, targetId) {
+// const cachedVolumeStats = data.cachedStats[targetId]
+// const {
+// radius,
+// radiusUnit,
+// area,
+// mean,
+// stdDev,
+// max,
+// isEmptyArea,
+// areaUnit,
+// modalityUnit
+// } = cachedVolumeStats
+
+// const textLines = []
+
+// if (radius) {
+// const radiusLine = isEmptyArea
+// ? `Radius: Oblique not supported`
+// : `Radius: ${roundNumber(radius)} ${radiusUnit}`
+// textLines.push(radiusLine)
+// }
+
+// if (area) {
+// const areaLine = isEmptyArea
+// ? `Area: Oblique not supported`
+// : `Area: ${roundNumber(area)} ${areaUnit}`
+// textLines.push(areaLine)
+// }
+
+// if (mean) {
+// textLines.push(`Mean: ${roundNumber(mean)} ${modalityUnit}`)
+// }
+
+// if (max) {
+// textLines.push(`Max: ${roundNumber(max)} ${modalityUnit}`)
+// }
+
+// if (stdDev) {
+// textLines.push(`Std Dev: ${roundNumber(stdDev)} ${modalityUnit}`)
+// }
+
+// return textLines
+// }
+
+CircleROITool.toolName = 'CircleROI'
+export default CircleROITool
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/HotKeyInput.vue b/src/views/trials/trials-panel/reading/dicoms/components/HotKeyInput.vue
new file mode 100644
index 0000000..f176e80
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/HotKeyInput.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Hotkeys.vue b/src/views/trials/trials-panel/reading/dicoms/components/Hotkeys.vue
new file mode 100644
index 0000000..c259ba6
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Hotkeys.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+ {{ $fd('ShortcutKey',item.label) }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionForm.vue
new file mode 100644
index 0000000..850ad3d
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionForm.vue
@@ -0,0 +1,2238 @@
+
+
+
+
+
+ {{ lesionName }}
+ ({{ answers.FromMark }})
+
+
+
+
+
+
+
+
+
+ {lesionTypeChange(val)})"
+ >
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+ {formItemChange(val, qs)})"
+ />
+
+ {formItemChange(val, qs)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue
new file mode 100644
index 0000000..ec5a26f
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/IRecist/QuestionList.vue
@@ -0,0 +1,1208 @@
+
+
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+
+
+
+ {{ language==='en'?qs.GroupEnName:qs.GroupName }}
+
+
+
+
+
+ {{ item.QuestionName }}
+ (请重新评估)
+
+
+ {{ item.QuestionName }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getLesionName(item.OrderMark,q.RowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionPart }}
+
+
+
+
+ {{ $fd('TargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NoTargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewTargetLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewNoTargetLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('OtherPreviousNewLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewLesionAfterTriggeringiRECSITState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionShort }}mm
+
+
+ {{ item.TableQuestions.Answers[i].lesionLength }}mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionForm.vue
new file mode 100644
index 0000000..e5db662
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionForm.vue
@@ -0,0 +1,1734 @@
+
+
+
+
+
+
+ {{ lesionName }}
+
+
+
+
+
+
+
+
+
+ {lesionTypeChange(val)})"
+ >
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+ {formItemChange(val, qs)})"
+ />
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+ {{ val }}
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionList.vue
new file mode 100644
index 0000000..32770e6
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Lugano/QuestionList.vue
@@ -0,0 +1,1132 @@
+
+
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+
+
+
+ {{ language==='en'?qs.GroupEnName:qs.GroupName }}
+
+
+
+
+
{{ item.QuestionName }}
+
+
+
+
+
+
+
+
+
+
+ {{ getLesionName(item.OrderMark,q.RowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionPart }}
+
+
+
+
+ {{ $fd('TargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NoTargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionShort }}mm
+
+
+ {{ item.TableQuestions.Answers[i].lesionLength }}mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Manuals.vue b/src/views/trials/trials-panel/reading/dicoms/components/Manuals.vue
new file mode 100644
index 0000000..3cd5b59
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Manuals.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+ {{ file.Name }}
+
+
+
+
+ {{ $t('trials:clinicaldara:title:nodata') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/NoneDicomsCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/components/NoneDicomsCanvas.vue
new file mode 100644
index 0000000..d766ae2
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/NoneDicomsCanvas.vue
@@ -0,0 +1,900 @@
+
+
+
+
+
+
+
+ {{ `${index+1} / ${urlList.length}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/NoneDicomsViewer.vue b/src/views/trials/trials-panel/reading/dicoms/components/NoneDicomsViewer.vue
new file mode 100644
index 0000000..b37517d
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/NoneDicomsViewer.vue
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无数据
+
+
+
+
![]()
+
+ {{ `${index+1}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Others.vue b/src/views/trials/trials-panel/reading/dicoms/components/Others.vue
new file mode 100644
index 0000000..7ea1812
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Others.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/PCWG/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/PCWG/QuestionForm.vue
new file mode 100644
index 0000000..0f3125b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/PCWG/QuestionForm.vue
@@ -0,0 +1,912 @@
+
+
+
+
+
+
+
+ {{ lesionName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ />
+ {formItemChange(val, qs)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/PCWG/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/PCWG/QuestionList.vue
new file mode 100644
index 0000000..161da9f
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/PCWG/QuestionList.vue
@@ -0,0 +1,769 @@
+
+
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+
+
+
+ {{ language==='en'?qs.GroupEnName:qs.GroupName }}
+
+
+
+
+
{{ item.QuestionName }}
+
+
+
+
+
+
+
+
+ {{ getLesionName(item.OrderMark,q.RowIndex, qs.Childrens) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionPart }}
+
+
+ {{ $fd('EvaluationOfState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ item.TableQuestions.Answers[i].lesionType }}
+
+
+ {{ item.TableQuestions.Answers[i].lesionNum }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/QuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/components/QuestionItem.vue
new file mode 100644
index 0000000..ff07318
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/QuestionItem.vue
@@ -0,0 +1,417 @@
+
+
+
+
+
+ {{ language==='en'?question.GroupEnName:question.GroupName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('ValueUnit', parseInt(question.Unit)) }}
+
+
+ 测量
+ 清除标记
+ 定位
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+ {{ item.label }}
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Questions.vue b/src/views/trials/trials-panel/reading/dicoms/components/Questions.vue
new file mode 100644
index 0000000..f3ba8b6
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Questions.vue
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue b/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue
new file mode 100644
index 0000000..6fc565b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/ReadPage.vue
@@ -0,0 +1,685 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionForm.vue
new file mode 100644
index 0000000..463adcc
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionForm.vue
@@ -0,0 +1,1595 @@
+
+
+
+
+
+
+ {{ lesionName }}
+
+
+
+
+
+
+
+
+
+ {lesionTypeChange(val)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+ {formItemChange(val, qs)})"
+ />
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionList.vue
new file mode 100644
index 0000000..389cfd7
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/Recist/QuestionList.vue
@@ -0,0 +1,1089 @@
+
+
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+
+
+
+ {{ language==='en'?qs.GroupEnName:qs.GroupName }}
+
+
+
+
+
{{ item.QuestionName }}
+
+
+
+
+
+
+
+
+
+
+ {{ getLesionName(item.OrderMark,q.RowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionPart }}
+
+
+
+
+ {{ $fd('TargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NoTargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionShort }}mm
+
+
+ {{ item.TableQuestions.Answers[i].lesionLength }}mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/RecistBM/QuestionForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/RecistBM/QuestionForm.vue
new file mode 100644
index 0000000..cade59b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/RecistBM/QuestionForm.vue
@@ -0,0 +1,1209 @@
+
+
+
+
+
+ {{ lesionName }}
+
+
+
+
+
+
+
+
+
+ {lesionTypeChange(val)})"
+ >
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+ {{ $fd('ValueUnit', parseInt(qs.Unit)) }}
+
+
+
+
+ {formItemChange(val, qs)})"
+ />
+
+
+ {formItemChange(val, qs)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/RecistBM/QuestionList.vue b/src/views/trials/trials-panel/reading/dicoms/components/RecistBM/QuestionList.vue
new file mode 100644
index 0000000..688b24c
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/RecistBM/QuestionList.vue
@@ -0,0 +1,1019 @@
+
+
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+
+
+
+ {{ language==='en'?qs.GroupEnName:qs.GroupName }}
+
+
+
+
+
{{ item.QuestionName }}
+
+
+
+
+
+
+
+
+
+ {{ getLesionName(item.OrderMark,q.RowIndex) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionPart }}
+
+
+
+
+ {{ $fd('TargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NoTargetState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+ {{ $fd('NewLesionState',parseInt(item.TableQuestions.Answers[i].lesionState)) }}
+
+
+
+
+
+ {{ item.TableQuestions.Answers[i].lesionLength }}mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue b/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue
new file mode 100644
index 0000000..0ca8447
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/ReportPage.vue
@@ -0,0 +1,887 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.QuestionName }}
+
+ {{ language==='en'?scope.row.GroupEnName:scope.row.GroupName }}
+
+
+
+
+
+
+
+ {{ task.BlindName }}
+
+
+
+
+ {{ task.BlindName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingReport:message:msg6') }}{{ $fd('OverallAssessment',tumorEvaluate) }}{{ $t('trials:readingReport:message:msg7') }}{{ $fd('OverallAssessment',currentEvaluateResult) }}{{ $t('trials:readingReport:message:msg8') }}
+ {{ $t('trials:readingReport:title:sysEvaluationRes') }}{{ $fd('ExistDisease',isExistDisease) }}{{ $t('trials:readingReport:message:msg1') }}
+
+
+
+
+
+ {{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
+
+
+ {{ scope.row.Answers[task.VisitTaskId] }}
+
+
+
+
+
+ {{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
+
+ {{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
+
+
+
+
+ {{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
+
+ {{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
+
+
+ {{ scope.row.Answers[task.VisitTaskId] === '-1' ? $t('trials:readingReport:title:unknow') : scope.row.Answers[task.VisitTaskId] }}
+
+
+
+ {{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
+
+
+ {{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]}` }}
+
+
+ {{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]} ${$fd('ValueUnit',scope.row.Unit)}` }}
+
+
+ {{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]}%` }}
+
+
+ {{ scope.row.Answers[task.VisitTaskId] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue
new file mode 100644
index 0000000..e39fb70
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/StudyList.vue
@@ -0,0 +1,832 @@
+
+
+
+ {{ subjectCode }}
+
+
+ {{ taskBlindName }}
+
+
+
+
+
+
+
+ {{ $t('trials:reading:title:keySeries') }}
+
+
+
+
+
+
+
+
+
+
+
#{{ series.seriesNumber }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ series.description }}
+
+
+
+
+ T: {{ series.sliceThickness }}
+
+
+ {{ series.modality }}: {{ series.instanceCount }} image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/WL.vue b/src/views/trials/trials-panel/reading/dicoms/components/WL.vue
new file mode 100644
index 0000000..e145085
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/WL.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+ {{ $t('common:button:edit') }}
+
+ {{ $t('common:button:delete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/components/WLForm.vue b/src/views/trials/trials-panel/reading/dicoms/components/WLForm.vue
new file mode 100644
index 0000000..25e97ad
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/components/WLForm.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomWwwcForm.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomWwwcForm.vue
new file mode 100644
index 0000000..a995b07
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomWwwcForm.vue
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue
new file mode 100644
index 0000000..8b6a65d
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomCanvas.vue
@@ -0,0 +1,2098 @@
+
+
+
+
+
+
+
+
+ {{ stack.taskBlindName }}
+
+
+
+
+
+
+
{{ subjectCode }} {{ stack.taskBlindName }}
+
Series: #{{ dicomInfo.series }}
+
Image: #{{ dicomInfo.frame }}
+
{{ dicomInfo.modality }}
+
+
+
+ Pos: {{ mousePosition.x?mousePosition.x.toFixed(0):'' }}, {{ mousePosition.y?mousePosition.y.toFixed(0):'' }}
+
+
+ HU: {{ mousePosition.mo }}
+
+
+ SUVbw(g/ml): {{ digitPlaces === -1 ?mousePosition.suv.toFixed(3) :mousePosition.suv.toFixed(digitPlaces) }}
+
+
+ Density: {{ mousePosition.mo }}
+
+
+ W*H: {{ dicomInfo.size }}
+
+
+
+
Zoom: {{ dicomInfo.zoom }}
+
+
+
+
+
+
{{ stack.description }}
+
+
+
+
+
+
+
+
+
+ {{ markers.top }}
+
+
+ {{ markers.right }}
+
+
+
+ {{ markers.bottom }}
+
+
+ {{ markers.left }}
+
+
+
+
Location: {{ dicomInfo.location }}
+
Slice Thickness: {{ dicomInfo.thick }}mm
+
WW/WL: {{ dicomInfo.wwwc }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomPreview.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomPreview.vue
new file mode 100644
index 0000000..62d67a8
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomPreview.vue
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue
new file mode 100644
index 0000000..c111a2a
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeDicomViewer.vue
@@ -0,0 +1,1779 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeMeasurementList.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeMeasurementList.vue
new file mode 100644
index 0000000..62c6788
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeMeasurementList.vue
@@ -0,0 +1,407 @@
+
+
+
+
+
+ {{ subjectCode }}
+ {{ taskBlindName }}
+
+
+
+
+
+
+ {{$t('common:button:save')}}
+
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeNoneDicomsCanvas.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeNoneDicomsCanvas.vue
new file mode 100644
index 0000000..d766ae2
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeNoneDicomsCanvas.vue
@@ -0,0 +1,900 @@
+
+
+
+
+
+
+
+ {{ `${index+1} / ${urlList.length}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeNoneDicomsViewer.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeNoneDicomsViewer.vue
new file mode 100644
index 0000000..60b2a16
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeNoneDicomsViewer.vue
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无数据
+
+
+
+
![]()
+
+ {{ `${index+1}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue
new file mode 100644
index 0000000..365d11e
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionFormItem.vue
@@ -0,0 +1,844 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionItem.vue
new file mode 100644
index 0000000..536e5c8
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionItem.vue
@@ -0,0 +1,342 @@
+
+
+
+
+
+ {{ question.GroupName }}
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+ {{ val }}
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue
new file mode 100644
index 0000000..86eb99f
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionTableFormItem.vue
@@ -0,0 +1,437 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionsPreview.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionsPreview.vue
new file mode 100644
index 0000000..cd6aa01
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeQuestionsPreview.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReadPage.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReadPage.vue
new file mode 100644
index 0000000..cf1ad0b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReadPage.vue
@@ -0,0 +1,724 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPage.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPage.vue
new file mode 100644
index 0000000..163a5ab
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPage.vue
@@ -0,0 +1,908 @@
+
+
+
+
+
+
+
+
+ {{ scope.row.BlindName ? scope.row.QuestionName : scope.row.QuestionName }}
+
+ {{ scope.row.GroupName }}
+
+
+
+
+
+
+ {{ task.BlindName }}
+
+
+
+ {{ task.BlindName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}}
+
+
+
+ {{questionForm[scope.row.QuestionId]}}
+
+
+
+
+
+
+
+ {{questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}}
+
+
+
+
+
+
+
+ {{questionForm[scope.row.QuestionId]}}
+
+ {questionId = scope.row.QuestionId}"
+ >
+ {{scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}}
+ %
+
+
+
+ {{ isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]))? questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]:`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
+
+
+ {{ isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId])) ? questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]:`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]} %` }}
+
+
+ {{ isNaN(parseInt(questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId])) ? questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]:`${questionForm[scope.row.QuestionId][scope.row.xfIndex][scope.row.TableQuestionId]}` }}
+
+
+ {questionId = scope.row.QuestionId}"
+ >
+ {{scope.row.Unit !== 4 ? $fd('ValueUnit', scope.row.Unit) : scope.row.CustomUnit}}
+ %
+
+
+
+ {{ isNaN(parseInt(questionForm[scope.row.QuestionId]))? questionForm[scope.row.QuestionId]:`${questionForm[scope.row.QuestionId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
+
+
+ {{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId]:`${questionForm[scope.row.QuestionId]} %` }}
+
+
+ {{ isNaN(parseInt(questionForm[scope.row.QuestionId])) ? questionForm[scope.row.QuestionId] : questionForm[scope.row.QuestionId]}}
+
+
+
+
+
+
+ {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url, scope.row.RowId)}"
+ >
+ {setImageUrl(scope.row.QuestionId, scope.row.xfIndex, scope.row.TableQuestionId, url)}"
+ >
+
+
+
+
+
+ {{ scope.row.Answers[task.VisitTaskId] === '-1' ? '未知' : scope.row.Answers[task.VisitTaskId] }}
+
+
+ {{ $fd(scope.row.DictionaryCode, scope.row.Answers[task.VisitTaskId]) }}
+
+
+ {{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]}` }}
+
+
+
+
+ {{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId]))?scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]} ${scope.row.Unit !== 4 ? $fd('ValueUnit',scope.row.Unit) : scope.row.CustomUnit}` }}
+
+
+ {{ isNaN(parseInt(scope.row.Answers[task.VisitTaskId])) ? scope.row.Answers[task.VisitTaskId]:`${scope.row.Answers[task.VisitTaskId]} %` }}
+
+
+ {{ scope.row.Answers[task.VisitTaskId] }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPageUpload.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPageUpload.vue
new file mode 100644
index 0000000..a8a91bd
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeReportPageUpload.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue
new file mode 100644
index 0000000..8aa4232
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/CustomizeStudyList.vue
@@ -0,0 +1,835 @@
+
+
+
+ {{ subjectCode }}
+
+
+ {{ taskBlindName }}
+
+
+
+
+
+
+
+ {{ $t('trials:reading:title:keySeries') }}
+
+
+
+
+
+
+
+
+
+
+
#{{ series.seriesNumber }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ series.description }}
+
+
+
+
+ T: {{ series.sliceThickness }}
+
+
+ {{ series.modality }}: {{ series.instanceCount }} image
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/HotKeyInput.vue b/src/views/trials/trials-panel/reading/dicoms/customize/HotKeyInput.vue
new file mode 100644
index 0000000..f176e80
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/HotKeyInput.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/Hotkeys.vue b/src/views/trials/trials-panel/reading/dicoms/customize/Hotkeys.vue
new file mode 100644
index 0000000..d7f6894
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/Hotkeys.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+ {{ $fd('ShortcutKey',item.label) }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/Manuals.vue b/src/views/trials/trials-panel/reading/dicoms/customize/Manuals.vue
new file mode 100644
index 0000000..3cd5b59
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/Manuals.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+ {{ file.Name }}
+
+
+
+
+ {{ $t('trials:clinicaldara:title:nodata') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/Others.vue b/src/views/trials/trials-panel/reading/dicoms/customize/Others.vue
new file mode 100644
index 0000000..0f94ca1
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/Others.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/WL.vue b/src/views/trials/trials-panel/reading/dicoms/customize/WL.vue
new file mode 100644
index 0000000..f994f7f
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/WL.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+ Add
+
+
+ Edit
+ Delete
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/customize/WLForm.vue b/src/views/trials/trials-panel/reading/dicoms/customize/WLForm.vue
new file mode 100644
index 0000000..234abb8
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/customize/WLForm.vue
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/index.vue b/src/views/trials/trials-panel/reading/dicoms/index.vue
new file mode 100644
index 0000000..09bda0b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/index.vue
@@ -0,0 +1,572 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/none-dicoms.vue b/src/views/trials/trials-panel/reading/dicoms/none-dicoms.vue
new file mode 100644
index 0000000..e5de2fa
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/none-dicoms.vue
@@ -0,0 +1,294 @@
+
+
+
+
+ {{ otherInfo.SubjectCode }}
+ ({{ otherInfo.TaskBlindName }})
+
+
+
+
+
+ {{ study.CodeView }}
+ {{ study.Modality }}
+ {{ getBodyPart(study.BodyPart) }}
+
+
+
+ 暂无数据
+
+
+
+ {{ `${j+1}. ${item.FileName}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/ArrowAnnotate/ArrowAnnotateTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/ArrowAnnotate/ArrowAnnotateTool.js
new file mode 100644
index 0000000..4e2ac94
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/ArrowAnnotate/ArrowAnnotateTool.js
@@ -0,0 +1,410 @@
+/* eslint no-alert: 0 */
+import * as cornerstoneTools from 'cornerstone-tools'
+const external = cornerstoneTools.external
+const EVENTS = cornerstoneTools.EVENTS
+
+const toolStyle = cornerstoneTools.toolStyle
+const textStyle = cornerstoneTools.textStyle
+const toolColors = cornerstoneTools.toolColors
+
+const pointInsideBoundingBox = cornerstoneTools.import('util/pointInsideBoundingBox')
+const lineSegDistance = cornerstoneTools.import('util/lineSegDistance')
+const triggerEvent = cornerstoneTools.import('util/triggerEvent')
+const moveNewHandle = cornerstoneTools.import('manipulators/moveNewHandle')
+
+const addToolState = cornerstoneTools.addToolState
+const getToolState = cornerstoneTools.getToolState
+const removeToolState = cornerstoneTools.removeToolState
+
+// Drawing
+const drawLinkedTextBox = cornerstoneTools.import('drawing/drawLinkedTextBox')
+const getNewContext = cornerstoneTools.import('drawing/getNewContext')
+const draw = cornerstoneTools.import('drawing/draw')
+// import textBoxWidth from './textBoxWidth'
+const setShadow = cornerstoneTools.import('drawing/setShadow')
+const drawArrow = cornerstoneTools.import('drawing/drawArrow')
+const drawHandles = cornerstoneTools.import('drawing/drawHandles')
+const { arrowAnnotateCursor } = cornerstoneTools.import('tools/cursors')
+const getModule = cornerstoneTools.getModule
+
+/**
+ * @public
+ * @class ArrowAnnotateTool
+ * @memberof Tools.Annotation
+ * @classdesc Create and position an arrow and label
+ * @extends Tools.Base.BaseAnnotationTool
+ */
+export default class ArrowAnnotateTool extends cornerstoneTools.ArrowAnnotateTool {
+ constructor(props = {}) {
+ const defaultProps = {
+ name: 'ArrowAnnotate',
+ supportedInteractionTypes: ['Mouse', 'Touch'],
+ configuration: {
+ getTextCallback,
+ changeTextCallback,
+ drawHandles: false,
+ drawHandlesOnHover: true,
+ hideHandlesIfMoving: false,
+ arrowFirst: true,
+ renderDashed: false,
+ allowEmptyLabel: false
+ },
+ svgCursor: arrowAnnotateCursor
+ }
+
+ super(props, defaultProps)
+ this.preventNewMeasurement = false
+ }
+ textBoxWidth(context, text, padding) {
+ const font = textStyle.getFont()
+ const origFont = context.font
+
+ if (font && font !== origFont) {
+ context.font = font
+ }
+ const width = context.measureText(text).width
+
+ if (font && font !== origFont) {
+ context.font = origFont
+ }
+
+ return width + 2 * padding
+ }
+
+ createNewMeasurement(evt) {
+ // Create the measurement data for this tool with the end handle activated
+ return {
+ visible: true,
+ active: true,
+ color: undefined,
+ text: '',
+ handles: {
+ start: {
+ x: evt.detail.currentPoints.image.x,
+ y: evt.detail.currentPoints.image.y,
+ highlight: true,
+ active: false
+ },
+ end: {
+ x: evt.detail.currentPoints.image.x,
+ y: evt.detail.currentPoints.image.y,
+ highlight: true,
+ active: false
+ },
+ textBox: {
+ active: false,
+ hasMoved: false,
+ movesIndependently: false,
+ drawnIndependently: true,
+ allowedOutsideImage: true,
+ hasBoundingBox: true
+ }
+ }
+ }
+ }
+
+ pointNearTool(element, data, coords) {
+ if (data.visible === false) {
+ return false
+ }
+
+ return (
+ lineSegDistance(element, data.handles.start, data.handles.end, coords) <
+ 25
+ )
+ }
+
+ updateCachedStats() {
+ // Implementing to satisfy BaseAnnotationTool
+ }
+
+ renderToolData(evt) {
+ const { element, enabledElement } = evt.detail
+ const {
+ handleRadius,
+ drawHandlesOnHover,
+ hideHandlesIfMoving,
+ renderDashed
+ } = this.configuration
+
+ // If we have no toolData for this element, return immediately as there is nothing to do
+ const toolData = getToolState(element, this.name)
+
+ if (!toolData) {
+ return
+ }
+
+ // We have tool data for this element - iterate over each one and draw it
+ const canvas = evt.detail.canvasContext.canvas
+ const context = getNewContext(canvas)
+
+ const lineWidth = toolStyle.getToolWidth()
+
+ let lineDash
+
+ if (renderDashed) {
+ lineDash = getModule('globalConfiguration').configuration.lineDash
+ }
+
+ for (let i = 0; i < toolData.data.length; i++) {
+ const data = toolData.data[i]
+
+ if (data.visible === false) {
+ continue
+ }
+
+ draw(context, context => {
+ setShadow(context, this.configuration)
+
+ const color = toolColors.getColorIfActive(data)
+
+ // Draw the arrow
+ const handleStartCanvas = external.cornerstone.pixelToCanvas(
+ element,
+ data.handles.start
+ )
+ const handleEndCanvas = external.cornerstone.pixelToCanvas(
+ element,
+ data.handles.end
+ )
+
+ // Config.arrowFirst = false;
+ if (this.configuration.arrowFirst) {
+ drawArrow(
+ context,
+ handleEndCanvas,
+ handleStartCanvas,
+ color,
+ lineWidth,
+ lineDash
+ )
+ } else {
+ drawArrow(
+ context,
+ handleStartCanvas,
+ handleEndCanvas,
+ color,
+ lineWidth,
+ lineDash
+ )
+ }
+
+ const handleOptions = {
+ color,
+ handleRadius,
+ drawHandlesIfActive: drawHandlesOnHover,
+ hideHandlesIfMoving
+ }
+ if (this.configuration.drawHandles) {
+ drawHandles(context, evt.detail, data.handles, handleOptions)
+ }
+ const text = []
+
+ if (data.hasOwnProperty('remark')) {
+ if (data.hasOwnProperty('status') && data.status) {
+ text.push(`${data.remark}(${data.status})`)
+ } else {
+ text.push(data.remark)
+ }
+ }
+
+ text.push(textBoxText(data))
+
+ // Draw the text
+ if (text && text !== '') {
+ // Calculate the text coordinates.
+ const padding = 5
+ const textWidth = this.textBoxWidth(context, text, padding)
+ const textHeight = textStyle.getFontSize() + 10
+
+ let distance = Math.max(textWidth, textHeight) / 2 + 5
+
+ if (handleEndCanvas.x < handleStartCanvas.x) {
+ distance = -distance
+ }
+
+ if (!data.handles.textBox.hasMoved) {
+ let textCoords
+
+ if (this.configuration.arrowFirst) {
+ textCoords = {
+ x: handleEndCanvas.x - textWidth / 2 + distance,
+ y: handleEndCanvas.y - textHeight / 2
+ }
+ } else {
+ // If the arrow is at the End position, the text should
+ // Be placed near the Start position
+ textCoords = {
+ x: handleStartCanvas.x - textWidth / 2 - distance,
+ y: handleStartCanvas.y - textHeight / 2
+ }
+ }
+
+ const transform = external.cornerstone.internal.getTransform(
+ enabledElement
+ )
+
+ transform.invert()
+
+ const coords = transform.transformPoint(textCoords.x, textCoords.y)
+
+ data.handles.textBox.x = coords.x
+ data.handles.textBox.y = coords.y
+ }
+
+ drawLinkedTextBox(
+ context,
+ element,
+ data.handles.textBox,
+ text,
+ data.handles,
+ textBoxAnchorPoints,
+ color,
+ lineWidth,
+ 0,
+ false
+ )
+ }
+ })
+ }
+
+ function textBoxText(data) {
+ return data.text
+ }
+
+ function textBoxAnchorPoints(handles) {
+ const midpoint = {
+ x: (handles.start.x + handles.end.x) / 2,
+ y: (handles.start.y + handles.end.y) / 2
+ }
+
+ return [handles.start, midpoint, handles.end]
+ }
+ }
+
+ addNewMeasurement(evt, interactionType) {
+ const element = evt.detail.element
+ const measurementData = this.createNewMeasurement(evt)
+
+ const { allowEmptyLabel } = this.configuration
+
+ // Associate this data with this imageId so we can render it and manipulate it
+ addToolState(element, this.name, measurementData)
+ external.cornerstone.updateImage(element)
+
+ moveNewHandle(
+ evt.detail,
+ this.name,
+ measurementData,
+ measurementData.handles.end,
+ this.options,
+ interactionType,
+ success => {
+ if (success) {
+ if (!allowEmptyLabel && measurementData.text === undefined) {
+ this.configuration.getTextCallback(text => {
+ if (text || allowEmptyLabel) {
+ measurementData.text = text
+ measurementData.active = false
+
+ const modifiedEventData = {
+ toolName: this.name,
+ toolType: this.name, // Deprecation notice: toolType will be replaced by toolName
+ element,
+ measurementData
+ }
+
+ external.cornerstone.updateImage(element)
+ triggerEvent(
+ element,
+ EVENTS.MEASUREMENT_COMPLETED,
+ modifiedEventData
+ )
+ } else {
+ removeToolState(element, this.name, measurementData)
+ }
+ }, evt.detail)
+ }
+ } else {
+ removeToolState(element, this.name, measurementData)
+ }
+ triggerEvent(element, EVENTS.MEASUREMENT_COMPLETED, {
+ toolName: this.name,
+ toolType: this.name, // Deprecation notice: toolType will be replaced by toolName
+ element,
+ measurementData
+ })
+ external.cornerstone.updateImage(element)
+ }
+ )
+ }
+
+ doubleClickCallback(evt) {
+ return this._updateTextForNearbyAnnotation(evt)
+ }
+
+ touchPressCallback(evt) {
+ return this._updateTextForNearbyAnnotation(evt)
+ }
+
+ _updateTextForNearbyAnnotation(evt) {
+ const element = evt.detail.element
+ const coords = evt.detail.currentPoints.canvas
+ const toolState = getToolState(element, this.name)
+
+ if (!toolState) {
+ return false
+ }
+
+ for (let i = 0; i < toolState.data.length; i++) {
+ const data = toolState.data[i]
+
+ if (
+ this.pointNearTool(element, data, coords) ||
+ pointInsideBoundingBox(data.handles.textBox, coords)
+ ) {
+ data.active = true
+ external.cornerstone.updateImage(element)
+
+ // Allow relabelling via a callback
+ this.configuration.changeTextCallback(
+ data,
+ evt.detail,
+ this._doneChangingTextCallback.bind(this, element, data)
+ )
+
+ evt.stopImmediatePropagation()
+ evt.preventDefault()
+ evt.stopPropagation()
+
+ return true
+ }
+ }
+ }
+
+ _doneChangingTextCallback(element, measurementData, updatedText, deleteTool) {
+ if (deleteTool === true) {
+ removeToolState(element, this.name, measurementData)
+ } else {
+ measurementData.text = updatedText
+ }
+
+ measurementData.active = false
+ external.cornerstone.updateImage(element)
+
+ triggerEvent(element, EVENTS.MEASUREMENT_MODIFIED, {
+ toolName: this.name,
+ toolType: this.name, // Deprecation notice: toolType will be replaced by toolName
+ element,
+ measurementData
+ })
+ }
+}
+
+function getTextCallback(doneChangingTextCallback) {
+ doneChangingTextCallback(prompt('Enter your annotation:'))
+}
+
+function changeTextCallback(data, eventData, doneChangingTextCallback) {
+ doneChangingTextCallback(prompt('Change your annotation:'))
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/BidirectionalTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/BidirectionalTool.js
new file mode 100644
index 0000000..1b00c13
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/BidirectionalTool.js
@@ -0,0 +1,49 @@
+import * as cornerstoneTools from 'cornerstone-tools'
+
+import renderToolData from './renderToolData'
+// import getPixelSpacing from './getPixelSpacing'
+import calculateLongestAndShortestDiameters from './calculateLongestAndShortestDiameters'
+const throttle = cornerstoneTools.import('util/throttle')
+import createNewMeasurement from './createNewMeasurement'
+/**
+ * @public
+ * @class BidirectionalTool
+ * @memberof Tools.Annotation
+ * @classdesc Create and position an annotation that measures the
+ * length and width of a region.
+ * @extends Tools.Base.BaseAnnotationTool
+ */
+
+export default class BidirectionalTool extends cornerstoneTools.BidirectionalTool {
+ constructor(props) {
+ const defaultProps = {
+ name: 'Bidirectional',
+ configuration: {
+ drawHandles: false
+ }
+ }
+
+ super(props, defaultProps)
+ this.throttledUpdateCachedStats = throttle(this.updateCachedStats, 50)
+ this.digits = isNaN(parseInt(props.configuration.digits)) ? 2 : props.configuration.digits
+ this.createNewMeasurement = createNewMeasurement.bind(this)
+ this.renderToolData = renderToolData.bind(this)
+ }
+
+ updateCachedStats(image, element, data) {
+ // Prevent updating other tools' data
+ if (data.toolName !== this.name) {
+ return
+ }
+ // const pixelSpacing = getPixelSpacing(image)
+ const {
+ longestDiameter,
+ shortestDiameter
+ } = calculateLongestAndShortestDiameters(data, image, this.digits)
+
+ // Set measurement text to show lesion table
+ data.longestDiameter = longestDiameter
+ data.shortestDiameter = shortestDiameter
+ data.invalidated = false
+ }
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/calculateLongestAndShortestDiameters.js b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/calculateLongestAndShortestDiameters.js
new file mode 100644
index 0000000..a530b88
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/calculateLongestAndShortestDiameters.js
@@ -0,0 +1,52 @@
+import getPixelSpacing from './getPixelSpacing'
+/**
+ * Calculates longest and shortest diameters using measurement handles and pixelSpacing
+ * @param {Object} measurementData
+ * @param {Object} pixelSpacing pixelSpacing
+ *
+ *@returns {Object} longestDiameter and shortestDiameter
+ */
+export default function calculateLongestAndShortestDiameters(
+ measurementData,
+ image,
+ digits = 1
+) {
+ const pixelSpacing = getPixelSpacing(image)
+ const { rowPixelSpacing, colPixelSpacing } = pixelSpacing
+ const {
+ start,
+ end,
+ perpendicularStart,
+ perpendicularEnd
+ } = measurementData.handles
+
+ // Calculate the long axis length
+ const dx = (start.x - end.x) * (colPixelSpacing || 1)
+ const dy = (start.y - end.y) * (rowPixelSpacing || 1)
+ let length = Math.sqrt(dx * dx + dy * dy)
+
+ // Calculate the short axis length
+ const wx =
+ (perpendicularStart.x - perpendicularEnd.x) * (colPixelSpacing || 1)
+ const wy =
+ (perpendicularStart.y - perpendicularEnd.y) * (rowPixelSpacing || 1)
+ let width = Math.sqrt(wx * wx + wy * wy)
+
+ if (!width) {
+ width = 0
+ }
+
+ // Length is always longer than width
+ if (width > length) {
+ const tempW = width
+ const tempL = length
+
+ length = tempW
+ width = tempL
+ }
+
+ return {
+ longestDiameter: length.toFixed(digits),
+ shortestDiameter: width.toFixed(digits)
+ }
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/createNewMeasurement.js b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/createNewMeasurement.js
new file mode 100644
index 0000000..62c0dae
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/createNewMeasurement.js
@@ -0,0 +1,45 @@
+const getHandle = (x, y, index, extraAttributes = {}) =>
+ Object.assign(
+ {
+ x,
+ y,
+ index,
+ drawnIndependently: false,
+ allowedOutsideImage: false,
+ highlight: true,
+ active: false
+ },
+ extraAttributes
+ )
+
+export default function(mouseEventData) {
+ const { x, y } = mouseEventData.currentPoints.image
+ // Create the measurement data for this tool with the end handle activated
+ const measurementData = {
+ toolName: this.name,
+ toolType: this.name, // Deprecation notice: toolType will be replaced by toolName
+ isCreating: true,
+ visible: true,
+ active: true,
+ invalidated: true,
+ handles: {
+ start: getHandle(x, y, 0),
+ end: getHandle(x, y, 1, { active: true }),
+ perpendicularStart: getHandle(x, y, 2, { locked: true }),
+ perpendicularEnd: getHandle(x, y, 3),
+ textBox: getHandle(x - 35, y - 55, null, {
+ highlight: false,
+ hasMoved: true,
+ active: false,
+ movesIndependently: false,
+ drawnIndependently: true,
+ allowedOutsideImage: true,
+ hasBoundingBox: true
+ })
+ },
+ longestDiameter: 0,
+ shortestDiameter: 0
+ }
+
+ return measurementData
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/getLineVector.js b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/getLineVector.js
new file mode 100644
index 0000000..4824fbf
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/getLineVector.js
@@ -0,0 +1,28 @@
+/**
+ * Return the Vector of a line which determines its inclination and length
+ *
+ * @param {number} columnPixelSpacing Width that a pixel represents in mm
+ * @param {number} rowPixelSpacing Height that a pixel represents in mm
+ * @param {*} startPoint Start point of the line
+ * @param {*} endPoint End point of the line
+ *
+ * @returns {*} Resulting line inclination vector
+ */
+export default function getLineVector(
+ columnPixelSpacing,
+ rowPixelSpacing,
+ startPoint,
+ endPoint
+) {
+ const dx = (startPoint.x - endPoint.x) * columnPixelSpacing
+ const dy = (startPoint.y - endPoint.y) * rowPixelSpacing
+ const length = Math.sqrt(dx * dx + dy * dy)
+ const vectorX = dx / length
+ const vectorY = dy / length
+
+ return {
+ x: vectorX,
+ y: vectorY,
+ length
+ }
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/getPixelSpacing.js b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/getPixelSpacing.js
new file mode 100644
index 0000000..dfa2a4b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/getPixelSpacing.js
@@ -0,0 +1,23 @@
+import * as cornerstoneTools from 'cornerstone-tools'
+const external = cornerstoneTools.external
+
+export default function getPixelSpacing(image) {
+ const imagePlane = external.cornerstone.metaData.get(
+ 'imagePlaneModule',
+ image.imageId
+ )
+
+ if (imagePlane) {
+ return {
+ rowPixelSpacing:
+ imagePlane.rowPixelSpacing || imagePlane.rowImagePixelSpacing,
+ colPixelSpacing:
+ imagePlane.columnPixelSpacing || imagePlane.colImagePixelSpacing
+ }
+ }
+
+ return {
+ rowPixelSpacing: image.rowPixelSpacing,
+ colPixelSpacing: image.columnPixelSpacing
+ }
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/renderToolData.js b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/renderToolData.js
new file mode 100644
index 0000000..5bbe558
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/renderToolData.js
@@ -0,0 +1,168 @@
+/* eslint no-loop-func: 0 */ // --> OFF
+import * as cornerstoneTools from 'cornerstone-tools'
+const getPixelSpacing = cornerstoneTools.import('util/getPixelSpacing')
+import updatePerpendicularLineHandles from './updatePerpendicularLineHandles'
+const getModule = cornerstoneTools.getModule
+const getToolState = cornerstoneTools.getToolState
+const toolStyle = cornerstoneTools.toolStyle
+const toolColors = cornerstoneTools.toolColors
+const getNewContext = cornerstoneTools.import('drawing/getNewContext')
+const draw = cornerstoneTools.import('drawing/draw')
+const setShadow = cornerstoneTools.import('drawing/setShadow')
+const drawLine = cornerstoneTools.import('drawing/drawLine')
+const drawLinkedTextBox = cornerstoneTools.import('drawing/drawLinkedTextBox')
+const drawHandles = cornerstoneTools.import('drawing/drawHandles')
+
+export default function(evt) {
+ const eventData = evt.detail
+ const { element, canvasContext, image } = eventData
+ const {
+ handleRadius,
+ drawHandlesOnHover,
+ hideHandlesIfMoving,
+ renderDashed
+ } = this.configuration
+
+ const lineDash = getModule('globalConfiguration').configuration.lineDash
+
+ // If we have no toolData for this element, return immediately as there is nothing to do
+ const toolData = getToolState(element, this.name)
+
+ if (!toolData) {
+ return
+ }
+
+ const { rowPixelSpacing, colPixelSpacing } = getPixelSpacing(image)
+
+ // LT-29 Disable Target Measurements when pixel spacing is not available
+ if (!rowPixelSpacing || !colPixelSpacing) {
+ return
+ }
+
+ // We have tool data for this element - iterate over each one and draw it
+ const context = getNewContext(canvasContext.canvas)
+
+ let color
+ const lineWidth = toolStyle.getToolWidth()
+
+ for (let i = 0; i < toolData.data.length; i++) {
+ const data = toolData.data[i]
+
+ if (data.visible === false) {
+ continue
+ }
+
+ color = toolColors.getColorIfActive(data)
+
+ // Calculate the data measurements
+ if (data.invalidated === true) {
+ if (data.longestDiameter && data.shortestDiameter) {
+ this.throttledUpdateCachedStats(image, element, data)
+ } else {
+ this.updateCachedStats(image, element, data)
+ }
+ }
+
+ draw(context, context => {
+ // Configurable shadow
+ setShadow(context, this.configuration)
+
+ const {
+ start,
+ end,
+ perpendicularStart,
+ perpendicularEnd,
+ textBox
+ } = data.handles
+
+ const lineOptions = { color }
+ const perpendicularLineOptions = { color, strokeWidth }
+
+ if (renderDashed) {
+ lineOptions.lineDash = lineDash
+ perpendicularLineOptions.lineDash = lineDash
+ }
+
+ // Draw the measurement line
+ drawLine(context, element, start, end, lineOptions)
+
+ // Draw perpendicular line
+ const strokeWidth = lineWidth
+
+ updatePerpendicularLineHandles(eventData, data)
+
+ drawLine(
+ context,
+ element,
+ perpendicularStart,
+ perpendicularEnd,
+ perpendicularLineOptions
+ )
+
+ // Draw the handles
+ const handleOptions = {
+ color,
+ handleRadius,
+ drawHandlesIfActive: drawHandlesOnHover,
+ hideHandlesIfMoving
+ }
+
+ // Draw the handles
+ if (this.configuration.drawHandles) {
+ drawHandles(context, eventData, data.handles, handleOptions)
+ }
+
+ // Draw the textbox
+ // Move the textbox slightly to the right and upwards
+ // So that it sits beside the length tool handle
+ const xOffset = 10
+ const textBoxAnchorPoints = handles => [
+ handles.start,
+ handles.end,
+ handles.perpendicularStart,
+ handles.perpendicularEnd
+ ]
+
+ const textLines = getTextBoxText(data, rowPixelSpacing, colPixelSpacing)
+ if (data.hasOwnProperty('remark')) {
+ if (data.hasOwnProperty('status') && data.status) {
+ textLines.unshift(`${data.remark}(${data.status})`)
+ } else {
+ textLines.unshift(data.remark)
+ }
+ }
+
+ drawLinkedTextBox(
+ context,
+ element,
+ textBox,
+ textLines,
+ data.handles,
+ textBoxAnchorPoints,
+ color,
+ lineWidth,
+ xOffset,
+ true
+ )
+ })
+ }
+}
+
+const getTextBoxText = (data, rowPixelSpacing, colPixelSpacing) => {
+ let suffix = ' mm'
+
+ if (!rowPixelSpacing || !colPixelSpacing) {
+ suffix = ' pixels'
+ }
+
+ const lengthText = ` L ${data.longestDiameter}${suffix}`
+ const widthText = ` W ${data.shortestDiameter}${suffix}`
+
+ const { labels } = data
+
+ if (labels && Array.isArray(labels)) {
+ return [...labels, lengthText, widthText]
+ }
+
+ return [lengthText, widthText]
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/updatePerpendicularLineHandles.js b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/updatePerpendicularLineHandles.js
new file mode 100644
index 0000000..c805eb7
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Bidirectional/updatePerpendicularLineHandles.js
@@ -0,0 +1,62 @@
+import getLineVector from './getLineVector'
+
+/**
+ * Update the perpendicular line handles when the measurement is being created.
+ * This method will make the perpendicular line intersect in the middle of the
+ * long line and assume half the size of the long line.
+ *
+ * @param {*} eventData Data object associated with the event
+ * @param {*} measurementData Data from current bidirectional tool measurement
+ *
+ * @returns {boolean} False in case the handle is not locked or true when moved
+ */
+export default function updatePerpendicularLineHandles(
+ eventData,
+ measurementData
+) {
+ if (!measurementData.handles.perpendicularStart.locked) {
+ return false
+ }
+
+ let startX, startY, endX, endY
+
+ const { start, end } = measurementData.handles
+ const { columnPixelSpacing = 1, rowPixelSpacing = 1 } = eventData.image
+
+ if (start.x === end.x && start.y === end.y) {
+ startX = start.x
+ startY = start.y
+ endX = end.x
+ endY = end.y
+ } else {
+ // Mid point of long-axis line
+ const mid = {
+ x: (start.x + end.x) / 2,
+ y: (start.y + end.y) / 2
+ }
+
+ // Inclination of the perpendicular line
+ const vector = getLineVector(
+ columnPixelSpacing,
+ rowPixelSpacing,
+ start,
+ end
+ )
+
+ const perpendicularLineLength = vector.length / 2
+ const rowMultiplier = perpendicularLineLength / (2 * rowPixelSpacing)
+ const columnMultiplier = perpendicularLineLength / (2 * columnPixelSpacing)
+
+ startX = mid.x + columnMultiplier * vector.y
+ startY = mid.y - rowMultiplier * vector.x
+ endX = mid.x - columnMultiplier * vector.y
+ endY = mid.y + rowMultiplier * vector.x
+ }
+
+ measurementData.handles.perpendicularStart.x = startX
+ measurementData.handles.perpendicularStart.y = startY
+ measurementData.handles.perpendicularEnd.x = endX
+ measurementData.handles.perpendicularEnd.y = endY
+
+ return true
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/Length/LengthTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/Length/LengthTool.js
new file mode 100644
index 0000000..a34a2aa
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/Length/LengthTool.js
@@ -0,0 +1,302 @@
+import * as cornerstoneTools from 'cornerstone-tools'
+// State
+const getToolState = cornerstoneTools.getToolState
+const toolStyle = cornerstoneTools.toolStyle
+const toolColors = cornerstoneTools.toolColors
+
+// Drawing
+const getNewContext = cornerstoneTools.import('drawing/getNewContext')
+const draw = cornerstoneTools.import('drawing/draw')
+const setShadow = cornerstoneTools.import('drawing/setShadow')
+const drawLine = cornerstoneTools.import('drawing/drawLine')
+const drawLinkedTextBox = cornerstoneTools.import('drawing/drawLinkedTextBox')
+const drawHandles = cornerstoneTools.import('drawing/drawHandles')
+
+// util
+const lineSegDistance = cornerstoneTools.import('util/lineSegDistance')
+const lengthCursor = cornerstoneTools.import('tools/cursors')
+const getPixelSpacing = cornerstoneTools.import('util/getPixelSpacing')
+const throttle = cornerstoneTools.import('util/throttle')
+const getModule = cornerstoneTools.getModule
+
+/**
+ * @public
+ * @class LengthTool
+ * @memberof Tools.Annotation
+ * @classdesc Tool for measuring distances.
+ * @extends Tools.Base.BaseAnnotationTool
+ */
+export default class LengthTool extends cornerstoneTools.LengthTool {
+ constructor(props = {}) {
+ const defaultProps = {
+ name: 'Length',
+ supportedInteractionTypes: ['Mouse', 'Touch'],
+ svgCursor: lengthCursor,
+ configuration: {
+ drawHandles: true,
+ drawHandlesOnHover: false,
+ hideHandlesIfMoving: false,
+ renderDashed: false,
+ digits: 2
+ }
+ }
+
+ super(props, defaultProps)
+
+ this.throttledUpdateCachedStats = throttle(this.updateCachedStats, 50)
+ }
+ createNewMeasurement(eventData) {
+ const goodEventData =
+ eventData && eventData.currentPoints && eventData.currentPoints.image
+
+ if (!goodEventData) {
+ console.log(
+ `required eventData not supplied to tool ${this.name}'s createNewMeasurement`
+ )
+
+ return
+ }
+
+ const { x, y } = eventData.currentPoints.image
+
+ return {
+ visible: true,
+ active: true,
+ color: undefined,
+ invalidated: true,
+ handles: {
+ start: {
+ x,
+ y,
+ highlight: true,
+ active: false
+ },
+ end: {
+ x,
+ y,
+ highlight: true,
+ active: true
+ },
+ textBox: {
+ active: false,
+ hasMoved: false,
+ movesIndependently: false,
+ drawnIndependently: true,
+ allowedOutsideImage: true,
+ hasBoundingBox: true
+ }
+ }
+ }
+ }
+
+ /**
+ *
+ *
+ * @param {*} element
+ * @param {*} data
+ * @param {*} coords
+ * @returns {Boolean}
+ */
+ pointNearTool(element, data, coords) {
+ const hasStartAndEndHandles =
+ data && data.handles && data.handles.start && data.handles.end
+ const validParameters = hasStartAndEndHandles
+
+ if (!validParameters) {
+ console.log(
+ `invalid parameters supplied to tool ${this.name}'s pointNearTool`
+ )
+
+ return false
+ }
+ if (data.visible === false) {
+ return false
+ }
+
+ return (
+ lineSegDistance(element, data.handles.start, data.handles.end, coords) <
+ 25
+ )
+ }
+
+ updateCachedStats(image, element, data) {
+ const {
+ digits
+ } = this.configuration
+ const { rowPixelSpacing, colPixelSpacing } = getPixelSpacing(image)
+
+ // Set rowPixelSpacing and columnPixelSpacing to 1 if they are undefined (or zero)
+ const dx =
+ (data.handles.end.x - data.handles.start.x) * (colPixelSpacing || 1)
+ const dy =
+ (data.handles.end.y - data.handles.start.y) * (rowPixelSpacing || 1)
+
+ // Calculate the length, and create the text variable with the millimeters or pixels suffix
+ const length = Math.sqrt(dx * dx + dy * dy)
+
+ // Store the length inside the tool for outside access
+ data.length = length.toFixed(digits)
+ data.invalidated = false
+ }
+
+ renderToolData(evt) {
+ const eventData = evt.detail
+ const {
+ handleRadius,
+ drawHandlesOnHover,
+ hideHandlesIfMoving,
+ renderDashed,
+ digits
+ } = this.configuration
+ const toolData = getToolState(evt.currentTarget, this.name)
+ if (!toolData) {
+ return
+ }
+
+ // We have tool data for this element - iterate over each one and draw it
+ const context = getNewContext(eventData.canvasContext.canvas)
+ const { image, element } = eventData
+ const { rowPixelSpacing, colPixelSpacing } = getPixelSpacing(image)
+
+ const lineWidth = toolStyle.getToolWidth()
+ const lineDash = getModule('globalConfiguration').configuration.lineDash
+
+ for (let i = 0; i < toolData.data.length; i++) {
+ const data = toolData.data[i]
+
+ if (data.visible === false) {
+ continue
+ }
+
+ draw(context, context => {
+ // Configurable shadow
+ setShadow(context, this.configuration)
+
+ const color = toolColors.getColorIfActive(data)
+
+ const lineOptions = { color }
+
+ if (renderDashed) {
+ lineOptions.lineDash = lineDash
+ }
+
+ // Draw the measurement line
+ drawLine(
+ context,
+ element,
+ data.handles.start,
+ data.handles.end,
+ lineOptions
+ )
+
+ // Draw the handles
+ const handleOptions = {
+ color,
+ handleRadius,
+ drawHandlesIfActive: drawHandlesOnHover,
+ hideHandlesIfMoving
+ }
+
+ if (this.configuration.drawHandles) {
+ drawHandles(context, eventData, data.handles, handleOptions)
+ }
+
+ if (!data.handles.textBox.hasMoved) {
+ const coords = {
+ x: Math.max(data.handles.start.x, data.handles.end.x)
+ }
+
+ // Depending on which handle has the largest x-value,
+ // Set the y-value for the text box
+ if (coords.x === data.handles.start.x) {
+ coords.y = data.handles.start.y
+ } else {
+ coords.y = data.handles.end.y
+ }
+
+ data.handles.textBox.x = coords.x
+ data.handles.textBox.y = coords.y
+ }
+
+ // Move the textbox slightly to the right and upwards
+ // So that it sits beside the length tool handle
+ const xOffset = 10
+
+ // Update textbox stats
+ if (data.invalidated === true) {
+ if (data.length) {
+ this.throttledUpdateCachedStats(image, element, data)
+ } else {
+ this.updateCachedStats(image, element, data)
+ }
+ }
+ const text = []
+ if (data.hasOwnProperty('remark')) {
+ if (data.hasOwnProperty('status') && data.status) {
+ text.push(`${data.remark}(${data.status})`)
+ } else {
+ text.push(data.remark)
+ }
+ }
+
+ text.push(textBoxText(data, rowPixelSpacing, colPixelSpacing))
+ drawLinkedTextBox(
+ context,
+ element,
+ data.handles.textBox,
+ text,
+ data.handles,
+ textBoxAnchorPoints,
+ color,
+ lineWidth,
+ xOffset,
+ true
+ )
+ })
+ }
+
+ // - SideEffect: Updates annotation 'suffix'
+ function textBoxText(annotation, rowPixelSpacing, colPixelSpacing) {
+ const measuredValue = _sanitizeMeasuredValue(annotation.length)
+
+ // Measured value is not defined, return empty string
+ if (!measuredValue) {
+ return ''
+ }
+
+ // Set the length text suffix depending on whether or not pixelSpacing is available
+ let suffix = 'mm'
+
+ if (!rowPixelSpacing || !colPixelSpacing) {
+ suffix = 'pixels'
+ }
+
+ annotation.unit = suffix
+
+ return `${measuredValue.toFixed(digits)} ${suffix}`
+ }
+
+ function textBoxAnchorPoints(handles) {
+ const midpoint = {
+ x: (handles.start.x + handles.end.x) / 2,
+ y: (handles.start.y + handles.end.y) / 2
+ }
+
+ return [handles.start, midpoint, handles.end]
+ }
+ }
+}
+
+/**
+ * Attempts to sanitize a value by casting as a number; if unable to cast,
+ * we return `undefined`
+ *
+ * @param {*} value
+ * @returns a number or undefined
+ */
+function _sanitizeMeasuredValue(value) {
+ const parsedValue = Number(value)
+ const isNumber = !isNaN(parsedValue)
+
+ return isNumber ? parsedValue : undefined
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/OrientationMarkersTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/OrientationMarkersTool.js
new file mode 100644
index 0000000..38759b6
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/OrientationMarkersTool.js
@@ -0,0 +1,162 @@
+import * as cornerstoneTools from 'cornerstone-tools'
+const external = cornerstoneTools.external
+import getOrientationString from './getOrientationString'
+import invertOrientationString from './invertOrientationString'
+// const getOrientationString = cornerstoneTools.import('orientation/getOrientationString')
+// const invertOrientationString = cornerstoneTools.import('orientation/invertOrientationString')
+const getNewContext = cornerstoneTools.import('drawing/getNewContext')
+const drawTextBox = cornerstoneTools.import('drawing/drawTextBox')
+const textBoxWidth = cornerstoneTools.import('drawing/textBoxWidth')
+const toolColors = cornerstoneTools.toolColors
+
+/**
+ * @public
+ * @class OrientationMarkersTool
+ * @memberof Tools
+ *
+ * @classdesc Tool for displaying orientation markers on the image.
+ * @extends Tools.Base.BaseTool
+ */
+export default class OrientationMarkersTool extends cornerstoneTools.OrientationMarkersTool {
+ constructor(props = {}) {
+ const defaultProps = {
+ name: 'OrientationMarkers',
+ configuration: {
+ drawAllMarkers: true
+ },
+ mixins: ['enabledOrDisabledBinaryTool']
+ }
+
+ super(props, defaultProps)
+ }
+
+ enabledCallback(element) {
+ this.forceImageUpdate(element)
+ }
+
+ disabledCallback(element) {
+ this.forceImageUpdate(element)
+ }
+
+ forceImageUpdate(element) {
+ const cornerstone = external.cornerstone
+ const enabledElement = cornerstone.getEnabledElement(element)
+
+ if (enabledElement.image) {
+ cornerstone.updateImage(element)
+ }
+ }
+
+ renderToolData(evt) {
+ const eventData = evt.detail
+ const context = getNewContext(eventData.canvasContext.canvas)
+ const element = eventData.element
+ const markers = getOrientationMarkers(element)
+
+ if (!markers) {
+ return
+ }
+
+ const coords = getOrientationMarkerPositions(element, markers)
+
+ const color = toolColors.getToolColor()
+
+ const textWidths = {
+ top: textBoxWidth(context, markers.top, 0),
+ left: textBoxWidth(context, markers.left, 0),
+ right: textBoxWidth(context, markers.right, 0),
+ bottom: textBoxWidth(context, markers.bottom, 0),
+ height: textBoxWidth(context, 'M', 0) // Trick to get an approximation of the height of the text
+ }
+
+ drawTopLeftText(context, markers, coords, textWidths, color)
+ if (this.configuration.drawAllMarkers) {
+ drawBottomRightText(context, markers, coords, textWidths, color)
+ }
+ }
+}
+
+const drawTopLeftText = (context, markers, coords, textWidths, color) => {
+ drawTextBox(
+ context,
+ markers.top,
+ coords.top.x - textWidths.top / 2,
+ coords.top.y,
+ color
+ )
+ drawTextBox(
+ context,
+ markers.left,
+ coords.left.x - textWidths.left / 2,
+ coords.left.y,
+ color
+ )
+}
+
+const drawBottomRightText = (context, markers, coords, textWidths, color) => {
+ drawTextBox(
+ context,
+ markers.right,
+ coords.right.x - textWidths.right,
+ coords.right.y,
+ color
+ )
+ drawTextBox(
+ context,
+ markers.bottom,
+ coords.bottom.x - textWidths.bottom / 2,
+ coords.bottom.y - textWidths.height,
+ color
+ )
+}
+
+const getOrientationMarkers = element => {
+ const cornerstone = external.cornerstone
+ const enabledElement = cornerstone.getEnabledElement(element)
+ const imagePlane = cornerstone.metaData.get(
+ 'imagePlaneModule',
+ enabledElement.image.imageId
+ )
+
+ if (!imagePlane || !imagePlane.rowCosines || !imagePlane.columnCosines) {
+ return
+ }
+ const row = getOrientationString(imagePlane.rowCosines)
+ const column = getOrientationString(imagePlane.columnCosines)
+ const oppositeRow = invertOrientationString(row)
+ const oppositeColumn = invertOrientationString(column)
+
+ return {
+ top: oppositeColumn,
+ bottom: column,
+ left: oppositeRow,
+ right: row
+ }
+}
+
+const getOrientationMarkerPositions = element => {
+ const enabledElement = external.cornerstone.getEnabledElement(element)
+ const top = external.cornerstone.pixelToCanvas(element, {
+ x: enabledElement.image.width / 2,
+ y: 5
+ })
+ const bottom = external.cornerstone.pixelToCanvas(element, {
+ x: enabledElement.image.width / 2,
+ y: enabledElement.image.height - 15
+ })
+ const left = external.cornerstone.pixelToCanvas(element, {
+ x: 5,
+ y: enabledElement.image.height / 2
+ })
+ const right = external.cornerstone.pixelToCanvas(element, {
+ x: enabledElement.image.width - 10,
+ y: enabledElement.image.height / 2
+ })
+
+ return {
+ top,
+ bottom,
+ left,
+ right
+ }
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/getOrientationString.js b/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/getOrientationString.js
new file mode 100644
index 0000000..f7b2bbb
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/getOrientationString.js
@@ -0,0 +1,62 @@
+import * as cornerstoneTools from 'cornerstone-tools'
+const external = cornerstoneTools.external
+const convertToVector3 = cornerstoneTools.import('util/convertToVector3')
+// import convertToVector3 from '../util/convertToVector3.js';
+
+/**
+ * Returns the orientation of the vector in the patient coordinate system.
+ * @public
+ * @function getOrientationString
+ *
+ * @param {Array|cornerstoneMath.Vector3} vector Input array or Vector3
+ * @returns {string} The orientation in the patient coordinate system.
+ */
+export default function(vector) {
+ const vec3 = convertToVector3(vector)
+
+ // Thanks to David Clunie
+ // https://sites.google.com/site/dicomnotes/
+
+ let orientation = ''
+ const orientationX = vec3.x < 0 ? 'R' : 'L'
+ const orientationY = vec3.y < 0 ? 'A' : 'P'
+ const orientationZ = vec3.z < 0 ? 'F' : 'H'
+
+ // Should probably make this a function vector3.abs
+ const abs = new external.cornerstoneMath.Vector3(
+ Math.abs(vec3.x),
+ Math.abs(vec3.y),
+ Math.abs(vec3.z)
+ )
+
+ const MIN = 0.0001
+
+ for (let i = 0; i < 3; i++) {
+ if (abs.x > MIN && abs.x > abs.y && abs.x > abs.z) {
+ orientation += orientationX
+ abs.x = 0
+ } else if (abs.y > MIN && abs.y > abs.x && abs.y > abs.z) {
+ orientation += orientationY
+ abs.y = 0
+ } else if (abs.z > MIN && abs.z > abs.x && abs.z > abs.y) {
+ orientation += orientationZ
+ abs.z = 0
+ } else if (abs.x > MIN && abs.y > MIN && abs.x === abs.y) {
+ orientation += orientationX + orientationY
+ abs.x = 0
+ abs.y = 0
+ } else if (abs.x > MIN && abs.z > MIN && abs.x === abs.z) {
+ orientation += orientationX + orientationZ
+ abs.x = 0
+ abs.z = 0
+ } else if (abs.y > MIN && abs.z > MIN && abs.y === abs.z) {
+ orientation += orientationY + orientationZ
+ abs.y = 0
+ abs.z = 0
+ } else {
+ break
+ }
+ }
+
+ return orientation
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/invertOrientationString.js b/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/invertOrientationString.js
new file mode 100644
index 0000000..989e3d7
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/OrientationMarkers/invertOrientationString.js
@@ -0,0 +1,20 @@
+/**
+ * Inverts an orientation string.
+ * @public
+ * @function invertOrientationString
+ *
+ * @param {string} orientationString The orientation.
+ * @returns {string} The inverted orientationString.
+ */
+export default function(orientationString) {
+ let inverted = orientationString.replace('H', 'f')
+
+ inverted = inverted.replace('F', 'h')
+ inverted = inverted.replace('R', 'l')
+ inverted = inverted.replace('L', 'r')
+ inverted = inverted.replace('A', 'p')
+ inverted = inverted.replace('P', 'a')
+ inverted = inverted.toUpperCase()
+
+ return inverted
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool.js
new file mode 100644
index 0000000..5e1fd72
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/RectangleRoi/RectangleRoiTool.js
@@ -0,0 +1,548 @@
+import * as cornerstoneTools from 'cornerstone-tools'
+const external = cornerstoneTools.external
+
+// State
+const getToolState = cornerstoneTools.getToolState
+const toolStyle = cornerstoneTools.toolStyle
+const toolColors = cornerstoneTools.toolColors
+
+// Drawing
+const getNewContext = cornerstoneTools.import('drawing/getNewContext')
+const draw = cornerstoneTools.import('drawing/draw')
+const drawHandles = cornerstoneTools.import('drawing/drawHandles')
+const drawRect = cornerstoneTools.import('drawing/drawRect')
+const drawLinkedTextBox = cornerstoneTools.import('drawing/drawLinkedTextBox')
+const setShadow = cornerstoneTools.import('drawing/setShadow')
+
+// Util
+const calculateSUV = cornerstoneTools.import('util/calculateSUV')
+const getROITextBoxCoords = cornerstoneTools.import('util/getROITextBoxCoords')
+const numbersWithCommas = cornerstoneTools.import('util/numbersWithCommas')
+const throttle = cornerstoneTools.import('util/throttle')
+const rectangleRoiCursor = cornerstoneTools.import('tools/cursors')
+const getPixelSpacing = cornerstoneTools.import('util/getPixelSpacing')
+const getModule = cornerstoneTools.getModule
+
+/**
+ * @public
+ * @class RectangleRoiTool
+ * @memberof Tools.Annotation
+ * @classdesc Tool for drawing rectangular regions of interest, and measuring
+ * the statistics of the enclosed pixels.
+ * @extends Tools.Base.BaseAnnotationTool
+ */
+export default class RectangleRoiTool extends cornerstoneTools.RectangleRoiTool {
+ constructor(props = {}) {
+ const defaultProps = {
+ name: 'RectangleRoi',
+ supportedInteractionTypes: ['Mouse', 'Touch'],
+ configuration: {
+ drawHandles: true,
+ drawHandlesOnHover: false,
+ hideHandlesIfMoving: false,
+ renderDashed: false
+ // showMinMax: false,
+ // showHounsfieldUnits: true
+ },
+ svgCursor: rectangleRoiCursor
+ }
+
+ super(props, defaultProps)
+
+ this.throttledUpdateCachedStats = throttle(this.updateCachedStats, 110)
+ }
+
+ createNewMeasurement(eventData) {
+ const goodEventData =
+ eventData && eventData.currentPoints && eventData.currentPoints.image
+
+ if (!goodEventData) {
+ console.log(
+ `required eventData not supplied to tool ${this.name}'s createNewMeasurement`
+ )
+
+ return
+ }
+
+ return {
+ visible: true,
+ active: true,
+ color: undefined,
+ invalidated: true,
+ handles: {
+ start: {
+ x: eventData.currentPoints.image.x,
+ y: eventData.currentPoints.image.y,
+ highlight: true,
+ active: false
+ },
+ end: {
+ x: eventData.currentPoints.image.x,
+ y: eventData.currentPoints.image.y,
+ highlight: true,
+ active: true
+ },
+ initialRotation: eventData.viewport.rotation,
+ textBox: {
+ active: false,
+ hasMoved: false,
+ movesIndependently: false,
+ drawnIndependently: true,
+ allowedOutsideImage: true,
+ hasBoundingBox: true
+ }
+ }
+ }
+ }
+
+ pointNearTool(element, data, coords, interactionType) {
+ const hasStartAndEndHandles =
+ data && data.handles && data.handles.start && data.handles.end
+ const validParameters = hasStartAndEndHandles
+
+ if (!validParameters) {
+ console.log(
+ `invalid parameters supplied to tool ${this.name}'s pointNearTool`
+ )
+ }
+
+ if (!validParameters || data.visible === false) {
+ return false
+ }
+
+ const distance = interactionType === 'mouse' ? 15 : 25
+ const startCanvas = external.cornerstone.pixelToCanvas(
+ element,
+ data.handles.start
+ )
+ const endCanvas = external.cornerstone.pixelToCanvas(
+ element,
+ data.handles.end
+ )
+
+ const rect = {
+ left: Math.min(startCanvas.x, endCanvas.x),
+ top: Math.min(startCanvas.y, endCanvas.y),
+ width: Math.abs(startCanvas.x - endCanvas.x),
+ height: Math.abs(startCanvas.y - endCanvas.y)
+ }
+
+ const distanceToPoint = external.cornerstoneMath.rect.distanceToPoint(
+ rect,
+ coords
+ )
+
+ return distanceToPoint < distance
+ }
+
+ updateCachedStats(image, element, data) {
+ const seriesModule =
+ external.cornerstone.metaData.get('generalSeriesModule', image.imageId) ||
+ {}
+ const modality = seriesModule.modality
+ const pixelSpacing = getPixelSpacing(image)
+
+ const stats = _calculateStats(
+ image,
+ element,
+ data.handles,
+ modality,
+ pixelSpacing
+ )
+
+ data.cachedStats = stats
+ data.invalidated = false
+ }
+
+ renderToolData(evt) {
+ const toolData = getToolState(evt.currentTarget, this.name)
+
+ if (!toolData) {
+ return
+ }
+
+ const eventData = evt.detail
+ const { image, element } = eventData
+ const lineWidth = toolStyle.getToolWidth()
+ const lineDash = getModule('globalConfiguration').configuration.lineDash
+ const {
+ handleRadius,
+ drawHandlesOnHover,
+ hideHandlesIfMoving,
+ renderDashed
+ } = this.configuration
+ const context = getNewContext(eventData.canvasContext.canvas)
+ const { rowPixelSpacing, colPixelSpacing } = getPixelSpacing(image)
+
+ // Meta
+ const seriesModule =
+ external.cornerstone.metaData.get('generalSeriesModule', image.imageId) ||
+ {}
+
+ // Pixel Spacing
+ const modality = seriesModule.modality
+ const hasPixelSpacing = rowPixelSpacing && colPixelSpacing
+
+ draw(context, context => {
+ // If we have tool data for this element - iterate over each set and draw it
+ for (let i = 0; i < toolData.data.length; i++) {
+ const data = toolData.data[i]
+
+ if (data.visible === false) {
+ continue
+ }
+
+ // Configure
+ const color = toolColors.getColorIfActive(data)
+ const handleOptions = {
+ color,
+ handleRadius,
+ drawHandlesIfActive: drawHandlesOnHover,
+ hideHandlesIfMoving
+ }
+
+ setShadow(context, this.configuration)
+
+ const rectOptions = { color }
+
+ if (renderDashed) {
+ rectOptions.lineDash = lineDash
+ }
+
+ // Draw
+ drawRect(
+ context,
+ element,
+ data.handles.start,
+ data.handles.end,
+ rectOptions,
+ 'pixel',
+ data.handles.initialRotation
+ )
+
+ if (this.configuration.drawHandles) {
+ drawHandles(context, eventData, data.handles, handleOptions)
+ }
+
+ // Update textbox stats
+ if (data.invalidated === true) {
+ if (data.cachedStats) {
+ this.throttledUpdateCachedStats(image, element, data)
+ } else {
+ this.updateCachedStats(image, element, data)
+ }
+ }
+
+ // Default to textbox on right side of ROI
+ if (!data.handles.textBox.hasMoved) {
+ const defaultCoords = getROITextBoxCoords(
+ eventData.viewport,
+ data.handles
+ )
+
+ Object.assign(data.handles.textBox, defaultCoords)
+ }
+
+ const textBoxAnchorPoints = handles =>
+ _findTextBoxAnchorPoints(handles.start, handles.end)
+ const textBoxContent = _createTextBoxContent(
+ context,
+ image.color,
+ data.cachedStats,
+ modality,
+ hasPixelSpacing,
+ this.configuration,
+ data
+ )
+
+ data.unit = _getUnit(modality, this.configuration.showHounsfieldUnits)
+
+ drawLinkedTextBox(
+ context,
+ element,
+ data.handles.textBox,
+ textBoxContent,
+ data.handles,
+ textBoxAnchorPoints,
+ color,
+ lineWidth,
+ 10,
+ true
+ )
+ }
+ })
+ }
+}
+
+/**
+ * TODO: This is the same method (+ GetPixels) for the other ROIs
+ * TODO: The pixel filtering is the unique bit
+ *
+ * @param {*} startHandle
+ * @param {*} endHandle
+ * @returns {{ left: number, top: number, width: number, height: number}}
+ */
+function _getRectangleImageCoordinates(startHandle, endHandle) {
+ return {
+ left: Math.min(startHandle.x, endHandle.x),
+ top: Math.min(startHandle.y, endHandle.y),
+ width: Math.abs(startHandle.x - endHandle.x),
+ height: Math.abs(startHandle.y - endHandle.y)
+ }
+}
+
+/**
+ *
+ *
+ * @param {*} image
+ * @param {*} element
+ * @param {*} handles
+ * @param {*} modality
+ * @param {*} pixelSpacing
+ * @returns {Object} The Stats object
+ */
+function _calculateStats(image, element, handles, modality, pixelSpacing) {
+ // Retrieve the bounds of the rectangle in image coordinates
+ const roiCoordinates = _getRectangleImageCoordinates(
+ handles.start,
+ handles.end
+ )
+
+ // Retrieve the array of pixels that the rectangle bounds cover
+ const pixels = external.cornerstone.getPixels(
+ element,
+ roiCoordinates.left,
+ roiCoordinates.top,
+ roiCoordinates.width,
+ roiCoordinates.height
+ )
+
+ // Calculate the mean & standard deviation from the pixels and the rectangle details
+ const roiMeanStdDev = _calculateRectangleStats(pixels, roiCoordinates)
+
+ let meanStdDevSUV
+
+ if (modality === 'PT') {
+ meanStdDevSUV = {
+ mean: calculateSUV(image, roiMeanStdDev.mean, true) || 0,
+ stdDev: calculateSUV(image, roiMeanStdDev.stdDev, true) || 0
+ }
+ }
+
+ // Calculate the image area from the rectangle dimensions and pixel spacing
+ const area =
+ roiCoordinates.width *
+ (pixelSpacing.colPixelSpacing || 1) *
+ (roiCoordinates.height * (pixelSpacing.rowPixelSpacing || 1))
+
+ const perimeter =
+ roiCoordinates.width * 2 * (pixelSpacing.colPixelSpacing || 1) +
+ roiCoordinates.height * 2 * (pixelSpacing.rowPixelSpacing || 1)
+
+ return {
+ area: area || 0,
+ perimeter,
+ count: roiMeanStdDev.count || 0,
+ mean: roiMeanStdDev.mean || 0,
+ variance: roiMeanStdDev.variance || 0,
+ stdDev: roiMeanStdDev.stdDev || 0,
+ min: roiMeanStdDev.min || 0,
+ max: roiMeanStdDev.max || 0,
+ meanStdDevSUV
+ }
+}
+
+/**
+ *
+ *
+ * @param {*} sp
+ * @param {*} rectangle
+ * @returns {{ count, number, mean: number, variance: number, stdDev: number, min: number, max: number }}
+ */
+function _calculateRectangleStats(sp, rectangle) {
+ let sum = 0
+ let sumSquared = 0
+ let count = 0
+ let index = 0
+ let min = sp ? sp[0] : null
+ let max = sp ? sp[0] : null
+
+ for (let y = rectangle.top; y < rectangle.top + rectangle.height; y++) {
+ for (let x = rectangle.left; x < rectangle.left + rectangle.width; x++) {
+ sum += sp[index]
+ sumSquared += sp[index] * sp[index]
+ min = Math.min(min, sp[index])
+ max = Math.max(max, sp[index])
+ count++ // TODO: Wouldn't this just be sp.length?
+ index++
+ }
+ }
+
+ if (count === 0) {
+ return {
+ count,
+ mean: 0.0,
+ variance: 0.0,
+ stdDev: 0.0,
+ min: 0.0,
+ max: 0.0
+ }
+ }
+
+ const mean = sum / count
+ const variance = sumSquared / count - mean * mean
+
+ return {
+ count,
+ mean,
+ variance,
+ stdDev: Math.sqrt(variance),
+ min,
+ max
+ }
+}
+
+/**
+ *
+ *
+ * @param {*} startHandle
+ * @param {*} endHandle
+ * @returns {Array.<{x: number, y: number}>}
+ */
+function _findTextBoxAnchorPoints(startHandle, endHandle) {
+ const { left, top, width, height } = _getRectangleImageCoordinates(
+ startHandle,
+ endHandle
+ )
+
+ return [
+ {
+ // Top middle point of rectangle
+ x: left + width / 2,
+ y: top
+ },
+ {
+ // Left middle point of rectangle
+ x: left,
+ y: top + height / 2
+ },
+ {
+ // Bottom middle point of rectangle
+ x: left + width / 2,
+ y: top + height
+ },
+ {
+ // Right middle point of rectangle
+ x: left + width,
+ y: top + height / 2
+ }
+ ]
+}
+
+/**
+ *
+ *
+ * @param {*} area
+ * @param {*} hasPixelSpacing
+ * @returns {string} The formatted label for showing area
+ */
+// function _formatArea(area, hasPixelSpacing) {
+// // This uses Char code 178 for a superscript 2
+// const suffix = hasPixelSpacing
+// ? ` mm${String.fromCharCode(178)}`
+// : ` px${String.fromCharCode(178)}`
+
+// return `Area: ${numbersWithCommas(area.toFixed(2))}${suffix}`
+// }
+
+function _getUnit(modality, showHounsfieldUnits) {
+ return modality === 'CT' && showHounsfieldUnits !== false ? 'HU' : ''
+}
+
+/**
+ * TODO: This is identical to EllipticalROI's same fn
+ * TODO: We may want to make this a utility for ROIs with these values?
+ *
+ * @param {*} context
+ * @param {*} isColorImage
+ * @param {*} { area, mean, stdDev, min, max, meanStdDevSUV }
+ * @param {*} modality
+ * @param {*} hasPixelSpacing
+ * @param {*} [options={}]
+ * @returns {string[]}
+ */
+function _createTextBoxContent(
+ context,
+ isColorImage,
+ { area, mean, stdDev, min, max, meanStdDevSUV },
+ modality,
+ hasPixelSpacing,
+ options = {},
+ data
+) {
+ const showMinMax = options.showMinMax || false
+ const textLines = []
+
+ const otherLines = []
+
+ if (!isColorImage) {
+ const hasStandardUptakeValues = meanStdDevSUV && meanStdDevSUV.mean !== 0
+ const unit = _getUnit(modality, options.showHounsfieldUnits)
+
+ let meanString = `Mean: ${numbersWithCommas(mean.toFixed(2))} ${unit}`
+ const stdDevString = `Std Dev: ${numbersWithCommas(
+ stdDev.toFixed(2)
+ )} ${unit}`
+
+ // If this image has SUV values to display, concatenate them to the text line
+ if (hasStandardUptakeValues) {
+ const SUVtext = ' SUV: '
+
+ const meanSuvString = `${SUVtext}${numbersWithCommas(
+ meanStdDevSUV.mean.toFixed(2)
+ )}`
+ const stdDevSuvString = `${SUVtext}${numbersWithCommas(
+ meanStdDevSUV.stdDev.toFixed(2)
+ )}`
+
+ const targetStringLength = Math.floor(
+ context.measureText(`${stdDevString} `).width
+ )
+
+ while (context.measureText(meanString).width < targetStringLength) {
+ meanString += ' '
+ }
+
+ otherLines.push(`${meanString}${meanSuvString}`)
+ otherLines.push(`${stdDevString} ${stdDevSuvString}`)
+ } else {
+ otherLines.push(`${meanString}`)
+ otherLines.push(`${stdDevString}`)
+ }
+
+ if (showMinMax) {
+ let minString = `Min: ${min} ${unit}`
+ const maxString = `Max: ${max} ${unit}`
+ const targetStringLength = hasStandardUptakeValues
+ ? Math.floor(context.measureText(`${stdDevString} `).width)
+ : Math.floor(context.measureText(`${meanString} `).width)
+
+ while (context.measureText(minString).width < targetStringLength) {
+ minString += ' '
+ }
+
+ otherLines.push(`${minString}${maxString}`)
+ }
+ }
+
+ // textLines.push(_formatArea(area, hasPixelSpacing))
+ // otherLines.forEach(x => textLines.push(x))
+ if (data.hasOwnProperty('remark')) {
+ if (data.hasOwnProperty('status') && data.status) {
+ textLines.push(`${data.remark}(${data.status})`)
+ } else {
+ textLines.push(data.remark)
+ }
+ }
+ return textLines
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/ScaleOverlay/ScaleOverlayTool.js b/src/views/trials/trials-panel/reading/dicoms/tools/ScaleOverlay/ScaleOverlayTool.js
new file mode 100644
index 0000000..d63521a
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/ScaleOverlay/ScaleOverlayTool.js
@@ -0,0 +1,313 @@
+
+import * as cornerstoneTools from 'cornerstone-tools'
+const external = cornerstoneTools.external
+// Drawing
+const getNewContext = cornerstoneTools.import('drawing/getNewContext')
+const draw = cornerstoneTools.import('drawing/draw')
+const setShadow = cornerstoneTools.import('drawing/setShadow')
+const drawLine = cornerstoneTools.import('drawing/drawLine')
+
+const toolStyle = cornerstoneTools.toolStyle
+// const toolColors = cornerstoneTools.toolColors
+const color = '#fff'
+
+/**
+ * @public
+ * @class ScaleOverlayTool
+ * @memberof Tools
+ *
+ * @classdesc Tool for displaying a scale overlay on the image.
+ * @extends Tools.Base.BaseTool
+ */
+export default class ScaleOverlayTool extends cornerstoneTools.ScaleOverlayTool {
+ constructor(props = {}) {
+ const defaultProps = {
+ name: 'ScaleOverlay',
+ configuration: {
+ minorTickLength: 5,
+ majorTickLength: 10
+ },
+ mixins: ['enabledOrDisabledBinaryTool']
+ }
+
+ super(props, defaultProps)
+ }
+
+ enabledCallback(element) {
+ this.forceImageUpdate(element)
+ }
+
+ disabledCallback(element) {
+ this.forceImageUpdate(element)
+ }
+
+ forceImageUpdate(element) {
+ const enabledElement = external.cornerstone.getEnabledElement(element)
+
+ if (enabledElement.image) {
+ external.cornerstone.updateImage(element)
+ }
+ }
+
+ renderToolData(evt) {
+ const eventData = evt.detail
+
+ const context = getNewContext(eventData.canvasContext.canvas)
+ const { image, viewport, element } = eventData
+
+ let rowPixelSpacing = image.rowPixelSpacing
+ let colPixelSpacing = image.columnPixelSpacing
+ const imagePlane = external.cornerstone.metaData.get(
+ 'imagePlaneModule',
+ image.imageId
+ )
+
+ if (imagePlane) {
+ rowPixelSpacing =
+ imagePlane.rowPixelSpacing || imagePlane.rowImagePixelSpacing
+ colPixelSpacing =
+ imagePlane.columnPixelSpacing || imagePlane.colImagePixelSpacing
+ }
+
+ // Check whether pixel spacing is defined
+ if (!rowPixelSpacing || !colPixelSpacing) {
+ // logger.warn(
+ // `unable to define rowPixelSpacing or colPixelSpacing from data on ${this.name}'s renderToolData`
+ // )
+
+ return
+ }
+
+ const canvasSize = {
+ width: context.canvas.width,
+ height: context.canvas.height
+ }
+
+ // Distance between intervals is 10mm
+ const verticalIntervalScale = (10.0 / rowPixelSpacing) * viewport.scale
+ const horizontalIntervalScale = (10.0 / colPixelSpacing) * viewport.scale
+ // 0.1 and 0.05 gives margin to horizontal and vertical lines
+ // const hscaleBounds = computeScaleBounds(canvasSize, 0.25, 0.05)
+ // const vscaleBounds = computeScaleBounds(canvasSize, 0.05, 0.15)
+ const hscaleBounds = computeScaleBounds(canvasSize, 0.4, 0.04)
+ const vscaleBounds = computeScaleBounds(canvasSize, 0.04, 0.4)
+
+ if (
+ !canvasSize.width ||
+ !canvasSize.height ||
+ !hscaleBounds ||
+ !vscaleBounds
+ ) {
+ return
+ }
+
+ // const color = toolColors.getToolColor()
+ const lineWidth = toolStyle.getToolWidth()
+
+ const imageAttributes = Object.assign(
+ {},
+ {
+ hscaleBounds,
+ vscaleBounds,
+ verticalMinorTick: verticalIntervalScale,
+ horizontalMinorTick: horizontalIntervalScale,
+ verticalLine: {
+ start: {
+ x: vscaleBounds.bottomRight.x,
+ y: vscaleBounds.topLeft.y
+ },
+ end: {
+ x: vscaleBounds.bottomRight.x,
+ y: vscaleBounds.bottomRight.y
+ }
+ },
+ horizontalLine: {
+ start: {
+ x: hscaleBounds.topLeft.x,
+ y: hscaleBounds.bottomRight.y
+ },
+ end: {
+ x: hscaleBounds.bottomRight.x,
+ y: hscaleBounds.bottomRight.y
+ }
+ },
+ color,
+ lineWidth
+ },
+ this.configuration
+ )
+
+ draw(context, context => {
+ setShadow(context, imageAttributes)
+
+ // Draw vertical line
+ drawLine(
+ context,
+ element,
+ imageAttributes.verticalLine.start,
+ imageAttributes.verticalLine.end,
+ {
+ color: imageAttributes.color,
+ lineWidth: imageAttributes.lineWidth
+ },
+ 'canvas'
+ )
+ drawVerticalScalebarIntervals(context, element, imageAttributes)
+
+ // Draw horizontal line
+ drawLine(
+ context,
+ element,
+ imageAttributes.horizontalLine.start,
+ imageAttributes.horizontalLine.end,
+ {
+ color: imageAttributes.color,
+ lineWidth: imageAttributes.lineWidth
+ },
+ 'canvas'
+ )
+ drawHorizontalScalebarIntervals(context, element, imageAttributes)
+ })
+ }
+}
+
+/**
+ * Computes the max bound for scales on the image
+ * @param {{width: number, height: number}} canvasSize
+ * @param {number} horizontalReduction
+ * @param {number} verticalReduction
+ * @returns {Object.}
+ */
+const computeScaleBounds = (
+ canvasSize,
+ horizontalReduction,
+ verticalReduction
+) => {
+ const hReduction = horizontalReduction * Math.min(1000, canvasSize.width)
+ const vReduction = verticalReduction * Math.min(1000, canvasSize.height)
+ const canvasBounds = {
+ left: hReduction,
+ top: vReduction,
+ width: canvasSize.width - 2 * hReduction,
+ height: canvasSize.height - 2 * vReduction
+ }
+
+ return {
+ topLeft: {
+ x: canvasBounds.left,
+ y: canvasBounds.top
+ },
+ bottomRight: {
+ x: canvasBounds.left + canvasBounds.width,
+ y: canvasBounds.top + canvasBounds.height
+ }
+ }
+}
+
+/**
+ * @param {CanvasRenderingContext2D} context
+ * @param {HTMLElement} element
+ * @param {Object} imageAttributes
+ * @returns {void}
+ */
+const drawVerticalScalebarIntervals = (context, element, imageAttributes) => {
+ let i = 0
+
+ while (
+ imageAttributes.verticalLine.start.y +
+ i * imageAttributes.verticalMinorTick <=
+ imageAttributes.vscaleBounds.bottomRight.y
+ ) {
+ const { color, lineWidth } = imageAttributes
+ const startPoint = {
+ x: imageAttributes.verticalLine.start.x,
+ y:
+ imageAttributes.verticalLine.start.y +
+ i * imageAttributes.verticalMinorTick
+ }
+
+ const endPoint = {
+ x: 0,
+ y:
+ imageAttributes.verticalLine.start.y +
+ i * imageAttributes.verticalMinorTick
+ }
+
+ if (i % 5 === 0) {
+ endPoint.x =
+ imageAttributes.verticalLine.start.x - imageAttributes.majorTickLength
+ } else {
+ endPoint.x =
+ imageAttributes.verticalLine.start.x - imageAttributes.minorTickLength
+ }
+
+ drawLine(
+ context,
+ element,
+ startPoint,
+ endPoint,
+ {
+ color,
+ lineWidth
+ },
+ 'canvas'
+ )
+
+ i++
+ }
+}
+
+/**
+ * @param {CanvasRenderingContext2D} context
+ * @param {HTMLElement} element
+ * @param {Object} imageAttributes
+ * @returns {void}
+ */
+const drawHorizontalScalebarIntervals = (context, element, imageAttributes) => {
+ let i = 0
+
+ while (
+ imageAttributes.horizontalLine.start.x +
+ i * imageAttributes.horizontalMinorTick <=
+ imageAttributes.hscaleBounds.bottomRight.x
+ ) {
+ const { color, lineWidth } = imageAttributes
+ const startPoint = {
+ x:
+ imageAttributes.horizontalLine.start.x +
+ i * imageAttributes.horizontalMinorTick,
+ y: imageAttributes.horizontalLine.start.y
+ }
+
+ const endPoint = {
+ x:
+ imageAttributes.horizontalLine.start.x +
+ i * imageAttributes.horizontalMinorTick,
+ y: 0
+ }
+
+ if (i % 5 === 0) {
+ endPoint.y =
+ imageAttributes.horizontalLine.start.y -
+ imageAttributes.majorTickLength
+ } else {
+ endPoint.y =
+ imageAttributes.horizontalLine.start.y -
+ imageAttributes.minorTickLength
+ }
+
+ drawLine(
+ context,
+ element,
+ startPoint,
+ endPoint,
+ {
+ color,
+ lineWidth
+ },
+ 'canvas'
+ )
+
+ i++
+ }
+}
diff --git a/src/views/trials/trials-panel/reading/dicoms/tools/calculateSUV.js b/src/views/trials/trials-panel/reading/dicoms/tools/calculateSUV.js
new file mode 100644
index 0000000..4e6bde3
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/dicoms/tools/calculateSUV.js
@@ -0,0 +1,95 @@
+import * as cornerstoneTools from 'cornerstone-tools'
+const external = cornerstoneTools.external
+
+/**
+ * Calculates a Standardized Uptake Value.
+ * @export @public @method
+ * @name calculateSUV
+ *
+ * @param {Object} image The image.
+ * @param {number} storedPixelValue The raw pixel value.
+ * @param {bool} [skipRescale=fale]
+ * @returns {number} The SUV.
+ */
+export default function(image, storedPixelValue, skipRescale = false) {
+ const cornerstone = external.cornerstone
+ const patientStudyModule = cornerstone.metaData.get(
+ 'patientStudyModule',
+ image.imageId
+ )
+ const seriesModule = cornerstone.metaData.get(
+ 'generalSeriesModule',
+ image.imageId
+ )
+
+ if (!patientStudyModule || !seriesModule) {
+ return
+ }
+
+ const modality = seriesModule.modality
+
+ // Image must be PET
+ if (modality !== 'PT') {
+ return
+ }
+
+ const modalityPixelValue = skipRescale
+ ? storedPixelValue
+ : storedPixelValue * image.slope + image.intercept
+
+ const patientWeight = patientStudyModule.patientWeight // In kg
+
+ if (!patientWeight) {
+ return
+ }
+
+ const petSequenceModule = cornerstone.metaData.get(
+ 'petIsotopeModule',
+ image.imageId
+ )
+
+ if (!petSequenceModule) {
+ return
+ }
+
+ const radiopharmaceuticalInfo = petSequenceModule.radiopharmaceuticalInfo
+ const startTime = radiopharmaceuticalInfo.radiopharmaceuticalStartTime
+ const totalDose = radiopharmaceuticalInfo.radionuclideTotalDose
+ const halfLife = radiopharmaceuticalInfo.radionuclideHalfLife
+ const seriesAcquisitionTime = seriesModule.seriesTime
+
+ if (!startTime || !totalDose || !halfLife || !seriesAcquisitionTime) {
+ return
+ }
+
+ const acquisitionTimeInSeconds =
+ fracToDec(seriesAcquisitionTime.fractionalSeconds || 0) +
+ seriesAcquisitionTime.seconds +
+ seriesAcquisitionTime.minutes * 60 +
+ seriesAcquisitionTime.hours * 60 * 60
+ const injectionStartTimeInSeconds =
+ fracToDec(startTime.fractionalSeconds || 0) +
+ startTime.seconds +
+ startTime.minutes * 60 +
+ startTime.hours * 60 * 60
+ const durationInSeconds =
+ acquisitionTimeInSeconds - injectionStartTimeInSeconds
+ const correctedDose =
+ totalDose * Math.exp((-durationInSeconds * Math.log(2)) / halfLife)
+ const suv = ((modalityPixelValue * patientWeight) / correctedDose) * 1000
+
+ return suv
+}
+
+/**
+ * Returns a decimal value given a fractional value.
+ * @private
+ * @method
+ * @name fracToDec
+ *
+ * @param {number} fractionalValue The value to convert.
+ * @returns {number} The value converted to decimal.
+ */
+function fracToDec(fractionalValue) {
+ return parseFloat(`.${fractionalValue}`)
+}
diff --git a/src/views/trials/trials-panel/reading/global-review/components/EditGlobalForm.vue b/src/views/trials/trials-panel/reading/global-review/components/EditGlobalForm.vue
new file mode 100644
index 0000000..65e5b2f
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/global-review/components/EditGlobalForm.vue
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo',1) }}
+ {{ $fd('ReadingYesOrNo',0) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/global-review/components/IRecistTable.vue b/src/views/trials/trials-panel/reading/global-review/components/IRecistTable.vue
new file mode 100644
index 0000000..fde305e
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/global-review/components/IRecistTable.vue
@@ -0,0 +1,475 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
+
+ {{ scope.row.BeforeQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].VisitAnswer)) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
+
+ {{ scope.row.AfterQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/global-review/components/PCWG3Table.vue b/src/views/trials/trials-panel/reading/global-review/components/PCWG3Table.vue
new file mode 100644
index 0000000..ab34fed
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/global-review/components/PCWG3Table.vue
@@ -0,0 +1,287 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
+
+ {{ scope.row.BeforeQuestionList[index].Answer === '-1' ? $t('trials:readingReport:title:unknow') : scope.row.BeforeQuestionList[index].Answer }}
+ {{ scope.row.BeforeQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].VisitAnswer)) }}
+
+
+
+
+
+
+ {
+ selectChange(v, scope.row, index)
+ }"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
+
+ {{ scope.row.AfterQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/global-review/components/PGWC3EditGlobalForm.vue b/src/views/trials/trials-panel/reading/global-review/components/PGWC3EditGlobalForm.vue
new file mode 100644
index 0000000..f6810e6
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/global-review/components/PGWC3EditGlobalForm.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo',1) }}
+ {{ $fd('ReadingYesOrNo',0) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/global-review/components/RecistBMTable.vue b/src/views/trials/trials-panel/reading/global-review/components/RecistBMTable.vue
new file mode 100644
index 0000000..1a83a76
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/global-review/components/RecistBMTable.vue
@@ -0,0 +1,471 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
+
+ {{ scope.row.BeforeQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].VisitAnswer)) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
+
+ {{ scope.row.AfterQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/global-review/components/RecistTable.vue b/src/views/trials/trials-panel/reading/global-review/components/RecistTable.vue
new file mode 100644
index 0000000..71ac8ea
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/global-review/components/RecistTable.vue
@@ -0,0 +1,466 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
+
+ {{ scope.row.BeforeQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode, parseInt(scope.row.AfterQuestionList[index].VisitAnswer)) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
+
+ {{ scope.row.AfterQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/global-review/index.vue b/src/views/trials/trials-panel/reading/global-review/index.vue
new file mode 100644
index 0000000..53fb616
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/global-review/index.vue
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:globalReview:title:result') }}
+
+ ({{ subjectCode }} | {{ taskBlindName }})
+
+
+
+
+ {{ $t('trials:globalReview:title:clinicalData') }}
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+ {{ $t('trials:globalReview:button:submit') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:globalReview:title:previousRes') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/index.vue b/src/views/trials/trials-panel/reading/index.vue
new file mode 100644
index 0000000..c5515f0
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/medical-feedback/components/111.vue b/src/views/trials/trials-panel/reading/medical-feedback/components/111.vue
new file mode 100644
index 0000000..a67b204
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/medical-feedback/components/111.vue
@@ -0,0 +1,496 @@
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+
+ 重阅影响任务列表
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+
+
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/medical-feedback/components/ChatForm.vue b/src/views/trials/trials-panel/reading/medical-feedback/components/ChatForm.vue
new file mode 100644
index 0000000..d98d432
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/medical-feedback/components/ChatForm.vue
@@ -0,0 +1,348 @@
+
+
+
+
+
+
![MIM]()
+
![IR]()
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+ {{ $t('trials:medicalFeedback:title:closeReasonEnum') }}{{ $fd('MedicalDialogCloseEnum',record.MedicalDialogCloseEnum) }}
+ {{ $t('trials:medicalFeedback:title:closereasonRemarks') }}{{ record.Content }}
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg1') }}
+
+ {{ record.Questioning }}
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg2') }}
+
+ -
+ {{ file.FileName }}
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg3') }}
+
+ {{ $fd('AuditAdvice', record.AuditAdviceEnum) }}
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg4') }}
+
+
+
+ {{ record.Content }}
+
+
+
+
+ {{ $t('trials:medicalFeedback:title:isEndorse') }}{{ $fd('MedicalReviewDoctorUserIdea', record.DoctorUserIdeaEnum) }}
+
+
+
+ {{ $t('trials:medicalFeedback:title:reason') }}{{ record.DisagreeReason }}
+
+
+
+ {{ $t('trials:medicalFeedback:title:isRequestReread') }}{{ $fd('YesOrNo', record.IsApplyHeavyReading) }}
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg5') }}
+
+ -
+ {{ file.FileName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:table:reply') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:loading') }}...
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/medical-feedback/components/FeedbackForm.vue b/src/views/trials/trials-panel/reading/medical-feedback/components/FeedbackForm.vue
new file mode 100644
index 0000000..9c86236
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/medical-feedback/components/FeedbackForm.vue
@@ -0,0 +1,494 @@
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:loading') }}...
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:form:influenceList') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/medical-feedback/index.vue b/src/views/trials/trials-panel/reading/medical-feedback/index.vue
new file mode 100644
index 0000000..c394a2e
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/medical-feedback/index.vue
@@ -0,0 +1,441 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+
+ {{ $fd('MedicalReviewAuditState', scope.row.AuditState) }}
+
+
+ {{ $fd('MedicalReviewAuditState', scope.row.AuditState) }}
+
+
+ {{ $fd('MedicalReviewAuditState', scope.row.AuditState) }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('AuditAdvice',scope.row.AuditAdviceEnum) }}
+
+
+
+
+
+ {{ $fd('MedicalReviewDoctorUserIdea',scope.row.DoctorUserIdeaEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/AdReview.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/AdReview.vue
new file mode 100644
index 0000000..58e7237
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/AdReview.vue
@@ -0,0 +1,291 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].DictionaryCode, parseInt(scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer )) }}
+ {{ scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer }}
+
+
+
+ {{ $fd('YesOrNo', scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer ) }}
+
+
+ {{ $t('trials:adReview:table:view') }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer ) }}
+
+
+ {{ scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer }}
+
+
+
+
+
+
+
+
+
+ R1
+
+
+
+ R2
+
+
+
+
+
{{ $t('trials:adReview:title:adResult') }}
+
+
+
+
+
+ {{ $fd('ArmEnum', t.ArmEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:adReview:title:loading') }}...
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/ChatForm.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/ChatForm.vue
new file mode 100644
index 0000000..87bbfea
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/ChatForm.vue
@@ -0,0 +1,375 @@
+
+
+
+
+
+
![MIM]()
+
![IR]()
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+ {{ $t('trials:medicalFeedback:title:closeReasonEnum') }}{{ $fd('MedicalDialogCloseEnum',record.MedicalDialogCloseEnum) }}
+ {{ $t('trials:medicalFeedback:title:closereasonRemarks') }}{{ record.Content }}
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg1') }}
+
+ {{ record.Questioning }}
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg2') }}
+
+ -
+ {{ file.FileName }}
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg3') }}
+
+ {{ $fd('AuditAdvice', record.AuditAdviceEnum) }}
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg4') }}
+
+
+
+ {{ record.Content }}
+
+
+
+
+ {{ $t('trials:medicalFeedback:title:isEndorse') }}{{ $fd('MedicalReviewDoctorUserIdea', record.DoctorUserIdeaEnum) }}
+
+ {{ $t('trials:medicalFeedback:title:reason') }}{{ record.DisagreeReason }}
+
+
+ {{ $t('trials:medicalFeedback:title:isRequestReread') }}{{ $fd('YesOrNo', record.IsApplyHeavyReading) }}
+
+
+
+ {{ $t('trials:medicalFeedback:message:msg5') }}
+
+ -
+ {{ file.FileName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:button:reply') }}
+
+
+
+ {{ $t('trials:medicalFeedback:button:close') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:button:reply') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:loading') }}...
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/CloseQC.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/CloseQC.vue
new file mode 100644
index 0000000..ead1392
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/CloseQC.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/Conclusions.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/Conclusions.vue
new file mode 100644
index 0000000..5af833e
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/Conclusions.vue
@@ -0,0 +1,412 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:message:loading') }}...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/GlobalReview.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/GlobalReview.vue
new file mode 100644
index 0000000..ecf409d
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/GlobalReview.vue
@@ -0,0 +1,310 @@
+
+
+
+ {{ $t('trials:medicalFeedback:title:otherReader') }}
+
+
+ {{ auditInfo.GlobalInfo.JudgeTaskName }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
+
+ {{ scope.row.BeforeQuestionList[index].Answer === '-1' ? $t('trials:medicalFeedback:table:unKnow') : scope.row.BeforeQuestionList[index].Answer }}
+ {{ scope.row.BeforeQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
+
+ {{ scope.row.AfterQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.BeforeQuestionList[index].DictionaryCode,parseInt(scope.row.BeforeQuestionList[index].Answer)) }}
+
+ {{ scope.row.BeforeQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+ {{ $fd('ReadingYesOrNo',parseInt(scope.row.AgreeOrNot[0].Answer)) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.AfterQuestionList[index].Answer) }}
+
+
+ {{ $fd(scope.row.AfterQuestionList[index].DictionaryCode,parseInt(scope.row.AfterQuestionList[index].Answer)) }}
+
+ {{ scope.row.AfterQuestionList[index].Answer }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/HistoricAssessment.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/HistoricAssessment.vue
new file mode 100644
index 0000000..ec7c38e
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/HistoricAssessment.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/Issues.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/Issues.vue
new file mode 100644
index 0000000..4860924
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/Issues.vue
@@ -0,0 +1,161 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/MedicalAudit.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/MedicalAudit.vue
new file mode 100644
index 0000000..d9ba778
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/MedicalAudit.vue
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+ {{ $t('trials:medicalFeedback:title:result') }}({{ auditInfo.SubjectCode }} | {{ auditInfo.TaskBlindName }} | {{ $fd('ArmEnum', auditInfo.ArmEnum) }})
+
+
+
+
+
{{ $t('trials:medicalFeedback:title:auditQuestions') }}
+
+
+
+
+
{{ $t('trials:medicalFeedback:title:conclusions') }}
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+ {{ $t('trials:medicalFeedback:title:qaRecord') }}
+
+
+
+ {{ $t('trials:medicalFeedback:button:auditCompleted') }}
+
+
+
+ {{ $t('trials:medicalFeedback:button:nextTask') }}
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+
+
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/OncologyReview.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/OncologyReview.vue
new file mode 100644
index 0000000..3bcdc04
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/OncologyReview.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.QuestionList[index].DictionaryCode,parseInt(scope.row.QuestionList[index].Answer)) }}
+
+
+ {{ scope.row.QuestionList.length>index?scope.row.QuestionList[index].Answer:'' }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsHaveChange ) }}
+
+
+ {{ $t('trials:oncologyReview:title:view') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.EvaluationResult) }}
+
+
+
+
+
+
+
+ {{ oncologyInfo.TrialEvaluationReason }}
+
+
+
+ {{ $t('trials:oncologyReview:title:reason') }}
+ *
+
+
+
+
+
+
+ {{ scope.row.EvaluationReason }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/components/VisitReview.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/components/VisitReview.vue
new file mode 100644
index 0000000..392388e
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/components/VisitReview.vue
@@ -0,0 +1,207 @@
+
+
+
+
+
+ {{ scope.row.TaskName }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.JudgeQuestionAnswerInfoList[index].Answer?$fd(scope.row.JudgeQuestionAnswerInfoList[index].DictionaryCode,parseInt(scope.row.JudgeQuestionAnswerInfoList[index].Answer)):'' }}
+
+
+ {{ scope.row.JudgeQuestionAnswerInfoList.length>index?scope.row.JudgeQuestionAnswerInfoList[index].Answer:'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.OtherArmEnum) }}
+
+
+
+
+
+
+
+ {{ scope.row.GlobalTaskName }}
+
+
+
+
+
+
+
+ {{ scope.row.JudgeTaskName }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/mim-medical-audit/index.vue b/src/views/trials/trials-panel/reading/mim-medical-audit/index.vue
new file mode 100644
index 0000000..14bce33
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/mim-medical-audit/index.vue
@@ -0,0 +1,712 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('IsTakeEffect', scope.row.IsInvalid) }}
+
+
+ {{ $fd('IsTakeEffect', scope.row.IsInvalid) }}
+
+
+
+
+
+
+
+ {{ $fd('MedicalReviewAuditState', scope.row.AuditState) }}
+
+
+ {{ $fd('MedicalReviewAuditState', scope.row.AuditState) }}
+
+
+ {{ $fd('MedicalReviewAuditState', scope.row.AuditState) }}
+
+
+
+
+
+
+ {{ $fd('AuditAdvice',scope.row.AuditAdviceEnum) }}
+
+
+
+
+
+ {{ $fd('MedicalReviewDoctorUserIdea',scope.row.DoctorUserIdeaEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/AdEcrf.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/AdEcrf.vue
new file mode 100644
index 0000000..3a26cf7
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/AdEcrf.vue
@@ -0,0 +1,237 @@
+
+
+
+
+ 历史评判结果
+
+
+
+
+
+
+
+
+
+
+ 裁判结果
+
+
+
+
+ {{ t.armEnum }}
+
+
+
+
+
+
+
+ 保存
+ 提交
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/AdReview.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/AdReview.vue
new file mode 100644
index 0000000..72f97ff
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/AdReview.vue
@@ -0,0 +1,543 @@
+
+
+
+
+ 受试者:
+ {{ subjectCode }}
+ ({{ taskBlindName }})
+
+
+
+
+ 评估结果
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer ) }}
+
+ 查看详情
+
+
+
+ {{ $fd('YesOrNo', scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer ) }}
+
+
+ {{ scope.row.VisitTaskInfoList[j.index].JudgeQuestionList[i].Answer }}
+
+
+
+
+
+
+
+
+ R1
+
+
+ R2
+
+
+
+
+
+
+
+ 裁判结果
+
+
+
+
+
+ {{ $fd('ArmEnum', t.ArmEnum) }}
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
+
+
+
+
+ 保存
+ 提交
+
+
+
+
+
+
+
+
+ 既往裁判评估
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/Criterions.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/Criterions.vue
new file mode 100644
index 0000000..fb00995
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/Criterions.vue
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/ECRF.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/ECRF.vue
new file mode 100644
index 0000000..07e5675
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/ECRF.vue
@@ -0,0 +1,323 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ q.PageName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/EditGlobalForm.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/EditGlobalForm.vue
new file mode 100644
index 0000000..e97d609
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/EditGlobalForm.vue
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/FormItem.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/FormItem.vue
new file mode 100644
index 0000000..d2b8e70
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/FormItem.vue
@@ -0,0 +1,339 @@
+
+
+
+
+ {{ question.GroupName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, qs)})"
+ >
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+ {{item.label}}
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:qsList:message:loading') }}...
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/GlobalReview.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/GlobalReview.vue
new file mode 100644
index 0000000..3d544ce
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/GlobalReview.vue
@@ -0,0 +1,324 @@
+
+
+
+
+ {{ $t('trials:auditRecord:table:subject') }}:
+ {{ subjectCode }}
+ ({{ taskBlindName }})
+
+
+
+
+
+ {{ $t('trials:globalReview:table:evaluationRes') }}
+
+
+
+
+ {{ $t('common:button:confirm') }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.BeforeQuestionList.length>index?scope.row.BeforeQuestionList[index].Answer:'' }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.AfterQuestionList.length>index?scope.row.AfterQuestionList[index].Answer:'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 既往全局阅片结果
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/OncologyReview.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/OncologyReview.vue
new file mode 100644
index 0000000..07dbfa7
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/OncologyReview.vue
@@ -0,0 +1,427 @@
+
+
+
+
+ 受试者:
+ {{ subjectCode }}
+ ({{ taskBlindName }})
+
+
+
+
+ 肿瘤学阅片
+
+
+
+ 临床数据
+
+
+ 保存
+
+
+ 确认
+
+
+
+
+
+
+
+
+
+ {{ scope.row.QuestionList.length>index?scope.row.QuestionList[index].Answer:'' }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsHaveChange ) }}
+
+ 查看详情
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.EvaluationResult }}
+
+
+
+
+
+
+
+ {{ oncologyInfo.TrialEvaluationReason }}
+
+
+ 原因
+ *
+
+
+
+
+
+
+ {{ scope.row.EvaluationReason }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 既往肿瘤学阅片结果
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/components/VisitReview.vue b/src/views/trials/trials-panel/reading/none-dicoms/components/VisitReview.vue
new file mode 100644
index 0000000..d14ce43
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/components/VisitReview.vue
@@ -0,0 +1,387 @@
+
+
+
+
+ {{$t('trials:auditRecord:table:subject')}}:{{ otherInfo.SubjectCode }}
+ ({{ otherInfo.TaskBlindName }})
+
+
+
+
+
+
+
+ {{ study.CodeView }}
+ {{ study.Modality }}
+ {{ getBodyPart(study.BodyPart) }}
+
+
+
+ {{ $t('trials:audit:message:noData') }}
+
+
+
+ {{ `${j+1}. ${item.FileName}` }}
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:audit:message:noData')}}
+
+
+
+ {{ `${j+1}. ${task.TaskBlindName}` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:crcUpload:label:clinicalData') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/none-dicoms/index.vue b/src/views/trials/trials-panel/reading/none-dicoms/index.vue
new file mode 100644
index 0000000..e3844b6
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/none-dicoms/index.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/oncology-review/index.vue b/src/views/trials/trials-panel/reading/oncology-review/index.vue
new file mode 100644
index 0000000..47fa38e
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/oncology-review/index.vue
@@ -0,0 +1,532 @@
+
+
+
+
+
+ {{ $t('trials:oncologyReview:title:subject') }}
+ {{ subjectCode }}
+ ({{ taskBlindName }})
+
+
+
+
+
+
{{ $t('trials:oncologyReview:title:oncologyReview') }}
+
+
+
+
+
+ {{ $t('trials:oncologyReview:button:clinicalData') }}
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd(scope.row.QuestionList[index].DictionaryCode,parseInt(scope.row.QuestionList[index].Answer)) }}
+
+
+ {{ scope.row.QuestionList.length>index?scope.row.QuestionList[index].Answer:'' }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsHaveChange ) }}
+
+
+ {{ $t('trials:oncologyReview:title:view') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAssessType(scope.row.EvaluationResult) }}
+
+
+
+
+
+
+
+ {{ oncologyInfo.TrialEvaluationReason }}
+
+
+
+ {{ $t('trials:oncologyReview:title:reason') }}
+ *
+
+
+
+
+
+
+ {{ scope.row.EvaluationReason }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:oncologyReview:title:previousRes') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/pm-medical-feedback/components/AddOrEditFilter.vue b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/AddOrEditFilter.vue
new file mode 100644
index 0000000..f419961
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/AddOrEditFilter.vue
@@ -0,0 +1,136 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/pm-medical-feedback/components/AssignMedicalReviewTask.vue b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/AssignMedicalReviewTask.vue
new file mode 100644
index 0000000..086a8ff
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/AssignMedicalReviewTask.vue
@@ -0,0 +1,110 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/pm-medical-feedback/components/GenerateMedicalReviewTaskList.vue b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/GenerateMedicalReviewTaskList.vue
new file mode 100644
index 0000000..2d6203a
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/GenerateMedicalReviewTaskList.vue
@@ -0,0 +1,508 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{$t('trials:pmMedicalReview:select:batchAllocation')}}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.TaskName}}
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+
+
+
+
+ {{scope.row.ReadingDuration}}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsGeneratedJudge) }}
+ {{ $fd('YesOrNo', scope.row.IsGeneratedJudge) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {AssignMedicalReviewTaskVisible = false}" @getList="getList" />
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/pm-medical-feedback/components/ReAssignMedicalReviewTask.vue b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/ReAssignMedicalReviewTask.vue
new file mode 100644
index 0000000..9b0e6b5
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/pm-medical-feedback/components/ReAssignMedicalReviewTask.vue
@@ -0,0 +1,121 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/pm-medical-feedback/index.vue b/src/views/trials/trials-panel/reading/pm-medical-feedback/index.vue
new file mode 100644
index 0000000..24cfc5b
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/pm-medical-feedback/index.vue
@@ -0,0 +1,691 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+ {{$t('trials:pmMedicalReview:button:select')}}
+
+
+
+ {{$t('trials:pmMedicalReview:button:setInvalid')}}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.TaskName}}
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+ {{$fd('ArmEnum', scope.row.ArmEnum)}}
+
+
+
+
+
+ {{scope.row.DoctorUser.UserName}}({{scope.row.DoctorUser.FullName}})
+
+
+
+
+
+
+
+
+
+ {{scope.row.MedicalManagerUser.UserName}}({{scope.row.MedicalManagerUser.FullName}})
+
+
+
+
+
+
+
+
+
+ {{$fd('IsTakeEffect', scope.row.IsInvalid)}}
+
+
+ {{$fd('IsTakeEffect', scope.row.IsInvalid)}}
+
+
+
+
+
+
+ {{$fd('MedicalReviewAuditState', scope.row.AuditState)}}
+ {{$fd('MedicalReviewAuditState', scope.row.AuditState)}}
+ {{$fd('MedicalReviewAuditState', scope.row.AuditState)}}
+
+
+
+
+
+ {{$fd('AuditAdvice', scope.row.AuditAdviceEnum)}}
+
+
+
+
+
+ {{$fd('MedicalReviewDoctorUserIdea', scope.row.DoctorUserIdeaEnum)}}
+ {{$fd('MedicalReviewDoctorUserIdea', scope.row.DoctorUserIdeaEnum)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {AssignMedicalReviewTaskVisible = false}" @getList="getList" />
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reReading-tracking/index.vue b/src/views/trials/trials-panel/reading/reReading-tracking/index.vue
new file mode 100644
index 0000000..c490627
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reReading-tracking/index.vue
@@ -0,0 +1,1163 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.OriginalReReadingTask.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.OriginalReReadingTask.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.OriginalReReadingTask.ArmEnum) }}
+
+
+
+
+
+ {{ scope.row.OriginalReReadingTask.UserName }}({{ scope.row.OriginalReReadingTask.FullName }})
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('RequestReReadingType', scope.row.RequestReReadingType) }}
+ {{ $fd('RequestReReadingType', scope.row.RequestReReadingType) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.RequestReReadingRejectReason }}
+
+ {{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
+
{{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
{{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TaskName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/read-task-allocation/components/AddOrEditTaskAllocationRule.vue b/src/views/trials/trials-panel/reading/read-task-allocation/components/AddOrEditTaskAllocationRule.vue
new file mode 100644
index 0000000..2034b74
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/read-task-allocation/components/AddOrEditTaskAllocationRule.vue
@@ -0,0 +1,132 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/read-task-allocation/components/ClearAudienceList.vue b/src/views/trials/trials-panel/reading/read-task-allocation/components/ClearAudienceList.vue
new file mode 100644
index 0000000..8fd6253
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/read-task-allocation/components/ClearAudienceList.vue
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:clearReader:title:clearAll')}}
+
+
+
+
+ {{$t('trials:reviewAssign:clearReader:title:r1')}}
+
+ {{findDoctorUser(list, 0).DoctorUser.UserName}}({{findDoctorUser(list, 0).DoctorUser.FullName}})
+
+
+
+
+ {{$t('trials:reviewAssign:clearReader:title:r1')}}
+
+ {{findDoctorUser(list, 1).DoctorUser.UserName}}({{findDoctorUser(list, 1).DoctorUser.FullName}})
+
+
+
+
+ {{$t('trials:reviewAssign:clearReader:title:r2')}}
+
+ {{findDoctorUser(list, 2).DoctorUser.UserName}}({{findDoctorUser(list, 2).DoctorUser.FullName}})
+
+
+
+
+ {{$t('trials:reviewAssign:clearReader:title:ad')}}
+
+ {{findDoctorUser(list, 3).DoctorUser.UserName}}({{findDoctorUser(list, 3).DoctorUser.FullName}})
+
+
+
+
+ {{$t('trials:reviewAssign:clearReader:title:O1')}}
+
+ {{findDoctorUser(list, 4).DoctorUser.UserName}}({{findDoctorUser(list, 4).DoctorUser.FullName}})
+
+
+
+
+
+ {{$t('trials:reviewAssign:clearReader:title:msg1')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/read-task-allocation/components/ManualAllocationTable.vue b/src/views/trials/trials-panel/reading/read-task-allocation/components/ManualAllocationTable.vue
new file mode 100644
index 0000000..615edc9
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/read-task-allocation/components/ManualAllocationTable.vue
@@ -0,0 +1,428 @@
+
+
+
+
+
+ {{$t('trials:reviewAssign:assignReader:title:readingModel')}}
+ {{ $fd('ReadingMethod', readingType) }}
+
+
+
+ {{$t('trials:reviewAssign:assignReader:title:r1')}}
+
+
+
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:assignReader:title:r1')}}
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:assignReader:title:r2')}}
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:assignReader:title:ad')}}
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:assignReader:title:o1')}}
+
+
+
+
+
+
+
+
+
+ {{ `${scope.row.DoctorUser.UserName}(${scope.row.DoctorUser.FullName})` }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', item) + ' & ' + $fd('ReadingCategory', 2) }}
+ {{ $fd('ReadingCategory', item) }}
+ {{ $fd('ReadingCategory', item) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/read-task-allocation/index.vue b/src/views/trials/trials-panel/reading/read-task-allocation/index.vue
new file mode 100644
index 0000000..6186360
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/read-task-allocation/index.vue
@@ -0,0 +1,1000 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:reviewAssign:button:assignRules') }}
+
+
+
+ {{ $t('trials:reviewAssign:button:manualAllocation') }}
+
+
+
+ {{ $t('trials:reviewAssign:button:visitReadingTasks') }}
+
+
+
+ {{$t('trials:reviewAssign:button:adReadingTasks')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.VisitTaskTypeCount}}
+
+
+
+
+
+ {{scope.row.GlobalTaskTypeCount}}
+
+
+
+
+
+ {{scope.row.JudgeTaskTypeCount}}
+
+
+
+
+
+ {{scope.row.OncologyTaskTypeCount}}
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.NowDoctorUserList, 0).DoctorUser.UserName}(${findDoctorUser(scope.row.NowDoctorUserList, 0).DoctorUser.FullName})` }}
+
+
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.NowDoctorUserList, 1).DoctorUser.UserName}(${findDoctorUser(scope.row.NowDoctorUserList, 1).DoctorUser.FullName})` }}
+
+
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.NowDoctorUserList, 2).DoctorUser.UserName}(${findDoctorUser(scope.row.NowDoctorUserList, 2).DoctorUser.FullName})` }}
+
+
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.NowDoctorUserList, 3).DoctorUser.UserName}(${findDoctorUser(scope.row.NowDoctorUserList, 3).DoctorUser.FullName})` }}
+
+
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.NowDoctorUserList, 4).DoctorUser.UserName}(${findDoctorUser(scope.row.NowDoctorUserList, 4).DoctorUser.FullName})` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:allocationRules:title:readersList')}}
+
+
+
+
+
+
+
+ {{ `${scope.row.DoctorUser.UserName}(${scope.row.DoctorUser.FullName})` }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', item) + ' & ' + $fd('ReadingCategory', 2) }}
+
+ {{ $fd('ReadingCategory', item) }}
+ {{ $fd('ReadingCategory', item) }}
+
+
+
+
+
+
+
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:allocationRules:title:subsequentAllocationRules')}}
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:allocationRules:message1')}} {{$fd('AutoAssignDefaultState', TrialTaskInfo.FollowVisitAutoAssignDefaultState)}}
+
+
+
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:allocationRules:message3')}} {{$fd('AutoAssignDefaultState', TrialTaskInfo.FollowGlobalVisitAutoAssignDefaultState)}}
+
+
+
+
+
+
+
+
+
+ {{$t('trials:reviewAssign:allocationRules:message4')}} {{$fd('AutoAssignDefaultState', TrialTaskInfo.FollowJudgeTaskAutoAssignDefaultState)}}
+
+
+
+
+
+
+
+
+
+ {taskAllocationRuleVisible = false}" @getList="openAllocationConfigVisible" />
+
+
+
+ {manualAllocationVisible = false}" @getList="getList">
+
+
+
+ {ClearAudienceVisible = false}" @getList="getList">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/read-task/index.vue b/src/views/trials/trials-panel/reading/read-task/index.vue
new file mode 100644
index 0000000..325f5dc
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/read-task/index.vue
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+ {{ $t('trials:readTask:button:reread') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReReadingApplyState', scope.row.ReReadingApplyState) }}
+ {{ $fd('ReReadingApplyState', scope.row.ReReadingApplyState) }}
+ {{ $fd('ReReadingApplyState', scope.row.ReReadingApplyState) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readTask:title:applyReason') }}
+
+
+
+
+ {{ $t('trials:readTask:option:errorRecords') }}
+
+ {{ $t('trials:readTask:option:other') }}
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+ {{ $t('trials:readTask:title:influenceList') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reading-page/index.vue b/src/views/trials/trials-panel/reading/reading-page/index.vue
new file mode 100644
index 0000000..dc46ae4
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reading-page/index.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reading-task/components/FormItem.vue b/src/views/trials/trials-panel/reading/reading-task/components/FormItem.vue
new file mode 100644
index 0000000..2ab798a
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reading-task/components/FormItem.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+ {formItemChange(val, question)})"
+ >
+ {{ val }}
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reading-task/components/QuestionForm.vue b/src/views/trials/trials-panel/reading/reading-task/components/QuestionForm.vue
new file mode 100644
index 0000000..0ec3a67
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reading-task/components/QuestionForm.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
{{ question.group }}
+
+
+
+ 取消
+ 提交
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reading-task/index.vue b/src/views/trials/trials-panel/reading/reading-task/index.vue
new file mode 100644
index 0000000..fdff342
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reading-task/index.vue
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+ {{ scope.row.UrgentCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.SuggesteFinishedTime.split(':')[0] + ':00:00' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ randomReadInfo.UnReadTaskCount }}
+
+
+
+ {{ randomReadInfo.UnReadJudgeTaskCount }}
+
+
+
+ {{ randomReadInfo.FinishTaskCount }}
+
+
+
+ {{ randomReadInfo.FinishJudgeTaskCount }}
+
+
+
+
+ {{ $t('trials:pendingReadingTasks:button:beginRandomReview') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reading-tracking/components/RefereeRules.vue b/src/views/trials/trials-panel/reading/reading-tracking/components/RefereeRules.vue
new file mode 100644
index 0000000..c4878c4
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reading-tracking/components/RefereeRules.vue
@@ -0,0 +1,314 @@
+/* eslint-disable */
+
+
+
+
+
+ {{itemC.ReadingQuestionCriterionTrialName}}
+
+
+
+
+ Q{{index + 1}}:{{item.QuestionName}}
+
+
+ 应用
+ 重置
+
+
+ {{ item.label }}
+
+
+
+
+ 添加规则
+
+
+
+
+ {{scope.$index + 1}}
+
+
+
+
+ {{scope.row.AnswerGroupA.toString()}}
+
+
+
+
+ {{scope.row.AnswerGroupB.toString()}}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item}}
+
+
当前选择答案分组: {{QuestionList[index].grouping.toString().replaceAll(',', '|')}} 添加分组
+
+
分组: {return tagClose2(index, indexA)}" v-for="itemA of QuestionList[index].AnswerGroup2List" style="margin-right:10px;">{{itemA}}
+
+
+
+
+
+
+
+
+
+ A{{index+1}}:{{item}}
+
+
+
+
+ A{{index+1}}:{{item}}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reading-tracking/components/exportList.vue b/src/views/trials/trials-panel/reading/reading-tracking/components/exportList.vue
new file mode 100644
index 0000000..061b5c8
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reading-tracking/components/exportList.vue
@@ -0,0 +1,124 @@
+
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+ {{scope.$index + 1}}
+
+
+
+
+
+ {{ scope.row.FileName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reading-tracking/index.vue b/src/views/trials/trials-panel/reading/reading-tracking/index.vue
new file mode 100644
index 0000000..9439357
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reading-tracking/index.vue
@@ -0,0 +1,1035 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DICOM
+ Non-DICOM
+
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:studyList:table:modality')}, ${$t('trials:studyList:table:bodyPart')}, ${$t('trials:studyList:table:studyDate')}, ${$t('trials:studyList:table:count')}` }}
+
+ {{ $t('trials:studyList:table:studyInfo') }}
+
+
+
+
+
{{ scope.row.Modalities }}({{ scope.row.Count }}),
+
N/A,
+
{{ getBodyPart(scope.row.Bodypart) }},
+
N/A,
+
{{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }}
+
N/A
+
+
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:studyList:table:visitName')}, ${$t('trials:studyList:table:visitNum')}` }}
+
+ {{ $t('trials:studyList:table:visit') }}
+
+
+
+ {{ scope.row.VisitName }},
+ N/A,
+ {{ scope.row.VisitNum }}
+
+
+
+
+
+
+
+ {{ `${$t('trials:studyList:table:siteId')}, ${$t('trials:studyList:table:siteName')}` }}
+
+ {{ $t('trials:studyList:table:site') }}
+
+
+
+ {{ scope.row.TrialSiteCode }},
+ N/A,
+ {{ scope.row.TrialSiteAliasName }}
+ N/A
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.TaskName}}
+
+
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+
+
+
+ {{ scope.row.UserName }}({{ scope.row.FullName }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.aet}}
+
+
+
+
+ {{item.Modality}}
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:confirm') }}
+
+
+
+
+
+
+
+ {{item.aet}}
+
+
+
+ {{rowData.TaskCode}}
+
+
+ {{rowData.TaskBlindName}}
+
+
+ {{`${rowData.UserName}(${rowData.FullName})`}}
+
+
+
+ {{item}}
+
+
+ 查询序列
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.status ? '已拉取' : '未推送'}}
+
+
+
+ 确认拉取后,选择的序列会分配到该任务的阅片人
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ 确认拉取
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/referee-allocation/components/AddOrEditTaskAllocationRule.vue b/src/views/trials/trials-panel/reading/referee-allocation/components/AddOrEditTaskAllocationRule.vue
new file mode 100644
index 0000000..040ccba
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/referee-allocation/components/AddOrEditTaskAllocationRule.vue
@@ -0,0 +1,123 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+ (%)
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/referee-allocation/index.vue b/src/views/trials/trials-panel/reading/referee-allocation/index.vue
new file mode 100644
index 0000000..d96d5e1
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/referee-allocation/index.vue
@@ -0,0 +1,1566 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TaskName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('TaskAllocationState', scope.row.TaskAllocationState) }}
+ {{ $fd('TaskAllocationState', scope.row.TaskAllocationState) }}
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+
+
+
+ {{ scope.row.HistoryReadingDoctorUserList.map(v => `${v.UserName}(${v.FullName})`).toString() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
首次分配规则
+
+ 添加阅片人
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+ {{ scope.row.PlanReadingRatio ? scope.row.PlanReadingRatio + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount > 0 ? (scope.row.SelfApplyedSubjectCount * 100 / scope.row.ApplyedTotalSubjectCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount > 0 ? (scope.row.SelfApplyedTaskCount * 100 / scope.row.ApplyedTotalTaskCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount }}
+
+
+
+
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+ 后续分配规则
+
+
+
+ 同一病例第二次裁判任务自动分配(在拟分配的阅片人未标记为退出项目状态时)默认状态 已分配
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {taskAllocationRuleVisible = false}" @getList="openAllocationConfigVisible" />
+
+
+
+
+ 分配规则
+
+
+
+ 分配对象
+
+ {{ $fd('TaskAllocateObj', TrialTaskInfo.TaskAllocateObjEnum) }}
+
+
+
+ 备选医生
+
+ {{ TaskAllocationRuleList.length ? TaskAllocationRuleList.map(v => `${v.UserName}(${v.FullName})`).toString().replaceAll(',', '/') : '无' }}
+
+
+ 受试者阅片人最新关系表
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+ 自动分配裁判
+
+
+ 手动分配裁判
+
+
+ 清空裁判
+
+
+ 生效
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${item.UserName}(${item.FullName})` }}
+
+
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.DoctorUserList, 1).UserName}(${findDoctorUser(scope.row.DoctorUserList, 1).FullName})` }}
+
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.DoctorUserList, 2).UserName}(${findDoctorUser(scope.row.DoctorUserList, 2).FullName})` }}
+
+
+
+
+
+
+
+
+ {{ `${findDoctorUser(scope.row.DoctorUserList, 3).UserName}(${findDoctorUser(scope.row.DoctorUserList, 3).FullName})` }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsAssignedDoctorUser) }}
+ {{ $fd('YesOrNo', scope.row.IsAssignedDoctorUser) }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+
+
+
+
+ {{ scope.row.DoctorUserList.length ? scope.row.DoctorUserList[0].AssignTime : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前项目阅片模式为:{{ $fd('ReadingMethod', ReadingType) }}
+
+
+ 当前选择裁判为:{{ TaskAllocationRuleSelectList.map(v => `${v.UserName}(${v.FullName})`).toString() }}
+
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+ {{ scope.row.PlanReadingRatio ? scope.row.PlanReadingRatio + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount > 0 ? (scope.row.SelfApplyedSubjectCount * 100 / scope.row.ApplyedTotalSubjectCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount > 0 ? (scope.row.SelfApplyedTaskCount * 100 / scope.row.ApplyedTotalTaskCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount }}
+
+
+
+
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+ {{ scope.row.PlanReadingRatio ? scope.row.PlanReadingRatio + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount > 0 ? (scope.row.SelfApplyedSubjectCount * 100 / scope.row.ApplyedTotalSubjectCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount + scope.row.WaitApplyTotalSubjectCount > 0 ? ((scope.row.SelfApplyedSubjectCount + scope.row.WaitApplySelfSubjectCount) * 100 / (scope.row.ApplyedTotalSubjectCount + scope.row.WaitApplyTotalSubjectCount)).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount > 0 ? (scope.row.SelfApplyedTaskCount * 100 / scope.row.ApplyedTotalTaskCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount + scope.row.WaitApplyTotalTaskCount > 0 ? ((scope.row.SelfApplyedTaskCount + scope.row.WaitApplySelfTaskCount) * 100 / (scope.row.ApplyedTotalTaskCount + scope.row.WaitApplyTotalTaskCount)).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount }}
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount + scope.row.WaitApplySelfTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount + scope.row.WaitApplySelfTaskCount }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/reread-task/index.vue b/src/views/trials/trials-panel/reading/reread-task/index.vue
new file mode 100644
index 0000000..440fe11
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/reread-task/index.vue
@@ -0,0 +1,430 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.OriginalReReadingTask.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.OriginalReReadingTask.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+ {{ $fd('TaskState', scope.row.OriginalReReadingTask.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.OriginalReReadingTask.ReadingCategory) }}
+
+
+
+
+
+
+
+
+ {{ $fd('RequestReReadingType', scope.row.RequestReReadingType) }}
+ {{ $fd('RequestReReadingType', scope.row.RequestReReadingType) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.RequestReReadingRejectReason }}
+
+ {{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
+
{{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
{{ $fd('RequestReReadingResult', scope.row.RequestReReadingResultEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/task-allocation/components/AddOrEditTaskAllocationRule.vue b/src/views/trials/trials-panel/reading/task-allocation/components/AddOrEditTaskAllocationRule.vue
new file mode 100644
index 0000000..a3cc43a
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/task-allocation/components/AddOrEditTaskAllocationRule.vue
@@ -0,0 +1,124 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+ (%)
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/reading/task-allocation/index.vue b/src/views/trials/trials-panel/reading/task-allocation/index.vue
new file mode 100644
index 0000000..da16ea8
--- /dev/null
+++ b/src/views/trials/trials-panel/reading/task-allocation/index.vue
@@ -0,0 +1,1525 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TaskName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('TaskAllocationState', scope.row.TaskAllocationState) }}
+ {{ $fd('TaskAllocationState', scope.row.TaskAllocationState) }}
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
首次分配规则
+
+ 添加阅片人
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+ {{ scope.row.PlanReadingRatio ? scope.row.PlanReadingRatio + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount > 0 ? (scope.row.SelfApplyedSubjectCount * 100 / scope.row.ApplyedTotalSubjectCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount > 0 ? (scope.row.SelfApplyedTaskCount * 100 / scope.row.ApplyedTotalTaskCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount }}
+
+
+
+
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+ 后续分配规则
+
+
+
+ 同一病例随访阅片任务自动分配(在拟分配的阅片人未标记为退出项目状态时)默认状态 已分配
+
+
+
+
+
+
+
+
+
+ 同一病例全局任务自动分配(在拟分配的阅片人未标记为退出项目状态时 默认状态 已分配
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {taskAllocationRuleVisible = false}" @getList="openAllocationConfigVisible" />
+
+
+
+ 分配规则
+
+
+
+ 分配对象
+
+ {{ $fd('TaskAllocateObj', TrialTaskInfo.TaskAllocateObjEnum) }}
+
+
+
+ 备选医生
+
+ {{ TaskAllocationRuleList.length ? TaskAllocationRuleList.map(v => `${v.UserName}(${v.FullName})`).toString().replaceAll(',', '/') : '无' }}
+
+
+ 受试者阅片人最新关系表
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+ 自动分配
+
+
+ 手动分配
+
+
+ 解除分配
+
+
+ 生效
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${item.UserName}(${item.FullName})` }}
+
+
+
+
+
+
+
+
+
+ {{ `${scope.row.DoctorUserList[0].UserName}(${scope.row.DoctorUserList[0].FullName})` }}
+
+
+
+
+
+
+
+
+ {{ `${scope.row.DoctorUserList[1].UserName}(${scope.row.DoctorUserList[1].FullName})` }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsAssignedDoctorUser) }}
+ {{ $fd('YesOrNo', scope.row.IsAssignedDoctorUser) }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+
+
+
+
+
+ {{ scope.row.DoctorUserList.length ? scope.row.DoctorUserList[0].AssignTime : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前项目阅片模式为:{{ $fd('ReadingMethod', ReadingType) }}
+
+
+ 当前选择阅片人为:组001:{{ `${TaskAllocationRuleSelectList[0].UserName.toString()}(${TaskAllocationRuleSelectList[0].FullName})` }}
+ 组002:{{ `${TaskAllocationRuleSelectList[1].UserName.toString()}(${TaskAllocationRuleSelectList[1].FullName})` }}
+
+
+ 双重阅片模式下,阅片人根据勾选顺序进行分组
+
+
+ 当前选择阅片人为:{{ TaskAllocationRuleSelectList.map(v => `${v.UserName}(${v.FullName})`).toString() }}
+
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+ {{ scope.row.PlanReadingRatio ? scope.row.PlanReadingRatio + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount > 0 ? (scope.row.SelfApplyedSubjectCount * 100 / scope.row.ApplyedTotalSubjectCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount > 0 ? (scope.row.SelfApplyedTaskCount * 100 / scope.row.ApplyedTotalTaskCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount }}
+
+
+
+
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+ {{ $fd('IsEnable', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+ {{ scope.row.PlanReadingRatio ? scope.row.PlanReadingRatio + '%' : '0%' }}
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount > 0 ? (scope.row.SelfApplyedSubjectCount * 100 / scope.row.ApplyedTotalSubjectCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.ApplyedTotalSubjectCount + scope.row.WaitApplyTotalSubjectCount > 0 ? ((scope.row.SelfApplyedSubjectCount + scope.row.WaitApplySelfSubjectCount) * 100 / (scope.row.ApplyedTotalSubjectCount + scope.row.WaitApplyTotalSubjectCount)).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount > 0 ? (scope.row.SelfApplyedTaskCount * 100 / scope.row.ApplyedTotalTaskCount).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.ApplyedTotalTaskCount + scope.row.WaitApplyTotalTaskCount > 0 ? ((scope.row.SelfApplyedTaskCount + scope.row.WaitApplySelfTaskCount) * 100 / (scope.row.ApplyedTotalTaskCount + scope.row.WaitApplyTotalTaskCount)).toFixed(2) + '%' : '0%' }}
+
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount }}
+
+
+
+
+ {{ scope.row.SelfApplyedTaskCount + scope.row.WaitApplySelfTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount }}
+
+
+
+
+ {{ scope.row.SelfUndoTaskCount + scope.row.WaitApplySelfTaskCount }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/.DS_Store b/src/views/trials/trials-panel/setting/.DS_Store
new file mode 100644
index 0000000..dccebca
Binary files /dev/null and b/src/views/trials/trials-panel/setting/.DS_Store differ
diff --git a/src/views/trials/trials-panel/setting/attachment/components/attachmentForm.vue b/src/views/trials/trials-panel/setting/attachment/components/attachmentForm.vue
new file mode 100644
index 0000000..e8dca5c
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/attachment/components/attachmentForm.vue
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:attachment:button:select') }}
+
+
+ ({{ $t('trials:attachment:message:pdf') }})
+
+
+
+
+
+
+
+
+ {{ item.UserType }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/attachment/components/previewFile.vue b/src/views/trials/trials-panel/setting/attachment/components/previewFile.vue
new file mode 100644
index 0000000..88d62e7
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/attachment/components/previewFile.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+ {{ $t('common:message:downloadFile') }}
+ {{ $t('common:button:download') }}
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/attachment/index.vue b/src/views/trials/trials-panel/setting/attachment/index.vue
new file mode 100644
index 0000000..97ef233
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/attachment/index.vue
@@ -0,0 +1,318 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+ {{ $t('common:button:add') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+ {{ scope.row.NeedConfirmedUserTypes?scope.row.NeedConfirmedUserTypes.join(', '):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/email-manage/components/DefaultQS.vue b/src/views/trials/trials-panel/setting/email-manage/components/DefaultQS.vue
new file mode 100644
index 0000000..e651886
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/email-manage/components/DefaultQS.vue
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TrialCriterionName }}
+
+
+
+
+
+
+ {{ $fd('BusinessModule',scope.row.BusinessModuleEnum) }}
+
+
+
+
+ {{ $fd('Email_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+ {{ scope.row.ToUserTypeList.length > 0?scope.row.ToUserTypeList.map(v => $fd('UserType', v)).join('、'):'' }}
+
+
+
+
+
+ {{ scope.row.CopyUserTypeList.length > 0?scope.row.CopyUserTypeList.map(v => $fd('UserType', v)).join('、'):'' }}
+
+
+
+
+ {{ $fd('EmailUrgent',scope.row.EmailUrgentEnum) }}
+
+
+
+
+
+ {{ scope.row.TrialCriterionName }}
+
+
+
+
+
+
+ {{ scope.row.FileName }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsReturnRequired) }}
+
+ {{ $fd('YesOrNo', scope.row.IsReturnRequired) }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsAutoSend) }}
+
+ {{ $fd('YesOrNo', scope.row.IsAutoSend) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/email-manage/components/EmailForm.vue b/src/views/trials/trials-panel/setting/email-manage/components/EmailForm.vue
new file mode 100644
index 0000000..15a7d99
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/email-manage/components/EmailForm.vue
@@ -0,0 +1,375 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/email-manage/components/EmailList.vue b/src/views/trials/trials-panel/setting/email-manage/components/EmailList.vue
new file mode 100644
index 0000000..e7338f1
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/email-manage/components/EmailList.vue
@@ -0,0 +1,435 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+ {{ $t('trials:emailManageCfg:button:Default') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TrialCriterionName }}
+
+
+
+
+
+
+ {{ $fd('BusinessModule',scope.row.BusinessModuleEnum) }}
+
+
+
+
+ {{ $fd('Email_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+
+ {{ scope.row.ToUserTypeNameList.length>0?scope.row.ToUserTypeNameList.join('、'):'' }}
+
+
+
+
+
+ {{ scope.row.CopyUserTypeNameList.length>0?scope.row.CopyUserTypeNameList.join('、'):'' }}
+
+
+
+
+ {{ $fd('EmailUrgent',scope.row.EmailUrgentEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.FileName }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsReturnRequired) }}
+
+ {{ $fd('YesOrNo', scope.row.IsReturnRequired) }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsAutoSend) }}
+
+ {{ $fd('YesOrNo', scope.row.IsAutoSend) }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/email-manage/index.vue b/src/views/trials/trials-panel/setting/email-manage/index.vue
new file mode 100644
index 0000000..77750ef
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/email-manage/index.vue
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 465
+
+
+ 25
+
+
+
+
+
+ {{ $t('common:button:confirm') }}
+
+
+ {{ $t('trials:trialCfg:button:update') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/index.vue b/src/views/trials/trials-panel/setting/index.vue
new file mode 100644
index 0000000..3e4b187
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/index.vue
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/medical-audit/components/DefaultQS.vue b/src/views/trials/trials-panel/setting/medical-audit/components/DefaultQS.vue
new file mode 100644
index 0000000..57ed438
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/medical-audit/components/DefaultQS.vue
@@ -0,0 +1,321 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ if (v) {
+ searchData.CriterionTypeEnum = null
+ }
+ }">
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('LanguageType', scope.row.LanguageType) }}
+
+
+
+
+
+ {{ $fd('QcType', scope.row.Type) }}
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+
+
+ {{ $fd('CriterionType', scope.row.CriterionTypeEnum) }}
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsGeneral) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsRequired) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/medical-audit/components/FormItem.vue b/src/views/trials/trials-panel/setting/medical-audit/components/FormItem.vue
new file mode 100644
index 0000000..494ca4f
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/medical-audit/components/FormItem.vue
@@ -0,0 +1,141 @@
+
+
+
+ {{ question.GroupName }}
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+ {formItemChange(val, question)})"
+ >
+ {{ val }}
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/medical-audit/components/QSForm.vue b/src/views/trials/trials-panel/setting/medical-audit/components/QSForm.vue
new file mode 100644
index 0000000..f62d9ef
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/medical-audit/components/QSForm.vue
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {typeChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+ {readingCategoryChange(val, form)})">
+
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/medical-audit/components/QuestionTpl.vue b/src/views/trials/trials-panel/setting/medical-audit/components/QuestionTpl.vue
new file mode 100644
index 0000000..87c3367
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/medical-audit/components/QuestionTpl.vue
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:medicalFeedbackCfg:message:msg3') }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/medical-audit/components/QuestionsPreview.vue b/src/views/trials/trials-panel/setting/medical-audit/components/QuestionsPreview.vue
new file mode 100644
index 0000000..90297d9
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/medical-audit/components/QuestionsPreview.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/medical-audit/index.vue b/src/views/trials/trials-panel/setting/medical-audit/index.vue
new file mode 100644
index 0000000..6e909a9
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/medical-audit/index.vue
@@ -0,0 +1,548 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:preview') }}
+
+
+ {{ $t('trials:qcCfg:button:default') }}
+
+
+ {{ $t('common:button:batchDelete') }}
+
+
+ {{ $t('trials:qcCfg:button:custom') }}
+
+
+ {{ $t('trials:qcCfg:button:confirm') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('LanguageType', scope.row.LanguageType) }}
+
+
+
+
+
+ {{ $fd('QcType', scope.row.Type) }}
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsRequired) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+
+
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/crcForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/crcForm.vue
new file mode 100644
index 0000000..8e0b8c0
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/crcForm.vue
@@ -0,0 +1,219 @@
+
+
+
+
+ {{ $t('trials:internalStaff:table:name') }}:
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+ {{ $t('trials:internalStaff:button:assign') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/customSiteForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/customSiteForm.vue
new file mode 100644
index 0000000..d6b009b
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/customSiteForm.vue
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/site.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/site.vue
new file mode 100644
index 0000000..c7683f7
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/site.vue
@@ -0,0 +1,633 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:sitesList:button:siteResearch') }}
+
+
+
+ {{ $t('trials:sitesList:dialogTitle:assignSite') }}
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TrialSiteCode }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.UserNameList.length>0 ? scope.row.UserNameList.join(', ') :'' }}
+
+
+
+
+
+
+ {{ $fd('IsSiteDisable', scope.row.IsDeleted) }}
+ {{ $fd('IsSiteDisable', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:internalStaff:table:status') }}:
+
+ {{ item.label }}
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:add') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}
+ {{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/siteForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/siteForm.vue
new file mode 100644
index 0000000..1075f04
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/siteForm.vue
@@ -0,0 +1,242 @@
+
+
+
+
+
+ {{ $t('trials:customSite:form:siteName') }}:
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:sitesList:dialogButton:customSite') }}
+
+
+ {{ $t('trials:sitesList:dialogButton:addSite') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staff.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staff.vue
new file mode 100644
index 0000000..131f816
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staff.vue
@@ -0,0 +1,445 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.UserType }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:staff:button:addInternalStaff') }}
+
+
+
+ {{ $t('trials:staff:button:addExternalStaff') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}
+ {{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}
+
+
+
+
+
+ {{ scope.row.JoinTime?moment(scope.row.JoinTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.RemoveTime? moment(scope.row.RemoveTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalAdd.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalAdd.vue
new file mode 100644
index 0000000..bcdc0f1
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalAdd.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.UserType }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ errorMsg }}
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+ {{ $t('trials:externalStaff:button:saveAndSendEmail') }}
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue
new file mode 100644
index 0000000..fa211bf
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staffExternalForm.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+ {{ $t('trials:externalStaff:table:name') }}:
+
+
+ {{ $t('trials:externalStaff:table:email') }}:
+
+
+ {{ $t('trials:externalStaff:table:phone') }}:
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:staff:button:sendEmail') }}
+
+
+
+ {{ $t('trials:staff:button:addExternalStaff') }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LastName + '/' + scope.row.FirstName }}
+
+
+
+ {{ userTypeOptions.length > 0 ? userTypeOptions.find((v) => { return v.Id == scope.row.UserTypeId }).UserTypeShortName : '' }}
+
+
+
+
+
+
+
+ {{ $fd('IsJoin', scope.row.IsJoin) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/components/staffForm.vue b/src/views/trials/trials-panel/setting/personnel-manage/components/staffForm.vue
new file mode 100644
index 0000000..e8f8c19
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/components/staffForm.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+ {{ $t('trials:staff:table:name') }}:
+
+
+ {{ $t('trials:staff:table:uid') }}:
+
+
+ {{ $t('trials:staff:table:organization') }}:
+
+
+ {{ $t('trials:staff:table:userType') }}:
+
+
+ {{ item.UserType }}
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:add') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/personnel-manage/index.vue b/src/views/trials/trials-panel/setting/personnel-manage/index.vue
new file mode 100644
index 0000000..cf22ee4
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/personnel-manage/index.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/qc-question/components/DefaultQS.vue b/src/views/trials/trials-panel/setting/qc-question/components/DefaultQS.vue
new file mode 100644
index 0000000..0f16a72
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/qc-question/components/DefaultQS.vue
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+ {{ $t('common:button:reset') }}
+
+
+
+
+ {{ $t('common:button:submit') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('LanguageType', scope.row.LanguageType) }}
+
+
+
+
+
+ {{ $fd('QcType', scope.row.Type) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsRequired) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/qc-question/components/QsForm.vue b/src/views/trials/trials-panel/setting/qc-question/components/QsForm.vue
new file mode 100644
index 0000000..a3b5886
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/qc-question/components/QsForm.vue
@@ -0,0 +1,307 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {typeChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/qc-question/index.vue b/src/views/trials/trials-panel/setting/qc-question/index.vue
new file mode 100644
index 0000000..4443164
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/qc-question/index.vue
@@ -0,0 +1,424 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+ {{ $t('trials:qcCfg:button:preview') }}
+
+
+ {{ $t('trials:qcCfg:button:default') }}
+
+
+ {{ $t('trials:qcCfg:button:custom') }}
+
+
+ {{ $t('trials:qcCfg:button:confirm') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('LanguageType', scope.row.LanguageType) }}
+
+
+
+
+
+ {{ $fd('QcType', scope.row.Type) }}
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsRequired) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/.DS_Store b/src/views/trials/trials-panel/setting/reading-unit/.DS_Store
new file mode 100644
index 0000000..d4f0f13
Binary files /dev/null and b/src/views/trials/trials-panel/setting/reading-unit/.DS_Store differ
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/111.vue b/src/views/trials/trials-panel/setting/reading-unit/components/111.vue
new file mode 100644
index 0000000..ba1721f
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/111.vue
@@ -0,0 +1,1001 @@
+
+
+
+
+
+ {qsTypeChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+ {{$d.fileType}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ CustomCalculateMarkChange(v)"
+ >
+
+
+ {{ item.label }}
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {{ scope.$index + 1 }}
+
+
+
+
+
+ {{ scope.$index === 0 && [1, 2, 3, 4].includes(form.CustomCalculateMark) ? null : $fd('CustomCalculateMark', form.CustomCalculateMark) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ [1, 2, 3, 4].includes(form.CustomCalculateMark) ? $t('trials:readingUnit:qsList:message:msg1') : $t('trials:readingUnit:qsList:message:msg2') }}
+
+
+
+
+ {questionGenreChange(val, form)})"
+ >
+
+ 无
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {form.DefaultValue = null}">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {isShowQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+ {isRequiredChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {relevanceQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {isJudgeQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/ArbitrationRules.vue b/src/views/trials/trials-panel/setting/reading-unit/components/ArbitrationRules.vue
new file mode 100644
index 0000000..0e9cc26
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/ArbitrationRules.vue
@@ -0,0 +1,452 @@
+
+
+/* eslint-disable */
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.PageName }}Q{{ index + 1 }}:{{ item.QuestionName }}
+
+
+ {{ $t('common:button:save') }}
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ $t('trials:adRules:button:addRule') }}
+
+
+
+
+
+ {{ scope.$index + 1 }}
+
+
+
+
+
+ {{ QuestionList[index].QuestionGenre === 3 ? scope.row.AnswerGroupA.map(v => $fd(QuestionList[index].DictionaryCode, parseInt(v))).toString() : scope.row.AnswerGroupA.toString() }}
+
+
+
+
+
+ {{ QuestionList[index].QuestionGenre === 3 ? scope.row.AnswerGroupB.map(v => $fd(QuestionList[index].DictionaryCode, parseInt(v))).toString() : scope.row.AnswerGroupB.toString() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+ {{ item }}
+
+
+
+ {{ $t('trials:adRules:title:selectAnswerGroup') }}
+ {{ QuestionList[index].grouping.toString().replaceAll(',', '|') }}
+ {{ QuestionList[index].grouping.map(v => $d[QuestionList[index].DictionaryCode].find(v1 => v1.value === v).label).toString().replaceAll(',', '|') }}
+
+
+ {{ $t('trials:adRules:title:addGroup') }}
+
+
+
+
分组: {return tagClose2(index, indexA)}">{{ itemA }}
+
+
+ {{ $t('trials:adRules:title:group') }}
+ {return tagClose2(index, indexA)}">
+ {{ itemA.split('|').map(v => $fd(QuestionList[index].DictionaryCode, parseInt(v))).join('|') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item }}
+ {{ item.label }}
+
+
+
+
+
+ {{ item }}
+ {{ item.label }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/BaseDataConfig.vue b/src/views/trials/trials-panel/setting/reading-unit/components/BaseDataConfig.vue
new file mode 100644
index 0000000..d474533
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/BaseDataConfig.vue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/CriterionDictionary.vue b/src/views/trials/trials-panel/setting/reading-unit/components/CriterionDictionary.vue
new file mode 100644
index 0000000..e10cd43
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/CriterionDictionary.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+ {{ scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:baseDataCfg:title:dictView') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/CriterionDictionaryConfig.vue b/src/views/trials/trials-panel/setting/reading-unit/components/CriterionDictionaryConfig.vue
new file mode 100644
index 0000000..dffd951
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/CriterionDictionaryConfig.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+ {{ scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/DefaultOrgans.vue b/src/views/trials/trials-panel/setting/reading-unit/components/DefaultOrgans.vue
new file mode 100644
index 0000000..9655a1f
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/DefaultOrgans.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('OrganInfo',scope.row.OrganType) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/DictionaryTypeConfig.vue b/src/views/trials/trials-panel/setting/reading-unit/components/DictionaryTypeConfig.vue
new file mode 100644
index 0000000..3bf49d6
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/DictionaryTypeConfig.vue
@@ -0,0 +1,177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ Reset
+ Search
+
+
+
+ New
+
+
+
+
+
+
+
+
+
+
+
+ {return switchChange(event, scope.row)}"
+ />
+
+
+
+
+
+ Edit
+
+
+ Delete
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/DictionaryTypeConfigForm.vue b/src/views/trials/trials-panel/setting/reading-unit/components/DictionaryTypeConfigForm.vue
new file mode 100644
index 0000000..459b33b
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/DictionaryTypeConfigForm.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Cancel
+ Save
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/GlobalReading.vue b/src/views/trials/trials-panel/setting/reading-unit/components/GlobalReading.vue
new file mode 100644
index 0000000..fa57595
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/GlobalReading.vue
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+ {{ $i18n.locale === 'zh' ? scope.row.ValueCN : scope.row.Value }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsBaseLineUse) }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsFollowVisitUse) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+ {{$i18n.locale === 'zh' ? scope.row.raw.ValueCN : scope.row.raw.Value }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/OncologyForm.vue b/src/views/trials/trials-panel/setting/reading-unit/components/OncologyForm.vue
new file mode 100644
index 0000000..2fa2b4f
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/OncologyForm.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/OrgansTbl.vue b/src/views/trials/trials-panel/setting/reading-unit/components/OrgansTbl.vue
new file mode 100644
index 0000000..6b45108
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/OrgansTbl.vue
@@ -0,0 +1,413 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:readingUnit:baseDataCfg:button:sync') }}
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:baseDataCfg:button:set') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('OrganType', scope.row.OrganType) }}
+
+
+
+
+
+
+ {{ $i18n.locale === 'zh' ? scope.row.Classification : scope.row.ClassificationEN }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $i18n.locale === 'zh' ? scope.row.Part : scope.row.PartEN }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $i18n.locale === 'zh' ? scope.row.TULOC : scope.row.TULOCEN }}
+
+
+
+
+
+ {{ $i18n.locale === 'zh' ? scope.row.TULAT : scope.row.TULATEN }}
+
+
+
+
+
+
+ {{ $fd('ReadingYesOrNo', scope.row.IsLymphNodes) }}
+
+ {{ $fd('ReadingYesOrNo', scope.row.IsLymphNodes) }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsCanEditPosition) }}
+
+ {{ $fd('YesOrNo', scope.row.IsCanEditPosition) }}
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo',scope.row.IsEnable) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/PageBreakForm.vue b/src/views/trials/trials-panel/setting/reading-unit/components/PageBreakForm.vue
new file mode 100644
index 0000000..ad13ad6
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/PageBreakForm.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/PageBreakList.vue b/src/views/trials/trials-panel/setting/reading-unit/components/PageBreakList.vue
new file mode 100644
index 0000000..061c8ee
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/PageBreakList.vue
@@ -0,0 +1,255 @@
+
+
+
+
+ 新增
+
+
+ 预览
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsPublicPage) }}
+ {{ $fd('YesOrNo', scope.row.IsPublicPage) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+ {{ $fd('YesOrNo', scope.row.IsEnable) }}
+
+
+
+
+
+
+
+ 问题表单
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionFormItem.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionFormItem.vue
new file mode 100644
index 0000000..aa670a2
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionFormItem.vue
@@ -0,0 +1,702 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionTableFormItem.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionTableFormItem.vue
new file mode 100644
index 0000000..4219fef
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionTableFormItem.vue
@@ -0,0 +1,409 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue
new file mode 100644
index 0000000..d1d9fb5
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsForm.vue
@@ -0,0 +1,1020 @@
+
+
+
+
+
+ {qsTypeChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ if (v.includes('')) {
+ form.FileType = ['']
+ } else {
+ }
+ }"
+ >
+
+ {{ item.label }}
+
+ {{ $d.fileType }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+ CustomCalculateMarkChange(v)"
+ >
+
+
+ {{ item.label }}
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {{ scope.$index + 1 }}
+
+
+
+
+
+ {{ scope.$index === 0 && [1, 2, 3, 4].includes(form.CustomCalculateMark) ? null : $fd('CustomCalculateMark', form.CustomCalculateMark) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ [1, 2, 3, 4].includes(form.CustomCalculateMark) ? $t('trials:readingUnit:qsList:message:msg1') : $t('trials:readingUnit:qsList:message:msg2') }}
+
+
+
+
+ {questionGenreChange(val, form)})"
+ >
+
+ {{ $i18n.locale === 'zh' ? '无' : 'None' }}
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {form.DefaultValue = null}">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {isShowQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+ {isRequiredChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {relevanceQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {isJudgeQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsList.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsList.vue
new file mode 100644
index 0000000..27faa5f
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsList.vue
@@ -0,0 +1,400 @@
+
+
+
+
+
+ {{ $t('common:button:add') }}
+
+
+
+ {{ $t('common:button:preview') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Criterion_Question_Type',scope.row.Type) }}
+
+
+
+
+
+ {{ $fd('QuestionRequired',scope.row.IsRequired) }}
+
+
+
+
+
+ {{ $fd('ShowQuestion',scope.row.ShowQuestion) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsJudgeQuestion) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsShowInDicom) }}
+
+
+
+
+
+ {{ $fd('GlobalReadingShowType', scope.row.GlobalReadingShowType) }}
+
+
+
+
+
+ {{ $fd('LimitEdit', scope.row.LimitEdit) }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:qsList:title:edit') }}
+
+
+
+ {{ $t('trials:readingUnit:qsList:title:view') }}
+
+
+
+ {{ $t('trials:readingUnit:qsList:title:tableQs') }}
+
+
+
+ {{ $t('trials:readingUnit:qsList:title:delete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsPreview.vue b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsPreview.vue
new file mode 100644
index 0000000..1b2179c
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/QuestionsPreview.vue
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/ReadingCriterions.vue b/src/views/trials/trials-panel/setting/reading-unit/components/ReadingCriterions.vue
new file mode 100644
index 0000000..fda5eb6
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/ReadingCriterions.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:readingCriterion:title:baseDataCfg') }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/ReadingRules.vue b/src/views/trials/trials-panel/setting/reading-unit/components/ReadingRules.vue
new file mode 100644
index 0000000..70d04d2
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/ReadingRules.vue
@@ -0,0 +1,549 @@
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+ {
+ form.IsArbitrationReading = false
+ }"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+ {
+ if (!v) {
+ form.IsGlobalReading = v
+ }
+ }"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {
+ if (v) {
+ form.IsReadingShowSubjectInfo = true
+ form.IsReadingShowPreviousResults = true
+ form.ReadingTaskViewEnum = 0
+ form.IseCRFShowInDicomReading = false
+ } else {
+ form.ReadingTaskViewEnum = 2
+ }
+ }"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {
+ if (!v) {
+ form.IseCRFShowInDicomReading = true
+ }
+ }"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ {$set(form, 'AdditionalAssessmentType' + item.Id, v)}"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/TableQsForm.vue b/src/views/trials/trials-panel/setting/reading-unit/components/TableQsForm.vue
new file mode 100644
index 0000000..a9d4d7c
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/TableQsForm.vue
@@ -0,0 +1,774 @@
+
+
+
+
+ {qsTypeChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+ CustomCalculateMarkChange(v)"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+ {{ scope.$index + 1 }}
+
+
+
+
+ {{ scope.$index === 0 && [1, 2, 3, 4].includes(form.CustomCalculateMark) ? null : $fd('CustomCalculateMark', form.CustomCalculateMark) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ [1, 2, 3, 4].includes(form.CustomCalculateMark) ? '请选择同级问题!' : '请选择表格问题下的子问题!' }}
+
+
+
+ {tableQuestionTypeChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {isShowQuestionChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+ {isRequiredChange(val, form)})"
+ >
+
+ {{ item.label }}
+
+
+
+
+
+ {parentQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+ {relevanceQuestionChange(val, form)})"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/components/TableQsList.vue b/src/views/trials/trials-panel/setting/reading-unit/components/TableQsList.vue
new file mode 100644
index 0000000..c341207
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/components/TableQsList.vue
@@ -0,0 +1,289 @@
+
+
+
+
+ {{$t('common:button:new')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Criterion_Question_Type',scope.row.Type) }}
+
+
+
+
+
+ {{ $fd('QuestionRequired',scope.row.IsRequired) }}
+
+
+
+
+
+ {{ $fd('ShowQuestion',scope.row.ShowQuestion) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsJudgeQuestion) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsShowInDicom) }}
+
+
+
+
+
+ {{ $fd('GlobalReadingShowType', scope.row.GlobalReadingShowType) }}
+
+
+
+
+
+ {{ $fd('LimitEdit', scope.row.LimitEdit) }}
+
+
+
+
+
+
+
+
+ {{ $t('common:button:edit') }}
+
+
+ {{ $t('trials:readingPeriod:button:view') }}
+
+
+ {{ $t('common:button:delete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/index.vue b/src/views/trials/trials-panel/setting/reading-unit/index.vue
new file mode 100644
index 0000000..777843b
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/index.vue
@@ -0,0 +1,338 @@
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:button:sync') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingUnit:button:confirm') }}
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/reading-unit/preview.vue b/src/views/trials/trials-panel/setting/reading-unit/preview.vue
new file mode 100644
index 0000000..7f579c1
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/reading-unit/preview.vue
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/trial-config/.DS_Store b/src/views/trials/trials-panel/setting/trial-config/.DS_Store
new file mode 100644
index 0000000..59b956f
Binary files /dev/null and b/src/views/trials/trials-panel/setting/trial-config/.DS_Store differ
diff --git a/src/views/trials/trials-panel/setting/trial-config/components/.DS_Store b/src/views/trials/trials-panel/setting/trial-config/components/.DS_Store
new file mode 100644
index 0000000..5bc307b
Binary files /dev/null and b/src/views/trials/trials-panel/setting/trial-config/components/.DS_Store differ
diff --git a/src/views/trials/trials-panel/setting/trial-config/components/SubjectsForm.vue b/src/views/trials/trials-panel/setting/trial-config/components/SubjectsForm.vue
new file mode 100644
index 0000000..138e909
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/trial-config/components/SubjectsForm.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/trial-config/index.vue b/src/views/trials/trials-panel/setting/trial-config/index.vue
new file mode 100644
index 0000000..ee208a6
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/trial-config/index.vue
@@ -0,0 +1,272 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/visit-plan/components/visitPlanAdjust.vue b/src/views/trials/trials-panel/setting/visit-plan/components/visitPlanAdjust.vue
new file mode 100644
index 0000000..14cbae0
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/visit-plan/components/visitPlanAdjust.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:adjustRecord:action:download') }}
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/visit-plan/components/visitPlanForm.vue b/src/views/trials/trials-panel/setting/visit-plan/components/visitPlanForm.vue
new file mode 100644
index 0000000..635b2f4
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/visit-plan/components/visitPlanForm.vue
@@ -0,0 +1,196 @@
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:visitPlan:table:day') }}
+
+
+ ~
+
+
+ {{ $t('trials:visitPlan:table:day') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ $t('common:button:cancel') }}
+
+
+
+ {{ $t('common:button:save') }}
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/setting/visit-plan/index.vue b/src/views/trials/trials-panel/setting/visit-plan/index.vue
new file mode 100644
index 0000000..6f0a683
--- /dev/null
+++ b/src/views/trials/trials-panel/setting/visit-plan/index.vue
@@ -0,0 +1,350 @@
+
+
+
+
+
+
+
+ {{ $t('common:button:add') }}
+
+
+
+ {{ $t('trials:visitPlan:button:blindFlag') }}
+
+
+
+ {{ $t('trials:visitPlan:button:confirm') }}
+
+
+
+ {{ $t('trials:visitPlan:button:adjustRecord') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsBaseLine) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${scope.row.VisitWindowLeft}${$t('trials:visitPlan:table:day')} ~ ${scope.row.VisitWindowRight}${$t('trials:visitPlan:table:day')}` }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+ {{ $fd('YesOrNo', scope.row.IsConfirmed) }}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+ {{ $fd('YesOrNo', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/site/index.vue b/src/views/trials/trials-panel/site/index.vue
new file mode 100644
index 0000000..d2afc00
--- /dev/null
+++ b/src/views/trials/trials-panel/site/index.vue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.UserNameList.length>0 ? scope.row.UserNameList.join(', ') :'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}
+ {{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/study/components/nonDicomPreview.vue b/src/views/trials/trials-panel/study/components/nonDicomPreview.vue
new file mode 100644
index 0000000..709d778
--- /dev/null
+++ b/src/views/trials/trials-panel/study/components/nonDicomPreview.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/study/index.vue b/src/views/trials/trials-panel/study/index.vue
new file mode 100644
index 0000000..a87226f
--- /dev/null
+++ b/src/views/trials/trials-panel/study/index.vue
@@ -0,0 +1,530 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DICOM
+ Non-DICOM
+
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:studyList:table:modality')}, ${$t('trials:studyList:table:bodyPart')}, ${$t('trials:studyList:table:studyDate')}, ${$t('trials:studyList:table:count')}` }}
+
+ {{ $t('trials:studyList:table:studyInfo') }}
+
+
+
+
+
{{ scope.row.Modalities }}({{ scope.row.Count }}),
+
N/A,
+
{{ getBodyPart(scope.row.Bodypart) }},
+
N/A,
+
{{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }}
+
N/A
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ `${$t('trials:studyList:table:visitName')}, ${$t('trials:studyList:table:visitNum')}` }}
+
+ {{ $t('trials:studyList:table:visit') }}
+
+
+
+ {{ scope.row.VisitName }},
+ N/A,
+ {{ scope.row.VisitNum }}
+
+
+
+
+
+
+
+ {{ `${$t('trials:studyList:table:siteId')}, ${$t('trials:studyList:table:siteName')}` }}
+
+ {{ $t('trials:studyList:table:site') }}
+
+
+
+ {{ scope.row.TrialSiteCode }},
+ N/A,
+ {{ scope.row.TrialSiteAliasName }}
+ N/A
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 成功创建分享链接
+
+
+ 链接:
+
+
+ 提取码:
+
+
+ 复制链接及提取码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/brain-metastasis/components/batchSelectSubject.vue b/src/views/trials/trials-panel/subject/brain-metastasis/components/batchSelectSubject.vue
new file mode 100644
index 0000000..6323298
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/brain-metastasis/components/batchSelectSubject.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/brain-metastasis/components/selectSubject.vue b/src/views/trials/trials-panel/subject/brain-metastasis/components/selectSubject.vue
new file mode 100644
index 0000000..2c73b4b
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/brain-metastasis/components/selectSubject.vue
@@ -0,0 +1,101 @@
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/brain-metastasis/components/selectSubjectImage.vue b/src/views/trials/trials-panel/subject/brain-metastasis/components/selectSubjectImage.vue
new file mode 100644
index 0000000..4eb97b0
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/brain-metastasis/components/selectSubjectImage.vue
@@ -0,0 +1,445 @@
+
+
+
+ {{$t('trials:readingPeriod:title:screeningRule')}}
+
+ {{$t('trials:readingPeriod:value:IsJoinEvaluation')}}
+
+ {{ $t('trials:readingPeriod:title:visitsList') }}
+
+
+
+
+ {{ scope.row.EarliestScanDate ? moment(scope.row.EarliestScanDate).format('YYYY-MM-DD') : '' }}
+
+
+
+
+ {{ scope.row.LatestScanDate ? moment(scope.row.LatestScanDate).format('YYYY-MM-DD') : '' }}
+
+
+
+
+ {{ $fd('ImageFilterState', scope.row.ImageFilterState) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingPeriod:title:taskList') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.TaskName}}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+ {{ $fd('ReadingTaskState', scope.row.ReadingTaskState) }}
+
+
+
+
+
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+ {{ $fd('ReReadingOrBackOptType', scope.row.OptType) }}
+
+
+
+
+
+ {{ scope.row.DoctorUser.UserName }}({{ scope.row.DoctorUser.FullName }})
+
+
+
+
+
+ {{$t('trials:reviewTrack:applyReread:title:msg1')}}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/brain-metastasis/components/subjectStudy.vue b/src/views/trials/trials-panel/subject/brain-metastasis/components/subjectStudy.vue
new file mode 100644
index 0000000..e7cb098
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/brain-metastasis/components/subjectStudy.vue
@@ -0,0 +1,298 @@
+
+
+ {{ $t('trials:readingPeriod:title:study') }}
+
+
+
+
+
+
+
+
+
+
+ {{ getBodyPart(scope.row.BodyPartForEdit)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingPeriod:title:series') }}
+
+
+
+
+
+
+
+
+
+
+ {{ getBodyPart(scope.row.BodyPartForEdit)}}
+
+
+
+
+
+
+
+ {{ scope.row.StudyTime ? moment(scope.row.StudyTime).format('YYYY-MM-DD') : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/brain-metastasis/components/taskAllocation.vue b/src/views/trials/trials-panel/subject/brain-metastasis/components/taskAllocation.vue
new file mode 100644
index 0000000..adb07b6
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/brain-metastasis/components/taskAllocation.vue
@@ -0,0 +1,763 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.TaskName }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+ {{ $fd('TaskState', scope.row.TaskState) }}
+
+
+
+
+
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+ {{ $fd('ReadingCategory', scope.row.ReadingCategory) }}
+
+
+
+
+
+ {{ $fd('TaskAllocationState', scope.row.TaskAllocationState) }}
+ {{ $fd('TaskAllocationState', scope.row.TaskAllocationState) }}
+
+
+
+
+
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+ {{ $fd('ArmEnum', scope.row.ArmEnum) }}
+
+
+
+
+
+ {{ `${scope.row.UserName}(${scope.row.FullName})` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/brain-metastasis/index.vue b/src/views/trials/trials-panel/subject/brain-metastasis/index.vue
new file mode 100644
index 0000000..9cb9aaa
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/brain-metastasis/index.vue
@@ -0,0 +1,332 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+ {{ $t('trials:subject:action:BatchImageSelect') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Subject_Visit_Status', scope.row.SubjectStatus) }}
+ {{ $fd('Subject_Visit_Status', scope.row.SubjectStatus) }}
+
+
+
+
+
+ {{$fd(scope.row.FinalEvaluationList[index].FinalTranslateDictionaryCode, parseInt(scope.row.FinalEvaluationList[index].Answer))}}
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsJoinEvaluation) }}
+ {{ $fd('YesOrNo', scope.row.IsJoinEvaluation) }}
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsImageFiltering) }}
+ {{ $fd('YesOrNo', scope.row.IsImageFiltering) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/index.vue b/src/views/trials/trials-panel/subject/index.vue
new file mode 100644
index 0000000..7d4275d
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/index.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/AddOrEditCD.vue b/src/views/trials/trials-panel/subject/reading-period/components/AddOrEditCD.vue
new file mode 100644
index 0000000..7c74760
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/AddOrEditCD.vue
@@ -0,0 +1,303 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingPeriod:cd:title:downloadTpl') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/AddOrEditPR.vue b/src/views/trials/trials-panel/subject/reading-period/components/AddOrEditPR.vue
new file mode 100644
index 0000000..aaf8fac
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/AddOrEditPR.vue
@@ -0,0 +1,376 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LatestScanDate?moment(scope.row.LatestScanDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.ExpirationDate?moment(scope.row.ExpirationDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:addRP:button:confirmAddPR') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/AddSubjectRP.vue b/src/views/trials/trials-panel/subject/reading-period/components/AddSubjectRP.vue
new file mode 100644
index 0000000..fedbc60
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/AddSubjectRP.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/ClinicalData.vue b/src/views/trials/trials-panel/subject/reading-period/components/ClinicalData.vue
new file mode 100644
index 0000000..0ed5144
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/ClinicalData.vue
@@ -0,0 +1,628 @@
+
+
+
+
+
+
+
+ {{ $t('trials:readingPeriod:cd:title:tips') }}
+
+
+
+ {{ $t('trials:readingPeriod:cd:title:tips1') }}
+
+
+ {{ $t('trials:readingPeriod:cd:title:tips2') }}
+
+
+
+
+
+ {{ $t('trials:readingPeriod:cd:title:preview') }}
+
+
+
+ {{ $t('common:button:add') }}
+
+
+ 核查
+
+
+ 撤回审批
+
+
+
+
+
+
+
+
+
+ {{ $fd('ClinicalDataUploadRole',scope.row.UploadRole) }}
+
+
+
+
+
+ {{ $fd('ClinicalLevel',scope.row.ClinicalDataLevel) }}
+
+
+
+
+
+ {{ $fd('ClinicalUploadType',scope.row.ClinicalUploadType) }}
+
+
+
+
+
+ {{ scope.row.ClinicalUploadType === 0?'NA':scope.row.FileCount }}
+
+
+
+
+
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingPeriod:cd:title:preview') }}
+
+
+
+ {{ $t('common:button:add') }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('ClinicalDataUploadRole',scope.row.UploadRole) }}
+
+
+
+
+
+ {{ $fd('ClinicalLevel',scope.row.ClinicalDataLevel) }}
+
+
+
+
+
+ {{ $fd('ClinicalUploadType',scope.row.ClinicalUploadType) }}
+
+
+
+
+
+ {{ scope.row.ClinicalUploadType === 0?'NA':scope.row.FileCount }}
+
+
+
+
+
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+ {{ $fd('ReadingClinicalDataState', scope.row.ReadingClinicalDataState) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/EditPRStatus.vue b/src/views/trials/trials-panel/subject/reading-period/components/EditPRStatus.vue
new file mode 100644
index 0000000..69cf8b3
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/EditPRStatus.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/PreviewCD.vue b/src/views/trials/trials-panel/subject/reading-period/components/PreviewCD.vue
new file mode 100644
index 0000000..50f0183
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/PreviewCD.vue
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastTreatment') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('IsPdEnum', scope.row.IsPD) }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:pastSurgery') }}
+
+
+
+
+
+
+
+ {{ scope.row.OperationTime?moment(scope.row.OperationTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:others') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/RPList.vue b/src/views/trials/trials-panel/subject/reading-period/components/RPList.vue
new file mode 100644
index 0000000..b7fb2cf
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/RPList.vue
@@ -0,0 +1,375 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+ {{ $t('trials:rpManage:button:addImageReading') }}
+
+
+
+ {{ $t('trials:rpManage:button:addOncologyReading') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('ReadingSetType',scope.row.ReadingSetType) }}
+
+
+
+
+
+
+
+ {{ $fd('ReadingScopeEnum',scope.row.ReadingScope) }}
+
+
+
+
+
+ {{ scope.row.SiteCodes.length>0? scope.row.SiteCodes.join(', '):'' }}
+
+
+
+
+
+ {{ scope.row.ExpirationDate?moment(scope.row.ExpirationDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+ {{ scope.row.PlanCount }}
+
+
+
+
+
+
+
+ {{ $fd('TakeEffect', scope.row.IsTakeEffect) }}
+
+
+ {{ $fd('TakeEffect', scope.row.IsTakeEffect) }}
+
+
+ {{ $fd('TakeEffect', scope.row.IsTakeEffect) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/RelationPRList.vue b/src/views/trials/trials-panel/subject/reading-period/components/RelationPRList.vue
new file mode 100644
index 0000000..aa009e6
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/RelationPRList.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.LatestScanDate?moment(scope.row.LatestScanDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.ExpirationDate?moment(scope.row.ExpirationDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/components/Verification.vue b/src/views/trials/trials-panel/subject/reading-period/components/Verification.vue
new file mode 100644
index 0000000..2272c0a
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/components/Verification.vue
@@ -0,0 +1,190 @@
+
+
+
+ {{ $t('trials:readingPeriod:verify:title:fileList') }}
+
+
+
+ {{ $t('trials:readingPeriod:verify:title:preview') }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingPeriod:verify:title:result') }}
+
+
+
+
+ {{ $fd('YesOrNo', true) }}
+ N/A
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', true) }}
+ N/A
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/reading-period/index.vue b/src/views/trials/trials-panel/subject/reading-period/index.vue
new file mode 100644
index 0000000..f309eb9
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/reading-period/index.vue
@@ -0,0 +1,583 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:readingPeriod:buttton:exportSubjectTbl') }}
+
+
+
+ {{ $t('trials:readingPeriod:buttton:exportPeriodTbl') }}
+
+
+
+ {{ $t('trials:readingPeriod:button:rpManage') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.Data[i-1].Name }}
+
+
+
+ | {{ $t('trials:readingPeriod:table:enroll') }}
+
+
+ | {{ $t('trials:readingPeriod:table:pd') }}
+
+
+ | {{ $t('trials:readingPeriod:table:urgent') }}
+
+
+ | {{ $t('trials:readingPeriod:table:finalVisit') }}
+
+
+
+
+
{{ $fd('ModuleTypeEnum',scope.row.Data[i-1].ModuleType) }}
+
+ {{ $fd('ReadModuleEnum',scope.row.Data[i-1].ReadingStatus) }}
+
+
+
+
+
{{ $t('trials:readingPeriod:table:lastVisit') }}
+
{{ scope.row.Data[i-1].OutPlanPreviousVisitName }}
+
+
+
+
{{ $t('trials:readingPeriod:table:deadlineVisit') }}
+
{{ scope.row.Data[i-1].CutOffVisitName }}
+
+
+
+
{{ $t('trials:readingPeriod:table:correspondVisit2') }}
+
{{ scope.row.Data[i-1].ReadModuleName }}
+
+
+
+
+ {{ $t('trials:readingPeriod:table:clinicalInfo2') }}
+
+ {{ $t('trials:readingPeriod:button:view') }}
+
+ {{ $t('trials:readingPeriod:table:noCD') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:readingPeriod:button:detail') }}
+
+
+ {{ $t('common:button:edit') }}
+
+
+ {{ $t('trials:readingPeriod:button:delete') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ currentData.Name }}
+
+
+
+ {{ $fd('ModuleTypeEnum',currentData.ModuleType) }}
+
+
+
+
+
+ {{ $fd('ReadModuleEnum',currentData.ReadingStatus) }}
+
+
+ {{ currentData.CutOffVisitName }}
+
+
+ {{ currentData.OutPlanPreviousVisitName }}
+
+
+ {{ currentData.ReadModuleName }}
+
+
+
+
+ {{ $t('trials:readingPeriod:button:view') }}
+
+
+ {{ $t('trials:readingPeriod:table:noCD') }}
+
+
+
+
+ {{ currentData.Stakeholders }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/subject-list/components/MessageTable.vue b/src/views/trials/trials-panel/subject/subject-list/components/MessageTable.vue
new file mode 100644
index 0000000..0f23e76
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/subject-list/components/MessageTable.vue
@@ -0,0 +1,245 @@
+
+
+
+
+
+
+
+ {{ scope.row.TrialCriterionName }}
+
+
+
+
+
+ {{ $fd('Common_File_BusinessScenario',scope.row.BusinessScenarioEnum) }}
+
+
+
+
+ {{ scope.row.ToUserTypeNameList.length>0?scope.row.ToUserTypeNameList.join('、'):'' }}
+
+
+
+
+
+ {{ scope.row.CopyUserTypeNameList.length>0?scope.row.CopyUserTypeNameList.join('、'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/subject-list/components/SubjectStatusForm.vue b/src/views/trials/trials-panel/subject/subject-list/components/SubjectStatusForm.vue
new file mode 100644
index 0000000..06b1952
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/subject-list/components/SubjectStatusForm.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+
+ {{item.label}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/subject-list/components/SubjectsForm.vue b/src/views/trials/trials-panel/subject/subject-list/components/SubjectsForm.vue
new file mode 100644
index 0000000..eedfbe5
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/subject-list/components/SubjectsForm.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ otherInfo.SubjectCodeRule }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ F
+ M
+ O
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/subject/subject-list/index.vue b/src/views/trials/trials-panel/subject/subject-list/index.vue
new file mode 100644
index 0000000..613052d
--- /dev/null
+++ b/src/views/trials/trials-panel/subject/subject-list/index.vue
@@ -0,0 +1,462 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.FirstGiveMedicineTime?moment(scope.row.FirstGiveMedicineTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('Subject_Visit_Status', scope.row.Status) }}
+ {{ $fd('Subject_Visit_Status', scope.row.Status) }}
+
+
+
+
+
+
+ {{ scope.row.TotalVisitCount }}
+
+ {{ scope.row.TotalVisitCount }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsMissingImages) }}
+ {{ $fd('YesOrNo', scope.row.IsMissingImages) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/trial-summary/.DS_Store b/src/views/trials/trials-panel/trial-summary/.DS_Store
new file mode 100644
index 0000000..c19dcdb
Binary files /dev/null and b/src/views/trials/trials-panel/trial-summary/.DS_Store differ
diff --git a/src/views/trials/trials-panel/trial-summary/audit-record/index.vue b/src/views/trials/trials-panel/trial-summary/audit-record/index.vue
new file mode 100644
index 0000000..042a3cd
--- /dev/null
+++ b/src/views/trials/trials-panel/trial-summary/audit-record/index.vue
@@ -0,0 +1,1227 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$fd('ModuleType', scope.row.ModuleTypeId, 'id')}}
+
+
+
+
+
+ {{$i18n.locale === 'zh' ? scope.row.DescriptionCN : scope.row.Description}}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.SignText }}
+
+ {{ $fd('YesOrNo', scope.row.IsSign) }}
+
+
{{ $fd('YesOrNo', scope.row.IsSign) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:auditRecord:action:detail')}}
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:auditRecord:title:historicalOperations')}}
+
+ {{$t('trials:auditRecord:title:relationOperations')}}
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:auditRecord:title:viewDetail')}}
+
+
+
+ {{$t('trials:auditRecord:title:viewImage')}}{{scope.row.oldValue instanceof Array ? `(${scope.row.oldValue.length})` : ''}}
+
+
+
+
+ {{ scope.row.oldValue }}
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:auditRecord:title:viewDetail')}}
+
+
+
+ {{$t('trials:auditRecord:title:viewImage')}}{{scope.row.newValue instanceof Array ? `(${scope.row.newValue.length})` : ''}}
+
+
+
+
+ {{ scope.row.newValue }}
+
+
+
+
+
+
+
+
+
+ {{$t('trials:auditRecord:title:viewImage')}}
+
+
+ {{scope.row[item.ColumnValue]}}
+
+
+
+
+
+
+ {{$t('trials:auditRecord:title:viewImage')}}
+
+
+
+ {{scope.row[ite.ListName ? ite.ListName + ite.ColumnValue + index : ite.ColumnValue]}}
+
+
+
+
+
+
+ {{$t('trials:auditRecord:title:signInfo')}}
+
+
+ {{otherData[0].Value}}
+
+
+
+
+
+ {{$t('common:button:close')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.SignText }}
+
+ {{ $fd('YesOrNo', scope.row.IsSign) }}
+
+
{{ $fd('YesOrNo', scope.row.IsSign) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:auditRecord:action:detail')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.oldValue}}
+
+ {{ scope.row.oldValue }}
+
+
+
+
+
+
+
+
+ {{scope.row.newValue}}
+ {{ scope.row.newValue }}
+
+
+
+
+
+
+
+
+
+
+ {{$t('trials:auditRecord:title:viewImage')}}
+
+ {{scope.row[ite.ListName ? ite.ListName + ite.ColumnValue + index : ite.ColumnValue]}}
+
+
+
+
+
+ {{$t('trials:auditRecord:title:viewImage')}}
+
+ {{scope.row[item.ColumnValue]}}
+
+
+
+
+
+ {{$t('trials:auditRecord:title:signInfo')}}
+
+
+ {{otherData[0].Value}}
+
+
+
+
+
+ {{$t('common:button:close')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/trial-summary/index.vue b/src/views/trials/trials-panel/trial-summary/index.vue
new file mode 100644
index 0000000..3481d7d
--- /dev/null
+++ b/src/views/trials/trials-panel/trial-summary/index.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/trial-summary/trial-information/index.vue b/src/views/trials/trials-panel/trial-summary/trial-information/index.vue
new file mode 100644
index 0000000..4f12593
--- /dev/null
+++ b/src/views/trials/trials-panel/trial-summary/trial-information/index.vue
@@ -0,0 +1,136 @@
+
+
+
+
+ {{trialInfo.TrialCode}}
+
+ ( {{ $fd('TrialStatusEnum',trialInfo.TrialStatusStr) }} )
+
+
+
+ {{ $fd('TrialType', trialInfo.TrialType) }}
+
+
+
+ {{trialInfo.ExperimentName}}
+
+
+ {{ trialInfo.ResearchProgramNo }}
+
+
+
+ {{trialInfo.MainResearchUnit}}
+
+
+ {{ trialInfo.HeadPI }}
+
+
+
+ {{trialInfo.Sponsor}}
+
+
+ {{ trialInfo.CRO }}
+
+
+
+ {{trialInfo.DeclarationTypeEnumList.map(v => $fd('DeclarationType', v)).toString()}}
+
+
+ {{ trialInfo.Phase }}
+
+
+
+ {{$fd('IndicationType', trialInfo.IndicationTypeId, 'id')}}
+
+
+ {{$fd('Indication', trialInfo.IndicationEnum)}}{{trialInfo.Indication}}
+
+
+ {{trialInfo.ModalityList}}
+
+
+ {{ trialInfo.PlanSiteCount }}
+
+
+
+ {{trialInfo.ExpectedPatients}}
+
+
+ {{ trialInfo.TimePointsPerPatient }}
+
+
+
+ {{trialInfo.PlanVisitCount}}
+
+
+
+
+ {{ trialInfo.Criterion }}
+
+
+
+
+
+
+ {{$fd('YesOrNoForInt', trialInfo.Expedited)}}
+
+
+ {{ trialInfo.ProjectCycle }}
+
+
+
+ {{trialInfo.TotalReviewers}}
+
+
+ {{trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).toString()}}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue b/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue
new file mode 100644
index 0000000..545d833
--- /dev/null
+++ b/src/views/trials/trials-panel/trial-summary/upload-monitor/index.vue
@@ -0,0 +1,344 @@
+/* eslint-disable */
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.IsDicom?'DICOM':'Non-DICOM'}}
+
+
+
+
+
+
+
+
+
+ {{scope.row.UploadStartTimeStr}}
+
+
+
+
+
+ {{scope.row.ArchiveFinishedTime}}
+
+
+
+
+
+ {{scope.row.UploadIntervalStr}}
+
+
+
+
+
+ {{scope.row.ArchiveIntervalStr}}
+
+
+
+
+
+ {{scope.row.TimeInterval}}
+
+
+
+
+
+
+
+ {{fileSizeFormatter(scope.row.FileSize)}}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsDicomReUpload) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsSuccess) }}
+ {{ $fd('YesOrNo', scope.row.IsSuccess) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/consistency-check/components/consistencyCheckForm.vue b/src/views/trials/trials-panel/visit/consistency-check/components/consistencyCheckForm.vue
new file mode 100644
index 0000000..9e992da
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/consistency-check/components/consistencyCheckForm.vue
@@ -0,0 +1,384 @@
+
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
+
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
+
+
+
+
+
{{ $t('trials:consistencyCheck:label:noData') }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:action:applyFallback') }}
+
+
+
+ {{ $t('trials:consistencyCheck:button:rejectBack') }}
+
+
+
+ {{ $t('trials:consistencyCheck:action:fallback') }}
+
+
+
+ {{ $t('trials:consistencyCheck:button:sendMessage') }}
+
+
+
+ {{ $t('trials:consistencyCheck:title:reply') }}
+
+
+
+ {{ $t('trials:consistencyCheck:title:close') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/consistency-check/components/crcSendMessage.vue b/src/views/trials/trials-panel/visit/consistency-check/components/crcSendMessage.vue
new file mode 100644
index 0000000..8fc8313
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/consistency-check/components/crcSendMessage.vue
@@ -0,0 +1,178 @@
+
+
+
+
+
{{ $t('trials:consistencyCheck:title:message1') }}
+
+
{{ $t('trials:consistencyCheck:title:message2') }}
+
+
+ {{ item }}
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:title:message3') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:title:message5') }}
+
+
+
+ {{ $t('trials:consistencyCheck:title:message6') }}
+
+
+
+ {{ item }}
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:title:message7') }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:title:message9') }}
+
+
+ {{ $t('trials:consistencyCheck:title:message10') }}
+
+
+ {{ $t('trials:consistencyCheck:title:message11') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:button:sendMessage') }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/consistency-check/components/crcSendMessageNew.vue b/src/views/trials/trials-panel/visit/consistency-check/components/crcSendMessageNew.vue
new file mode 100644
index 0000000..ee4e5e0
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/consistency-check/components/crcSendMessageNew.vue
@@ -0,0 +1,307 @@
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:title:message20') }}
+
+
+
{{ $t('trials:consistencyCheck:title:add') }}
+
+
+
+
+
+
+ {{ scope.row.StudyDate }}
+
+
+
+
+
+ {{ scope.row.Modality }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsJoin) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:title:delete') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:title:message9') }}
+
+
+ {{ $t('trials:consistencyCheck:title:message10') }}
+
+
+ {{ $t('trials:consistencyCheck:title:message11') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:button:sendMessage') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/consistency-check/components/uploadExcel.vue b/src/views/trials/trials-panel/visit/consistency-check/components/uploadExcel.vue
new file mode 100644
index 0000000..7cb3363
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/consistency-check/components/uploadExcel.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+ {{ $t('trials:consistencyCheck:dialogButton:upload') }}
+
+
+ ({{ $t('trials:consistencyCheck:message:excelFileOnly') }})
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/consistency-check/index.vue b/src/views/trials/trials-panel/visit/consistency-check/index.vue
new file mode 100644
index 0000000..81dae4e
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/consistency-check/index.vue
@@ -0,0 +1,793 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:consistencyCheck:button:export1') }}
+
+
+
+ {{ $t('trials:consistencyCheck:button:export2') }}
+
+
+
+ {{ $t('trials:consistencyCheck:button:download') }}
+
+
+
+
+ {{ $t('trials:consistencyCheck:button:upload') }}
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+ --
+
+ {{ userTypeEnumInt === 2? $fd('CheckChallengeState', 1) : $fd('CheckChallengeState', 2) }}
+
+
+ {{ userTypeEnumInt === 2?$fd('CheckChallengeState', 2) : $fd('CheckChallengeState', 1) }}
+
+ {{ $fd('CheckChallengeState', scope.row.CheckChallengeState) }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.VisitName }}
+ 回
+
+
+
+
+
+
+ {{ scope.row.Modalitys }}
+
+
+
+
+
+
+ {{ scope.row.LatestScanDate.split(' ')[0] }}
+
+
+
+
+
+
+
+
+ {{ $fd('RequestBackState', scope.row.RequestBackState*1) }}
+ {{ $fd('RequestBackState', scope.row.RequestBackState*1) }}
+ {{ $fd('RequestBackState', scope.row.RequestBackState*1) }}
+ {{ $fd('RequestBackState', scope.row.RequestBackState*1) }}
+
+
+
+
+
+
+
+
+
+ --
+ {{ $fd('CheckState', scope.row.CheckState) }}
+ {{ $fd('CheckState', scope.row.CheckState) }}
+ {{ $fd('CheckState', scope.row.CheckState) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t(`trials:check:radio:${currentRow.type}reason${1}`) }}
+
+ {{ $t(`trials:check:radio:${currentRow.type}reason${2}`) }}
+
+ {{ $t(`trials:check:radio:${currentRow.type}reason${3}`) }}
+
+ {{ $t(`trials:check:radio:${currentRow.type}reason${4}`) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-question/components/chatForm.vue b/src/views/trials/trials-panel/visit/crc-question/components/chatForm.vue
new file mode 100644
index 0000000..6380d42
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-question/components/chatForm.vue
@@ -0,0 +1,552 @@
+
+
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
![QC]()
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
+
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
![QC]()
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:crcQuestion:button:applyReupload') }}
+
+
+
+ {{ $t('trials:crcQuestion:button:reupload') }}
+
+
+
+ {{ $t('trials:crcQuestion:button:reuploadCompleted') }}
+
+
+
+ {{ $t('trials:crcQuestion:button:send') }}
+
+
+
+ {{ $t('trials:crcQuestion:button:close') }}
+
+
+
+
+
+
+
+
+
+ {{ trialCode }}
+ {{ data.TrialSiteCode }}
+ {{ data.SubjectCode }}
+ {{ `${data.VisitName} (${data.VisitNum})` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-question/index.vue b/src/views/trials/trials-panel/visit/crc-question/index.vue
new file mode 100644
index 0000000..6459f0f
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-question/index.vue
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.ChallengeCode }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('CurrentQCType', 0) }}
+ --
+
+
+
+ {{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}
+ {{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}
+ --
+
+
+
+
+
+
+ --
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsOverTime) }}
+ {{ $fd('YesOrNo', scope.row.IsOverTime) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsClosed) }}
+ {{ $fd('YesOrNo', scope.row.IsClosed) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/SubjectsForm.vue b/src/views/trials/trials-panel/visit/crc-upload/components/SubjectsForm.vue
new file mode 100644
index 0000000..c130b63
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/SubjectsForm.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ otherInfo.SubjectCodeRule }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/historyChat.vue b/src/views/trials/trials-panel/visit/crc-upload/components/historyChat.vue
new file mode 100644
index 0000000..b185799
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/historyChat.vue
@@ -0,0 +1,538 @@
+
+
+
+
+
+ {{ item.ChallengeCode }}
+
+
+
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
![QC]()
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
+
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
![QC]()
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:reuploadDicoms:button:applyReupload') }}
+
+
+
+ {{ $t('trials:reuploadDicoms:button:reupload') }}
+
+
+
+ {{ $t('trials:reuploadDicoms:button:reuploadFinished') }}
+
+
+
+ {{ $t('trials:reuploadDicoms:button:send') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ trialCode }}
+ {{ data.TrialSiteCode }}
+ {{ data.SubjectCode }}
+ {{ `${data.VisitName} (${data.VisitNum})` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/previewFiles.vue b/src/views/trials/trials-panel/visit/crc-upload/components/previewFiles.vue
new file mode 100644
index 0000000..5c4faed
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/previewFiles.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:message:downloadFile') }}
+ {{ $t('common:button:download') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/previewVisitNoneDicomFiles.vue b/src/views/trials/trials-panel/visit/crc-upload/components/previewVisitNoneDicomFiles.vue
new file mode 100644
index 0000000..3f36ba9
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/previewVisitNoneDicomFiles.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
{{ `${item.CodeView} (Modality: ${item.Modality})` }}
+
+
+ -
+ {{ file.FileName }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:message:downloadFile') }}
+
+ {{ $t('common:button:download') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/previousFiles.vue b/src/views/trials/trials-panel/visit/crc-upload/components/previousFiles.vue
new file mode 100644
index 0000000..dcc88ee
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/previousFiles.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:uploadClinicalData:button:uploadFile') }}
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/previousOther.vue b/src/views/trials/trials-panel/visit/crc-upload/components/previousOther.vue
new file mode 100644
index 0000000..a9f3df3
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/previousOther.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/previousRadiotherapy.vue b/src/views/trials/trials-panel/visit/crc-upload/components/previousRadiotherapy.vue
new file mode 100644
index 0000000..b2c133e
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/previousRadiotherapy.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/previousSurgery.vue b/src/views/trials/trials-panel/visit/crc-upload/components/previousSurgery.vue
new file mode 100644
index 0000000..9b7530d
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/previousSurgery.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/studyInfo.vue b/src/views/trials/trials-panel/visit/crc-upload/components/studyInfo.vue
new file mode 100644
index 0000000..36d5aac
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/studyInfo.vue
@@ -0,0 +1,399 @@
+
+
+
+
+
+ {{ $t('trials:uploadedDicoms:action:delete') }}
+
+
+
+ {{ $t('trials:uploadedDicoms:action:preview') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getBodyPart(scope.row.BodyPartForEdit)}}
+
+
+
+
+
+
+
+
+
+ {{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{$fd('Bodypart',bodyPart)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/uploadClinicalData.vue b/src/views/trials/trials-panel/visit/crc-upload/components/uploadClinicalData.vue
new file mode 100644
index 0000000..26442bb
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/uploadClinicalData.vue
@@ -0,0 +1,602 @@
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastTreatment') }}
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('IsPdEnum', scope.row.IsPD) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastSurgery') }}
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.OperationTime?moment(scope.row.OperationTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:others') }}
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:uploadClinicalData:button:downloadTemplate') }}
+
+
+
+ {{ $t('common:button:new') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles.vue b/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles.vue
new file mode 100644
index 0000000..7995707
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles.vue
@@ -0,0 +1,1249 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles2.vue b/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles2.vue
new file mode 100644
index 0000000..1ccd784
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/uploadDicomFiles2.vue
@@ -0,0 +1,1311 @@
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue b/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue
new file mode 100644
index 0000000..17a24c0
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/uploadNonDicomFiles.vue
@@ -0,0 +1,820 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/components/visitForm.vue b/src/views/trials/trials-panel/visit/crc-upload/components/visitForm.vue
new file mode 100644
index 0000000..bbc6e7b
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/components/visitForm.vue
@@ -0,0 +1,312 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ *{{ $t('trials:crcUpload:form:setFinalAssessment1').replaceAll('xxx', otherInfo.OutEnrollmentVisitName) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+ *{{ $t('trials:crcUpload:form:setFinalAssessment') }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/crc-upload/index.vue b/src/views/trials/trials-panel/visit/crc-upload/index.vue
new file mode 100644
index 0000000..6e5bcd6
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/crc-upload/index.vue
@@ -0,0 +1,1731 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+ {{ $t('trials:crcUpload:button:submit') }}
+
+
+
+ {{ $t('trials:crcUpload:button:add') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ --
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+ {{ scope.row.SubjectCode }}
+
+
+ {{ $t('trials:crcUpload:label:firstGiveMedicineTime') }}
+
+
+
+
+
+
+
+ {{ scope.row.VisitName }}
+
+ {{ scope.row.VisitName }}
+
+
+ {{ $t('trials:crcUpload:label:pd') }}
+
+
+
+ {{ $t('trials:crcUpload:label:lostVisit') }}
+
+
+
+ {{ $t('trials:crcUpload:label:finalVisit') }}
+
+
+
+ {{ $t('trials:crcUpload:label:enrollmentConfirm') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:crcUpload:label:dicom') }}: {{ scope.row.DicomStudyCount }},
+
+ {{ $t('trials:crcUpload:label:noneDicom') }}: {{ scope.row.NoneDicomStudyCount }},
+ {{ $t('trials:crcUpload:label:clinicalData') }}: {{ scope.row.IsHaveClinicalData?'w/':'w/o' }}
+
+ {{ $t('trials:crcUpload:label:noneDicom') }}: {{ scope.row.NoneDicomStudyCount }}
+
+
+ {{ scope.row.IsBaseLine && otherInfo.ClinicalInformationTransmissionEnum > 0?[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount,scope.row.IsHaveClinicalData?'w/':'w/o'].join(', '):[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount].join(', ') }}
+
+
+
+
+
+
+
+ {{ scope.row.EarliestScanDate?moment(scope.row.EarliestScanDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.LatestScanDate?moment(scope.row.LatestScanDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('SubmitState', scope.row.SubmitState*1) }}
+ {{ $fd('SubmitState', scope.row.SubmitState*1) }}
+ {{ $fd('SubmitState', scope.row.SubmitState*1) }}
+
+
+
+
+
+
+
+ --
+ {{ $fd('AuditStatePE', scope.row.AuditState*1) }}
+ {{ $fd('AuditStatePE', scope.row.AuditState*1) }}
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ searchData.TrialCode }}
+ {{ rowData.TrialSiteCode }}
+ {{ rowData.SubjectCode }}
+ {{ `${rowData.VisitName} (${rowData.VisitNum})` }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ $t('common:button:edit') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ searchData.TrialCode }}
+ {{ rowData.TrialSiteCode }}
+ {{ rowData.SubjectCode }}
+ {{ `${rowData.VisitName} (${rowData.VisitNum})` }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
{{ $t('trials:crcUpload:label:dicom') }}
+
+
+
+
+ {{ $t('trials:crcUpload:label:noneDicom') }}
+
+
+
+
+
+ {{ $t('trials:crcUpload:label:clinicalData') }}
+
+
+
+
+
+ {{ $t('trials:crcUpload:label:clinicalData') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+ {{ $t('trials:crcUpload:dialogTitle:edit') }}
+
+
+
+ {{ $t('trials:crcUpload:message:baseDate') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.LatestScanDate.split(' ')[0]}}
+
+
+
+
+
+ {{$fd('YesOrNo', scope.row.IsCRCConfirm)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.ClinicalDataSetName }}
+
+
+
+
+
+
+
+
+
+
{{ item.ClinicalDataSetName }}
+
+ {{ date.CheckDate.split(' ')[0] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/forward-list/index.vue b/src/views/trials/trials-panel/visit/forward-list/index.vue
new file mode 100644
index 0000000..f69a9d9
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/forward-list/index.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('trials:dicomForward:action:forward') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ --
+ {{ $fd('ForwardStateEnum', scope.row.ForwardState*1) }}
+ {{ $fd('ForwardStateEnum', scope.row.ForwardState*1) }}
+ {{ $fd('ForwardStateEnum', scope.row.ForwardState*1) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/index.vue b/src/views/trials/trials-panel/visit/index.vue
new file mode 100644
index 0000000..7d4275d
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/index.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/chatForm.vue b/src/views/trials/trials-panel/visit/qc-check/components/chatForm.vue
new file mode 100644
index 0000000..37bca56
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/chatForm.vue
@@ -0,0 +1,407 @@
+
+
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
![QC]()
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
+
+
+
+ {{ record.CreateUserName }}
+ ({{ record.CreateTime }})
+
+
+
+
+
![Admin]()
+
![PM]()
+
![CRC]()
+
![QC]()
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:qcQuality:dialogButton:agreeToReupload') }}
+
+
+
+ {{ $t('trials:qcQuality:dialogButton:send') }}
+
+
+
+ {{ $t('trials:qcQuality:dialogButton:close') }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/clinicalData.vue b/src/views/trials/trials-panel/visit/qc-check/components/clinicalData.vue
new file mode 100644
index 0000000..c5ff019
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/clinicalData.vue
@@ -0,0 +1,261 @@
+
+
+
+
+
+
+
+
{{ $t('trials:uploadClinicalData:title:pastTreatment') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ $fd('IsPdEnum', scope.row.IsPD) }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:pastSurgery') }}
+
+
+
+
+
+
+
+ {{ scope.row.OperationTime?moment(scope.row.OperationTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+ {{ $t('trials:uploadClinicalData:title:others') }}
+
+
+
+
+
+
+
+ {{ scope.row.StartTime?moment(scope.row.StartTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.EndTime?moment(scope.row.EndTime).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:uploadClinicalData:action:preview') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/dicomFiles.vue b/src/views/trials/trials-panel/visit/qc-check/components/dicomFiles.vue
new file mode 100644
index 0000000..760e08a
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/dicomFiles.vue
@@ -0,0 +1,215 @@
+
+
+
+
+
+ {{ $t('trials:audit:action:preview') }}
+
+
+
+
+
+
+
+
+
+
+ {{ getBodyPart(scope.row.BodyPartExamined) }}
+
+
+
+
+
+
+
+
+
+ {{ moment(scope.row.StudyTime).format('YYYY-MM-DD') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/manuals.vue b/src/views/trials/trials-panel/visit/qc-check/components/manuals.vue
new file mode 100644
index 0000000..3cd5b59
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/manuals.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+ {{ file.Name }}
+
+
+
+
+ {{ $t('trials:clinicaldara:title:nodata') }}
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/qsFormItem.vue b/src/views/trials/trials-panel/visit/qc-check/components/qsFormItem.vue
new file mode 100644
index 0000000..db06c60
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/qsFormItem.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+
+
+ {formItemChange(val, question)})"
+ >
+
+ {{ val }}
+
+
+
+
+
+ {{ val }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/qualityAssurance.vue b/src/views/trials/trials-panel/visit/qc-check/components/qualityAssurance.vue
new file mode 100644
index 0000000..5025923
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/qualityAssurance.vue
@@ -0,0 +1,1669 @@
+
+
+
+
+
+ {{$t('trials:reading:button:handbooks')}}
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:audit:title:dicoms') }}
+
+
+
+
+
+
+ {{ $t('trials:audit:tip:visitWindow') }}:
+
+ {{ `${upperLimit}~${lowerLimit}` }}
+
+
+ {{ $t('trials:audit:tip:visitWindowNotSet') }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:audit:button:previewAllDiocms') }}
+
+
+
+ {{ $t('trials:audit:button:previewReadingDiocms') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getBodyPart(scope.row.BodyPartForEdit) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.StudyTime ? moment(scope.row.StudyTime).format('YYYY-MM-DD') : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:audit:title:series') }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.StudyTime ? moment(scope.row.StudyTime).format('YYYY-MM-DD') : '' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:audit:title:nonDicomsTitle') }}
+
+
+
+
{{ $t('trials:audit:tip:nonDicomsVisitWindow') }}:
+
+ {{ `${upperLimit}~${lowerLimit}` }}
+
+
+ {{ $t('trials:audit:tip:visitWindowNotSet') }}
+
+
+
+
+
+
+
+ {{ $t('trials:audit:tip:nonDicomsPreviewAll') }}
+
+
+
+
+
+
+
+
+
+
+ {{ getBodyPart(scope.row.BodyPart) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:audit:button:nonDicomsPreview') }}
+
+
+
+
+
+
+
+ {{ scope.row.FileCount }}
+
+
+
+ {{ scope.row.FileCount }}
+
+
+
+
+
+
+ {{ moment(scope.row.ImageDate).format('YYYY-MM-DD') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:audit:title:questions') }}
+
+
+
+
+ {{ $t('trials:audit:message:noData') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.ChallengeCode }}
+
+
+
+
+
+ {{ $fd('IsClosed', scope.row.IsClosed) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ --
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsOverTime) }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:qcQuality:action:reply') }}
+
+
+
+ {{ $t('trials:qcQuality:action:close') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Bodypart',bodyPart) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('Bodypart',bodyPart) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:qcQuality:radio:reason1') }}
+
+ {{ $t('trials:qcQuality:radio:reason2') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:audit:button:save') }}
+
+
+
+ {{ $t('trials:audit:button:question') }}
+
+
+
+ {{ `${$t('trials:audit:button:historicalQuestions')}(${relationInfo.TotalChallengeCount !== undefined ?relationInfo.TotalChallengeCount:0}, ${relationInfo.NotClosedChallengeCount !== undefined?relationInfo.NotClosedChallengeCount:0})` }}
+
+
+
+
+ {{ $t('trials:audit:button:auditPassed') }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/questionForm.vue b/src/views/trials/trials-panel/visit/qc-check/components/questionForm.vue
new file mode 100644
index 0000000..dd4978f
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/questionForm.vue
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+
+
+
+ {formItemChange(val, item)})"
+ >
+
+
+
+ {formItemChange(val, item)})"
+ >
+ {{ val }}
+
+
+ {formItemChange(val, item)})"
+ >
+ {{ val }}
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/components/questions.vue b/src/views/trials/trials-panel/visit/qc-check/components/questions.vue
new file mode 100644
index 0000000..457d913
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/components/questions.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-check/index.vue b/src/views/trials/trials-panel/visit/qc-check/index.vue
new file mode 100644
index 0000000..8cd8fa7
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-check/index.vue
@@ -0,0 +1,1009 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.HandleUser }}
+
+ {{ item.HandleUserRealName }}
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+ --
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.VisitName }}
+
+
+ {{ scope.row.VisitName }}
+
+
+
+ {{ $t('trials:crcUpload:label:pd') }}
+
+
+
+ {{ $t('trials:crcUpload:label:lostVisit') }}
+
+
+
+ {{ $t('trials:crcUpload:label:finalVisit') }}
+
+
+
+ {{ $t('trials:crcUpload:label:enrollmentConfirm') }}
+
+
+
+
+
+
+
+
+ {{ $t('trials:crcUpload:label:dicom') }}: {{ scope.row.DicomStudyCount }},
+
+ {{ $t('trials:crcUpload:label:noneDicom') }}: {{ scope.row.NoneDicomStudyCount }},
+ {{ $t('trials:crcUpload:label:clinicalData') }}: {{ scope.row.IsHaveClinicalData?'w/':'w/o' }}
+
+ {{ $t('trials:crcUpload:label:noneDicom') }}: {{ scope.row.NoneDicomStudyCount }}
+
+
+ {{ scope.row.IsBaseLine && OtherInfo.ClinicalInformationTransmissionEnum > 0?[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount,scope.row.IsHaveClinicalData?'w/':'w/o'].join(', '):[scope.row.DicomStudyCount,scope.row.NoneDicomStudyCount].join(', ') }}
+
+
+
+
+
+
+
+ {{ scope.row.EarliestScanDate?moment(scope.row.EarliestScanDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+ {{ scope.row.LatestScanDate?moment(scope.row.LatestScanDate).format('YYYY-MM-DD'):'' }}
+
+
+
+
+
+
+
+
+ --
+ {{ $fd('AuditStatePE', scope.row.AuditState*1) }}
+
+ {{ $fd('AuditStatePE', scope.row.AuditState*1) }}
+
+
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+
+
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+
+
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+ {{ $fd('AuditStateRC', scope.row.AuditState*1) }}
+
+
+
+
+
+
+
+ {{ scope.row.PreliminaryAuditUserName }}
+
+ {{ scope.row.PreliminaryAuditUserName }}
+
+ {{ $t('trials:qcCheck:label:preliminary') }}
+
+
+
+
+ {{ scope.row.ReviewAuditUserName }}
+
+
+ {{ $t('trials:qcCheck:label:review') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ trialCode }}
+ {{ rowData.TrialSiteCode }}
+ {{ rowData.SubjectCode }}
+
+ {{ `${rowData.VisitName} (${rowData.VisitNum})` }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ searchData.TrialCode }}
+ {{ rowData.TrialSiteCode }}
+ {{ rowData.SubjectCode }}
+ {{ `${rowData.VisitName} (${rowData.VisitNum})` }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
{{ $t('trials:audit:tab:dicoms') }}
+
+
+
+
+
+
+
+
{{ $t('trials:audit:tab:nonDicoms') }}
+
+
+
+
+
+
+
+
{{ $t('trials:audit:tab:clinicalData') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-panel/visit/qc-question/index.vue b/src/views/trials/trials-panel/visit/qc-question/index.vue
new file mode 100644
index 0000000..2b38841
--- /dev/null
+++ b/src/views/trials/trials-panel/visit/qc-question/index.vue
@@ -0,0 +1,574 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.VisitName }}
+
+
+
+
+
+
+
+
+ {{ item.Creator }}
+
+ {{ item.CreatorRealName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+ {{ $t('common:button:export') }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.ChallengeCode }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('CurrentQCType', 0) }}
+ --
+
+
+ {{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}
+ {{ $fd('CurrentQCType', scope.row.CurrentQCEnum) }}
+ --
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ --
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+ {{ $fd('ReuploadEnum', scope.row.ReuploadEnum) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsOverTime) }}
+ {{ $fd('YesOrNo', scope.row.IsOverTime) }}
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsClosed) }}
+ {{ $fd('YesOrNo', scope.row.IsClosed) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:qcQuality:radio:reason1') }}
+ {{ $t('trials:qcQuality:radio:reason2') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/clinicalData.vue b/src/views/trials/trials-workbench/components/clinicalData.vue
new file mode 100644
index 0000000..0e23ff2
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/clinicalData.vue
@@ -0,0 +1,806 @@
+
+
+
+
+ 临床数据录入
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.ClinicalDataSetName }}
+
+
+
+
+
+
+
+
+
+
{{ item.ClinicalDataSetName }}
+
+ {{ date.CheckDate.split(' ')[0] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/clinicalDataConfirm.vue b/src/views/trials/trials-workbench/components/clinicalDataConfirm.vue
new file mode 100644
index 0000000..b92f5c4
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/clinicalDataConfirm.vue
@@ -0,0 +1,825 @@
+
+
+
+
+ 临床数据确认
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:button:search') }}
+
+
+
+ {{ $t('common:button:reset') }}
+
+
+
+
+
+
+
+ {{ scope.row.LatestScanDate ? scope.row.LatestScanDate.split(' ')[0] : ''}}
+
+
+
+
+
+ {{$fd('YesOrNo', scope.row.IsCRCConfirm)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.ClinicalDataSetName }}
+
+
+
+
+
+
+
+
+
+
{{ item.ClinicalDataSetName }}
+
+ {{ date.CheckDate.split(' ')[0] }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/clinicalDataPM.vue b/src/views/trials/trials-workbench/components/clinicalDataPM.vue
new file mode 100644
index 0000000..b78488c
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/clinicalDataPM.vue
@@ -0,0 +1,818 @@
+
+
+
+
+ {{ $t('trials:crcUpload:label:clinicalData') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.LatestScanDate.split(' ')[0]}}
+
+
+
+
+ {{scope.row.ClinicalNameList.toString()}}
+
+
+
+
+
+ {{$fd('YesOrNo', scope.row.IsPMConfirm)}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.ClinicalDataSetName }}
+
+
+
+
+
+
+
+
+
+
{{ item.ClinicalDataSetName }}
+
+ {{ date.CheckDate.split(' ')[0] }}
+
+
+
+
+
+
+
+
+
+
{{ $t('trials:readingPeriod:verify:title:result') }}
+
+
+
+
+
+ {{ $fd('YesOrNo', true) }}
+ N/A
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', true) }}
+ N/A
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/consistencyCheck.vue b/src/views/trials/trials-workbench/components/consistencyCheck.vue
new file mode 100644
index 0000000..cc3a284
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/consistencyCheck.vue
@@ -0,0 +1,150 @@
+
+
+
+
+
+ {{ $t('trials:tab:consistencyCheck') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/imageQualityControl.vue b/src/views/trials/trials-workbench/components/imageQualityControl.vue
new file mode 100644
index 0000000..78237ee
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/imageQualityControl.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+ 影像质控
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/imageQuestion.vue b/src/views/trials/trials-workbench/components/imageQuestion.vue
new file mode 100644
index 0000000..c61d501
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/imageQuestion.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+ 影像质疑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/imageReupload.vue b/src/views/trials/trials-workbench/components/imageReupload.vue
new file mode 100644
index 0000000..05c3192
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/imageReupload.vue
@@ -0,0 +1,139 @@
+
+
+
+
+
+ 影像重传
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/imageSubmission.vue b/src/views/trials/trials-workbench/components/imageSubmission.vue
new file mode 100644
index 0000000..1518c00
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/imageSubmission.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+ 加急影像提交
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/imageVerification.vue b/src/views/trials/trials-workbench/components/imageVerification.vue
new file mode 100644
index 0000000..56d4eb0
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/imageVerification.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+ 核查质疑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/imagesToRead.vue b/src/views/trials/trials-workbench/components/imagesToRead.vue
new file mode 100644
index 0000000..1af9a96
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/imagesToRead.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+ 影像待阅
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/medicalAudit.vue b/src/views/trials/trials-workbench/components/medicalAudit.vue
new file mode 100644
index 0000000..79bf7bf
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/medicalAudit.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+ 医学审核
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/medicalFeedback.vue b/src/views/trials/trials-workbench/components/medicalFeedback.vue
new file mode 100644
index 0000000..32fa410
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/medicalFeedback.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+ 医学反馈
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/needSignSysDoc.vue b/src/views/trials/trials-workbench/components/needSignSysDoc.vue
new file mode 100644
index 0000000..a6b7b11
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/needSignSysDoc.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+ {{ $t('trials:workbench:title:sysDocBeSigned') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('common:message:signTip') }}
+ {{ `(${currentMinMinutes * 60 - duration}s)` }}
+
+
+
+ {{ $t('common:button:sign') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('common:dialogTitle:sign') }}
+ {{ `(${$t('common:label:sign')}${ currentUser })` }}
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/needSignTrialDoc.vue b/src/views/trials/trials-workbench/components/needSignTrialDoc.vue
new file mode 100644
index 0000000..f99b7f0
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/needSignTrialDoc.vue
@@ -0,0 +1,134 @@
+
+
+
+
+
+ {{ $t('trials:workbench:title:trialDocBeSigned') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/panelCount.vue b/src/views/trials/trials-workbench/components/panelCount.vue
new file mode 100644
index 0000000..f763fca
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/panelCount.vue
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:workbench:label:trialsStats') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:workbench:label:attachmentsStats') }}
+
+
+
+ /
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:workbench:label:pendingTasksStats') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $t('trials:workbench:label:messagesStats') }}
+
+
+
+ /
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/qcQuestion.vue b/src/views/trials/trials-workbench/components/qcQuestion.vue
new file mode 100644
index 0000000..4460031
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/qcQuestion.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+ QC质疑
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/rereadApproval.vue b/src/views/trials/trials-workbench/components/rereadApproval.vue
new file mode 100644
index 0000000..2e0c950
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/rereadApproval.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+ 重阅审批
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/reviewerApproval.vue b/src/views/trials/trials-workbench/components/reviewerApproval.vue
new file mode 100644
index 0000000..53fbf17
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/reviewerApproval.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+ 阅片人审批
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/reviewerScreen.vue b/src/views/trials/trials-workbench/components/reviewerScreen.vue
new file mode 100644
index 0000000..246cd1a
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/reviewerScreen.vue
@@ -0,0 +1,145 @@
+
+
+
+
+
+ 重阅审批
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+ {{ $fd('YesOrNo', scope.row.IsUrgent) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/siteResearch.vue b/src/views/trials/trials-workbench/components/siteResearch.vue
new file mode 100644
index 0000000..11d072b
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/siteResearch.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+ {{ $t('trials:workbench:title:pendingSiteResearch') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/components/spmRereadApproval.vue b/src/views/trials/trials-workbench/components/spmRereadApproval.vue
new file mode 100644
index 0000000..61f3e44
--- /dev/null
+++ b/src/views/trials/trials-workbench/components/spmRereadApproval.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+ 重阅审批
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/trials/trials-workbench/index.vue b/src/views/trials/trials-workbench/index.vue
new file mode 100644
index 0000000..9b64e4a
--- /dev/null
+++ b/src/views/trials/trials-workbench/index.vue
@@ -0,0 +1,292 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/user/account.vue b/src/views/user/account.vue
new file mode 100644
index 0000000..bea9261
--- /dev/null
+++ b/src/views/user/account.vue
@@ -0,0 +1,95 @@
+
+
+
+
+ Security
+
+
+
+
+
+
+
+
+
+
+
+
+ save
+
+
+
+
+
+
diff --git a/src/views/user/editInfo.vue b/src/views/user/editInfo.vue
new file mode 100644
index 0000000..abf5600
--- /dev/null
+++ b/src/views/user/editInfo.vue
@@ -0,0 +1,247 @@
+
+
+
+
+
+ Basic Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Male
+ Female
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Affiliation
+
+
+
+ Internal
+ External
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Save
+
+
+
+
+
+
diff --git a/src/views/user/myInfo.vue b/src/views/user/myInfo.vue
new file mode 100644
index 0000000..13d4993
--- /dev/null
+++ b/src/views/user/myInfo.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
diff --git a/static/pdfjs/LICENSE b/static/pdfjs/LICENSE
new file mode 100644
index 0000000..f433b1a
--- /dev/null
+++ b/static/pdfjs/LICENSE
@@ -0,0 +1,177 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
diff --git a/static/pdfjs/build/pdf.js b/static/pdfjs/build/pdf.js
new file mode 100644
index 0000000..3e1de0b
--- /dev/null
+++ b/static/pdfjs/build/pdf.js
@@ -0,0 +1,15806 @@
+/**
+ * @licstart The following is the entire license notice for the
+ * Javascript code in this page
+ *
+ * Copyright 2022 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @licend The above is the entire license notice for the
+ * Javascript code in this page
+ */
+
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define("pdfjs-dist/build/pdf", [], factory);
+ else if(typeof exports === 'object')
+ exports["pdfjs-dist/build/pdf"] = factory();
+ else
+ root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
+})(this, function() {
+return /******/ (() => { // webpackBootstrap
+/******/ "use strict";
+/******/ var __webpack_modules__ = ([
+/* 0 */,
+/* 1 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.arrayByteLength = arrayByteLength;
+exports.arraysToBytes = arraysToBytes;
+exports.assert = assert;
+exports.bytesToString = bytesToString;
+exports.createPromiseCapability = createPromiseCapability;
+exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.escapeString = escapeString;
+exports.getModificationDate = getModificationDate;
+exports.getVerbosityLevel = getVerbosityLevel;
+exports.info = info;
+exports.isArrayBuffer = isArrayBuffer;
+exports.isArrayEqual = isArrayEqual;
+exports.isAscii = isAscii;
+exports.isSameOrigin = isSameOrigin;
+exports.objectFromMap = objectFromMap;
+exports.objectSize = objectSize;
+exports.setVerbosityLevel = setVerbosityLevel;
+exports.shadow = shadow;
+exports.string32 = string32;
+exports.stringToBytes = stringToBytes;
+exports.stringToPDFString = stringToPDFString;
+exports.stringToUTF16BEString = stringToUTF16BEString;
+exports.stringToUTF8String = stringToUTF8String;
+exports.unreachable = unreachable;
+exports.utf8StringToString = utf8StringToString;
+exports.warn = warn;
+
+__w_pdfjs_require__(2);
+
+const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
+exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
+const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
+exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
+const RenderingIntentFlag = {
+ ANY: 0x01,
+ DISPLAY: 0x02,
+ PRINT: 0x04,
+ ANNOTATIONS_FORMS: 0x10,
+ ANNOTATIONS_STORAGE: 0x20,
+ ANNOTATIONS_DISABLE: 0x40,
+ OPLIST: 0x100
+};
+exports.RenderingIntentFlag = RenderingIntentFlag;
+const AnnotationMode = {
+ DISABLE: 0,
+ ENABLE: 1,
+ ENABLE_FORMS: 2,
+ ENABLE_STORAGE: 3
+};
+exports.AnnotationMode = AnnotationMode;
+const PermissionFlag = {
+ PRINT: 0x04,
+ MODIFY_CONTENTS: 0x08,
+ COPY: 0x10,
+ MODIFY_ANNOTATIONS: 0x20,
+ FILL_INTERACTIVE_FORMS: 0x100,
+ COPY_FOR_ACCESSIBILITY: 0x200,
+ ASSEMBLE: 0x400,
+ PRINT_HIGH_QUALITY: 0x800
+};
+exports.PermissionFlag = PermissionFlag;
+const TextRenderingMode = {
+ FILL: 0,
+ STROKE: 1,
+ FILL_STROKE: 2,
+ INVISIBLE: 3,
+ FILL_ADD_TO_PATH: 4,
+ STROKE_ADD_TO_PATH: 5,
+ FILL_STROKE_ADD_TO_PATH: 6,
+ ADD_TO_PATH: 7,
+ FILL_STROKE_MASK: 3,
+ ADD_TO_PATH_FLAG: 4
+};
+exports.TextRenderingMode = TextRenderingMode;
+const ImageKind = {
+ GRAYSCALE_1BPP: 1,
+ RGB_24BPP: 2,
+ RGBA_32BPP: 3
+};
+exports.ImageKind = ImageKind;
+const AnnotationType = {
+ TEXT: 1,
+ LINK: 2,
+ FREETEXT: 3,
+ LINE: 4,
+ SQUARE: 5,
+ CIRCLE: 6,
+ POLYGON: 7,
+ POLYLINE: 8,
+ HIGHLIGHT: 9,
+ UNDERLINE: 10,
+ SQUIGGLY: 11,
+ STRIKEOUT: 12,
+ STAMP: 13,
+ CARET: 14,
+ INK: 15,
+ POPUP: 16,
+ FILEATTACHMENT: 17,
+ SOUND: 18,
+ MOVIE: 19,
+ WIDGET: 20,
+ SCREEN: 21,
+ PRINTERMARK: 22,
+ TRAPNET: 23,
+ WATERMARK: 24,
+ THREED: 25,
+ REDACT: 26
+};
+exports.AnnotationType = AnnotationType;
+const AnnotationStateModelType = {
+ MARKED: "Marked",
+ REVIEW: "Review"
+};
+exports.AnnotationStateModelType = AnnotationStateModelType;
+const AnnotationMarkedState = {
+ MARKED: "Marked",
+ UNMARKED: "Unmarked"
+};
+exports.AnnotationMarkedState = AnnotationMarkedState;
+const AnnotationReviewState = {
+ ACCEPTED: "Accepted",
+ REJECTED: "Rejected",
+ CANCELLED: "Cancelled",
+ COMPLETED: "Completed",
+ NONE: "None"
+};
+exports.AnnotationReviewState = AnnotationReviewState;
+const AnnotationReplyType = {
+ GROUP: "Group",
+ REPLY: "R"
+};
+exports.AnnotationReplyType = AnnotationReplyType;
+const AnnotationFlag = {
+ INVISIBLE: 0x01,
+ HIDDEN: 0x02,
+ PRINT: 0x04,
+ NOZOOM: 0x08,
+ NOROTATE: 0x10,
+ NOVIEW: 0x20,
+ READONLY: 0x40,
+ LOCKED: 0x80,
+ TOGGLENOVIEW: 0x100,
+ LOCKEDCONTENTS: 0x200
+};
+exports.AnnotationFlag = AnnotationFlag;
+const AnnotationFieldFlag = {
+ READONLY: 0x0000001,
+ REQUIRED: 0x0000002,
+ NOEXPORT: 0x0000004,
+ MULTILINE: 0x0001000,
+ PASSWORD: 0x0002000,
+ NOTOGGLETOOFF: 0x0004000,
+ RADIO: 0x0008000,
+ PUSHBUTTON: 0x0010000,
+ COMBO: 0x0020000,
+ EDIT: 0x0040000,
+ SORT: 0x0080000,
+ FILESELECT: 0x0100000,
+ MULTISELECT: 0x0200000,
+ DONOTSPELLCHECK: 0x0400000,
+ DONOTSCROLL: 0x0800000,
+ COMB: 0x1000000,
+ RICHTEXT: 0x2000000,
+ RADIOSINUNISON: 0x2000000,
+ COMMITONSELCHANGE: 0x4000000
+};
+exports.AnnotationFieldFlag = AnnotationFieldFlag;
+const AnnotationBorderStyleType = {
+ SOLID: 1,
+ DASHED: 2,
+ BEVELED: 3,
+ INSET: 4,
+ UNDERLINE: 5
+};
+exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
+const AnnotationActionEventType = {
+ E: "Mouse Enter",
+ X: "Mouse Exit",
+ D: "Mouse Down",
+ U: "Mouse Up",
+ Fo: "Focus",
+ Bl: "Blur",
+ PO: "PageOpen",
+ PC: "PageClose",
+ PV: "PageVisible",
+ PI: "PageInvisible",
+ K: "Keystroke",
+ F: "Format",
+ V: "Validate",
+ C: "Calculate"
+};
+exports.AnnotationActionEventType = AnnotationActionEventType;
+const DocumentActionEventType = {
+ WC: "WillClose",
+ WS: "WillSave",
+ DS: "DidSave",
+ WP: "WillPrint",
+ DP: "DidPrint"
+};
+exports.DocumentActionEventType = DocumentActionEventType;
+const PageActionEventType = {
+ O: "PageOpen",
+ C: "PageClose"
+};
+exports.PageActionEventType = PageActionEventType;
+const StreamType = {
+ UNKNOWN: "UNKNOWN",
+ FLATE: "FLATE",
+ LZW: "LZW",
+ DCT: "DCT",
+ JPX: "JPX",
+ JBIG: "JBIG",
+ A85: "A85",
+ AHX: "AHX",
+ CCF: "CCF",
+ RLX: "RLX"
+};
+exports.StreamType = StreamType;
+const FontType = {
+ UNKNOWN: "UNKNOWN",
+ TYPE1: "TYPE1",
+ TYPE1STANDARD: "TYPE1STANDARD",
+ TYPE1C: "TYPE1C",
+ CIDFONTTYPE0: "CIDFONTTYPE0",
+ CIDFONTTYPE0C: "CIDFONTTYPE0C",
+ TRUETYPE: "TRUETYPE",
+ CIDFONTTYPE2: "CIDFONTTYPE2",
+ TYPE3: "TYPE3",
+ OPENTYPE: "OPENTYPE",
+ TYPE0: "TYPE0",
+ MMTYPE1: "MMTYPE1"
+};
+exports.FontType = FontType;
+const VerbosityLevel = {
+ ERRORS: 0,
+ WARNINGS: 1,
+ INFOS: 5
+};
+exports.VerbosityLevel = VerbosityLevel;
+const CMapCompressionType = {
+ NONE: 0,
+ BINARY: 1,
+ STREAM: 2
+};
+exports.CMapCompressionType = CMapCompressionType;
+const OPS = {
+ dependency: 1,
+ setLineWidth: 2,
+ setLineCap: 3,
+ setLineJoin: 4,
+ setMiterLimit: 5,
+ setDash: 6,
+ setRenderingIntent: 7,
+ setFlatness: 8,
+ setGState: 9,
+ save: 10,
+ restore: 11,
+ transform: 12,
+ moveTo: 13,
+ lineTo: 14,
+ curveTo: 15,
+ curveTo2: 16,
+ curveTo3: 17,
+ closePath: 18,
+ rectangle: 19,
+ stroke: 20,
+ closeStroke: 21,
+ fill: 22,
+ eoFill: 23,
+ fillStroke: 24,
+ eoFillStroke: 25,
+ closeFillStroke: 26,
+ closeEOFillStroke: 27,
+ endPath: 28,
+ clip: 29,
+ eoClip: 30,
+ beginText: 31,
+ endText: 32,
+ setCharSpacing: 33,
+ setWordSpacing: 34,
+ setHScale: 35,
+ setLeading: 36,
+ setFont: 37,
+ setTextRenderingMode: 38,
+ setTextRise: 39,
+ moveText: 40,
+ setLeadingMoveText: 41,
+ setTextMatrix: 42,
+ nextLine: 43,
+ showText: 44,
+ showSpacedText: 45,
+ nextLineShowText: 46,
+ nextLineSetSpacingShowText: 47,
+ setCharWidth: 48,
+ setCharWidthAndBounds: 49,
+ setStrokeColorSpace: 50,
+ setFillColorSpace: 51,
+ setStrokeColor: 52,
+ setStrokeColorN: 53,
+ setFillColor: 54,
+ setFillColorN: 55,
+ setStrokeGray: 56,
+ setFillGray: 57,
+ setStrokeRGBColor: 58,
+ setFillRGBColor: 59,
+ setStrokeCMYKColor: 60,
+ setFillCMYKColor: 61,
+ shadingFill: 62,
+ beginInlineImage: 63,
+ beginImageData: 64,
+ endInlineImage: 65,
+ paintXObject: 66,
+ markPoint: 67,
+ markPointProps: 68,
+ beginMarkedContent: 69,
+ beginMarkedContentProps: 70,
+ endMarkedContent: 71,
+ beginCompat: 72,
+ endCompat: 73,
+ paintFormXObjectBegin: 74,
+ paintFormXObjectEnd: 75,
+ beginGroup: 76,
+ endGroup: 77,
+ beginAnnotations: 78,
+ endAnnotations: 79,
+ beginAnnotation: 80,
+ endAnnotation: 81,
+ paintJpegXObject: 82,
+ paintImageMaskXObject: 83,
+ paintImageMaskXObjectGroup: 84,
+ paintImageXObject: 85,
+ paintInlineImageXObject: 86,
+ paintInlineImageXObjectGroup: 87,
+ paintImageXObjectRepeat: 88,
+ paintImageMaskXObjectRepeat: 89,
+ paintSolidColorImageMask: 90,
+ constructPath: 91
+};
+exports.OPS = OPS;
+const UNSUPPORTED_FEATURES = {
+ unknown: "unknown",
+ forms: "forms",
+ javaScript: "javaScript",
+ signatures: "signatures",
+ smask: "smask",
+ shadingPattern: "shadingPattern",
+ font: "font",
+ errorTilingPattern: "errorTilingPattern",
+ errorExtGState: "errorExtGState",
+ errorXObject: "errorXObject",
+ errorFontLoadType3: "errorFontLoadType3",
+ errorFontState: "errorFontState",
+ errorFontMissing: "errorFontMissing",
+ errorFontTranslate: "errorFontTranslate",
+ errorColorSpace: "errorColorSpace",
+ errorOperatorList: "errorOperatorList",
+ errorFontToUnicode: "errorFontToUnicode",
+ errorFontLoadNative: "errorFontLoadNative",
+ errorFontBuildPath: "errorFontBuildPath",
+ errorFontGetPath: "errorFontGetPath",
+ errorMarkedContent: "errorMarkedContent",
+ errorContentSubStream: "errorContentSubStream"
+};
+exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
+const PasswordResponses = {
+ NEED_PASSWORD: 1,
+ INCORRECT_PASSWORD: 2
+};
+exports.PasswordResponses = PasswordResponses;
+let verbosity = VerbosityLevel.WARNINGS;
+
+function setVerbosityLevel(level) {
+ if (Number.isInteger(level)) {
+ verbosity = level;
+ }
+}
+
+function getVerbosityLevel() {
+ return verbosity;
+}
+
+function info(msg) {
+ if (verbosity >= VerbosityLevel.INFOS) {
+ console.log(`Info: ${msg}`);
+ }
+}
+
+function warn(msg) {
+ if (verbosity >= VerbosityLevel.WARNINGS) {
+ console.log(`Warning: ${msg}`);
+ }
+}
+
+function unreachable(msg) {
+ throw new Error(msg);
+}
+
+function assert(cond, msg) {
+ if (!cond) {
+ unreachable(msg);
+ }
+}
+
+function isSameOrigin(baseUrl, otherUrl) {
+ let base;
+
+ try {
+ base = new URL(baseUrl);
+
+ if (!base.origin || base.origin === "null") {
+ return false;
+ }
+ } catch (e) {
+ return false;
+ }
+
+ const other = new URL(otherUrl, base);
+ return base.origin === other.origin;
+}
+
+function _isValidProtocol(url) {
+ if (!url) {
+ return false;
+ }
+
+ switch (url.protocol) {
+ case "http:":
+ case "https:":
+ case "ftp:":
+ case "mailto:":
+ case "tel:":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+function createValidAbsoluteUrl(url, baseUrl = null, options = null) {
+ if (!url) {
+ return null;
+ }
+
+ try {
+ if (options && typeof url === "string") {
+ if (options.addDefaultProtocol && url.startsWith("www.")) {
+ const dots = url.match(/\./g);
+
+ if (dots && dots.length >= 2) {
+ url = `http://${url}`;
+ }
+ }
+
+ if (options.tryConvertEncoding) {
+ try {
+ url = stringToUTF8String(url);
+ } catch (ex) {}
+ }
+ }
+
+ const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
+
+ if (_isValidProtocol(absoluteUrl)) {
+ return absoluteUrl;
+ }
+ } catch (ex) {}
+
+ return null;
+}
+
+function shadow(obj, prop, value) {
+ Object.defineProperty(obj, prop, {
+ value,
+ enumerable: true,
+ configurable: true,
+ writable: false
+ });
+ return value;
+}
+
+const BaseException = function BaseExceptionClosure() {
+ function BaseException(message, name) {
+ if (this.constructor === BaseException) {
+ unreachable("Cannot initialize BaseException.");
+ }
+
+ this.message = message;
+ this.name = name;
+ }
+
+ BaseException.prototype = new Error();
+ BaseException.constructor = BaseException;
+ return BaseException;
+}();
+
+exports.BaseException = BaseException;
+
+class PasswordException extends BaseException {
+ constructor(msg, code) {
+ super(msg, "PasswordException");
+ this.code = code;
+ }
+
+}
+
+exports.PasswordException = PasswordException;
+
+class UnknownErrorException extends BaseException {
+ constructor(msg, details) {
+ super(msg, "UnknownErrorException");
+ this.details = details;
+ }
+
+}
+
+exports.UnknownErrorException = UnknownErrorException;
+
+class InvalidPDFException extends BaseException {
+ constructor(msg) {
+ super(msg, "InvalidPDFException");
+ }
+
+}
+
+exports.InvalidPDFException = InvalidPDFException;
+
+class MissingPDFException extends BaseException {
+ constructor(msg) {
+ super(msg, "MissingPDFException");
+ }
+
+}
+
+exports.MissingPDFException = MissingPDFException;
+
+class UnexpectedResponseException extends BaseException {
+ constructor(msg, status) {
+ super(msg, "UnexpectedResponseException");
+ this.status = status;
+ }
+
+}
+
+exports.UnexpectedResponseException = UnexpectedResponseException;
+
+class FormatError extends BaseException {
+ constructor(msg) {
+ super(msg, "FormatError");
+ }
+
+}
+
+exports.FormatError = FormatError;
+
+class AbortException extends BaseException {
+ constructor(msg) {
+ super(msg, "AbortException");
+ }
+
+}
+
+exports.AbortException = AbortException;
+
+function bytesToString(bytes) {
+ if (typeof bytes !== "object" || bytes === null || bytes.length === undefined) {
+ unreachable("Invalid argument for bytesToString");
+ }
+
+ const length = bytes.length;
+ const MAX_ARGUMENT_COUNT = 8192;
+
+ if (length < MAX_ARGUMENT_COUNT) {
+ return String.fromCharCode.apply(null, bytes);
+ }
+
+ const strBuf = [];
+
+ for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
+ const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
+ const chunk = bytes.subarray(i, chunkEnd);
+ strBuf.push(String.fromCharCode.apply(null, chunk));
+ }
+
+ return strBuf.join("");
+}
+
+function stringToBytes(str) {
+ if (typeof str !== "string") {
+ unreachable("Invalid argument for stringToBytes");
+ }
+
+ const length = str.length;
+ const bytes = new Uint8Array(length);
+
+ for (let i = 0; i < length; ++i) {
+ bytes[i] = str.charCodeAt(i) & 0xff;
+ }
+
+ return bytes;
+}
+
+function arrayByteLength(arr) {
+ if (arr.length !== undefined) {
+ return arr.length;
+ }
+
+ if (arr.byteLength !== undefined) {
+ return arr.byteLength;
+ }
+
+ unreachable("Invalid argument for arrayByteLength");
+}
+
+function arraysToBytes(arr) {
+ const length = arr.length;
+
+ if (length === 1 && arr[0] instanceof Uint8Array) {
+ return arr[0];
+ }
+
+ let resultLength = 0;
+
+ for (let i = 0; i < length; i++) {
+ resultLength += arrayByteLength(arr[i]);
+ }
+
+ let pos = 0;
+ const data = new Uint8Array(resultLength);
+
+ for (let i = 0; i < length; i++) {
+ let item = arr[i];
+
+ if (!(item instanceof Uint8Array)) {
+ if (typeof item === "string") {
+ item = stringToBytes(item);
+ } else {
+ item = new Uint8Array(item);
+ }
+ }
+
+ const itemLength = item.byteLength;
+ data.set(item, pos);
+ pos += itemLength;
+ }
+
+ return data;
+}
+
+function string32(value) {
+ return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
+}
+
+function objectSize(obj) {
+ return Object.keys(obj).length;
+}
+
+function objectFromMap(map) {
+ const obj = Object.create(null);
+
+ for (const [key, value] of map) {
+ obj[key] = value;
+ }
+
+ return obj;
+}
+
+function isLittleEndian() {
+ const buffer8 = new Uint8Array(4);
+ buffer8[0] = 1;
+ const view32 = new Uint32Array(buffer8.buffer, 0, 1);
+ return view32[0] === 1;
+}
+
+const IsLittleEndianCached = {
+ get value() {
+ return shadow(this, "value", isLittleEndian());
+ }
+
+};
+exports.IsLittleEndianCached = IsLittleEndianCached;
+
+function isEvalSupported() {
+ try {
+ new Function("");
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+const IsEvalSupportedCached = {
+ get value() {
+ return shadow(this, "value", isEvalSupported());
+ }
+
+};
+exports.IsEvalSupportedCached = IsEvalSupportedCached;
+const hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, "0"));
+
+class Util {
+ static makeHexColor(r, g, b) {
+ return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;
+ }
+
+ static transform(m1, m2) {
+ return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];
+ }
+
+ static applyTransform(p, m) {
+ const xt = p[0] * m[0] + p[1] * m[2] + m[4];
+ const yt = p[0] * m[1] + p[1] * m[3] + m[5];
+ return [xt, yt];
+ }
+
+ static applyInverseTransform(p, m) {
+ const d = m[0] * m[3] - m[1] * m[2];
+ const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
+ const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
+ return [xt, yt];
+ }
+
+ static getAxialAlignedBoundingBox(r, m) {
+ const p1 = Util.applyTransform(r, m);
+ const p2 = Util.applyTransform(r.slice(2, 4), m);
+ const p3 = Util.applyTransform([r[0], r[3]], m);
+ const p4 = Util.applyTransform([r[2], r[1]], m);
+ return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];
+ }
+
+ static inverseTransform(m) {
+ const d = m[0] * m[3] - m[1] * m[2];
+ return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
+ }
+
+ static apply3dTransform(m, v) {
+ return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];
+ }
+
+ static singularValueDecompose2dScale(m) {
+ const transpose = [m[0], m[2], m[1], m[3]];
+ const a = m[0] * transpose[0] + m[1] * transpose[2];
+ const b = m[0] * transpose[1] + m[1] * transpose[3];
+ const c = m[2] * transpose[0] + m[3] * transpose[2];
+ const d = m[2] * transpose[1] + m[3] * transpose[3];
+ const first = (a + d) / 2;
+ const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;
+ const sx = first + second || 1;
+ const sy = first - second || 1;
+ return [Math.sqrt(sx), Math.sqrt(sy)];
+ }
+
+ static normalizeRect(rect) {
+ const r = rect.slice(0);
+
+ if (rect[0] > rect[2]) {
+ r[0] = rect[2];
+ r[2] = rect[0];
+ }
+
+ if (rect[1] > rect[3]) {
+ r[1] = rect[3];
+ r[3] = rect[1];
+ }
+
+ return r;
+ }
+
+ static intersect(rect1, rect2) {
+ function compare(a, b) {
+ return a - b;
+ }
+
+ const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);
+ const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);
+ const result = [];
+ rect1 = Util.normalizeRect(rect1);
+ rect2 = Util.normalizeRect(rect2);
+
+ if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
+ result[0] = orderedX[1];
+ result[2] = orderedX[2];
+ } else {
+ return null;
+ }
+
+ if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
+ result[1] = orderedY[1];
+ result[3] = orderedY[2];
+ } else {
+ return null;
+ }
+
+ return result;
+ }
+
+ static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {
+ const tvalues = [],
+ bounds = [[], []];
+ let a, b, c, t, t1, t2, b2ac, sqrtb2ac;
+
+ for (let i = 0; i < 2; ++i) {
+ if (i === 0) {
+ b = 6 * x0 - 12 * x1 + 6 * x2;
+ a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;
+ c = 3 * x1 - 3 * x0;
+ } else {
+ b = 6 * y0 - 12 * y1 + 6 * y2;
+ a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;
+ c = 3 * y1 - 3 * y0;
+ }
+
+ if (Math.abs(a) < 1e-12) {
+ if (Math.abs(b) < 1e-12) {
+ continue;
+ }
+
+ t = -c / b;
+
+ if (0 < t && t < 1) {
+ tvalues.push(t);
+ }
+
+ continue;
+ }
+
+ b2ac = b * b - 4 * c * a;
+ sqrtb2ac = Math.sqrt(b2ac);
+
+ if (b2ac < 0) {
+ continue;
+ }
+
+ t1 = (-b + sqrtb2ac) / (2 * a);
+
+ if (0 < t1 && t1 < 1) {
+ tvalues.push(t1);
+ }
+
+ t2 = (-b - sqrtb2ac) / (2 * a);
+
+ if (0 < t2 && t2 < 1) {
+ tvalues.push(t2);
+ }
+ }
+
+ let j = tvalues.length,
+ mt;
+ const jlen = j;
+
+ while (j--) {
+ t = tvalues[j];
+ mt = 1 - t;
+ bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;
+ bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;
+ }
+
+ bounds[0][jlen] = x0;
+ bounds[1][jlen] = y0;
+ bounds[0][jlen + 1] = x3;
+ bounds[1][jlen + 1] = y3;
+ bounds[0].length = bounds[1].length = jlen + 2;
+ return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];
+ }
+
+}
+
+exports.Util = Util;
+const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];
+
+function stringToPDFString(str) {
+ if (str[0] >= "\xEF") {
+ let encoding;
+
+ if (str[0] === "\xFE" && str[1] === "\xFF") {
+ encoding = "utf-16be";
+ } else if (str[0] === "\xFF" && str[1] === "\xFE") {
+ encoding = "utf-16le";
+ } else if (str[0] === "\xEF" && str[1] === "\xBB" && str[2] === "\xBF") {
+ encoding = "utf-8";
+ }
+
+ if (encoding) {
+ try {
+ const decoder = new TextDecoder(encoding, {
+ fatal: true
+ });
+ const buffer = stringToBytes(str);
+ return decoder.decode(buffer);
+ } catch (ex) {
+ warn(`stringToPDFString: "${ex}".`);
+ }
+ }
+ }
+
+ const strBuf = [];
+
+ for (let i = 0, ii = str.length; i < ii; i++) {
+ const code = PDFStringTranslateTable[str.charCodeAt(i)];
+ strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+ }
+
+ return strBuf.join("");
+}
+
+function escapeString(str) {
+ return str.replace(/([()\\\n\r])/g, match => {
+ if (match === "\n") {
+ return "\\n";
+ } else if (match === "\r") {
+ return "\\r";
+ }
+
+ return `\\${match}`;
+ });
+}
+
+function isAscii(str) {
+ return /^[\x00-\x7F]*$/.test(str);
+}
+
+function stringToUTF16BEString(str) {
+ const buf = ["\xFE\xFF"];
+
+ for (let i = 0, ii = str.length; i < ii; i++) {
+ const char = str.charCodeAt(i);
+ buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));
+ }
+
+ return buf.join("");
+}
+
+function stringToUTF8String(str) {
+ return decodeURIComponent(escape(str));
+}
+
+function utf8StringToString(str) {
+ return unescape(encodeURIComponent(str));
+}
+
+function isArrayBuffer(v) {
+ return typeof v === "object" && v !== null && v.byteLength !== undefined;
+}
+
+function isArrayEqual(arr1, arr2) {
+ if (arr1.length !== arr2.length) {
+ return false;
+ }
+
+ for (let i = 0, ii = arr1.length; i < ii; i++) {
+ if (arr1[i] !== arr2[i]) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function getModificationDate(date = new Date()) {
+ const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, "0"), date.getUTCDate().toString().padStart(2, "0"), date.getUTCHours().toString().padStart(2, "0"), date.getUTCMinutes().toString().padStart(2, "0"), date.getUTCSeconds().toString().padStart(2, "0")];
+ return buffer.join("");
+}
+
+function createPromiseCapability() {
+ const capability = Object.create(null);
+ let isSettled = false;
+ Object.defineProperty(capability, "settled", {
+ get() {
+ return isSettled;
+ }
+
+ });
+ capability.promise = new Promise(function (resolve, reject) {
+ capability.resolve = function (data) {
+ isSettled = true;
+ resolve(data);
+ };
+
+ capability.reject = function (reason) {
+ isSettled = true;
+ reject(reason);
+ };
+ });
+ return capability;
+}
+
+/***/ }),
+/* 2 */
+/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {
+
+
+
+var _is_node = __w_pdfjs_require__(3);
+
+;
+
+/***/ }),
+/* 3 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.isNodeJS = void 0;
+const isNodeJS = typeof process === "object" && process + "" === "[object process]" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== "browser");
+exports.isNodeJS = isNodeJS;
+
+/***/ }),
+/* 4 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.build = exports.RenderTask = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;
+exports.getDocument = getDocument;
+exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
+exports.version = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _display_utils = __w_pdfjs_require__(5);
+
+var _font_loader = __w_pdfjs_require__(7);
+
+var _node_utils = __w_pdfjs_require__(8);
+
+var _annotation_storage = __w_pdfjs_require__(9);
+
+var _canvas = __w_pdfjs_require__(10);
+
+var _worker_options = __w_pdfjs_require__(12);
+
+var _is_node = __w_pdfjs_require__(3);
+
+var _message_handler = __w_pdfjs_require__(13);
+
+var _metadata = __w_pdfjs_require__(14);
+
+var _optional_content_config = __w_pdfjs_require__(15);
+
+var _transport_stream = __w_pdfjs_require__(16);
+
+var _xfa_text = __w_pdfjs_require__(17);
+
+const DEFAULT_RANGE_CHUNK_SIZE = 65536;
+const RENDERING_CANCELLED_TIMEOUT = 100;
+const DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;
+exports.DefaultCanvasFactory = DefaultCanvasFactory;
+const DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;
+exports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;
+const DefaultStandardFontDataFactory = _is_node.isNodeJS ? _node_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;
+exports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;
+let createPDFNetworkStream;
+
+function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
+ createPDFNetworkStream = pdfNetworkStreamFactory;
+}
+
+function getDocument(src) {
+ const task = new PDFDocumentLoadingTask();
+ let source;
+
+ if (typeof src === "string" || src instanceof URL) {
+ source = {
+ url: src
+ };
+ } else if ((0, _util.isArrayBuffer)(src)) {
+ source = {
+ data: src
+ };
+ } else if (src instanceof PDFDataRangeTransport) {
+ source = {
+ range: src
+ };
+ } else {
+ if (typeof src !== "object") {
+ throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or parameter object.");
+ }
+
+ if (!src.url && !src.data && !src.range) {
+ throw new Error("Invalid parameter object: need either .data, .range or .url");
+ }
+
+ source = src;
+ }
+
+ const params = Object.create(null);
+ let rangeTransport = null,
+ worker = null;
+
+ for (const key in source) {
+ const value = source[key];
+
+ switch (key) {
+ case "url":
+ if (typeof window !== "undefined") {
+ try {
+ params[key] = new URL(value, window.location).href;
+ continue;
+ } catch (ex) {
+ (0, _util.warn)(`Cannot create valid URL: "${ex}".`);
+ }
+ } else if (typeof value === "string" || value instanceof URL) {
+ params[key] = value.toString();
+ continue;
+ }
+
+ throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url property.");
+
+ case "range":
+ rangeTransport = value;
+ continue;
+
+ case "worker":
+ worker = value;
+ continue;
+
+ case "data":
+ if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) {
+ params[key] = new Uint8Array(value);
+ } else if (value instanceof Uint8Array) {
+ break;
+ } else if (typeof value === "string") {
+ params[key] = (0, _util.stringToBytes)(value);
+ } else if (typeof value === "object" && value !== null && !isNaN(value.length)) {
+ params[key] = new Uint8Array(value);
+ } else if ((0, _util.isArrayBuffer)(value)) {
+ params[key] = new Uint8Array(value);
+ } else {
+ throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is expected in the data property.");
+ }
+
+ continue;
+ }
+
+ params[key] = value;
+ }
+
+ params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
+ params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;
+ params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;
+ params.ignoreErrors = params.stopAtErrors !== true;
+ params.fontExtraProperties = params.fontExtraProperties === true;
+ params.pdfBug = params.pdfBug === true;
+ params.enableXfa = params.enableXfa === true;
+
+ if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {
+ params.docBaseUrl = null;
+ }
+
+ if (!Number.isInteger(params.maxImageSize)) {
+ params.maxImageSize = -1;
+ }
+
+ if (typeof params.useWorkerFetch !== "boolean") {
+ params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;
+ }
+
+ if (typeof params.isEvalSupported !== "boolean") {
+ params.isEvalSupported = true;
+ }
+
+ if (typeof params.disableFontFace !== "boolean") {
+ params.disableFontFace = _is_node.isNodeJS;
+ }
+
+ if (typeof params.useSystemFonts !== "boolean") {
+ params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;
+ }
+
+ if (typeof params.ownerDocument === "undefined") {
+ params.ownerDocument = globalThis.document;
+ }
+
+ if (typeof params.disableRange !== "boolean") {
+ params.disableRange = false;
+ }
+
+ if (typeof params.disableStream !== "boolean") {
+ params.disableStream = false;
+ }
+
+ if (typeof params.disableAutoFetch !== "boolean") {
+ params.disableAutoFetch = false;
+ }
+
+ (0, _util.setVerbosityLevel)(params.verbosity);
+
+ if (!worker) {
+ const workerParams = {
+ verbosity: params.verbosity,
+ port: _worker_options.GlobalWorkerOptions.workerPort
+ };
+ worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);
+ task._worker = worker;
+ }
+
+ const docId = task.docId;
+ worker.promise.then(function () {
+ if (task.destroyed) {
+ throw new Error("Loading aborted");
+ }
+
+ const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);
+
+ const networkStreamPromise = new Promise(function (resolve) {
+ let networkStream;
+
+ if (rangeTransport) {
+ networkStream = new _transport_stream.PDFDataTransportStream({
+ length: params.length,
+ initialData: params.initialData,
+ progressiveDone: params.progressiveDone,
+ contentDispositionFilename: params.contentDispositionFilename,
+ disableRange: params.disableRange,
+ disableStream: params.disableStream
+ }, rangeTransport);
+ } else if (!params.data) {
+ networkStream = createPDFNetworkStream({
+ url: params.url,
+ length: params.length,
+ httpHeaders: params.httpHeaders,
+ withCredentials: params.withCredentials,
+ rangeChunkSize: params.rangeChunkSize,
+ disableRange: params.disableRange,
+ disableStream: params.disableStream
+ });
+ }
+
+ resolve(networkStream);
+ });
+ return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {
+ if (task.destroyed) {
+ throw new Error("Loading aborted");
+ }
+
+ const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
+ const transport = new WorkerTransport(messageHandler, task, networkStream, params);
+ task._transport = transport;
+ messageHandler.send("Ready", null);
+ });
+ }).catch(task._capability.reject);
+ return task;
+}
+
+async function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
+ if (worker.destroyed) {
+ throw new Error("Worker was destroyed");
+ }
+
+ if (pdfDataRangeTransport) {
+ source.length = pdfDataRangeTransport.length;
+ source.initialData = pdfDataRangeTransport.initialData;
+ source.progressiveDone = pdfDataRangeTransport.progressiveDone;
+ source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;
+ }
+
+ const workerId = await worker.messageHandler.sendWithPromise("GetDocRequest", {
+ docId,
+ apiVersion: '2.13.216',
+ source: {
+ data: source.data,
+ url: source.url,
+ password: source.password,
+ disableAutoFetch: source.disableAutoFetch,
+ rangeChunkSize: source.rangeChunkSize,
+ length: source.length
+ },
+ maxImageSize: source.maxImageSize,
+ disableFontFace: source.disableFontFace,
+ docBaseUrl: source.docBaseUrl,
+ ignoreErrors: source.ignoreErrors,
+ isEvalSupported: source.isEvalSupported,
+ fontExtraProperties: source.fontExtraProperties,
+ enableXfa: source.enableXfa,
+ useSystemFonts: source.useSystemFonts,
+ cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,
+ standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null
+ });
+
+ if (worker.destroyed) {
+ throw new Error("Worker was destroyed");
+ }
+
+ return workerId;
+}
+
+class PDFDocumentLoadingTask {
+ static get idCounters() {
+ return (0, _util.shadow)(this, "idCounters", {
+ doc: 0
+ });
+ }
+
+ constructor() {
+ this._capability = (0, _util.createPromiseCapability)();
+ this._transport = null;
+ this._worker = null;
+ this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;
+ this.destroyed = false;
+ this.onPassword = null;
+ this.onProgress = null;
+ this.onUnsupportedFeature = null;
+ }
+
+ get promise() {
+ return this._capability.promise;
+ }
+
+ async destroy() {
+ this.destroyed = true;
+ await this._transport?.destroy();
+ this._transport = null;
+
+ if (this._worker) {
+ this._worker.destroy();
+
+ this._worker = null;
+ }
+ }
+
+}
+
+exports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;
+
+class PDFDataRangeTransport {
+ constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
+ this.length = length;
+ this.initialData = initialData;
+ this.progressiveDone = progressiveDone;
+ this.contentDispositionFilename = contentDispositionFilename;
+ this._rangeListeners = [];
+ this._progressListeners = [];
+ this._progressiveReadListeners = [];
+ this._progressiveDoneListeners = [];
+ this._readyCapability = (0, _util.createPromiseCapability)();
+ }
+
+ addRangeListener(listener) {
+ this._rangeListeners.push(listener);
+ }
+
+ addProgressListener(listener) {
+ this._progressListeners.push(listener);
+ }
+
+ addProgressiveReadListener(listener) {
+ this._progressiveReadListeners.push(listener);
+ }
+
+ addProgressiveDoneListener(listener) {
+ this._progressiveDoneListeners.push(listener);
+ }
+
+ onDataRange(begin, chunk) {
+ for (const listener of this._rangeListeners) {
+ listener(begin, chunk);
+ }
+ }
+
+ onDataProgress(loaded, total) {
+ this._readyCapability.promise.then(() => {
+ for (const listener of this._progressListeners) {
+ listener(loaded, total);
+ }
+ });
+ }
+
+ onDataProgressiveRead(chunk) {
+ this._readyCapability.promise.then(() => {
+ for (const listener of this._progressiveReadListeners) {
+ listener(chunk);
+ }
+ });
+ }
+
+ onDataProgressiveDone() {
+ this._readyCapability.promise.then(() => {
+ for (const listener of this._progressiveDoneListeners) {
+ listener();
+ }
+ });
+ }
+
+ transportReady() {
+ this._readyCapability.resolve();
+ }
+
+ requestDataRange(begin, end) {
+ (0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange");
+ }
+
+ abort() {}
+
+}
+
+exports.PDFDataRangeTransport = PDFDataRangeTransport;
+
+class PDFDocumentProxy {
+ constructor(pdfInfo, transport) {
+ this._pdfInfo = pdfInfo;
+ this._transport = transport;
+ Object.defineProperty(this, "fingerprint", {
+ get() {
+ (0, _display_utils.deprecated)("`PDFDocumentProxy.fingerprint`, " + "please use `PDFDocumentProxy.fingerprints` instead.");
+ return this.fingerprints[0];
+ }
+
+ });
+ Object.defineProperty(this, "getStats", {
+ value: async () => {
+ (0, _display_utils.deprecated)("`PDFDocumentProxy.getStats`, " + "please use the `PDFDocumentProxy.stats`-getter instead.");
+ return this.stats || {
+ streamTypes: {},
+ fontTypes: {}
+ };
+ }
+ });
+ }
+
+ get annotationStorage() {
+ return this._transport.annotationStorage;
+ }
+
+ get numPages() {
+ return this._pdfInfo.numPages;
+ }
+
+ get fingerprints() {
+ return this._pdfInfo.fingerprints;
+ }
+
+ get stats() {
+ return this._transport.stats;
+ }
+
+ get isPureXfa() {
+ return !!this._transport._htmlForXfa;
+ }
+
+ get allXfaHtml() {
+ return this._transport._htmlForXfa;
+ }
+
+ getPage(pageNumber) {
+ return this._transport.getPage(pageNumber);
+ }
+
+ getPageIndex(ref) {
+ return this._transport.getPageIndex(ref);
+ }
+
+ getDestinations() {
+ return this._transport.getDestinations();
+ }
+
+ getDestination(id) {
+ return this._transport.getDestination(id);
+ }
+
+ getPageLabels() {
+ return this._transport.getPageLabels();
+ }
+
+ getPageLayout() {
+ return this._transport.getPageLayout();
+ }
+
+ getPageMode() {
+ return this._transport.getPageMode();
+ }
+
+ getViewerPreferences() {
+ return this._transport.getViewerPreferences();
+ }
+
+ getOpenAction() {
+ return this._transport.getOpenAction();
+ }
+
+ getAttachments() {
+ return this._transport.getAttachments();
+ }
+
+ getJavaScript() {
+ return this._transport.getJavaScript();
+ }
+
+ getJSActions() {
+ return this._transport.getDocJSActions();
+ }
+
+ getOutline() {
+ return this._transport.getOutline();
+ }
+
+ getOptionalContentConfig() {
+ return this._transport.getOptionalContentConfig();
+ }
+
+ getPermissions() {
+ return this._transport.getPermissions();
+ }
+
+ getMetadata() {
+ return this._transport.getMetadata();
+ }
+
+ getMarkInfo() {
+ return this._transport.getMarkInfo();
+ }
+
+ getData() {
+ return this._transport.getData();
+ }
+
+ getDownloadInfo() {
+ return this._transport.downloadInfoCapability.promise;
+ }
+
+ cleanup(keepLoadedFonts = false) {
+ return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);
+ }
+
+ destroy() {
+ return this.loadingTask.destroy();
+ }
+
+ get loadingParams() {
+ return this._transport.loadingParams;
+ }
+
+ get loadingTask() {
+ return this._transport.loadingTask;
+ }
+
+ saveDocument() {
+ if (this._transport.annotationStorage.size <= 0) {
+ (0, _display_utils.deprecated)("saveDocument called while `annotationStorage` is empty, " + "please use the getData-method instead.");
+ }
+
+ return this._transport.saveDocument();
+ }
+
+ getFieldObjects() {
+ return this._transport.getFieldObjects();
+ }
+
+ hasJSActions() {
+ return this._transport.hasJSActions();
+ }
+
+ getCalculationOrderIds() {
+ return this._transport.getCalculationOrderIds();
+ }
+
+}
+
+exports.PDFDocumentProxy = PDFDocumentProxy;
+
+class PDFPageProxy {
+ constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {
+ this._pageIndex = pageIndex;
+ this._pageInfo = pageInfo;
+ this._ownerDocument = ownerDocument;
+ this._transport = transport;
+ this._stats = pdfBug ? new _display_utils.StatTimer() : null;
+ this._pdfBug = pdfBug;
+ this.commonObjs = transport.commonObjs;
+ this.objs = new PDFObjects();
+ this.cleanupAfterRender = false;
+ this.pendingCleanup = false;
+ this._intentStates = new Map();
+ this._annotationPromises = new Map();
+ this.destroyed = false;
+ }
+
+ get pageNumber() {
+ return this._pageIndex + 1;
+ }
+
+ get rotate() {
+ return this._pageInfo.rotate;
+ }
+
+ get ref() {
+ return this._pageInfo.ref;
+ }
+
+ get userUnit() {
+ return this._pageInfo.userUnit;
+ }
+
+ get view() {
+ return this._pageInfo.view;
+ }
+
+ getViewport({
+ scale,
+ rotation = this.rotate,
+ offsetX = 0,
+ offsetY = 0,
+ dontFlip = false
+ } = {}) {
+ return new _display_utils.PageViewport({
+ viewBox: this.view,
+ scale,
+ rotation,
+ offsetX,
+ offsetY,
+ dontFlip
+ });
+ }
+
+ getAnnotations({
+ intent = "display"
+ } = {}) {
+ const intentArgs = this._transport.getRenderingIntent(intent);
+
+ let promise = this._annotationPromises.get(intentArgs.cacheKey);
+
+ if (!promise) {
+ promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);
+
+ this._annotationPromises.set(intentArgs.cacheKey, promise);
+
+ promise = promise.then(annotations => {
+ for (const annotation of annotations) {
+ if (annotation.titleObj !== undefined) {
+ Object.defineProperty(annotation, "title", {
+ get() {
+ (0, _display_utils.deprecated)("`title`-property on annotation, please use `titleObj` instead.");
+ return annotation.titleObj.str;
+ }
+
+ });
+ }
+
+ if (annotation.contentsObj !== undefined) {
+ Object.defineProperty(annotation, "contents", {
+ get() {
+ (0, _display_utils.deprecated)("`contents`-property on annotation, please use `contentsObj` instead.");
+ return annotation.contentsObj.str;
+ }
+
+ });
+ }
+ }
+
+ return annotations;
+ });
+ }
+
+ return promise;
+ }
+
+ getJSActions() {
+ return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex);
+ }
+
+ async getXfa() {
+ return this._transport._htmlForXfa?.children[this._pageIndex] || null;
+ }
+
+ render({
+ canvasContext,
+ viewport,
+ intent = "display",
+ annotationMode = _util.AnnotationMode.ENABLE,
+ transform = null,
+ imageLayer = null,
+ canvasFactory = null,
+ background = null,
+ optionalContentConfigPromise = null,
+ annotationCanvasMap = null
+ }) {
+ if (arguments[0]?.renderInteractiveForms !== undefined) {
+ (0, _display_utils.deprecated)("render no longer accepts the `renderInteractiveForms`-option, " + "please use the `annotationMode`-option instead.");
+
+ if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) {
+ annotationMode = _util.AnnotationMode.ENABLE_FORMS;
+ }
+ }
+
+ if (arguments[0]?.includeAnnotationStorage !== undefined) {
+ (0, _display_utils.deprecated)("render no longer accepts the `includeAnnotationStorage`-option, " + "please use the `annotationMode`-option instead.");
+
+ if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) {
+ annotationMode = _util.AnnotationMode.ENABLE_STORAGE;
+ }
+ }
+
+ if (this._stats) {
+ this._stats.time("Overall");
+ }
+
+ const intentArgs = this._transport.getRenderingIntent(intent, annotationMode);
+
+ this.pendingCleanup = false;
+
+ if (!optionalContentConfigPromise) {
+ optionalContentConfigPromise = this._transport.getOptionalContentConfig();
+ }
+
+ let intentState = this._intentStates.get(intentArgs.cacheKey);
+
+ if (!intentState) {
+ intentState = Object.create(null);
+
+ this._intentStates.set(intentArgs.cacheKey, intentState);
+ }
+
+ if (intentState.streamReaderCancelTimeout) {
+ clearTimeout(intentState.streamReaderCancelTimeout);
+ intentState.streamReaderCancelTimeout = null;
+ }
+
+ const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({
+ ownerDocument: this._ownerDocument
+ });
+ const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);
+
+ if (!intentState.displayReadyCapability) {
+ intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false
+ };
+
+ if (this._stats) {
+ this._stats.time("Page Request");
+ }
+
+ this._pumpOperatorList(intentArgs);
+ }
+
+ const complete = error => {
+ intentState.renderTasks.delete(internalRenderTask);
+
+ if (this.cleanupAfterRender || intentPrint) {
+ this.pendingCleanup = true;
+ }
+
+ this._tryCleanup();
+
+ if (error) {
+ internalRenderTask.capability.reject(error);
+
+ this._abortOperatorList({
+ intentState,
+ reason: error instanceof Error ? error : new Error(error)
+ });
+ } else {
+ internalRenderTask.capability.resolve();
+ }
+
+ if (this._stats) {
+ this._stats.timeEnd("Rendering");
+
+ this._stats.timeEnd("Overall");
+ }
+ };
+
+ const internalRenderTask = new InternalRenderTask({
+ callback: complete,
+ params: {
+ canvasContext,
+ viewport,
+ transform,
+ imageLayer,
+ background
+ },
+ objs: this.objs,
+ commonObjs: this.commonObjs,
+ annotationCanvasMap,
+ operatorList: intentState.operatorList,
+ pageIndex: this._pageIndex,
+ canvasFactory: canvasFactoryInstance,
+ useRequestAnimationFrame: !intentPrint,
+ pdfBug: this._pdfBug
+ });
+ (intentState.renderTasks ||= new Set()).add(internalRenderTask);
+ const renderTask = internalRenderTask.task;
+ Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {
+ if (this.pendingCleanup) {
+ complete();
+ return;
+ }
+
+ if (this._stats) {
+ this._stats.time("Rendering");
+ }
+
+ internalRenderTask.initializeGraphics({
+ transparency,
+ optionalContentConfig
+ });
+ internalRenderTask.operatorListChanged();
+ }).catch(complete);
+ return renderTask;
+ }
+
+ getOperatorList({
+ intent = "display",
+ annotationMode = _util.AnnotationMode.ENABLE
+ } = {}) {
+ function operatorListChanged() {
+ if (intentState.operatorList.lastChunk) {
+ intentState.opListReadCapability.resolve(intentState.operatorList);
+ intentState.renderTasks.delete(opListTask);
+ }
+ }
+
+ const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true);
+
+ let intentState = this._intentStates.get(intentArgs.cacheKey);
+
+ if (!intentState) {
+ intentState = Object.create(null);
+
+ this._intentStates.set(intentArgs.cacheKey, intentState);
+ }
+
+ let opListTask;
+
+ if (!intentState.opListReadCapability) {
+ opListTask = Object.create(null);
+ opListTask.operatorListChanged = operatorListChanged;
+ intentState.opListReadCapability = (0, _util.createPromiseCapability)();
+ (intentState.renderTasks ||= new Set()).add(opListTask);
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false
+ };
+
+ if (this._stats) {
+ this._stats.time("Page Request");
+ }
+
+ this._pumpOperatorList(intentArgs);
+ }
+
+ return intentState.opListReadCapability.promise;
+ }
+
+ streamTextContent({
+ disableCombineTextItems = false,
+ includeMarkedContent = false
+ } = {}) {
+ const TEXT_CONTENT_CHUNK_SIZE = 100;
+ return this._transport.messageHandler.sendWithStream("GetTextContent", {
+ pageIndex: this._pageIndex,
+ combineTextItems: disableCombineTextItems !== true,
+ includeMarkedContent: includeMarkedContent === true
+ }, {
+ highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
+
+ size(textContent) {
+ return textContent.items.length;
+ }
+
+ });
+ }
+
+ getTextContent(params = {}) {
+ if (this._transport._htmlForXfa) {
+ return this.getXfa().then(xfa => {
+ return _xfa_text.XfaText.textContent(xfa);
+ });
+ }
+
+ const readableStream = this.streamTextContent(params);
+ return new Promise(function (resolve, reject) {
+ function pump() {
+ reader.read().then(function ({
+ value,
+ done
+ }) {
+ if (done) {
+ resolve(textContent);
+ return;
+ }
+
+ Object.assign(textContent.styles, value.styles);
+ textContent.items.push(...value.items);
+ pump();
+ }, reject);
+ }
+
+ const reader = readableStream.getReader();
+ const textContent = {
+ items: [],
+ styles: Object.create(null)
+ };
+ pump();
+ });
+ }
+
+ getStructTree() {
+ return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex);
+ }
+
+ _destroy() {
+ this.destroyed = true;
+ const waitOn = [];
+
+ for (const intentState of this._intentStates.values()) {
+ this._abortOperatorList({
+ intentState,
+ reason: new Error("Page was destroyed."),
+ force: true
+ });
+
+ if (intentState.opListReadCapability) {
+ continue;
+ }
+
+ for (const internalRenderTask of intentState.renderTasks) {
+ waitOn.push(internalRenderTask.completed);
+ internalRenderTask.cancel();
+ }
+ }
+
+ this.objs.clear();
+
+ this._annotationPromises.clear();
+
+ this._jsActionsPromise = null;
+ this._structTreePromise = null;
+ this.pendingCleanup = false;
+ return Promise.all(waitOn);
+ }
+
+ cleanup(resetStats = false) {
+ this.pendingCleanup = true;
+ return this._tryCleanup(resetStats);
+ }
+
+ _tryCleanup(resetStats = false) {
+ if (!this.pendingCleanup) {
+ return false;
+ }
+
+ for (const {
+ renderTasks,
+ operatorList
+ } of this._intentStates.values()) {
+ if (renderTasks.size > 0 || !operatorList.lastChunk) {
+ return false;
+ }
+ }
+
+ this._intentStates.clear();
+
+ this.objs.clear();
+
+ this._annotationPromises.clear();
+
+ this._jsActionsPromise = null;
+ this._structTreePromise = null;
+
+ if (resetStats && this._stats) {
+ this._stats = new _display_utils.StatTimer();
+ }
+
+ this.pendingCleanup = false;
+ return true;
+ }
+
+ _startRenderPage(transparency, cacheKey) {
+ const intentState = this._intentStates.get(cacheKey);
+
+ if (!intentState) {
+ return;
+ }
+
+ if (this._stats) {
+ this._stats.timeEnd("Page Request");
+ }
+
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.resolve(transparency);
+ }
+ }
+
+ _renderPageChunk(operatorListChunk, intentState) {
+ for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {
+ intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
+ intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
+ }
+
+ intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
+
+ for (const internalRenderTask of intentState.renderTasks) {
+ internalRenderTask.operatorListChanged();
+ }
+
+ if (operatorListChunk.lastChunk) {
+ this._tryCleanup();
+ }
+ }
+
+ _pumpOperatorList({
+ renderingIntent,
+ cacheKey
+ }) {
+ const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", {
+ pageIndex: this._pageIndex,
+ intent: renderingIntent,
+ cacheKey,
+ annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? this._transport.annotationStorage.serializable : null
+ });
+
+ const reader = readableStream.getReader();
+
+ const intentState = this._intentStates.get(cacheKey);
+
+ intentState.streamReader = reader;
+
+ const pump = () => {
+ reader.read().then(({
+ value,
+ done
+ }) => {
+ if (done) {
+ intentState.streamReader = null;
+ return;
+ }
+
+ if (this._transport.destroyed) {
+ return;
+ }
+
+ this._renderPageChunk(value, intentState);
+
+ pump();
+ }, reason => {
+ intentState.streamReader = null;
+
+ if (this._transport.destroyed) {
+ return;
+ }
+
+ if (intentState.operatorList) {
+ intentState.operatorList.lastChunk = true;
+
+ for (const internalRenderTask of intentState.renderTasks) {
+ internalRenderTask.operatorListChanged();
+ }
+
+ this._tryCleanup();
+ }
+
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.reject(reason);
+ } else if (intentState.opListReadCapability) {
+ intentState.opListReadCapability.reject(reason);
+ } else {
+ throw reason;
+ }
+ });
+ };
+
+ pump();
+ }
+
+ _abortOperatorList({
+ intentState,
+ reason,
+ force = false
+ }) {
+ if (!intentState.streamReader) {
+ return;
+ }
+
+ if (!force) {
+ if (intentState.renderTasks.size > 0) {
+ return;
+ }
+
+ if (reason instanceof _display_utils.RenderingCancelledException) {
+ intentState.streamReaderCancelTimeout = setTimeout(() => {
+ this._abortOperatorList({
+ intentState,
+ reason,
+ force: true
+ });
+
+ intentState.streamReaderCancelTimeout = null;
+ }, RENDERING_CANCELLED_TIMEOUT);
+ return;
+ }
+ }
+
+ intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});
+ intentState.streamReader = null;
+
+ if (this._transport.destroyed) {
+ return;
+ }
+
+ for (const [curCacheKey, curIntentState] of this._intentStates) {
+ if (curIntentState === intentState) {
+ this._intentStates.delete(curCacheKey);
+
+ break;
+ }
+ }
+
+ this.cleanup();
+ }
+
+ get stats() {
+ return this._stats;
+ }
+
+}
+
+exports.PDFPageProxy = PDFPageProxy;
+
+class LoopbackPort {
+ constructor() {
+ this._listeners = [];
+ this._deferred = Promise.resolve();
+ }
+
+ postMessage(obj, transfers) {
+ const event = {
+ data: structuredClone(obj, transfers)
+ };
+
+ this._deferred.then(() => {
+ for (const listener of this._listeners) {
+ listener.call(this, event);
+ }
+ });
+ }
+
+ addEventListener(name, listener) {
+ this._listeners.push(listener);
+ }
+
+ removeEventListener(name, listener) {
+ const i = this._listeners.indexOf(listener);
+
+ this._listeners.splice(i, 1);
+ }
+
+ terminate() {
+ this._listeners.length = 0;
+ }
+
+}
+
+exports.LoopbackPort = LoopbackPort;
+const PDFWorkerUtil = {
+ isWorkerDisabled: false,
+ fallbackWorkerSrc: null,
+ fakeWorkerId: 0
+};
+{
+ if (_is_node.isNodeJS && typeof require === "function") {
+ PDFWorkerUtil.isWorkerDisabled = true;
+ PDFWorkerUtil.fallbackWorkerSrc = "./pdf.worker.js";
+ } else if (typeof document === "object") {
+ const pdfjsFilePath = document?.currentScript?.src;
+
+ if (pdfjsFilePath) {
+ PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
+ }
+ }
+
+ PDFWorkerUtil.createCDNWrapper = function (url) {
+ const wrapper = `importScripts("${url}");`;
+ return URL.createObjectURL(new Blob([wrapper]));
+ };
+}
+
+class PDFWorker {
+ static get _workerPorts() {
+ return (0, _util.shadow)(this, "_workerPorts", new WeakMap());
+ }
+
+ constructor({
+ name = null,
+ port = null,
+ verbosity = (0, _util.getVerbosityLevel)()
+ } = {}) {
+ if (port && PDFWorker._workerPorts.has(port)) {
+ throw new Error("Cannot use more than one PDFWorker per port.");
+ }
+
+ this.name = name;
+ this.destroyed = false;
+ this.verbosity = verbosity;
+ this._readyCapability = (0, _util.createPromiseCapability)();
+ this._port = null;
+ this._webWorker = null;
+ this._messageHandler = null;
+
+ if (port) {
+ PDFWorker._workerPorts.set(port, this);
+
+ this._initializeFromPort(port);
+
+ return;
+ }
+
+ this._initialize();
+ }
+
+ get promise() {
+ return this._readyCapability.promise;
+ }
+
+ get port() {
+ return this._port;
+ }
+
+ get messageHandler() {
+ return this._messageHandler;
+ }
+
+ _initializeFromPort(port) {
+ this._port = port;
+ this._messageHandler = new _message_handler.MessageHandler("main", "worker", port);
+
+ this._messageHandler.on("ready", function () {});
+
+ this._readyCapability.resolve();
+ }
+
+ _initialize() {
+ if (typeof Worker !== "undefined" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {
+ let workerSrc = PDFWorker.workerSrc;
+
+ try {
+ if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
+ workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);
+ }
+
+ const worker = new Worker(workerSrc);
+ const messageHandler = new _message_handler.MessageHandler("main", "worker", worker);
+
+ const terminateEarly = () => {
+ worker.removeEventListener("error", onWorkerError);
+ messageHandler.destroy();
+ worker.terminate();
+
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error("Worker was destroyed"));
+ } else {
+ this._setupFakeWorker();
+ }
+ };
+
+ const onWorkerError = () => {
+ if (!this._webWorker) {
+ terminateEarly();
+ }
+ };
+
+ worker.addEventListener("error", onWorkerError);
+ messageHandler.on("test", data => {
+ worker.removeEventListener("error", onWorkerError);
+
+ if (this.destroyed) {
+ terminateEarly();
+ return;
+ }
+
+ if (data) {
+ this._messageHandler = messageHandler;
+ this._port = worker;
+ this._webWorker = worker;
+
+ this._readyCapability.resolve();
+
+ messageHandler.send("configure", {
+ verbosity: this.verbosity
+ });
+ } else {
+ this._setupFakeWorker();
+
+ messageHandler.destroy();
+ worker.terminate();
+ }
+ });
+ messageHandler.on("ready", data => {
+ worker.removeEventListener("error", onWorkerError);
+
+ if (this.destroyed) {
+ terminateEarly();
+ return;
+ }
+
+ try {
+ sendTest();
+ } catch (e) {
+ this._setupFakeWorker();
+ }
+ });
+
+ const sendTest = () => {
+ const testObj = new Uint8Array([255]);
+
+ try {
+ messageHandler.send("test", testObj, [testObj.buffer]);
+ } catch (ex) {
+ (0, _util.warn)("Cannot use postMessage transfers.");
+ testObj[0] = 0;
+ messageHandler.send("test", testObj);
+ }
+ };
+
+ sendTest();
+ return;
+ } catch (e) {
+ (0, _util.info)("The worker has been disabled.");
+ }
+ }
+
+ this._setupFakeWorker();
+ }
+
+ _setupFakeWorker() {
+ if (!PDFWorkerUtil.isWorkerDisabled) {
+ (0, _util.warn)("Setting up fake worker.");
+ PDFWorkerUtil.isWorkerDisabled = true;
+ }
+
+ PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error("Worker was destroyed"));
+
+ return;
+ }
+
+ const port = new LoopbackPort();
+ this._port = port;
+ const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;
+ const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port);
+ WorkerMessageHandler.setup(workerHandler, port);
+ const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port);
+ this._messageHandler = messageHandler;
+
+ this._readyCapability.resolve();
+
+ messageHandler.send("configure", {
+ verbosity: this.verbosity
+ });
+ }).catch(reason => {
+ this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
+ });
+ }
+
+ destroy() {
+ this.destroyed = true;
+
+ if (this._webWorker) {
+ this._webWorker.terminate();
+
+ this._webWorker = null;
+ }
+
+ PDFWorker._workerPorts.delete(this._port);
+
+ this._port = null;
+
+ if (this._messageHandler) {
+ this._messageHandler.destroy();
+
+ this._messageHandler = null;
+ }
+ }
+
+ static fromPort(params) {
+ if (!params?.port) {
+ throw new Error("PDFWorker.fromPort - invalid method signature.");
+ }
+
+ if (this._workerPorts.has(params.port)) {
+ return this._workerPorts.get(params.port);
+ }
+
+ return new PDFWorker(params);
+ }
+
+ static get workerSrc() {
+ if (_worker_options.GlobalWorkerOptions.workerSrc) {
+ return _worker_options.GlobalWorkerOptions.workerSrc;
+ }
+
+ if (PDFWorkerUtil.fallbackWorkerSrc !== null) {
+ if (!_is_node.isNodeJS) {
+ (0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
+ }
+
+ return PDFWorkerUtil.fallbackWorkerSrc;
+ }
+
+ throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
+ }
+
+ static get _mainThreadWorkerMessageHandler() {
+ try {
+ return globalThis.pdfjsWorker?.WorkerMessageHandler || null;
+ } catch (ex) {
+ return null;
+ }
+ }
+
+ static get _setupFakeWorkerGlobal() {
+ const loader = async () => {
+ const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;
+
+ if (mainWorkerMessageHandler) {
+ return mainWorkerMessageHandler;
+ }
+
+ if (_is_node.isNodeJS && typeof require === "function") {
+ const worker = eval("require")(this.workerSrc);
+ return worker.WorkerMessageHandler;
+ }
+
+ await (0, _display_utils.loadScript)(this.workerSrc);
+ return window.pdfjsWorker.WorkerMessageHandler;
+ };
+
+ return (0, _util.shadow)(this, "_setupFakeWorkerGlobal", loader());
+ }
+
+}
+
+exports.PDFWorker = PDFWorker;
+{
+ PDFWorker.getWorkerSrc = function () {
+ (0, _display_utils.deprecated)("`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.");
+ return this.workerSrc;
+ };
+}
+
+class WorkerTransport {
+ #docStats = null;
+ #pageCache = new Map();
+ #pagePromises = new Map();
+ #metadataPromise = null;
+
+ constructor(messageHandler, loadingTask, networkStream, params) {
+ this.messageHandler = messageHandler;
+ this.loadingTask = loadingTask;
+ this.commonObjs = new PDFObjects();
+ this.fontLoader = new _font_loader.FontLoader({
+ docId: loadingTask.docId,
+ onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
+ ownerDocument: params.ownerDocument,
+ styleElement: params.styleElement
+ });
+ this._params = params;
+
+ if (!params.useWorkerFetch) {
+ this.CMapReaderFactory = new params.CMapReaderFactory({
+ baseUrl: params.cMapUrl,
+ isCompressed: params.cMapPacked
+ });
+ this.StandardFontDataFactory = new params.StandardFontDataFactory({
+ baseUrl: params.standardFontDataUrl
+ });
+ }
+
+ this.destroyed = false;
+ this.destroyCapability = null;
+ this._passwordCapability = null;
+ this._networkStream = networkStream;
+ this._fullReader = null;
+ this._lastProgress = null;
+ this.downloadInfoCapability = (0, _util.createPromiseCapability)();
+ this.setupMessageHandler();
+ }
+
+ get annotationStorage() {
+ return (0, _util.shadow)(this, "annotationStorage", new _annotation_storage.AnnotationStorage());
+ }
+
+ get stats() {
+ return this.#docStats;
+ }
+
+ getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) {
+ let renderingIntent = _util.RenderingIntentFlag.DISPLAY;
+ let lastModified = "";
+
+ switch (intent) {
+ case "any":
+ renderingIntent = _util.RenderingIntentFlag.ANY;
+ break;
+
+ case "display":
+ break;
+
+ case "print":
+ renderingIntent = _util.RenderingIntentFlag.PRINT;
+ break;
+
+ default:
+ (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);
+ }
+
+ switch (annotationMode) {
+ case _util.AnnotationMode.DISABLE:
+ renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;
+ break;
+
+ case _util.AnnotationMode.ENABLE:
+ break;
+
+ case _util.AnnotationMode.ENABLE_FORMS:
+ renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;
+ break;
+
+ case _util.AnnotationMode.ENABLE_STORAGE:
+ renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;
+ lastModified = this.annotationStorage.lastModified;
+ break;
+
+ default:
+ (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);
+ }
+
+ if (isOpList) {
+ renderingIntent += _util.RenderingIntentFlag.OPLIST;
+ }
+
+ return {
+ renderingIntent,
+ cacheKey: `${renderingIntent}_${lastModified}`
+ };
+ }
+
+ destroy() {
+ if (this.destroyCapability) {
+ return this.destroyCapability.promise;
+ }
+
+ this.destroyed = true;
+ this.destroyCapability = (0, _util.createPromiseCapability)();
+
+ if (this._passwordCapability) {
+ this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));
+ }
+
+ const waitOn = [];
+
+ for (const page of this.#pageCache.values()) {
+ waitOn.push(page._destroy());
+ }
+
+ this.#pageCache.clear();
+ this.#pagePromises.clear();
+
+ if (this.hasOwnProperty("annotationStorage")) {
+ this.annotationStorage.resetModified();
+ }
+
+ const terminated = this.messageHandler.sendWithPromise("Terminate", null);
+ waitOn.push(terminated);
+ Promise.all(waitOn).then(() => {
+ this.commonObjs.clear();
+ this.fontLoader.clear();
+ this.#metadataPromise = null;
+ this._getFieldObjectsPromise = null;
+ this._hasJSActionsPromise = null;
+
+ if (this._networkStream) {
+ this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
+ }
+
+ if (this.messageHandler) {
+ this.messageHandler.destroy();
+ this.messageHandler = null;
+ }
+
+ this.destroyCapability.resolve();
+ }, this.destroyCapability.reject);
+ return this.destroyCapability.promise;
+ }
+
+ setupMessageHandler() {
+ const {
+ messageHandler,
+ loadingTask
+ } = this;
+ messageHandler.on("GetReader", (data, sink) => {
+ (0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
+ this._fullReader = this._networkStream.getFullReader();
+
+ this._fullReader.onProgress = evt => {
+ this._lastProgress = {
+ loaded: evt.loaded,
+ total: evt.total
+ };
+ };
+
+ sink.onPull = () => {
+ this._fullReader.read().then(function ({
+ value,
+ done
+ }) {
+ if (done) {
+ sink.close();
+ return;
+ }
+
+ (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer.");
+ sink.enqueue(new Uint8Array(value), 1, [value]);
+ }).catch(reason => {
+ sink.error(reason);
+ });
+ };
+
+ sink.onCancel = reason => {
+ this._fullReader.cancel(reason);
+
+ sink.ready.catch(readyReason => {
+ if (this.destroyed) {
+ return;
+ }
+
+ throw readyReason;
+ });
+ };
+ });
+ messageHandler.on("ReaderHeadersReady", data => {
+ const headersCapability = (0, _util.createPromiseCapability)();
+ const fullReader = this._fullReader;
+ fullReader.headersReady.then(() => {
+ if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
+ if (this._lastProgress) {
+ loadingTask.onProgress?.(this._lastProgress);
+ }
+
+ fullReader.onProgress = evt => {
+ loadingTask.onProgress?.({
+ loaded: evt.loaded,
+ total: evt.total
+ });
+ };
+ }
+
+ headersCapability.resolve({
+ isStreamingSupported: fullReader.isStreamingSupported,
+ isRangeSupported: fullReader.isRangeSupported,
+ contentLength: fullReader.contentLength
+ });
+ }, headersCapability.reject);
+ return headersCapability.promise;
+ });
+ messageHandler.on("GetRangeReader", (data, sink) => {
+ (0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
+
+ const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
+
+ if (!rangeReader) {
+ sink.close();
+ return;
+ }
+
+ sink.onPull = () => {
+ rangeReader.read().then(function ({
+ value,
+ done
+ }) {
+ if (done) {
+ sink.close();
+ return;
+ }
+
+ (0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer.");
+ sink.enqueue(new Uint8Array(value), 1, [value]);
+ }).catch(reason => {
+ sink.error(reason);
+ });
+ };
+
+ sink.onCancel = reason => {
+ rangeReader.cancel(reason);
+ sink.ready.catch(readyReason => {
+ if (this.destroyed) {
+ return;
+ }
+
+ throw readyReason;
+ });
+ };
+ });
+ messageHandler.on("GetDoc", ({
+ pdfInfo
+ }) => {
+ this._numPages = pdfInfo.numPages;
+ this._htmlForXfa = pdfInfo.htmlForXfa;
+ delete pdfInfo.htmlForXfa;
+
+ loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
+ });
+ messageHandler.on("DocException", function (ex) {
+ let reason;
+
+ switch (ex.name) {
+ case "PasswordException":
+ reason = new _util.PasswordException(ex.message, ex.code);
+ break;
+
+ case "InvalidPDFException":
+ reason = new _util.InvalidPDFException(ex.message);
+ break;
+
+ case "MissingPDFException":
+ reason = new _util.MissingPDFException(ex.message);
+ break;
+
+ case "UnexpectedResponseException":
+ reason = new _util.UnexpectedResponseException(ex.message, ex.status);
+ break;
+
+ case "UnknownErrorException":
+ reason = new _util.UnknownErrorException(ex.message, ex.details);
+ break;
+
+ default:
+ (0, _util.unreachable)("DocException - expected a valid Error.");
+ }
+
+ loadingTask._capability.reject(reason);
+ });
+ messageHandler.on("PasswordRequest", exception => {
+ this._passwordCapability = (0, _util.createPromiseCapability)();
+
+ if (loadingTask.onPassword) {
+ const updatePassword = password => {
+ if (password instanceof Error) {
+ this._passwordCapability.reject(password);
+ } else {
+ this._passwordCapability.resolve({
+ password
+ });
+ }
+ };
+
+ try {
+ loadingTask.onPassword(updatePassword, exception.code);
+ } catch (ex) {
+ this._passwordCapability.reject(ex);
+ }
+ } else {
+ this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
+ }
+
+ return this._passwordCapability.promise;
+ });
+ messageHandler.on("DataLoaded", data => {
+ loadingTask.onProgress?.({
+ loaded: data.length,
+ total: data.length
+ });
+ this.downloadInfoCapability.resolve(data);
+ });
+ messageHandler.on("StartRenderPage", data => {
+ if (this.destroyed) {
+ return;
+ }
+
+ const page = this.#pageCache.get(data.pageIndex);
+
+ page._startRenderPage(data.transparency, data.cacheKey);
+ });
+ messageHandler.on("commonobj", ([id, type, exportedData]) => {
+ if (this.destroyed) {
+ return;
+ }
+
+ if (this.commonObjs.has(id)) {
+ return;
+ }
+
+ switch (type) {
+ case "Font":
+ const params = this._params;
+
+ if ("error" in exportedData) {
+ const exportedError = exportedData.error;
+ (0, _util.warn)(`Error during font loading: ${exportedError}`);
+ this.commonObjs.resolve(id, exportedError);
+ break;
+ }
+
+ let fontRegistry = null;
+
+ if (params.pdfBug && globalThis.FontInspector?.enabled) {
+ fontRegistry = {
+ registerFont(font, url) {
+ globalThis.FontInspector.fontAdded(font, url);
+ }
+
+ };
+ }
+
+ const font = new _font_loader.FontFaceObject(exportedData, {
+ isEvalSupported: params.isEvalSupported,
+ disableFontFace: params.disableFontFace,
+ ignoreErrors: params.ignoreErrors,
+ onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
+ fontRegistry
+ });
+ this.fontLoader.bind(font).catch(reason => {
+ return messageHandler.sendWithPromise("FontFallback", {
+ id
+ });
+ }).finally(() => {
+ if (!params.fontExtraProperties && font.data) {
+ font.data = null;
+ }
+
+ this.commonObjs.resolve(id, font);
+ });
+ break;
+
+ case "FontPath":
+ case "Image":
+ this.commonObjs.resolve(id, exportedData);
+ break;
+
+ default:
+ throw new Error(`Got unknown common object type ${type}`);
+ }
+ });
+ messageHandler.on("obj", ([id, pageIndex, type, imageData]) => {
+ if (this.destroyed) {
+ return;
+ }
+
+ const pageProxy = this.#pageCache.get(pageIndex);
+
+ if (pageProxy.objs.has(id)) {
+ return;
+ }
+
+ switch (type) {
+ case "Image":
+ pageProxy.objs.resolve(id, imageData);
+ const MAX_IMAGE_SIZE_TO_STORE = 8000000;
+
+ if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {
+ pageProxy.cleanupAfterRender = true;
+ }
+
+ break;
+
+ case "Pattern":
+ pageProxy.objs.resolve(id, imageData);
+ break;
+
+ default:
+ throw new Error(`Got unknown object type ${type}`);
+ }
+ });
+ messageHandler.on("DocProgress", data => {
+ if (this.destroyed) {
+ return;
+ }
+
+ loadingTask.onProgress?.({
+ loaded: data.loaded,
+ total: data.total
+ });
+ });
+ messageHandler.on("DocStats", data => {
+ if (this.destroyed) {
+ return;
+ }
+
+ this.#docStats = Object.freeze({
+ streamTypes: Object.freeze(data.streamTypes),
+ fontTypes: Object.freeze(data.fontTypes)
+ });
+ });
+ messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
+ messageHandler.on("FetchBuiltInCMap", data => {
+ if (this.destroyed) {
+ return Promise.reject(new Error("Worker was destroyed."));
+ }
+
+ if (!this.CMapReaderFactory) {
+ return Promise.reject(new Error("CMapReaderFactory not initialized, see the `useWorkerFetch` parameter."));
+ }
+
+ return this.CMapReaderFactory.fetch(data);
+ });
+ messageHandler.on("FetchStandardFontData", data => {
+ if (this.destroyed) {
+ return Promise.reject(new Error("Worker was destroyed."));
+ }
+
+ if (!this.StandardFontDataFactory) {
+ return Promise.reject(new Error("StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter."));
+ }
+
+ return this.StandardFontDataFactory.fetch(data);
+ });
+ }
+
+ _onUnsupportedFeature({
+ featureId
+ }) {
+ if (this.destroyed) {
+ return;
+ }
+
+ this.loadingTask.onUnsupportedFeature?.(featureId);
+ }
+
+ getData() {
+ return this.messageHandler.sendWithPromise("GetData", null);
+ }
+
+ getPage(pageNumber) {
+ if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
+ return Promise.reject(new Error("Invalid page request."));
+ }
+
+ const pageIndex = pageNumber - 1,
+ cachedPromise = this.#pagePromises.get(pageIndex);
+
+ if (cachedPromise) {
+ return cachedPromise;
+ }
+
+ const promise = this.messageHandler.sendWithPromise("GetPage", {
+ pageIndex
+ }).then(pageInfo => {
+ if (this.destroyed) {
+ throw new Error("Transport destroyed");
+ }
+
+ const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);
+ this.#pageCache.set(pageIndex, page);
+ return page;
+ });
+ this.#pagePromises.set(pageIndex, promise);
+ return promise;
+ }
+
+ getPageIndex(ref) {
+ if (typeof ref !== "object" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {
+ return Promise.reject(new Error("Invalid pageIndex request."));
+ }
+
+ return this.messageHandler.sendWithPromise("GetPageIndex", {
+ num: ref.num,
+ gen: ref.gen
+ });
+ }
+
+ getAnnotations(pageIndex, intent) {
+ return this.messageHandler.sendWithPromise("GetAnnotations", {
+ pageIndex,
+ intent
+ });
+ }
+
+ saveDocument() {
+ return this.messageHandler.sendWithPromise("SaveDocument", {
+ isPureXfa: !!this._htmlForXfa,
+ numPages: this._numPages,
+ annotationStorage: this.annotationStorage.serializable,
+ filename: this._fullReader?.filename ?? null
+ }).finally(() => {
+ this.annotationStorage.resetModified();
+ });
+ }
+
+ getFieldObjects() {
+ return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise("GetFieldObjects", null);
+ }
+
+ hasJSActions() {
+ return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise("HasJSActions", null);
+ }
+
+ getCalculationOrderIds() {
+ return this.messageHandler.sendWithPromise("GetCalculationOrderIds", null);
+ }
+
+ getDestinations() {
+ return this.messageHandler.sendWithPromise("GetDestinations", null);
+ }
+
+ getDestination(id) {
+ if (typeof id !== "string") {
+ return Promise.reject(new Error("Invalid destination request."));
+ }
+
+ return this.messageHandler.sendWithPromise("GetDestination", {
+ id
+ });
+ }
+
+ getPageLabels() {
+ return this.messageHandler.sendWithPromise("GetPageLabels", null);
+ }
+
+ getPageLayout() {
+ return this.messageHandler.sendWithPromise("GetPageLayout", null);
+ }
+
+ getPageMode() {
+ return this.messageHandler.sendWithPromise("GetPageMode", null);
+ }
+
+ getViewerPreferences() {
+ return this.messageHandler.sendWithPromise("GetViewerPreferences", null);
+ }
+
+ getOpenAction() {
+ return this.messageHandler.sendWithPromise("GetOpenAction", null);
+ }
+
+ getAttachments() {
+ return this.messageHandler.sendWithPromise("GetAttachments", null);
+ }
+
+ getJavaScript() {
+ return this.messageHandler.sendWithPromise("GetJavaScript", null);
+ }
+
+ getDocJSActions() {
+ return this.messageHandler.sendWithPromise("GetDocJSActions", null);
+ }
+
+ getPageJSActions(pageIndex) {
+ return this.messageHandler.sendWithPromise("GetPageJSActions", {
+ pageIndex
+ });
+ }
+
+ getStructTree(pageIndex) {
+ return this.messageHandler.sendWithPromise("GetStructTree", {
+ pageIndex
+ });
+ }
+
+ getOutline() {
+ return this.messageHandler.sendWithPromise("GetOutline", null);
+ }
+
+ getOptionalContentConfig() {
+ return this.messageHandler.sendWithPromise("GetOptionalContentConfig", null).then(results => {
+ return new _optional_content_config.OptionalContentConfig(results);
+ });
+ }
+
+ getPermissions() {
+ return this.messageHandler.sendWithPromise("GetPermissions", null);
+ }
+
+ getMetadata() {
+ return this.#metadataPromise ||= this.messageHandler.sendWithPromise("GetMetadata", null).then(results => {
+ return {
+ info: results[0],
+ metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
+ contentDispositionFilename: this._fullReader?.filename ?? null,
+ contentLength: this._fullReader?.contentLength ?? null
+ };
+ });
+ }
+
+ getMarkInfo() {
+ return this.messageHandler.sendWithPromise("GetMarkInfo", null);
+ }
+
+ async startCleanup(keepLoadedFonts = false) {
+ await this.messageHandler.sendWithPromise("Cleanup", null);
+
+ if (this.destroyed) {
+ return;
+ }
+
+ for (const page of this.#pageCache.values()) {
+ const cleanupSuccessful = page.cleanup();
+
+ if (!cleanupSuccessful) {
+ throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);
+ }
+ }
+
+ this.commonObjs.clear();
+
+ if (!keepLoadedFonts) {
+ this.fontLoader.clear();
+ }
+
+ this.#metadataPromise = null;
+ this._getFieldObjectsPromise = null;
+ this._hasJSActionsPromise = null;
+ }
+
+ get loadingParams() {
+ const params = this._params;
+ return (0, _util.shadow)(this, "loadingParams", {
+ disableAutoFetch: params.disableAutoFetch,
+ enableXfa: params.enableXfa
+ });
+ }
+
+}
+
+class PDFObjects {
+ #objs = Object.create(null);
+
+ #ensureObj(objId) {
+ const obj = this.#objs[objId];
+
+ if (obj) {
+ return obj;
+ }
+
+ return this.#objs[objId] = {
+ capability: (0, _util.createPromiseCapability)(),
+ data: null
+ };
+ }
+
+ get(objId, callback = null) {
+ if (callback) {
+ const obj = this.#ensureObj(objId);
+ obj.capability.promise.then(() => callback(obj.data));
+ return null;
+ }
+
+ const obj = this.#objs[objId];
+
+ if (!obj?.capability.settled) {
+ throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
+ }
+
+ return obj.data;
+ }
+
+ has(objId) {
+ const obj = this.#objs[objId];
+ return obj?.capability.settled || false;
+ }
+
+ resolve(objId, data = null) {
+ const obj = this.#ensureObj(objId);
+ obj.data = data;
+ obj.capability.resolve();
+ }
+
+ clear() {
+ this.#objs = Object.create(null);
+ }
+
+}
+
+class RenderTask {
+ constructor(internalRenderTask) {
+ this._internalRenderTask = internalRenderTask;
+ this.onContinue = null;
+ }
+
+ get promise() {
+ return this._internalRenderTask.capability.promise;
+ }
+
+ cancel() {
+ this._internalRenderTask.cancel();
+ }
+
+}
+
+exports.RenderTask = RenderTask;
+
+class InternalRenderTask {
+ static get canvasInUse() {
+ return (0, _util.shadow)(this, "canvasInUse", new WeakSet());
+ }
+
+ constructor({
+ callback,
+ params,
+ objs,
+ commonObjs,
+ annotationCanvasMap,
+ operatorList,
+ pageIndex,
+ canvasFactory,
+ useRequestAnimationFrame = false,
+ pdfBug = false
+ }) {
+ this.callback = callback;
+ this.params = params;
+ this.objs = objs;
+ this.commonObjs = commonObjs;
+ this.annotationCanvasMap = annotationCanvasMap;
+ this.operatorListIdx = null;
+ this.operatorList = operatorList;
+ this._pageIndex = pageIndex;
+ this.canvasFactory = canvasFactory;
+ this._pdfBug = pdfBug;
+ this.running = false;
+ this.graphicsReadyCallback = null;
+ this.graphicsReady = false;
+ this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
+ this.cancelled = false;
+ this.capability = (0, _util.createPromiseCapability)();
+ this.task = new RenderTask(this);
+ this._cancelBound = this.cancel.bind(this);
+ this._continueBound = this._continue.bind(this);
+ this._scheduleNextBound = this._scheduleNext.bind(this);
+ this._nextBound = this._next.bind(this);
+ this._canvas = params.canvasContext.canvas;
+ }
+
+ get completed() {
+ return this.capability.promise.catch(function () {});
+ }
+
+ initializeGraphics({
+ transparency = false,
+ optionalContentConfig
+ }) {
+ if (this.cancelled) {
+ return;
+ }
+
+ if (this._canvas) {
+ if (InternalRenderTask.canvasInUse.has(this._canvas)) {
+ throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed.");
+ }
+
+ InternalRenderTask.canvasInUse.add(this._canvas);
+ }
+
+ if (this._pdfBug && globalThis.StepperManager?.enabled) {
+ this.stepper = globalThis.StepperManager.create(this._pageIndex);
+ this.stepper.init(this.operatorList);
+ this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
+ }
+
+ const {
+ canvasContext,
+ viewport,
+ transform,
+ imageLayer,
+ background
+ } = this.params;
+ this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap);
+ this.gfx.beginDrawing({
+ transform,
+ viewport,
+ transparency,
+ background
+ });
+ this.operatorListIdx = 0;
+ this.graphicsReady = true;
+
+ if (this.graphicsReadyCallback) {
+ this.graphicsReadyCallback();
+ }
+ }
+
+ cancel(error = null) {
+ this.running = false;
+ this.cancelled = true;
+
+ if (this.gfx) {
+ this.gfx.endDrawing();
+ }
+
+ if (this._canvas) {
+ InternalRenderTask.canvasInUse.delete(this._canvas);
+ }
+
+ this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas"));
+ }
+
+ operatorListChanged() {
+ if (!this.graphicsReady) {
+ if (!this.graphicsReadyCallback) {
+ this.graphicsReadyCallback = this._continueBound;
+ }
+
+ return;
+ }
+
+ if (this.stepper) {
+ this.stepper.updateOperatorList(this.operatorList);
+ }
+
+ if (this.running) {
+ return;
+ }
+
+ this._continue();
+ }
+
+ _continue() {
+ this.running = true;
+
+ if (this.cancelled) {
+ return;
+ }
+
+ if (this.task.onContinue) {
+ this.task.onContinue(this._scheduleNextBound);
+ } else {
+ this._scheduleNext();
+ }
+ }
+
+ _scheduleNext() {
+ if (this._useRequestAnimationFrame) {
+ window.requestAnimationFrame(() => {
+ this._nextBound().catch(this._cancelBound);
+ });
+ } else {
+ Promise.resolve().then(this._nextBound).catch(this._cancelBound);
+ }
+ }
+
+ async _next() {
+ if (this.cancelled) {
+ return;
+ }
+
+ this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
+
+ if (this.operatorListIdx === this.operatorList.argsArray.length) {
+ this.running = false;
+
+ if (this.operatorList.lastChunk) {
+ this.gfx.endDrawing();
+
+ if (this._canvas) {
+ InternalRenderTask.canvasInUse.delete(this._canvas);
+ }
+
+ this.callback();
+ }
+ }
+ }
+
+}
+
+const version = '2.13.216';
+exports.version = version;
+const build = '399a0ec60';
+exports.build = build;
+
+/***/ }),
+/* 5 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;
+exports.deprecated = deprecated;
+exports.getFilenameFromUrl = getFilenameFromUrl;
+exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;
+exports.getXfaPageViewport = getXfaPageViewport;
+exports.isDataScheme = isDataScheme;
+exports.isPdfFile = isPdfFile;
+exports.isValidFetchUrl = isValidFetchUrl;
+exports.loadScript = loadScript;
+
+var _base_factory = __w_pdfjs_require__(6);
+
+var _util = __w_pdfjs_require__(1);
+
+const SVG_NS = "http://www.w3.org/2000/svg";
+
+class PixelsPerInch {
+ static CSS = 96.0;
+ static PDF = 72.0;
+ static PDF_TO_CSS_UNITS = this.CSS / this.PDF;
+}
+
+exports.PixelsPerInch = PixelsPerInch;
+
+class DOMCanvasFactory extends _base_factory.BaseCanvasFactory {
+ constructor({
+ ownerDocument = globalThis.document
+ } = {}) {
+ super();
+ this._document = ownerDocument;
+ }
+
+ _createCanvas(width, height) {
+ const canvas = this._document.createElement("canvas");
+
+ canvas.width = width;
+ canvas.height = height;
+ return canvas;
+ }
+
+}
+
+exports.DOMCanvasFactory = DOMCanvasFactory;
+
+async function fetchData(url, asTypedArray = false) {
+ if (isValidFetchUrl(url, document.baseURI)) {
+ const response = await fetch(url);
+
+ if (!response.ok) {
+ throw new Error(response.statusText);
+ }
+
+ return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());
+ }
+
+ return new Promise((resolve, reject) => {
+ const request = new XMLHttpRequest();
+ request.open("GET", url, true);
+
+ if (asTypedArray) {
+ request.responseType = "arraybuffer";
+ }
+
+ request.onreadystatechange = () => {
+ if (request.readyState !== XMLHttpRequest.DONE) {
+ return;
+ }
+
+ if (request.status === 200 || request.status === 0) {
+ let data;
+
+ if (asTypedArray && request.response) {
+ data = new Uint8Array(request.response);
+ } else if (!asTypedArray && request.responseText) {
+ data = (0, _util.stringToBytes)(request.responseText);
+ }
+
+ if (data) {
+ resolve(data);
+ return;
+ }
+ }
+
+ reject(new Error(request.statusText));
+ };
+
+ request.send(null);
+ });
+}
+
+class DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {
+ _fetchData(url, compressionType) {
+ return fetchData(url, this.isCompressed).then(data => {
+ return {
+ cMapData: data,
+ compressionType
+ };
+ });
+ }
+
+}
+
+exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
+
+class DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {
+ _fetchData(url) {
+ return fetchData(url, true);
+ }
+
+}
+
+exports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;
+
+class DOMSVGFactory extends _base_factory.BaseSVGFactory {
+ _createSVG(type) {
+ return document.createElementNS(SVG_NS, type);
+ }
+
+}
+
+exports.DOMSVGFactory = DOMSVGFactory;
+
+class PageViewport {
+ constructor({
+ viewBox,
+ scale,
+ rotation,
+ offsetX = 0,
+ offsetY = 0,
+ dontFlip = false
+ }) {
+ this.viewBox = viewBox;
+ this.scale = scale;
+ this.rotation = rotation;
+ this.offsetX = offsetX;
+ this.offsetY = offsetY;
+ const centerX = (viewBox[2] + viewBox[0]) / 2;
+ const centerY = (viewBox[3] + viewBox[1]) / 2;
+ let rotateA, rotateB, rotateC, rotateD;
+ rotation %= 360;
+
+ if (rotation < 0) {
+ rotation += 360;
+ }
+
+ switch (rotation) {
+ case 180:
+ rotateA = -1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = 1;
+ break;
+
+ case 90:
+ rotateA = 0;
+ rotateB = 1;
+ rotateC = 1;
+ rotateD = 0;
+ break;
+
+ case 270:
+ rotateA = 0;
+ rotateB = -1;
+ rotateC = -1;
+ rotateD = 0;
+ break;
+
+ case 0:
+ rotateA = 1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = -1;
+ break;
+
+ default:
+ throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
+ }
+
+ if (dontFlip) {
+ rotateC = -rotateC;
+ rotateD = -rotateD;
+ }
+
+ let offsetCanvasX, offsetCanvasY;
+ let width, height;
+
+ if (rotateA === 0) {
+ offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+ width = Math.abs(viewBox[3] - viewBox[1]) * scale;
+ height = Math.abs(viewBox[2] - viewBox[0]) * scale;
+ } else {
+ offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+ width = Math.abs(viewBox[2] - viewBox[0]) * scale;
+ height = Math.abs(viewBox[3] - viewBox[1]) * scale;
+ }
+
+ this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];
+ this.width = width;
+ this.height = height;
+ }
+
+ clone({
+ scale = this.scale,
+ rotation = this.rotation,
+ offsetX = this.offsetX,
+ offsetY = this.offsetY,
+ dontFlip = false
+ } = {}) {
+ return new PageViewport({
+ viewBox: this.viewBox.slice(),
+ scale,
+ rotation,
+ offsetX,
+ offsetY,
+ dontFlip
+ });
+ }
+
+ convertToViewportPoint(x, y) {
+ return _util.Util.applyTransform([x, y], this.transform);
+ }
+
+ convertToViewportRectangle(rect) {
+ const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
+
+ const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
+
+ return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
+ }
+
+ convertToPdfPoint(x, y) {
+ return _util.Util.applyInverseTransform([x, y], this.transform);
+ }
+
+}
+
+exports.PageViewport = PageViewport;
+
+class RenderingCancelledException extends _util.BaseException {
+ constructor(msg, type) {
+ super(msg, "RenderingCancelledException");
+ this.type = type;
+ }
+
+}
+
+exports.RenderingCancelledException = RenderingCancelledException;
+
+function isDataScheme(url) {
+ const ii = url.length;
+ let i = 0;
+
+ while (i < ii && url[i].trim() === "") {
+ i++;
+ }
+
+ return url.substring(i, i + 5).toLowerCase() === "data:";
+}
+
+function isPdfFile(filename) {
+ return typeof filename === "string" && /\.pdf$/i.test(filename);
+}
+
+function getFilenameFromUrl(url) {
+ const anchor = url.indexOf("#");
+ const query = url.indexOf("?");
+ const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
+ return url.substring(url.lastIndexOf("/", end) + 1, end);
+}
+
+function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
+ if (typeof url !== "string") {
+ return defaultFilename;
+ }
+
+ if (isDataScheme(url)) {
+ (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');
+ return defaultFilename;
+ }
+
+ const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+ const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+ const splitURI = reURI.exec(url);
+ let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);
+
+ if (suggestedFilename) {
+ suggestedFilename = suggestedFilename[0];
+
+ if (suggestedFilename.includes("%")) {
+ try {
+ suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
+ } catch (ex) {}
+ }
+ }
+
+ return suggestedFilename || defaultFilename;
+}
+
+class StatTimer {
+ constructor() {
+ this.started = Object.create(null);
+ this.times = [];
+ }
+
+ time(name) {
+ if (name in this.started) {
+ (0, _util.warn)(`Timer is already running for ${name}`);
+ }
+
+ this.started[name] = Date.now();
+ }
+
+ timeEnd(name) {
+ if (!(name in this.started)) {
+ (0, _util.warn)(`Timer has not been started for ${name}`);
+ }
+
+ this.times.push({
+ name,
+ start: this.started[name],
+ end: Date.now()
+ });
+ delete this.started[name];
+ }
+
+ toString() {
+ const outBuf = [];
+ let longest = 0;
+
+ for (const time of this.times) {
+ const name = time.name;
+
+ if (name.length > longest) {
+ longest = name.length;
+ }
+ }
+
+ for (const time of this.times) {
+ const duration = time.end - time.start;
+ outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`);
+ }
+
+ return outBuf.join("");
+ }
+
+}
+
+exports.StatTimer = StatTimer;
+
+function isValidFetchUrl(url, baseUrl) {
+ try {
+ const {
+ protocol
+ } = baseUrl ? new URL(url, baseUrl) : new URL(url);
+ return protocol === "http:" || protocol === "https:";
+ } catch (ex) {
+ return false;
+ }
+}
+
+function loadScript(src, removeScriptElement = false) {
+ return new Promise((resolve, reject) => {
+ const script = document.createElement("script");
+ script.src = src;
+
+ script.onload = function (evt) {
+ if (removeScriptElement) {
+ script.remove();
+ }
+
+ resolve(evt);
+ };
+
+ script.onerror = function () {
+ reject(new Error(`Cannot load script at: ${script.src}`));
+ };
+
+ (document.head || document.documentElement).appendChild(script);
+ });
+}
+
+function deprecated(details) {
+ console.log("Deprecated API usage: " + details);
+}
+
+let pdfDateStringRegex;
+
+class PDFDateString {
+ static toDateObject(input) {
+ if (!input || typeof input !== "string") {
+ return null;
+ }
+
+ if (!pdfDateStringRegex) {
+ pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
+ }
+
+ const matches = pdfDateStringRegex.exec(input);
+
+ if (!matches) {
+ return null;
+ }
+
+ const year = parseInt(matches[1], 10);
+ let month = parseInt(matches[2], 10);
+ month = month >= 1 && month <= 12 ? month - 1 : 0;
+ let day = parseInt(matches[3], 10);
+ day = day >= 1 && day <= 31 ? day : 1;
+ let hour = parseInt(matches[4], 10);
+ hour = hour >= 0 && hour <= 23 ? hour : 0;
+ let minute = parseInt(matches[5], 10);
+ minute = minute >= 0 && minute <= 59 ? minute : 0;
+ let second = parseInt(matches[6], 10);
+ second = second >= 0 && second <= 59 ? second : 0;
+ const universalTimeRelation = matches[7] || "Z";
+ let offsetHour = parseInt(matches[8], 10);
+ offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
+ let offsetMinute = parseInt(matches[9], 10) || 0;
+ offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
+
+ if (universalTimeRelation === "-") {
+ hour += offsetHour;
+ minute += offsetMinute;
+ } else if (universalTimeRelation === "+") {
+ hour -= offsetHour;
+ minute -= offsetMinute;
+ }
+
+ return new Date(Date.UTC(year, month, day, hour, minute, second));
+ }
+
+}
+
+exports.PDFDateString = PDFDateString;
+
+function getXfaPageViewport(xfaPage, {
+ scale = 1,
+ rotation = 0
+}) {
+ const {
+ width,
+ height
+ } = xfaPage.attributes.style;
+ const viewBox = [0, 0, parseInt(width), parseInt(height)];
+ return new PageViewport({
+ viewBox,
+ scale,
+ rotation
+ });
+}
+
+/***/ }),
+/* 6 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+class BaseCanvasFactory {
+ constructor() {
+ if (this.constructor === BaseCanvasFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
+ }
+ }
+
+ create(width, height) {
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid canvas size");
+ }
+
+ const canvas = this._createCanvas(width, height);
+
+ return {
+ canvas,
+ context: canvas.getContext("2d")
+ };
+ }
+
+ reset(canvasAndContext, width, height) {
+ if (!canvasAndContext.canvas) {
+ throw new Error("Canvas is not specified");
+ }
+
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid canvas size");
+ }
+
+ canvasAndContext.canvas.width = width;
+ canvasAndContext.canvas.height = height;
+ }
+
+ destroy(canvasAndContext) {
+ if (!canvasAndContext.canvas) {
+ throw new Error("Canvas is not specified");
+ }
+
+ canvasAndContext.canvas.width = 0;
+ canvasAndContext.canvas.height = 0;
+ canvasAndContext.canvas = null;
+ canvasAndContext.context = null;
+ }
+
+ _createCanvas(width, height) {
+ (0, _util.unreachable)("Abstract method `_createCanvas` called.");
+ }
+
+}
+
+exports.BaseCanvasFactory = BaseCanvasFactory;
+
+class BaseCMapReaderFactory {
+ constructor({
+ baseUrl = null,
+ isCompressed = false
+ }) {
+ if (this.constructor === BaseCMapReaderFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
+ }
+
+ this.baseUrl = baseUrl;
+ this.isCompressed = isCompressed;
+ }
+
+ async fetch({
+ name
+ }) {
+ if (!this.baseUrl) {
+ throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
+ }
+
+ if (!name) {
+ throw new Error("CMap name must be specified.");
+ }
+
+ const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
+ const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
+ return this._fetchData(url, compressionType).catch(reason => {
+ throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
+ });
+ }
+
+ _fetchData(url, compressionType) {
+ (0, _util.unreachable)("Abstract method `_fetchData` called.");
+ }
+
+}
+
+exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
+
+class BaseStandardFontDataFactory {
+ constructor({
+ baseUrl = null
+ }) {
+ if (this.constructor === BaseStandardFontDataFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseStandardFontDataFactory.");
+ }
+
+ this.baseUrl = baseUrl;
+ }
+
+ async fetch({
+ filename
+ }) {
+ if (!this.baseUrl) {
+ throw new Error('The standard font "baseUrl" parameter must be specified, ensure that ' + 'the "standardFontDataUrl" API parameter is provided.');
+ }
+
+ if (!filename) {
+ throw new Error("Font filename must be specified.");
+ }
+
+ const url = `${this.baseUrl}${filename}`;
+ return this._fetchData(url).catch(reason => {
+ throw new Error(`Unable to load font data at: ${url}`);
+ });
+ }
+
+ _fetchData(url) {
+ (0, _util.unreachable)("Abstract method `_fetchData` called.");
+ }
+
+}
+
+exports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;
+
+class BaseSVGFactory {
+ constructor() {
+ if (this.constructor === BaseSVGFactory) {
+ (0, _util.unreachable)("Cannot initialize BaseSVGFactory.");
+ }
+ }
+
+ create(width, height) {
+ if (width <= 0 || height <= 0) {
+ throw new Error("Invalid SVG dimensions");
+ }
+
+ const svg = this._createSVG("svg:svg");
+
+ svg.setAttribute("version", "1.1");
+ svg.setAttribute("width", `${width}px`);
+ svg.setAttribute("height", `${height}px`);
+ svg.setAttribute("preserveAspectRatio", "none");
+ svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
+ return svg;
+ }
+
+ createElement(type) {
+ if (typeof type !== "string") {
+ throw new Error("Invalid SVG element type");
+ }
+
+ return this._createSVG(type);
+ }
+
+ _createSVG(type) {
+ (0, _util.unreachable)("Abstract method `_createSVG` called.");
+ }
+
+}
+
+exports.BaseSVGFactory = BaseSVGFactory;
+
+/***/ }),
+/* 7 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.FontLoader = exports.FontFaceObject = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+class BaseFontLoader {
+ constructor({
+ docId,
+ onUnsupportedFeature,
+ ownerDocument = globalThis.document,
+ styleElement = null
+ }) {
+ if (this.constructor === BaseFontLoader) {
+ (0, _util.unreachable)("Cannot initialize BaseFontLoader.");
+ }
+
+ this.docId = docId;
+ this._onUnsupportedFeature = onUnsupportedFeature;
+ this._document = ownerDocument;
+ this.nativeFontFaces = [];
+ this.styleElement = null;
+ }
+
+ addNativeFontFace(nativeFontFace) {
+ this.nativeFontFaces.push(nativeFontFace);
+
+ this._document.fonts.add(nativeFontFace);
+ }
+
+ insertRule(rule) {
+ let styleElement = this.styleElement;
+
+ if (!styleElement) {
+ styleElement = this.styleElement = this._document.createElement("style");
+ styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;
+
+ this._document.documentElement.getElementsByTagName("head")[0].appendChild(styleElement);
+ }
+
+ const styleSheet = styleElement.sheet;
+ styleSheet.insertRule(rule, styleSheet.cssRules.length);
+ }
+
+ clear() {
+ for (const nativeFontFace of this.nativeFontFaces) {
+ this._document.fonts.delete(nativeFontFace);
+ }
+
+ this.nativeFontFaces.length = 0;
+
+ if (this.styleElement) {
+ this.styleElement.remove();
+ this.styleElement = null;
+ }
+ }
+
+ async bind(font) {
+ if (font.attached || font.missingFile) {
+ return;
+ }
+
+ font.attached = true;
+
+ if (this.isFontLoadingAPISupported) {
+ const nativeFontFace = font.createNativeFontFace();
+
+ if (nativeFontFace) {
+ this.addNativeFontFace(nativeFontFace);
+
+ try {
+ await nativeFontFace.loaded;
+ } catch (ex) {
+ this._onUnsupportedFeature({
+ featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative
+ });
+
+ (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);
+ font.disableFontFace = true;
+ throw ex;
+ }
+ }
+
+ return;
+ }
+
+ const rule = font.createFontFaceRule();
+
+ if (rule) {
+ this.insertRule(rule);
+
+ if (this.isSyncFontLoadingSupported) {
+ return;
+ }
+
+ await new Promise(resolve => {
+ const request = this._queueLoadingCallback(resolve);
+
+ this._prepareFontLoadEvent([rule], [font], request);
+ });
+ }
+ }
+
+ _queueLoadingCallback(callback) {
+ (0, _util.unreachable)("Abstract method `_queueLoadingCallback`.");
+ }
+
+ get isFontLoadingAPISupported() {
+ const hasFonts = !!this._document?.fonts;
+ return (0, _util.shadow)(this, "isFontLoadingAPISupported", hasFonts);
+ }
+
+ get isSyncFontLoadingSupported() {
+ (0, _util.unreachable)("Abstract method `isSyncFontLoadingSupported`.");
+ }
+
+ get _loadTestFont() {
+ (0, _util.unreachable)("Abstract method `_loadTestFont`.");
+ }
+
+ _prepareFontLoadEvent(rules, fontsToLoad, request) {
+ (0, _util.unreachable)("Abstract method `_prepareFontLoadEvent`.");
+ }
+
+}
+
+let FontLoader;
+exports.FontLoader = FontLoader;
+{
+ exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {
+ constructor(params) {
+ super(params);
+ this.loadingContext = {
+ requests: [],
+ nextRequestId: 0
+ };
+ this.loadTestFontId = 0;
+ }
+
+ get isSyncFontLoadingSupported() {
+ let supported = false;
+
+ if (typeof navigator === "undefined") {
+ supported = true;
+ } else {
+ const m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent);
+
+ if (m?.[1] >= 14) {
+ supported = true;
+ }
+ }
+
+ return (0, _util.shadow)(this, "isSyncFontLoadingSupported", supported);
+ }
+
+ _queueLoadingCallback(callback) {
+ function completeRequest() {
+ (0, _util.assert)(!request.done, "completeRequest() cannot be called twice.");
+ request.done = true;
+
+ while (context.requests.length > 0 && context.requests[0].done) {
+ const otherRequest = context.requests.shift();
+ setTimeout(otherRequest.callback, 0);
+ }
+ }
+
+ const context = this.loadingContext;
+ const request = {
+ id: `pdfjs-font-loading-${context.nextRequestId++}`,
+ done: false,
+ complete: completeRequest,
+ callback
+ };
+ context.requests.push(request);
+ return request;
+ }
+
+ get _loadTestFont() {
+ const getLoadTestFont = function () {
+ return atob("T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA" + "FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA" + "ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA" + "AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1" + "AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD" + "6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM" + "AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D" + "IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA" + "AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA" + "AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB" + "AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY" + "AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA" + "AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA" + "AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC" + "AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3" + "Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj" + "FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==");
+ };
+
+ return (0, _util.shadow)(this, "_loadTestFont", getLoadTestFont());
+ }
+
+ _prepareFontLoadEvent(rules, fonts, request) {
+ function int32(data, offset) {
+ return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;
+ }
+
+ function spliceString(s, offset, remove, insert) {
+ const chunk1 = s.substring(0, offset);
+ const chunk2 = s.substring(offset + remove);
+ return chunk1 + insert + chunk2;
+ }
+
+ let i, ii;
+
+ const canvas = this._document.createElement("canvas");
+
+ canvas.width = 1;
+ canvas.height = 1;
+ const ctx = canvas.getContext("2d");
+ let called = 0;
+
+ function isFontReady(name, callback) {
+ called++;
+
+ if (called > 30) {
+ (0, _util.warn)("Load test font never loaded.");
+ callback();
+ return;
+ }
+
+ ctx.font = "30px " + name;
+ ctx.fillText(".", 0, 20);
+ const imageData = ctx.getImageData(0, 0, 1, 1);
+
+ if (imageData.data[3] > 0) {
+ callback();
+ return;
+ }
+
+ setTimeout(isFontReady.bind(null, name, callback));
+ }
+
+ const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;
+ let data = this._loadTestFont;
+ const COMMENT_OFFSET = 976;
+ data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);
+ const CFF_CHECKSUM_OFFSET = 16;
+ const XXXX_VALUE = 0x58585858;
+ let checksum = int32(data, CFF_CHECKSUM_OFFSET);
+
+ for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;
+ }
+
+ if (i < loadTestFontId.length) {
+ checksum = checksum - XXXX_VALUE + int32(loadTestFontId + "XXX", i) | 0;
+ }
+
+ data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));
+ const url = `url(data:font/opentype;base64,${btoa(data)});`;
+ const rule = `@font-face {font-family:"${loadTestFontId}";src:${url}}`;
+ this.insertRule(rule);
+ const names = [];
+
+ for (const font of fonts) {
+ names.push(font.loadedName);
+ }
+
+ names.push(loadTestFontId);
+
+ const div = this._document.createElement("div");
+
+ div.style.visibility = "hidden";
+ div.style.width = div.style.height = "10px";
+ div.style.position = "absolute";
+ div.style.top = div.style.left = "0px";
+
+ for (const name of names) {
+ const span = this._document.createElement("span");
+
+ span.textContent = "Hi";
+ span.style.fontFamily = name;
+ div.appendChild(span);
+ }
+
+ this._document.body.appendChild(div);
+
+ isFontReady(loadTestFontId, () => {
+ div.remove();
+ request.complete();
+ });
+ }
+
+ };
+}
+
+class FontFaceObject {
+ constructor(translatedData, {
+ isEvalSupported = true,
+ disableFontFace = false,
+ ignoreErrors = false,
+ onUnsupportedFeature,
+ fontRegistry = null
+ }) {
+ this.compiledGlyphs = Object.create(null);
+
+ for (const i in translatedData) {
+ this[i] = translatedData[i];
+ }
+
+ this.isEvalSupported = isEvalSupported !== false;
+ this.disableFontFace = disableFontFace === true;
+ this.ignoreErrors = ignoreErrors === true;
+ this._onUnsupportedFeature = onUnsupportedFeature;
+ this.fontRegistry = fontRegistry;
+ }
+
+ createNativeFontFace() {
+ if (!this.data || this.disableFontFace) {
+ return null;
+ }
+
+ let nativeFontFace;
+
+ if (!this.cssFontInfo) {
+ nativeFontFace = new FontFace(this.loadedName, this.data, {});
+ } else {
+ const css = {
+ weight: this.cssFontInfo.fontWeight
+ };
+
+ if (this.cssFontInfo.italicAngle) {
+ css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;
+ }
+
+ nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);
+ }
+
+ if (this.fontRegistry) {
+ this.fontRegistry.registerFont(this);
+ }
+
+ return nativeFontFace;
+ }
+
+ createFontFaceRule() {
+ if (!this.data || this.disableFontFace) {
+ return null;
+ }
+
+ const data = (0, _util.bytesToString)(this.data);
+ const url = `url(data:${this.mimetype};base64,${btoa(data)});`;
+ let rule;
+
+ if (!this.cssFontInfo) {
+ rule = `@font-face {font-family:"${this.loadedName}";src:${url}}`;
+ } else {
+ let css = `font-weight: ${this.cssFontInfo.fontWeight};`;
+
+ if (this.cssFontInfo.italicAngle) {
+ css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;
+ }
+
+ rule = `@font-face {font-family:"${this.cssFontInfo.fontFamily}";${css}src:${url}}`;
+ }
+
+ if (this.fontRegistry) {
+ this.fontRegistry.registerFont(this, url);
+ }
+
+ return rule;
+ }
+
+ getPathGenerator(objs, character) {
+ if (this.compiledGlyphs[character] !== undefined) {
+ return this.compiledGlyphs[character];
+ }
+
+ let cmds;
+
+ try {
+ cmds = objs.get(this.loadedName + "_path_" + character);
+ } catch (ex) {
+ if (!this.ignoreErrors) {
+ throw ex;
+ }
+
+ this._onUnsupportedFeature({
+ featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath
+ });
+
+ (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`);
+ return this.compiledGlyphs[character] = function (c, size) {};
+ }
+
+ if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {
+ const jsBuf = [];
+
+ for (const current of cmds) {
+ const args = current.args !== undefined ? current.args.join(",") : "";
+ jsBuf.push("c.", current.cmd, "(", args, ");\n");
+ }
+
+ return this.compiledGlyphs[character] = new Function("c", "size", jsBuf.join(""));
+ }
+
+ return this.compiledGlyphs[character] = function (c, size) {
+ for (const current of cmds) {
+ if (current.cmd === "scale") {
+ current.args = [size, -size];
+ }
+
+ c[current.cmd].apply(c, current.args);
+ }
+ };
+ }
+
+}
+
+exports.FontFaceObject = FontFaceObject;
+
+/***/ }),
+/* 8 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;
+
+var _base_factory = __w_pdfjs_require__(6);
+
+var _is_node = __w_pdfjs_require__(3);
+
+var _util = __w_pdfjs_require__(1);
+
+let NodeCanvasFactory = class {
+ constructor() {
+ (0, _util.unreachable)("Not implemented: NodeCanvasFactory");
+ }
+
+};
+exports.NodeCanvasFactory = NodeCanvasFactory;
+let NodeCMapReaderFactory = class {
+ constructor() {
+ (0, _util.unreachable)("Not implemented: NodeCMapReaderFactory");
+ }
+
+};
+exports.NodeCMapReaderFactory = NodeCMapReaderFactory;
+let NodeStandardFontDataFactory = class {
+ constructor() {
+ (0, _util.unreachable)("Not implemented: NodeStandardFontDataFactory");
+ }
+
+};
+exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;
+
+if (_is_node.isNodeJS) {
+ const fetchData = function (url) {
+ return new Promise((resolve, reject) => {
+ const fs = require("fs");
+
+ fs.readFile(url, (error, data) => {
+ if (error || !data) {
+ reject(new Error(error));
+ return;
+ }
+
+ resolve(new Uint8Array(data));
+ });
+ });
+ };
+
+ exports.NodeCanvasFactory = NodeCanvasFactory = class extends _base_factory.BaseCanvasFactory {
+ _createCanvas(width, height) {
+ const Canvas = require("canvas");
+
+ return Canvas.createCanvas(width, height);
+ }
+
+ };
+ exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _base_factory.BaseCMapReaderFactory {
+ _fetchData(url, compressionType) {
+ return fetchData(url).then(data => {
+ return {
+ cMapData: data,
+ compressionType
+ };
+ });
+ }
+
+ };
+ exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory = class extends _base_factory.BaseStandardFontDataFactory {
+ _fetchData(url) {
+ return fetchData(url);
+ }
+
+ };
+}
+
+/***/ }),
+/* 9 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.AnnotationStorage = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+class AnnotationStorage {
+ constructor() {
+ this._storage = new Map();
+ this._timeStamp = Date.now();
+ this._modified = false;
+ this.onSetModified = null;
+ this.onResetModified = null;
+ }
+
+ getValue(key, defaultValue) {
+ const value = this._storage.get(key);
+
+ if (value === undefined) {
+ return defaultValue;
+ }
+
+ return Object.assign(defaultValue, value);
+ }
+
+ setValue(key, value) {
+ const obj = this._storage.get(key);
+
+ let modified = false;
+
+ if (obj !== undefined) {
+ for (const [entry, val] of Object.entries(value)) {
+ if (obj[entry] !== val) {
+ modified = true;
+ obj[entry] = val;
+ }
+ }
+ } else {
+ modified = true;
+
+ this._storage.set(key, value);
+ }
+
+ if (modified) {
+ this._timeStamp = Date.now();
+
+ this._setModified();
+ }
+ }
+
+ getAll() {
+ return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;
+ }
+
+ get size() {
+ return this._storage.size;
+ }
+
+ _setModified() {
+ if (!this._modified) {
+ this._modified = true;
+
+ if (typeof this.onSetModified === "function") {
+ this.onSetModified();
+ }
+ }
+ }
+
+ resetModified() {
+ if (this._modified) {
+ this._modified = false;
+
+ if (typeof this.onResetModified === "function") {
+ this.onResetModified();
+ }
+ }
+ }
+
+ get serializable() {
+ return this._storage.size > 0 ? this._storage : null;
+ }
+
+ get lastModified() {
+ return this._timeStamp.toString();
+ }
+
+}
+
+exports.AnnotationStorage = AnnotationStorage;
+
+/***/ }),
+/* 10 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.CanvasGraphics = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _pattern_helper = __w_pdfjs_require__(11);
+
+var _display_utils = __w_pdfjs_require__(5);
+
+const MIN_FONT_SIZE = 16;
+const MAX_FONT_SIZE = 100;
+const MAX_GROUP_SIZE = 4096;
+const EXECUTION_TIME = 15;
+const EXECUTION_STEPS = 10;
+const COMPILE_TYPE3_GLYPHS = true;
+const MAX_SIZE_TO_COMPILE = 1000;
+const FULL_CHUNK_HEIGHT = 16;
+const LINEWIDTH_SCALE_FACTOR = 1.000001;
+
+function mirrorContextOperations(ctx, destCtx) {
+ if (ctx._removeMirroring) {
+ throw new Error("Context is already forwarding operations.");
+ }
+
+ ctx.__originalSave = ctx.save;
+ ctx.__originalRestore = ctx.restore;
+ ctx.__originalRotate = ctx.rotate;
+ ctx.__originalScale = ctx.scale;
+ ctx.__originalTranslate = ctx.translate;
+ ctx.__originalTransform = ctx.transform;
+ ctx.__originalSetTransform = ctx.setTransform;
+ ctx.__originalResetTransform = ctx.resetTransform;
+ ctx.__originalClip = ctx.clip;
+ ctx.__originalMoveTo = ctx.moveTo;
+ ctx.__originalLineTo = ctx.lineTo;
+ ctx.__originalBezierCurveTo = ctx.bezierCurveTo;
+ ctx.__originalRect = ctx.rect;
+ ctx.__originalClosePath = ctx.closePath;
+ ctx.__originalBeginPath = ctx.beginPath;
+
+ ctx._removeMirroring = () => {
+ ctx.save = ctx.__originalSave;
+ ctx.restore = ctx.__originalRestore;
+ ctx.rotate = ctx.__originalRotate;
+ ctx.scale = ctx.__originalScale;
+ ctx.translate = ctx.__originalTranslate;
+ ctx.transform = ctx.__originalTransform;
+ ctx.setTransform = ctx.__originalSetTransform;
+ ctx.resetTransform = ctx.__originalResetTransform;
+ ctx.clip = ctx.__originalClip;
+ ctx.moveTo = ctx.__originalMoveTo;
+ ctx.lineTo = ctx.__originalLineTo;
+ ctx.bezierCurveTo = ctx.__originalBezierCurveTo;
+ ctx.rect = ctx.__originalRect;
+ ctx.closePath = ctx.__originalClosePath;
+ ctx.beginPath = ctx.__originalBeginPath;
+ delete ctx._removeMirroring;
+ };
+
+ ctx.save = function ctxSave() {
+ destCtx.save();
+
+ this.__originalSave();
+ };
+
+ ctx.restore = function ctxRestore() {
+ destCtx.restore();
+
+ this.__originalRestore();
+ };
+
+ ctx.translate = function ctxTranslate(x, y) {
+ destCtx.translate(x, y);
+
+ this.__originalTranslate(x, y);
+ };
+
+ ctx.scale = function ctxScale(x, y) {
+ destCtx.scale(x, y);
+
+ this.__originalScale(x, y);
+ };
+
+ ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+ destCtx.transform(a, b, c, d, e, f);
+
+ this.__originalTransform(a, b, c, d, e, f);
+ };
+
+ ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
+ destCtx.setTransform(a, b, c, d, e, f);
+
+ this.__originalSetTransform(a, b, c, d, e, f);
+ };
+
+ ctx.resetTransform = function ctxResetTransform() {
+ destCtx.resetTransform();
+
+ this.__originalResetTransform();
+ };
+
+ ctx.rotate = function ctxRotate(angle) {
+ destCtx.rotate(angle);
+
+ this.__originalRotate(angle);
+ };
+
+ ctx.clip = function ctxRotate(rule) {
+ destCtx.clip(rule);
+
+ this.__originalClip(rule);
+ };
+
+ ctx.moveTo = function (x, y) {
+ destCtx.moveTo(x, y);
+
+ this.__originalMoveTo(x, y);
+ };
+
+ ctx.lineTo = function (x, y) {
+ destCtx.lineTo(x, y);
+
+ this.__originalLineTo(x, y);
+ };
+
+ ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {
+ destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
+
+ this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
+ };
+
+ ctx.rect = function (x, y, width, height) {
+ destCtx.rect(x, y, width, height);
+
+ this.__originalRect(x, y, width, height);
+ };
+
+ ctx.closePath = function () {
+ destCtx.closePath();
+
+ this.__originalClosePath();
+ };
+
+ ctx.beginPath = function () {
+ destCtx.beginPath();
+
+ this.__originalBeginPath();
+ };
+}
+
+function addContextCurrentTransform(ctx) {
+ if (ctx._transformStack) {
+ ctx._transformStack = [];
+ }
+
+ if (ctx.mozCurrentTransform) {
+ return;
+ }
+
+ ctx._originalSave = ctx.save;
+ ctx._originalRestore = ctx.restore;
+ ctx._originalRotate = ctx.rotate;
+ ctx._originalScale = ctx.scale;
+ ctx._originalTranslate = ctx.translate;
+ ctx._originalTransform = ctx.transform;
+ ctx._originalSetTransform = ctx.setTransform;
+ ctx._originalResetTransform = ctx.resetTransform;
+ ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
+ ctx._transformStack = [];
+
+ try {
+ const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth");
+ ctx._setLineWidth = desc.set;
+ ctx._getLineWidth = desc.get;
+ Object.defineProperty(ctx, "lineWidth", {
+ set: function setLineWidth(width) {
+ this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);
+ },
+ get: function getLineWidth() {
+ return this._getLineWidth();
+ }
+ });
+ } catch (_) {}
+
+ Object.defineProperty(ctx, "mozCurrentTransform", {
+ get: function getCurrentTransform() {
+ return this._transformMatrix;
+ }
+ });
+ Object.defineProperty(ctx, "mozCurrentTransformInverse", {
+ get: function getCurrentTransformInverse() {
+ const [a, b, c, d, e, f] = this._transformMatrix;
+ const ad_bc = a * d - b * c;
+ const bc_ad = b * c - a * d;
+ return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];
+ }
+ });
+
+ ctx.save = function ctxSave() {
+ const old = this._transformMatrix;
+
+ this._transformStack.push(old);
+
+ this._transformMatrix = old.slice(0, 6);
+
+ this._originalSave();
+ };
+
+ ctx.restore = function ctxRestore() {
+ if (this._transformStack.length === 0) {
+ (0, _util.warn)("Tried to restore a ctx when the stack was already empty.");
+ }
+
+ const prev = this._transformStack.pop();
+
+ if (prev) {
+ this._transformMatrix = prev;
+
+ this._originalRestore();
+ }
+ };
+
+ ctx.translate = function ctxTranslate(x, y) {
+ const m = this._transformMatrix;
+ m[4] = m[0] * x + m[2] * y + m[4];
+ m[5] = m[1] * x + m[3] * y + m[5];
+
+ this._originalTranslate(x, y);
+ };
+
+ ctx.scale = function ctxScale(x, y) {
+ const m = this._transformMatrix;
+ m[0] *= x;
+ m[1] *= x;
+ m[2] *= y;
+ m[3] *= y;
+
+ this._originalScale(x, y);
+ };
+
+ ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+ const m = this._transformMatrix;
+ this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];
+
+ ctx._originalTransform(a, b, c, d, e, f);
+ };
+
+ ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
+ this._transformMatrix = [a, b, c, d, e, f];
+
+ ctx._originalSetTransform(a, b, c, d, e, f);
+ };
+
+ ctx.resetTransform = function ctxResetTransform() {
+ this._transformMatrix = [1, 0, 0, 1, 0, 0];
+
+ ctx._originalResetTransform();
+ };
+
+ ctx.rotate = function ctxRotate(angle) {
+ const cosValue = Math.cos(angle);
+ const sinValue = Math.sin(angle);
+ const m = this._transformMatrix;
+ this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];
+
+ this._originalRotate(angle);
+ };
+}
+
+class CachedCanvases {
+ constructor(canvasFactory) {
+ this.canvasFactory = canvasFactory;
+ this.cache = Object.create(null);
+ }
+
+ getCanvas(id, width, height, trackTransform) {
+ let canvasEntry;
+
+ if (this.cache[id] !== undefined) {
+ canvasEntry = this.cache[id];
+ this.canvasFactory.reset(canvasEntry, width, height);
+ canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
+ } else {
+ canvasEntry = this.canvasFactory.create(width, height);
+ this.cache[id] = canvasEntry;
+ }
+
+ if (trackTransform) {
+ addContextCurrentTransform(canvasEntry.context);
+ }
+
+ return canvasEntry;
+ }
+
+ clear() {
+ for (const id in this.cache) {
+ const canvasEntry = this.cache[id];
+ this.canvasFactory.destroy(canvasEntry);
+ delete this.cache[id];
+ }
+ }
+
+}
+
+function compileType3Glyph(imgData) {
+ const POINT_TO_PROCESS_LIMIT = 1000;
+ const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);
+ const width = imgData.width,
+ height = imgData.height,
+ width1 = width + 1;
+ let i, ii, j, j0;
+ const points = new Uint8Array(width1 * (height + 1));
+ const lineSize = width + 7 & ~7,
+ data0 = imgData.data;
+ const data = new Uint8Array(lineSize * height);
+ let pos = 0;
+
+ for (i = 0, ii = data0.length; i < ii; i++) {
+ const elem = data0[i];
+ let mask = 128;
+
+ while (mask > 0) {
+ data[pos++] = elem & mask ? 0 : 255;
+ mask >>= 1;
+ }
+ }
+
+ let count = 0;
+ pos = 0;
+
+ if (data[pos] !== 0) {
+ points[0] = 1;
+ ++count;
+ }
+
+ for (j = 1; j < width; j++) {
+ if (data[pos] !== data[pos + 1]) {
+ points[j] = data[pos] ? 2 : 1;
+ ++count;
+ }
+
+ pos++;
+ }
+
+ if (data[pos] !== 0) {
+ points[j] = 2;
+ ++count;
+ }
+
+ for (i = 1; i < height; i++) {
+ pos = i * lineSize;
+ j0 = i * width1;
+
+ if (data[pos - lineSize] !== data[pos]) {
+ points[j0] = data[pos] ? 1 : 8;
+ ++count;
+ }
+
+ let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
+
+ for (j = 1; j < width; j++) {
+ sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
+
+ if (POINT_TYPES[sum]) {
+ points[j0 + j] = POINT_TYPES[sum];
+ ++count;
+ }
+
+ pos++;
+ }
+
+ if (data[pos - lineSize] !== data[pos]) {
+ points[j0 + j] = data[pos] ? 2 : 4;
+ ++count;
+ }
+
+ if (count > POINT_TO_PROCESS_LIMIT) {
+ return null;
+ }
+ }
+
+ pos = lineSize * (height - 1);
+ j0 = i * width1;
+
+ if (data[pos] !== 0) {
+ points[j0] = 8;
+ ++count;
+ }
+
+ for (j = 1; j < width; j++) {
+ if (data[pos] !== data[pos + 1]) {
+ points[j0 + j] = data[pos] ? 4 : 8;
+ ++count;
+ }
+
+ pos++;
+ }
+
+ if (data[pos] !== 0) {
+ points[j0 + j] = 4;
+ ++count;
+ }
+
+ if (count > POINT_TO_PROCESS_LIMIT) {
+ return null;
+ }
+
+ const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);
+ const outlines = [];
+
+ for (i = 0; count && i <= height; i++) {
+ let p = i * width1;
+ const end = p + width;
+
+ while (p < end && !points[p]) {
+ p++;
+ }
+
+ if (p === end) {
+ continue;
+ }
+
+ const coords = [p % width1, i];
+ const p0 = p;
+ let type = points[p];
+
+ do {
+ const step = steps[type];
+
+ do {
+ p += step;
+ } while (!points[p]);
+
+ const pp = points[p];
+
+ if (pp !== 5 && pp !== 10) {
+ type = pp;
+ points[p] = 0;
+ } else {
+ type = pp & 0x33 * type >> 4;
+ points[p] &= type >> 2 | type << 2;
+ }
+
+ coords.push(p % width1, p / width1 | 0);
+
+ if (!points[p]) {
+ --count;
+ }
+ } while (p0 !== p);
+
+ outlines.push(coords);
+ --i;
+ }
+
+ const drawOutline = function (c) {
+ c.save();
+ c.scale(1 / width, -1 / height);
+ c.translate(0, -height);
+ c.beginPath();
+
+ for (let k = 0, kk = outlines.length; k < kk; k++) {
+ const o = outlines[k];
+ c.moveTo(o[0], o[1]);
+
+ for (let l = 2, ll = o.length; l < ll; l += 2) {
+ c.lineTo(o[l], o[l + 1]);
+ }
+ }
+
+ c.fill();
+ c.beginPath();
+ c.restore();
+ };
+
+ return drawOutline;
+}
+
+class CanvasExtraState {
+ constructor(width, height) {
+ this.alphaIsShape = false;
+ this.fontSize = 0;
+ this.fontSizeScale = 1;
+ this.textMatrix = _util.IDENTITY_MATRIX;
+ this.textMatrixScale = 1;
+ this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
+ this.leading = 0;
+ this.x = 0;
+ this.y = 0;
+ this.lineX = 0;
+ this.lineY = 0;
+ this.charSpacing = 0;
+ this.wordSpacing = 0;
+ this.textHScale = 1;
+ this.textRenderingMode = _util.TextRenderingMode.FILL;
+ this.textRise = 0;
+ this.fillColor = "#000000";
+ this.strokeColor = "#000000";
+ this.patternFill = false;
+ this.fillAlpha = 1;
+ this.strokeAlpha = 1;
+ this.lineWidth = 1;
+ this.activeSMask = null;
+ this.transferMaps = null;
+ this.startNewPathAndClipBox([0, 0, width, height]);
+ }
+
+ clone() {
+ const clone = Object.create(this);
+ clone.clipBox = this.clipBox.slice();
+ return clone;
+ }
+
+ setCurrentPoint(x, y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ updatePathMinMax(transform, x, y) {
+ [x, y] = _util.Util.applyTransform([x, y], transform);
+ this.minX = Math.min(this.minX, x);
+ this.minY = Math.min(this.minY, y);
+ this.maxX = Math.max(this.maxX, x);
+ this.maxY = Math.max(this.maxY, y);
+ }
+
+ updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {
+ const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);
+
+ this.updatePathMinMax(transform, box[0], box[1]);
+ this.updatePathMinMax(transform, box[2], box[3]);
+ }
+
+ getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {
+ const box = [this.minX, this.minY, this.maxX, this.maxY];
+
+ if (pathType === _pattern_helper.PathType.STROKE) {
+ if (!transform) {
+ (0, _util.unreachable)("Stroke bounding box must include transform.");
+ }
+
+ const scale = _util.Util.singularValueDecompose2dScale(transform);
+
+ const xStrokePad = scale[0] * this.lineWidth / 2;
+ const yStrokePad = scale[1] * this.lineWidth / 2;
+ box[0] -= xStrokePad;
+ box[1] -= yStrokePad;
+ box[2] += xStrokePad;
+ box[3] += yStrokePad;
+ }
+
+ return box;
+ }
+
+ updateClipFromPath() {
+ const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());
+
+ this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);
+ }
+
+ startNewPathAndClipBox(box) {
+ this.clipBox = box;
+ this.minX = Infinity;
+ this.minY = Infinity;
+ this.maxX = 0;
+ this.maxY = 0;
+ }
+
+ getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {
+ return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));
+ }
+
+}
+
+function putBinaryImageData(ctx, imgData, transferMaps = null) {
+ if (typeof ImageData !== "undefined" && imgData instanceof ImageData) {
+ ctx.putImageData(imgData, 0, 0);
+ return;
+ }
+
+ const height = imgData.height,
+ width = imgData.width;
+ const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ let srcPos = 0,
+ destPos;
+ const src = imgData.data;
+ const dest = chunkImgData.data;
+ let i, j, thisChunkHeight, elemsInThisChunk;
+ let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;
+
+ if (transferMaps) {
+ switch (transferMaps.length) {
+ case 1:
+ transferMapRed = transferMaps[0];
+ transferMapGreen = transferMaps[0];
+ transferMapBlue = transferMaps[0];
+ transferMapGray = transferMaps[0];
+ break;
+
+ case 4:
+ transferMapRed = transferMaps[0];
+ transferMapGreen = transferMaps[1];
+ transferMapBlue = transferMaps[2];
+ transferMapGray = transferMaps[3];
+ break;
+ }
+ }
+
+ if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {
+ const srcLength = src.byteLength;
+ const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);
+ const dest32DataLength = dest32.length;
+ const fullSrcDiff = width + 7 >> 3;
+ let white = 0xffffffff;
+ let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;
+
+ if (transferMapGray) {
+ if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {
+ [white, black] = [black, white];
+ }
+ }
+
+ for (i = 0; i < totalChunks; i++) {
+ thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+ destPos = 0;
+
+ for (j = 0; j < thisChunkHeight; j++) {
+ const srcDiff = srcLength - srcPos;
+ let k = 0;
+ const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
+ const kEndUnrolled = kEnd & ~7;
+ let mask = 0;
+ let srcByte = 0;
+
+ for (; k < kEndUnrolled; k += 8) {
+ srcByte = src[srcPos++];
+ dest32[destPos++] = srcByte & 128 ? white : black;
+ dest32[destPos++] = srcByte & 64 ? white : black;
+ dest32[destPos++] = srcByte & 32 ? white : black;
+ dest32[destPos++] = srcByte & 16 ? white : black;
+ dest32[destPos++] = srcByte & 8 ? white : black;
+ dest32[destPos++] = srcByte & 4 ? white : black;
+ dest32[destPos++] = srcByte & 2 ? white : black;
+ dest32[destPos++] = srcByte & 1 ? white : black;
+ }
+
+ for (; k < kEnd; k++) {
+ if (mask === 0) {
+ srcByte = src[srcPos++];
+ mask = 128;
+ }
+
+ dest32[destPos++] = srcByte & mask ? white : black;
+ mask >>= 1;
+ }
+ }
+
+ while (destPos < dest32DataLength) {
+ dest32[destPos++] = 0;
+ }
+
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+ } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {
+ const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
+ j = 0;
+ elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
+
+ for (i = 0; i < fullChunks; i++) {
+ dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+ srcPos += elemsInThisChunk;
+
+ if (hasTransferMaps) {
+ for (let k = 0; k < elemsInThisChunk; k += 4) {
+ if (transferMapRed) {
+ dest[k + 0] = transferMapRed[dest[k + 0]];
+ }
+
+ if (transferMapGreen) {
+ dest[k + 1] = transferMapGreen[dest[k + 1]];
+ }
+
+ if (transferMapBlue) {
+ dest[k + 2] = transferMapBlue[dest[k + 2]];
+ }
+ }
+ }
+
+ ctx.putImageData(chunkImgData, 0, j);
+ j += FULL_CHUNK_HEIGHT;
+ }
+
+ if (i < totalChunks) {
+ elemsInThisChunk = width * partialChunkHeight * 4;
+ dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+
+ if (hasTransferMaps) {
+ for (let k = 0; k < elemsInThisChunk; k += 4) {
+ if (transferMapRed) {
+ dest[k + 0] = transferMapRed[dest[k + 0]];
+ }
+
+ if (transferMapGreen) {
+ dest[k + 1] = transferMapGreen[dest[k + 1]];
+ }
+
+ if (transferMapBlue) {
+ dest[k + 2] = transferMapBlue[dest[k + 2]];
+ }
+ }
+ }
+
+ ctx.putImageData(chunkImgData, 0, j);
+ }
+ } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {
+ const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);
+ thisChunkHeight = FULL_CHUNK_HEIGHT;
+ elemsInThisChunk = width * thisChunkHeight;
+
+ for (i = 0; i < totalChunks; i++) {
+ if (i >= fullChunks) {
+ thisChunkHeight = partialChunkHeight;
+ elemsInThisChunk = width * thisChunkHeight;
+ }
+
+ destPos = 0;
+
+ for (j = elemsInThisChunk; j--;) {
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = 255;
+ }
+
+ if (hasTransferMaps) {
+ for (let k = 0; k < destPos; k += 4) {
+ if (transferMapRed) {
+ dest[k + 0] = transferMapRed[dest[k + 0]];
+ }
+
+ if (transferMapGreen) {
+ dest[k + 1] = transferMapGreen[dest[k + 1]];
+ }
+
+ if (transferMapBlue) {
+ dest[k + 2] = transferMapBlue[dest[k + 2]];
+ }
+ }
+ }
+
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+ } else {
+ throw new Error(`bad image kind: ${imgData.kind}`);
+ }
+}
+
+function putBinaryImageMask(ctx, imgData) {
+ const height = imgData.height,
+ width = imgData.width;
+ const partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ let srcPos = 0;
+ const src = imgData.data;
+ const dest = chunkImgData.data;
+
+ for (let i = 0; i < totalChunks; i++) {
+ const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+ let destPos = 3;
+
+ for (let j = 0; j < thisChunkHeight; j++) {
+ let elem,
+ mask = 0;
+
+ for (let k = 0; k < width; k++) {
+ if (!mask) {
+ elem = src[srcPos++];
+ mask = 128;
+ }
+
+ dest[destPos] = elem & mask ? 0 : 255;
+ destPos += 4;
+ mask >>= 1;
+ }
+ }
+
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+}
+
+function copyCtxState(sourceCtx, destCtx) {
+ const properties = ["strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font"];
+
+ for (let i = 0, ii = properties.length; i < ii; i++) {
+ const property = properties[i];
+
+ if (sourceCtx[property] !== undefined) {
+ destCtx[property] = sourceCtx[property];
+ }
+ }
+
+ if (sourceCtx.setLineDash !== undefined) {
+ destCtx.setLineDash(sourceCtx.getLineDash());
+ destCtx.lineDashOffset = sourceCtx.lineDashOffset;
+ }
+}
+
+function resetCtxToDefault(ctx) {
+ ctx.strokeStyle = "#000000";
+ ctx.fillStyle = "#000000";
+ ctx.fillRule = "nonzero";
+ ctx.globalAlpha = 1;
+ ctx.lineWidth = 1;
+ ctx.lineCap = "butt";
+ ctx.lineJoin = "miter";
+ ctx.miterLimit = 10;
+ ctx.globalCompositeOperation = "source-over";
+ ctx.font = "10px sans-serif";
+
+ if (ctx.setLineDash !== undefined) {
+ ctx.setLineDash([]);
+ ctx.lineDashOffset = 0;
+ }
+}
+
+function composeSMaskBackdrop(bytes, r0, g0, b0) {
+ const length = bytes.length;
+
+ for (let i = 3; i < length; i += 4) {
+ const alpha = bytes[i];
+
+ if (alpha === 0) {
+ bytes[i - 3] = r0;
+ bytes[i - 2] = g0;
+ bytes[i - 1] = b0;
+ } else if (alpha < 255) {
+ const alpha_ = 255 - alpha;
+ bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
+ bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
+ bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
+ }
+ }
+}
+
+function composeSMaskAlpha(maskData, layerData, transferMap) {
+ const length = maskData.length;
+ const scale = 1 / 255;
+
+ for (let i = 3; i < length; i += 4) {
+ const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
+ layerData[i] = layerData[i] * alpha * scale | 0;
+ }
+}
+
+function composeSMaskLuminosity(maskData, layerData, transferMap) {
+ const length = maskData.length;
+
+ for (let i = 3; i < length; i += 4) {
+ const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
+ layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
+ }
+}
+
+function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {
+ const hasBackdrop = !!backdrop;
+ const r0 = hasBackdrop ? backdrop[0] : 0;
+ const g0 = hasBackdrop ? backdrop[1] : 0;
+ const b0 = hasBackdrop ? backdrop[2] : 0;
+ let composeFn;
+
+ if (subtype === "Luminosity") {
+ composeFn = composeSMaskLuminosity;
+ } else {
+ composeFn = composeSMaskAlpha;
+ }
+
+ const PIXELS_TO_PROCESS = 1048576;
+ const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+
+ for (let row = 0; row < height; row += chunkSize) {
+ const chunkHeight = Math.min(chunkSize, height - row);
+ const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);
+ const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);
+
+ if (hasBackdrop) {
+ composeSMaskBackdrop(maskData.data, r0, g0, b0);
+ }
+
+ composeFn(maskData.data, layerData.data, transferMap);
+ layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);
+ }
+}
+
+function composeSMask(ctx, smask, layerCtx, layerBox) {
+ const layerOffsetX = layerBox[0];
+ const layerOffsetY = layerBox[1];
+ const layerWidth = layerBox[2] - layerOffsetX;
+ const layerHeight = layerBox[3] - layerOffsetY;
+
+ if (layerWidth === 0 || layerHeight === 0) {
+ return;
+ }
+
+ genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);
+ ctx.save();
+ ctx.globalAlpha = 1;
+ ctx.globalCompositeOperation = "source-over";
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+ ctx.drawImage(layerCtx.canvas, 0, 0);
+ ctx.restore();
+}
+
+function getImageSmoothingEnabled(transform, interpolate) {
+ const scale = _util.Util.singularValueDecompose2dScale(transform);
+
+ scale[0] = Math.fround(scale[0]);
+ scale[1] = Math.fround(scale[1]);
+ const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);
+
+ if (interpolate !== undefined) {
+ return interpolate;
+ } else if (scale[0] <= actualScale || scale[1] <= actualScale) {
+ return true;
+ }
+
+ return false;
+}
+
+const LINE_CAP_STYLES = ["butt", "round", "square"];
+const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+const NORMAL_CLIP = {};
+const EO_CLIP = {};
+
+class CanvasGraphics {
+ constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap) {
+ this.ctx = canvasCtx;
+ this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);
+ this.stateStack = [];
+ this.pendingClip = null;
+ this.pendingEOFill = false;
+ this.res = null;
+ this.xobjs = null;
+ this.commonObjs = commonObjs;
+ this.objs = objs;
+ this.canvasFactory = canvasFactory;
+ this.imageLayer = imageLayer;
+ this.groupStack = [];
+ this.processingType3 = null;
+ this.baseTransform = null;
+ this.baseTransformStack = [];
+ this.groupLevel = 0;
+ this.smaskStack = [];
+ this.smaskCounter = 0;
+ this.tempSMask = null;
+ this.suspendedCtx = null;
+ this.contentVisible = true;
+ this.markedContentStack = [];
+ this.optionalContentConfig = optionalContentConfig;
+ this.cachedCanvases = new CachedCanvases(this.canvasFactory);
+ this.cachedPatterns = new Map();
+ this.annotationCanvasMap = annotationCanvasMap;
+ this.viewportScale = 1;
+ this.outputScaleX = 1;
+ this.outputScaleY = 1;
+
+ if (canvasCtx) {
+ addContextCurrentTransform(canvasCtx);
+ }
+
+ this._cachedGetSinglePixelWidth = null;
+ }
+
+ beginDrawing({
+ transform,
+ viewport,
+ transparency = false,
+ background = null
+ }) {
+ const width = this.ctx.canvas.width;
+ const height = this.ctx.canvas.height;
+ this.ctx.save();
+ this.ctx.fillStyle = background || "rgb(255, 255, 255)";
+ this.ctx.fillRect(0, 0, width, height);
+ this.ctx.restore();
+
+ if (transparency) {
+ const transparentCanvas = this.cachedCanvases.getCanvas("transparent", width, height, true);
+ this.compositeCtx = this.ctx;
+ this.transparentCanvas = transparentCanvas.canvas;
+ this.ctx = transparentCanvas.context;
+ this.ctx.save();
+ this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
+ }
+
+ this.ctx.save();
+ resetCtxToDefault(this.ctx);
+
+ if (transform) {
+ this.ctx.transform.apply(this.ctx, transform);
+ this.outputScaleX = transform[0];
+ this.outputScaleY = transform[0];
+ }
+
+ this.ctx.transform.apply(this.ctx, viewport.transform);
+ this.viewportScale = viewport.scale;
+ this.baseTransform = this.ctx.mozCurrentTransform.slice();
+ this._combinedScaleFactor = Math.hypot(this.baseTransform[0], this.baseTransform[2]);
+
+ if (this.imageLayer) {
+ this.imageLayer.beginLayout();
+ }
+ }
+
+ executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
+ const argsArray = operatorList.argsArray;
+ const fnArray = operatorList.fnArray;
+ let i = executionStartIdx || 0;
+ const argsArrayLen = argsArray.length;
+
+ if (argsArrayLen === i) {
+ return i;
+ }
+
+ const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === "function";
+ const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+ let steps = 0;
+ const commonObjs = this.commonObjs;
+ const objs = this.objs;
+ let fnId;
+
+ while (true) {
+ if (stepper !== undefined && i === stepper.nextBreakPoint) {
+ stepper.breakIt(i, continueCallback);
+ return i;
+ }
+
+ fnId = fnArray[i];
+
+ if (fnId !== _util.OPS.dependency) {
+ this[fnId].apply(this, argsArray[i]);
+ } else {
+ for (const depObjId of argsArray[i]) {
+ const objsPool = depObjId.startsWith("g_") ? commonObjs : objs;
+
+ if (!objsPool.has(depObjId)) {
+ objsPool.get(depObjId, continueCallback);
+ return i;
+ }
+ }
+ }
+
+ i++;
+
+ if (i === argsArrayLen) {
+ return i;
+ }
+
+ if (chunkOperations && ++steps > EXECUTION_STEPS) {
+ if (Date.now() > endTime) {
+ continueCallback();
+ return i;
+ }
+
+ steps = 0;
+ }
+ }
+ }
+
+ endDrawing() {
+ while (this.stateStack.length || this.inSMaskMode) {
+ this.restore();
+ }
+
+ this.ctx.restore();
+
+ if (this.transparentCanvas) {
+ this.ctx = this.compositeCtx;
+ this.ctx.save();
+ this.ctx.setTransform(1, 0, 0, 1, 0, 0);
+ this.ctx.drawImage(this.transparentCanvas, 0, 0);
+ this.ctx.restore();
+ this.transparentCanvas = null;
+ }
+
+ this.cachedCanvases.clear();
+ this.cachedPatterns.clear();
+
+ if (this.imageLayer) {
+ this.imageLayer.endLayout();
+ }
+ }
+
+ _scaleImage(img, inverseTransform) {
+ const width = img.width;
+ const height = img.height;
+ let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);
+ let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);
+ let paintWidth = width,
+ paintHeight = height;
+ let tmpCanvasId = "prescale1";
+ let tmpCanvas, tmpCtx;
+
+ while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
+ let newWidth = paintWidth,
+ newHeight = paintHeight;
+
+ if (widthScale > 2 && paintWidth > 1) {
+ newWidth = Math.ceil(paintWidth / 2);
+ widthScale /= paintWidth / newWidth;
+ }
+
+ if (heightScale > 2 && paintHeight > 1) {
+ newHeight = Math.ceil(paintHeight / 2);
+ heightScale /= paintHeight / newHeight;
+ }
+
+ tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+ tmpCtx = tmpCanvas.context;
+ tmpCtx.clearRect(0, 0, newWidth, newHeight);
+ tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
+ img = tmpCanvas.canvas;
+ paintWidth = newWidth;
+ paintHeight = newHeight;
+ tmpCanvasId = tmpCanvasId === "prescale1" ? "prescale2" : "prescale1";
+ }
+
+ return {
+ img,
+ paintWidth,
+ paintHeight
+ };
+ }
+
+ _createMaskCanvas(img) {
+ const ctx = this.ctx;
+ const width = img.width,
+ height = img.height;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ const maskCtx = maskCanvas.context;
+ putBinaryImageMask(maskCtx, img);
+ const objToCanvas = ctx.mozCurrentTransform;
+
+ let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);
+
+ maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);
+
+ const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);
+
+ const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);
+
+ const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);
+
+ const drawnWidth = Math.ceil(rect[2] - rect[0]);
+ const drawnHeight = Math.ceil(rect[3] - rect[1]);
+ const fillCanvas = this.cachedCanvases.getCanvas("fillCanvas", drawnWidth, drawnHeight, true);
+ const fillCtx = fillCanvas.context;
+ const offsetX = Math.min(cord1[0], cord2[0]);
+ const offsetY = Math.min(cord1[1], cord2[1]);
+ fillCtx.translate(-offsetX, -offsetY);
+ fillCtx.transform.apply(fillCtx, maskToCanvas);
+
+ const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);
+
+ fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate);
+ fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);
+ fillCtx.globalCompositeOperation = "source-in";
+
+ const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]);
+
+ fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;
+ fillCtx.fillRect(0, 0, width, height);
+ return {
+ canvas: fillCanvas.canvas,
+ offsetX: Math.round(offsetX),
+ offsetY: Math.round(offsetY)
+ };
+ }
+
+ setLineWidth(width) {
+ this.current.lineWidth = width;
+ this.ctx.lineWidth = width;
+ }
+
+ setLineCap(style) {
+ this.ctx.lineCap = LINE_CAP_STYLES[style];
+ }
+
+ setLineJoin(style) {
+ this.ctx.lineJoin = LINE_JOIN_STYLES[style];
+ }
+
+ setMiterLimit(limit) {
+ this.ctx.miterLimit = limit;
+ }
+
+ setDash(dashArray, dashPhase) {
+ const ctx = this.ctx;
+
+ if (ctx.setLineDash !== undefined) {
+ ctx.setLineDash(dashArray);
+ ctx.lineDashOffset = dashPhase;
+ }
+ }
+
+ setRenderingIntent(intent) {}
+
+ setFlatness(flatness) {}
+
+ setGState(states) {
+ for (let i = 0, ii = states.length; i < ii; i++) {
+ const state = states[i];
+ const key = state[0];
+ const value = state[1];
+
+ switch (key) {
+ case "LW":
+ this.setLineWidth(value);
+ break;
+
+ case "LC":
+ this.setLineCap(value);
+ break;
+
+ case "LJ":
+ this.setLineJoin(value);
+ break;
+
+ case "ML":
+ this.setMiterLimit(value);
+ break;
+
+ case "D":
+ this.setDash(value[0], value[1]);
+ break;
+
+ case "RI":
+ this.setRenderingIntent(value);
+ break;
+
+ case "FL":
+ this.setFlatness(value);
+ break;
+
+ case "Font":
+ this.setFont(value[0], value[1]);
+ break;
+
+ case "CA":
+ this.current.strokeAlpha = state[1];
+ break;
+
+ case "ca":
+ this.current.fillAlpha = state[1];
+ this.ctx.globalAlpha = state[1];
+ break;
+
+ case "BM":
+ this.ctx.globalCompositeOperation = value;
+ break;
+
+ case "SMask":
+ this.current.activeSMask = value ? this.tempSMask : null;
+ this.tempSMask = null;
+ this.checkSMaskState();
+ break;
+
+ case "TR":
+ this.current.transferMaps = value;
+ }
+ }
+ }
+
+ get inSMaskMode() {
+ return !!this.suspendedCtx;
+ }
+
+ checkSMaskState() {
+ const inSMaskMode = this.inSMaskMode;
+
+ if (this.current.activeSMask && !inSMaskMode) {
+ this.beginSMaskMode();
+ } else if (!this.current.activeSMask && inSMaskMode) {
+ this.endSMaskMode();
+ }
+ }
+
+ beginSMaskMode() {
+ if (this.inSMaskMode) {
+ throw new Error("beginSMaskMode called while already in smask mode");
+ }
+
+ const drawnWidth = this.ctx.canvas.width;
+ const drawnHeight = this.ctx.canvas.height;
+ const cacheId = "smaskGroupAt" + this.groupLevel;
+ const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+ this.suspendedCtx = this.ctx;
+ this.ctx = scratchCanvas.context;
+ const ctx = this.ctx;
+ ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);
+ copyCtxState(this.suspendedCtx, ctx);
+ mirrorContextOperations(ctx, this.suspendedCtx);
+ this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+ }
+
+ endSMaskMode() {
+ if (!this.inSMaskMode) {
+ throw new Error("endSMaskMode called while not in smask mode");
+ }
+
+ this.ctx._removeMirroring();
+
+ copyCtxState(this.ctx, this.suspendedCtx);
+ this.ctx = this.suspendedCtx;
+ this.suspendedCtx = null;
+ }
+
+ compose(dirtyBox) {
+ if (!this.current.activeSMask) {
+ return;
+ }
+
+ if (!dirtyBox) {
+ dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];
+ } else {
+ dirtyBox[0] = Math.floor(dirtyBox[0]);
+ dirtyBox[1] = Math.floor(dirtyBox[1]);
+ dirtyBox[2] = Math.ceil(dirtyBox[2]);
+ dirtyBox[3] = Math.ceil(dirtyBox[3]);
+ }
+
+ const smask = this.current.activeSMask;
+ const suspendedCtx = this.suspendedCtx;
+ composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);
+ this.ctx.save();
+ this.ctx.setTransform(1, 0, 0, 1, 0, 0);
+ this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);
+ this.ctx.restore();
+ }
+
+ save() {
+ if (this.inSMaskMode) {
+ copyCtxState(this.ctx, this.suspendedCtx);
+ this.suspendedCtx.save();
+ } else {
+ this.ctx.save();
+ }
+
+ const old = this.current;
+ this.stateStack.push(old);
+ this.current = old.clone();
+ }
+
+ restore() {
+ if (this.stateStack.length === 0 && this.inSMaskMode) {
+ this.endSMaskMode();
+ }
+
+ if (this.stateStack.length !== 0) {
+ this.current = this.stateStack.pop();
+
+ if (this.inSMaskMode) {
+ this.suspendedCtx.restore();
+ copyCtxState(this.suspendedCtx, this.ctx);
+ } else {
+ this.ctx.restore();
+ }
+
+ this.checkSMaskState();
+ this.pendingClip = null;
+ this._cachedGetSinglePixelWidth = null;
+ }
+ }
+
+ transform(a, b, c, d, e, f) {
+ this.ctx.transform(a, b, c, d, e, f);
+ this._cachedGetSinglePixelWidth = null;
+ }
+
+ constructPath(ops, args) {
+ const ctx = this.ctx;
+ const current = this.current;
+ let x = current.x,
+ y = current.y;
+ let startX, startY;
+
+ for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {
+ switch (ops[i] | 0) {
+ case _util.OPS.rectangle:
+ x = args[j++];
+ y = args[j++];
+ const width = args[j++];
+ const height = args[j++];
+ const xw = x + width;
+ const yh = y + height;
+ ctx.moveTo(x, y);
+
+ if (width === 0 || height === 0) {
+ ctx.lineTo(xw, yh);
+ } else {
+ ctx.lineTo(xw, y);
+ ctx.lineTo(xw, yh);
+ ctx.lineTo(x, yh);
+ }
+
+ current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+ current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);
+ ctx.closePath();
+ break;
+
+ case _util.OPS.moveTo:
+ x = args[j++];
+ y = args[j++];
+ ctx.moveTo(x, y);
+ current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+ break;
+
+ case _util.OPS.lineTo:
+ x = args[j++];
+ y = args[j++];
+ ctx.lineTo(x, y);
+ current.updatePathMinMax(ctx.mozCurrentTransform, x, y);
+ break;
+
+ case _util.OPS.curveTo:
+ startX = x;
+ startY = y;
+ x = args[j + 4];
+ y = args[j + 5];
+ ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+ current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+ j += 6;
+ break;
+
+ case _util.OPS.curveTo2:
+ startX = x;
+ startY = y;
+ ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+ current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+ x = args[j + 2];
+ y = args[j + 3];
+ j += 4;
+ break;
+
+ case _util.OPS.curveTo3:
+ startX = x;
+ startY = y;
+ x = args[j + 2];
+ y = args[j + 3];
+ ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
+ current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], x, y, x, y);
+ j += 4;
+ break;
+
+ case _util.OPS.closePath:
+ ctx.closePath();
+ break;
+ }
+ }
+
+ current.setCurrentPoint(x, y);
+ }
+
+ closePath() {
+ this.ctx.closePath();
+ }
+
+ stroke(consumePath) {
+ consumePath = typeof consumePath !== "undefined" ? consumePath : true;
+ const ctx = this.ctx;
+ const strokeColor = this.current.strokeColor;
+ ctx.globalAlpha = this.current.strokeAlpha;
+
+ if (this.contentVisible) {
+ if (typeof strokeColor === "object" && strokeColor?.getPattern) {
+ const lineWidth = this.getSinglePixelWidth();
+ ctx.save();
+ ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE);
+ ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+ ctx.stroke();
+ ctx.restore();
+ } else {
+ const lineWidth = this.getSinglePixelWidth();
+
+ if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {
+ ctx.save();
+ ctx.resetTransform();
+ ctx.lineWidth = Math.floor(this._combinedScaleFactor);
+ ctx.stroke();
+ ctx.restore();
+ } else {
+ ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);
+ ctx.stroke();
+ }
+ }
+ }
+
+ if (consumePath) {
+ this.consumePath(this.current.getClippedPathBoundingBox());
+ }
+
+ ctx.globalAlpha = this.current.fillAlpha;
+ }
+
+ closeStroke() {
+ this.closePath();
+ this.stroke();
+ }
+
+ fill(consumePath) {
+ consumePath = typeof consumePath !== "undefined" ? consumePath : true;
+ const ctx = this.ctx;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+ let needRestore = false;
+
+ if (isPatternFill) {
+ ctx.save();
+ ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);
+ needRestore = true;
+ }
+
+ const intersect = this.current.getClippedPathBoundingBox();
+
+ if (this.contentVisible && intersect !== null) {
+ if (this.pendingEOFill) {
+ ctx.fill("evenodd");
+ this.pendingEOFill = false;
+ } else {
+ ctx.fill();
+ }
+ }
+
+ if (needRestore) {
+ ctx.restore();
+ }
+
+ if (consumePath) {
+ this.consumePath(intersect);
+ }
+ }
+
+ eoFill() {
+ this.pendingEOFill = true;
+ this.fill();
+ }
+
+ fillStroke() {
+ this.fill(false);
+ this.stroke(false);
+ this.consumePath();
+ }
+
+ eoFillStroke() {
+ this.pendingEOFill = true;
+ this.fillStroke();
+ }
+
+ closeFillStroke() {
+ this.closePath();
+ this.fillStroke();
+ }
+
+ closeEOFillStroke() {
+ this.pendingEOFill = true;
+ this.closePath();
+ this.fillStroke();
+ }
+
+ endPath() {
+ this.consumePath();
+ }
+
+ clip() {
+ this.pendingClip = NORMAL_CLIP;
+ }
+
+ eoClip() {
+ this.pendingClip = EO_CLIP;
+ }
+
+ beginText() {
+ this.current.textMatrix = _util.IDENTITY_MATRIX;
+ this.current.textMatrixScale = 1;
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ }
+
+ endText() {
+ const paths = this.pendingTextPaths;
+ const ctx = this.ctx;
+
+ if (paths === undefined) {
+ ctx.beginPath();
+ return;
+ }
+
+ ctx.save();
+ ctx.beginPath();
+
+ for (let i = 0; i < paths.length; i++) {
+ const path = paths[i];
+ ctx.setTransform.apply(ctx, path.transform);
+ ctx.translate(path.x, path.y);
+ path.addToPath(ctx, path.fontSize);
+ }
+
+ ctx.restore();
+ ctx.clip();
+ ctx.beginPath();
+ delete this.pendingTextPaths;
+ }
+
+ setCharSpacing(spacing) {
+ this.current.charSpacing = spacing;
+ }
+
+ setWordSpacing(spacing) {
+ this.current.wordSpacing = spacing;
+ }
+
+ setHScale(scale) {
+ this.current.textHScale = scale / 100;
+ }
+
+ setLeading(leading) {
+ this.current.leading = -leading;
+ }
+
+ setFont(fontRefName, size) {
+ const fontObj = this.commonObjs.get(fontRefName);
+ const current = this.current;
+
+ if (!fontObj) {
+ throw new Error(`Can't find font for ${fontRefName}`);
+ }
+
+ current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+
+ if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
+ (0, _util.warn)("Invalid font matrix for font " + fontRefName);
+ }
+
+ if (size < 0) {
+ size = -size;
+ current.fontDirection = -1;
+ } else {
+ current.fontDirection = 1;
+ }
+
+ this.current.font = fontObj;
+ this.current.fontSize = size;
+
+ if (fontObj.isType3Font) {
+ return;
+ }
+
+ const name = fontObj.loadedName || "sans-serif";
+ let bold = "normal";
+
+ if (fontObj.black) {
+ bold = "900";
+ } else if (fontObj.bold) {
+ bold = "bold";
+ }
+
+ const italic = fontObj.italic ? "italic" : "normal";
+ const typeface = `"${name}", ${fontObj.fallbackName}`;
+ let browserFontSize = size;
+
+ if (size < MIN_FONT_SIZE) {
+ browserFontSize = MIN_FONT_SIZE;
+ } else if (size > MAX_FONT_SIZE) {
+ browserFontSize = MAX_FONT_SIZE;
+ }
+
+ this.current.fontSizeScale = size / browserFontSize;
+ this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;
+ }
+
+ setTextRenderingMode(mode) {
+ this.current.textRenderingMode = mode;
+ }
+
+ setTextRise(rise) {
+ this.current.textRise = rise;
+ }
+
+ moveText(x, y) {
+ this.current.x = this.current.lineX += x;
+ this.current.y = this.current.lineY += y;
+ }
+
+ setLeadingMoveText(x, y) {
+ this.setLeading(-y);
+ this.moveText(x, y);
+ }
+
+ setTextMatrix(a, b, c, d, e, f) {
+ this.current.textMatrix = [a, b, c, d, e, f];
+ this.current.textMatrixScale = Math.hypot(a, b);
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ }
+
+ nextLine() {
+ this.moveText(0, this.current.leading);
+ }
+
+ paintChar(character, x, y, patternTransform, resetLineWidthToOne) {
+ const ctx = this.ctx;
+ const current = this.current;
+ const font = current.font;
+ const textRenderingMode = current.textRenderingMode;
+ const fontSize = current.fontSize / current.fontSizeScale;
+ const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+ const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+ const patternFill = current.patternFill && !font.missingFile;
+ let addToPath;
+
+ if (font.disableFontFace || isAddToPathSet || patternFill) {
+ addToPath = font.getPathGenerator(this.commonObjs, character);
+ }
+
+ if (font.disableFontFace || patternFill) {
+ ctx.save();
+ ctx.translate(x, y);
+ ctx.beginPath();
+ addToPath(ctx, fontSize);
+
+ if (patternTransform) {
+ ctx.setTransform.apply(ctx, patternTransform);
+ }
+
+ if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ ctx.fill();
+ }
+
+ if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ if (resetLineWidthToOne) {
+ ctx.resetTransform();
+ ctx.lineWidth = Math.floor(this._combinedScaleFactor);
+ }
+
+ ctx.stroke();
+ }
+
+ ctx.restore();
+ } else {
+ if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ ctx.fillText(character, x, y);
+ }
+
+ if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ if (resetLineWidthToOne) {
+ ctx.save();
+ ctx.moveTo(x, y);
+ ctx.resetTransform();
+ ctx.lineWidth = Math.floor(this._combinedScaleFactor);
+ ctx.strokeText(character, 0, 0);
+ ctx.restore();
+ } else {
+ ctx.strokeText(character, x, y);
+ }
+ }
+ }
+
+ if (isAddToPathSet) {
+ const paths = this.pendingTextPaths || (this.pendingTextPaths = []);
+ paths.push({
+ transform: ctx.mozCurrentTransform,
+ x,
+ y,
+ fontSize,
+ addToPath
+ });
+ }
+ }
+
+ get isFontSubpixelAAEnabled() {
+ const {
+ context: ctx
+ } = this.cachedCanvases.getCanvas("isFontSubpixelAAEnabled", 10, 10);
+ ctx.scale(1.5, 1);
+ ctx.fillText("I", 0, 10);
+ const data = ctx.getImageData(0, 0, 10, 10).data;
+ let enabled = false;
+
+ for (let i = 3; i < data.length; i += 4) {
+ if (data[i] > 0 && data[i] < 255) {
+ enabled = true;
+ break;
+ }
+ }
+
+ return (0, _util.shadow)(this, "isFontSubpixelAAEnabled", enabled);
+ }
+
+ showText(glyphs) {
+ const current = this.current;
+ const font = current.font;
+
+ if (font.isType3Font) {
+ return this.showType3Text(glyphs);
+ }
+
+ const fontSize = current.fontSize;
+
+ if (fontSize === 0) {
+ return undefined;
+ }
+
+ const ctx = this.ctx;
+ const fontSizeScale = current.fontSizeScale;
+ const charSpacing = current.charSpacing;
+ const wordSpacing = current.wordSpacing;
+ const fontDirection = current.fontDirection;
+ const textHScale = current.textHScale * fontDirection;
+ const glyphsLength = glyphs.length;
+ const vertical = font.vertical;
+ const spacingDir = vertical ? 1 : -1;
+ const defaultVMetrics = font.defaultVMetrics;
+ const widthAdvanceScale = fontSize * current.fontMatrix[0];
+ const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;
+ ctx.save();
+ ctx.transform.apply(ctx, current.textMatrix);
+ ctx.translate(current.x, current.y + current.textRise);
+
+ if (fontDirection > 0) {
+ ctx.scale(textHScale, -1);
+ } else {
+ ctx.scale(textHScale, 1);
+ }
+
+ let patternTransform;
+
+ if (current.patternFill) {
+ ctx.save();
+ const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);
+ patternTransform = ctx.mozCurrentTransform;
+ ctx.restore();
+ ctx.fillStyle = pattern;
+ }
+
+ let lineWidth = current.lineWidth;
+ let resetLineWidthToOne = false;
+ const scale = current.textMatrixScale;
+
+ if (scale === 0 || lineWidth === 0) {
+ const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+
+ if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ this._cachedGetSinglePixelWidth = null;
+ lineWidth = this.getSinglePixelWidth();
+ resetLineWidthToOne = lineWidth < 0;
+ }
+ } else {
+ lineWidth /= scale;
+ }
+
+ if (fontSizeScale !== 1.0) {
+ ctx.scale(fontSizeScale, fontSizeScale);
+ lineWidth /= fontSizeScale;
+ }
+
+ ctx.lineWidth = lineWidth;
+ let x = 0,
+ i;
+
+ for (i = 0; i < glyphsLength; ++i) {
+ const glyph = glyphs[i];
+
+ if (typeof glyph === "number") {
+ x += spacingDir * glyph * fontSize / 1000;
+ continue;
+ }
+
+ let restoreNeeded = false;
+ const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ const character = glyph.fontChar;
+ const accent = glyph.accent;
+ let scaledX, scaledY;
+ let width = glyph.width;
+
+ if (vertical) {
+ const vmetric = glyph.vmetric || defaultVMetrics;
+ const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;
+ const vy = vmetric[2] * widthAdvanceScale;
+ width = vmetric ? -vmetric[0] : width;
+ scaledX = vx / fontSizeScale;
+ scaledY = (x + vy) / fontSizeScale;
+ } else {
+ scaledX = x / fontSizeScale;
+ scaledY = 0;
+ }
+
+ if (font.remeasure && width > 0) {
+ const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
+
+ if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
+ const characterScaleX = width / measuredWidth;
+ restoreNeeded = true;
+ ctx.save();
+ ctx.scale(characterScaleX, 1);
+ scaledX /= characterScaleX;
+ } else if (width !== measuredWidth) {
+ scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
+ }
+ }
+
+ if (this.contentVisible && (glyph.isInFont || font.missingFile)) {
+ if (simpleFillText && !accent) {
+ ctx.fillText(character, scaledX, scaledY);
+ } else {
+ this.paintChar(character, scaledX, scaledY, patternTransform, resetLineWidthToOne);
+
+ if (accent) {
+ const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;
+ const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;
+ this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform, resetLineWidthToOne);
+ }
+ }
+ }
+
+ let charWidth;
+
+ if (vertical) {
+ charWidth = width * widthAdvanceScale - spacing * fontDirection;
+ } else {
+ charWidth = width * widthAdvanceScale + spacing * fontDirection;
+ }
+
+ x += charWidth;
+
+ if (restoreNeeded) {
+ ctx.restore();
+ }
+ }
+
+ if (vertical) {
+ current.y -= x;
+ } else {
+ current.x += x * textHScale;
+ }
+
+ ctx.restore();
+ this.compose();
+ return undefined;
+ }
+
+ showType3Text(glyphs) {
+ const ctx = this.ctx;
+ const current = this.current;
+ const font = current.font;
+ const fontSize = current.fontSize;
+ const fontDirection = current.fontDirection;
+ const spacingDir = font.vertical ? 1 : -1;
+ const charSpacing = current.charSpacing;
+ const wordSpacing = current.wordSpacing;
+ const textHScale = current.textHScale * fontDirection;
+ const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+ const glyphsLength = glyphs.length;
+ const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;
+ let i, glyph, width, spacingLength;
+
+ if (isTextInvisible || fontSize === 0) {
+ return;
+ }
+
+ this._cachedGetSinglePixelWidth = null;
+ ctx.save();
+ ctx.transform.apply(ctx, current.textMatrix);
+ ctx.translate(current.x, current.y);
+ ctx.scale(textHScale, fontDirection);
+
+ for (i = 0; i < glyphsLength; ++i) {
+ glyph = glyphs[i];
+
+ if (typeof glyph === "number") {
+ spacingLength = spacingDir * glyph * fontSize / 1000;
+ this.ctx.translate(spacingLength, 0);
+ current.x += spacingLength * textHScale;
+ continue;
+ }
+
+ const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ const operatorList = font.charProcOperatorList[glyph.operatorListId];
+
+ if (!operatorList) {
+ (0, _util.warn)(`Type3 character "${glyph.operatorListId}" is not available.`);
+ continue;
+ }
+
+ if (this.contentVisible) {
+ this.processingType3 = glyph;
+ this.save();
+ ctx.scale(fontSize, fontSize);
+ ctx.transform.apply(ctx, fontMatrix);
+ this.executeOperatorList(operatorList);
+ this.restore();
+ }
+
+ const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);
+
+ width = transformed[0] * fontSize + spacing;
+ ctx.translate(width, 0);
+ current.x += width * textHScale;
+ }
+
+ ctx.restore();
+ this.processingType3 = null;
+ }
+
+ setCharWidth(xWidth, yWidth) {}
+
+ setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
+ this.ctx.rect(llx, lly, urx - llx, ury - lly);
+ this.clip();
+ this.endPath();
+ }
+
+ getColorN_Pattern(IR) {
+ let pattern;
+
+ if (IR[0] === "TilingPattern") {
+ const color = IR[1];
+ const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
+ const canvasGraphicsFactory = {
+ createCanvasGraphics: ctx => {
+ return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);
+ }
+ };
+ pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
+ } else {
+ pattern = this._getPattern(IR[1], IR[2]);
+ }
+
+ return pattern;
+ }
+
+ setStrokeColorN() {
+ this.current.strokeColor = this.getColorN_Pattern(arguments);
+ }
+
+ setFillColorN() {
+ this.current.fillColor = this.getColorN_Pattern(arguments);
+ this.current.patternFill = true;
+ }
+
+ setStrokeRGBColor(r, g, b) {
+ const color = _util.Util.makeHexColor(r, g, b);
+
+ this.ctx.strokeStyle = color;
+ this.current.strokeColor = color;
+ }
+
+ setFillRGBColor(r, g, b) {
+ const color = _util.Util.makeHexColor(r, g, b);
+
+ this.ctx.fillStyle = color;
+ this.current.fillColor = color;
+ this.current.patternFill = false;
+ }
+
+ _getPattern(objId, matrix = null) {
+ let pattern;
+
+ if (this.cachedPatterns.has(objId)) {
+ pattern = this.cachedPatterns.get(objId);
+ } else {
+ pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));
+ this.cachedPatterns.set(objId, pattern);
+ }
+
+ if (matrix) {
+ pattern.matrix = matrix;
+ }
+
+ return pattern;
+ }
+
+ shadingFill(objId) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const ctx = this.ctx;
+ this.save();
+
+ const pattern = this._getPattern(objId);
+
+ ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING);
+ const inv = ctx.mozCurrentTransformInverse;
+
+ if (inv) {
+ const canvas = ctx.canvas;
+ const width = canvas.width;
+ const height = canvas.height;
+
+ const bl = _util.Util.applyTransform([0, 0], inv);
+
+ const br = _util.Util.applyTransform([0, height], inv);
+
+ const ul = _util.Util.applyTransform([width, 0], inv);
+
+ const ur = _util.Util.applyTransform([width, height], inv);
+
+ const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+ const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+ const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+ const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+ this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
+ } else {
+ this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
+ }
+
+ this.compose(this.current.getClippedPathBoundingBox());
+ this.restore();
+ }
+
+ beginInlineImage() {
+ (0, _util.unreachable)("Should not call beginInlineImage");
+ }
+
+ beginImageData() {
+ (0, _util.unreachable)("Should not call beginImageData");
+ }
+
+ paintFormXObjectBegin(matrix, bbox) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ this.save();
+ this.baseTransformStack.push(this.baseTransform);
+
+ if (Array.isArray(matrix) && matrix.length === 6) {
+ this.transform.apply(this, matrix);
+ }
+
+ this.baseTransform = this.ctx.mozCurrentTransform;
+
+ if (bbox) {
+ const width = bbox[2] - bbox[0];
+ const height = bbox[3] - bbox[1];
+ this.ctx.rect(bbox[0], bbox[1], width, height);
+ this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[0], bbox[1]);
+ this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[2], bbox[3]);
+ this.clip();
+ this.endPath();
+ }
+ }
+
+ paintFormXObjectEnd() {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ this.restore();
+ this.baseTransform = this.baseTransformStack.pop();
+ }
+
+ beginGroup(group) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ this.save();
+
+ if (this.inSMaskMode) {
+ this.endSMaskMode();
+ this.current.activeSMask = null;
+ }
+
+ const currentCtx = this.ctx;
+
+ if (!group.isolated) {
+ (0, _util.info)("TODO: Support non-isolated groups.");
+ }
+
+ if (group.knockout) {
+ (0, _util.warn)("Knockout groups not supported.");
+ }
+
+ const currentTransform = currentCtx.mozCurrentTransform;
+
+ if (group.matrix) {
+ currentCtx.transform.apply(currentCtx, group.matrix);
+ }
+
+ if (!group.bbox) {
+ throw new Error("Bounding box is required.");
+ }
+
+ let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
+
+ const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];
+ bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];
+ const offsetX = Math.floor(bounds[0]);
+ const offsetY = Math.floor(bounds[1]);
+ let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+ let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+ let scaleX = 1,
+ scaleY = 1;
+
+ if (drawnWidth > MAX_GROUP_SIZE) {
+ scaleX = drawnWidth / MAX_GROUP_SIZE;
+ drawnWidth = MAX_GROUP_SIZE;
+ }
+
+ if (drawnHeight > MAX_GROUP_SIZE) {
+ scaleY = drawnHeight / MAX_GROUP_SIZE;
+ drawnHeight = MAX_GROUP_SIZE;
+ }
+
+ this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);
+ let cacheId = "groupAt" + this.groupLevel;
+
+ if (group.smask) {
+ cacheId += "_smask_" + this.smaskCounter++ % 2;
+ }
+
+ const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+ const groupCtx = scratchCanvas.context;
+ groupCtx.scale(1 / scaleX, 1 / scaleY);
+ groupCtx.translate(-offsetX, -offsetY);
+ groupCtx.transform.apply(groupCtx, currentTransform);
+
+ if (group.smask) {
+ this.smaskStack.push({
+ canvas: scratchCanvas.canvas,
+ context: groupCtx,
+ offsetX,
+ offsetY,
+ scaleX,
+ scaleY,
+ subtype: group.smask.subtype,
+ backdrop: group.smask.backdrop,
+ transferMap: group.smask.transferMap || null,
+ startTransformInverse: null
+ });
+ } else {
+ currentCtx.setTransform(1, 0, 0, 1, 0, 0);
+ currentCtx.translate(offsetX, offsetY);
+ currentCtx.scale(scaleX, scaleY);
+ currentCtx.save();
+ }
+
+ copyCtxState(currentCtx, groupCtx);
+ this.ctx = groupCtx;
+ this.setGState([["BM", "source-over"], ["ca", 1], ["CA", 1]]);
+ this.groupStack.push(currentCtx);
+ this.groupLevel++;
+ }
+
+ endGroup(group) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ this.groupLevel--;
+ const groupCtx = this.ctx;
+ const ctx = this.groupStack.pop();
+ this.ctx = ctx;
+ this.ctx.imageSmoothingEnabled = false;
+
+ if (group.smask) {
+ this.tempSMask = this.smaskStack.pop();
+ this.restore();
+ } else {
+ this.ctx.restore();
+ const currentMtx = this.ctx.mozCurrentTransform;
+ this.restore();
+ this.ctx.save();
+ this.ctx.setTransform.apply(this.ctx, currentMtx);
+
+ const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);
+
+ this.ctx.drawImage(groupCtx.canvas, 0, 0);
+ this.ctx.restore();
+ this.compose(dirtyBox);
+ }
+ }
+
+ beginAnnotations() {
+ this.save();
+
+ if (this.baseTransform) {
+ this.ctx.setTransform.apply(this.ctx, this.baseTransform);
+ }
+ }
+
+ endAnnotations() {
+ this.restore();
+ }
+
+ beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {
+ this.save();
+
+ if (Array.isArray(rect) && rect.length === 4) {
+ const width = rect[2] - rect[0];
+ const height = rect[3] - rect[1];
+
+ if (hasOwnCanvas && this.annotationCanvasMap) {
+ transform = transform.slice();
+ transform[4] -= rect[0];
+ transform[5] -= rect[1];
+ rect = rect.slice();
+ rect[0] = rect[1] = 0;
+ rect[2] = width;
+ rect[3] = height;
+
+ const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform);
+
+ const {
+ viewportScale
+ } = this;
+ const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);
+ const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);
+ this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);
+ const {
+ canvas,
+ context
+ } = this.annotationCanvas;
+ canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;
+ canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;
+ this.annotationCanvasMap.set(id, canvas);
+ this.annotationCanvas.savedCtx = this.ctx;
+ this.ctx = context;
+ this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);
+ addContextCurrentTransform(this.ctx);
+ resetCtxToDefault(this.ctx);
+ } else {
+ resetCtxToDefault(this.ctx);
+ this.ctx.rect(rect[0], rect[1], width, height);
+ this.clip();
+ this.endPath();
+ }
+ }
+
+ this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);
+ this.transform.apply(this, transform);
+ this.transform.apply(this, matrix);
+ }
+
+ endAnnotation() {
+ if (this.annotationCanvas) {
+ this.ctx = this.annotationCanvas.savedCtx;
+ delete this.annotationCanvas.savedCtx;
+ delete this.annotationCanvas;
+ }
+
+ this.restore();
+ }
+
+ paintImageMaskXObject(img) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const ctx = this.ctx;
+ const width = img.width,
+ height = img.height;
+ const glyph = this.processingType3;
+
+ if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
+ if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
+ glyph.compiled = compileType3Glyph({
+ data: img.data,
+ width,
+ height
+ });
+ } else {
+ glyph.compiled = null;
+ }
+ }
+
+ if (glyph?.compiled) {
+ glyph.compiled(ctx);
+ return;
+ }
+
+ const mask = this._createMaskCanvas(img);
+
+ const maskCanvas = mask.canvas;
+ ctx.save();
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+ ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);
+ ctx.restore();
+ this.compose();
+ }
+
+ paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const ctx = this.ctx;
+ ctx.save();
+ const currentTransform = ctx.mozCurrentTransform;
+ ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);
+
+ const mask = this._createMaskCanvas(imgData);
+
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+
+ for (let i = 0, ii = positions.length; i < ii; i += 2) {
+ const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);
+
+ const [x, y] = _util.Util.applyTransform([0, 0], trans);
+
+ ctx.drawImage(mask.canvas, x, y);
+ }
+
+ ctx.restore();
+ this.compose();
+ }
+
+ paintImageMaskXObjectGroup(images) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const ctx = this.ctx;
+ const fillColor = this.current.fillColor;
+ const isPatternFill = this.current.patternFill;
+
+ for (let i = 0, ii = images.length; i < ii; i++) {
+ const image = images[i];
+ const width = image.width,
+ height = image.height;
+ const maskCanvas = this.cachedCanvases.getCanvas("maskCanvas", width, height);
+ const maskCtx = maskCanvas.context;
+ maskCtx.save();
+ putBinaryImageMask(maskCtx, image);
+ maskCtx.globalCompositeOperation = "source-in";
+ maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL) : fillColor;
+ maskCtx.fillRect(0, 0, width, height);
+ maskCtx.restore();
+ ctx.save();
+ ctx.transform.apply(ctx, image.transform);
+ ctx.scale(1, -1);
+ ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
+ ctx.restore();
+ }
+
+ this.compose();
+ }
+
+ paintImageXObject(objId) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
+
+ if (!imgData) {
+ (0, _util.warn)("Dependent image isn't ready yet");
+ return;
+ }
+
+ this.paintInlineImageXObject(imgData);
+ }
+
+ paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
+
+ if (!imgData) {
+ (0, _util.warn)("Dependent image isn't ready yet");
+ return;
+ }
+
+ const width = imgData.width;
+ const height = imgData.height;
+ const map = [];
+
+ for (let i = 0, ii = positions.length; i < ii; i += 2) {
+ map.push({
+ transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],
+ x: 0,
+ y: 0,
+ w: width,
+ h: height
+ });
+ }
+
+ this.paintInlineImageXObjectGroup(imgData, map);
+ }
+
+ paintInlineImageXObject(imgData) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const width = imgData.width;
+ const height = imgData.height;
+ const ctx = this.ctx;
+ this.save();
+ ctx.scale(1 / width, -1 / height);
+ let imgToPaint;
+
+ if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
+ imgToPaint = imgData;
+ } else {
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", width, height);
+ const tmpCtx = tmpCanvas.context;
+ putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
+ imgToPaint = tmpCanvas.canvas;
+ }
+
+ const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);
+
+ ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate);
+ ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);
+
+ if (this.imageLayer) {
+ const position = this.getCanvasPosition(0, -height);
+ this.imageLayer.appendImage({
+ imgData,
+ left: position[0],
+ top: position[1],
+ width: width / ctx.mozCurrentTransformInverse[0],
+ height: height / ctx.mozCurrentTransformInverse[3]
+ });
+ }
+
+ this.compose();
+ this.restore();
+ }
+
+ paintInlineImageXObjectGroup(imgData, map) {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ const ctx = this.ctx;
+ const w = imgData.width;
+ const h = imgData.height;
+ const tmpCanvas = this.cachedCanvases.getCanvas("inlineImage", w, h);
+ const tmpCtx = tmpCanvas.context;
+ putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);
+
+ for (let i = 0, ii = map.length; i < ii; i++) {
+ const entry = map[i];
+ ctx.save();
+ ctx.transform.apply(ctx, entry.transform);
+ ctx.scale(1, -1);
+ ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
+
+ if (this.imageLayer) {
+ const position = this.getCanvasPosition(entry.x, entry.y);
+ this.imageLayer.appendImage({
+ imgData,
+ left: position[0],
+ top: position[1],
+ width: w,
+ height: h
+ });
+ }
+
+ ctx.restore();
+ }
+
+ this.compose();
+ }
+
+ paintSolidColorImageMask() {
+ if (!this.contentVisible) {
+ return;
+ }
+
+ this.ctx.fillRect(0, 0, 1, 1);
+ this.compose();
+ }
+
+ markPoint(tag) {}
+
+ markPointProps(tag, properties) {}
+
+ beginMarkedContent(tag) {
+ this.markedContentStack.push({
+ visible: true
+ });
+ }
+
+ beginMarkedContentProps(tag, properties) {
+ if (tag === "OC") {
+ this.markedContentStack.push({
+ visible: this.optionalContentConfig.isVisible(properties)
+ });
+ } else {
+ this.markedContentStack.push({
+ visible: true
+ });
+ }
+
+ this.contentVisible = this.isContentVisible();
+ }
+
+ endMarkedContent() {
+ this.markedContentStack.pop();
+ this.contentVisible = this.isContentVisible();
+ }
+
+ beginCompat() {}
+
+ endCompat() {}
+
+ consumePath(clipBox) {
+ if (this.pendingClip) {
+ this.current.updateClipFromPath();
+ }
+
+ if (!this.pendingClip) {
+ this.compose(clipBox);
+ }
+
+ const ctx = this.ctx;
+
+ if (this.pendingClip) {
+ if (this.pendingClip === EO_CLIP) {
+ ctx.clip("evenodd");
+ } else {
+ ctx.clip();
+ }
+
+ this.pendingClip = null;
+ }
+
+ this.current.startNewPathAndClipBox(this.current.clipBox);
+ ctx.beginPath();
+ }
+
+ getSinglePixelWidth() {
+ if (this._cachedGetSinglePixelWidth === null) {
+ const m = this.ctx.mozCurrentTransform;
+ const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);
+ const sqNorm1 = m[0] ** 2 + m[2] ** 2;
+ const sqNorm2 = m[1] ** 2 + m[3] ** 2;
+ const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;
+
+ if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
+ this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
+ } else if (absDet > Number.EPSILON) {
+ this._cachedGetSinglePixelWidth = pixelHeight;
+ } else {
+ this._cachedGetSinglePixelWidth = 1;
+ }
+ }
+
+ return this._cachedGetSinglePixelWidth;
+ }
+
+ getCanvasPosition(x, y) {
+ const transform = this.ctx.mozCurrentTransform;
+ return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];
+ }
+
+ isContentVisible() {
+ for (let i = this.markedContentStack.length - 1; i >= 0; i--) {
+ if (!this.markedContentStack[i].visible) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+}
+
+exports.CanvasGraphics = CanvasGraphics;
+
+for (const op in _util.OPS) {
+ if (CanvasGraphics.prototype[op] !== undefined) {
+ CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
+ }
+}
+
+/***/ }),
+/* 11 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.TilingPattern = exports.PathType = void 0;
+exports.getShadingPattern = getShadingPattern;
+
+var _util = __w_pdfjs_require__(1);
+
+const PathType = {
+ FILL: "Fill",
+ STROKE: "Stroke",
+ SHADING: "Shading"
+};
+exports.PathType = PathType;
+
+function applyBoundingBox(ctx, bbox) {
+ if (!bbox || typeof Path2D === "undefined") {
+ return;
+ }
+
+ const width = bbox[2] - bbox[0];
+ const height = bbox[3] - bbox[1];
+ const region = new Path2D();
+ region.rect(bbox[0], bbox[1], width, height);
+ ctx.clip(region);
+}
+
+class BaseShadingPattern {
+ constructor() {
+ if (this.constructor === BaseShadingPattern) {
+ (0, _util.unreachable)("Cannot initialize BaseShadingPattern.");
+ }
+ }
+
+ getPattern() {
+ (0, _util.unreachable)("Abstract method `getPattern` called.");
+ }
+
+}
+
+class RadialAxialShadingPattern extends BaseShadingPattern {
+ constructor(IR) {
+ super();
+ this._type = IR[1];
+ this._bbox = IR[2];
+ this._colorStops = IR[3];
+ this._p0 = IR[4];
+ this._p1 = IR[5];
+ this._r0 = IR[6];
+ this._r1 = IR[7];
+ this.matrix = null;
+ }
+
+ _createGradient(ctx) {
+ let grad;
+
+ if (this._type === "axial") {
+ grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);
+ } else if (this._type === "radial") {
+ grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);
+ }
+
+ for (const colorStop of this._colorStops) {
+ grad.addColorStop(colorStop[0], colorStop[1]);
+ }
+
+ return grad;
+ }
+
+ getPattern(ctx, owner, inverse, pathType) {
+ let pattern;
+
+ if (pathType === PathType.STROKE || pathType === PathType.FILL) {
+ const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, ctx.mozCurrentTransform) || [0, 0, 0, 0];
+ const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;
+ const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;
+ const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", width, height, true);
+ const tmpCtx = tmpCanvas.context;
+ tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
+ tmpCtx.beginPath();
+ tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);
+ tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);
+ inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);
+ tmpCtx.transform.apply(tmpCtx, owner.baseTransform);
+
+ if (this.matrix) {
+ tmpCtx.transform.apply(tmpCtx, this.matrix);
+ }
+
+ applyBoundingBox(tmpCtx, this._bbox);
+ tmpCtx.fillStyle = this._createGradient(tmpCtx);
+ tmpCtx.fill();
+ pattern = ctx.createPattern(tmpCanvas.canvas, "no-repeat");
+ const domMatrix = new DOMMatrix(inverse);
+
+ try {
+ pattern.setTransform(domMatrix);
+ } catch (ex) {
+ (0, _util.warn)(`RadialAxialShadingPattern.getPattern: "${ex?.message}".`);
+ }
+ } else {
+ applyBoundingBox(ctx, this._bbox);
+ pattern = this._createGradient(ctx);
+ }
+
+ return pattern;
+ }
+
+}
+
+function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {
+ const coords = context.coords,
+ colors = context.colors;
+ const bytes = data.data,
+ rowSize = data.width * 4;
+ let tmp;
+
+ if (coords[p1 + 1] > coords[p2 + 1]) {
+ tmp = p1;
+ p1 = p2;
+ p2 = tmp;
+ tmp = c1;
+ c1 = c2;
+ c2 = tmp;
+ }
+
+ if (coords[p2 + 1] > coords[p3 + 1]) {
+ tmp = p2;
+ p2 = p3;
+ p3 = tmp;
+ tmp = c2;
+ c2 = c3;
+ c3 = tmp;
+ }
+
+ if (coords[p1 + 1] > coords[p2 + 1]) {
+ tmp = p1;
+ p1 = p2;
+ p2 = tmp;
+ tmp = c1;
+ c1 = c2;
+ c2 = tmp;
+ }
+
+ const x1 = (coords[p1] + context.offsetX) * context.scaleX;
+ const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;
+ const x2 = (coords[p2] + context.offsetX) * context.scaleX;
+ const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;
+ const x3 = (coords[p3] + context.offsetX) * context.scaleX;
+ const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;
+
+ if (y1 >= y3) {
+ return;
+ }
+
+ const c1r = colors[c1],
+ c1g = colors[c1 + 1],
+ c1b = colors[c1 + 2];
+ const c2r = colors[c2],
+ c2g = colors[c2 + 1],
+ c2b = colors[c2 + 2];
+ const c3r = colors[c3],
+ c3g = colors[c3 + 1],
+ c3b = colors[c3 + 2];
+ const minY = Math.round(y1),
+ maxY = Math.round(y3);
+ let xa, car, cag, cab;
+ let xb, cbr, cbg, cbb;
+
+ for (let y = minY; y <= maxY; y++) {
+ if (y < y2) {
+ let k;
+
+ if (y < y1) {
+ k = 0;
+ } else {
+ k = (y1 - y) / (y1 - y2);
+ }
+
+ xa = x1 - (x1 - x2) * k;
+ car = c1r - (c1r - c2r) * k;
+ cag = c1g - (c1g - c2g) * k;
+ cab = c1b - (c1b - c2b) * k;
+ } else {
+ let k;
+
+ if (y > y3) {
+ k = 1;
+ } else if (y2 === y3) {
+ k = 0;
+ } else {
+ k = (y2 - y) / (y2 - y3);
+ }
+
+ xa = x2 - (x2 - x3) * k;
+ car = c2r - (c2r - c3r) * k;
+ cag = c2g - (c2g - c3g) * k;
+ cab = c2b - (c2b - c3b) * k;
+ }
+
+ let k;
+
+ if (y < y1) {
+ k = 0;
+ } else if (y > y3) {
+ k = 1;
+ } else {
+ k = (y1 - y) / (y1 - y3);
+ }
+
+ xb = x1 - (x1 - x3) * k;
+ cbr = c1r - (c1r - c3r) * k;
+ cbg = c1g - (c1g - c3g) * k;
+ cbb = c1b - (c1b - c3b) * k;
+ const x1_ = Math.round(Math.min(xa, xb));
+ const x2_ = Math.round(Math.max(xa, xb));
+ let j = rowSize * y + x1_ * 4;
+
+ for (let x = x1_; x <= x2_; x++) {
+ k = (xa - x) / (xa - xb);
+
+ if (k < 0) {
+ k = 0;
+ } else if (k > 1) {
+ k = 1;
+ }
+
+ bytes[j++] = car - (car - cbr) * k | 0;
+ bytes[j++] = cag - (cag - cbg) * k | 0;
+ bytes[j++] = cab - (cab - cbb) * k | 0;
+ bytes[j++] = 255;
+ }
+ }
+}
+
+function drawFigure(data, figure, context) {
+ const ps = figure.coords;
+ const cs = figure.colors;
+ let i, ii;
+
+ switch (figure.type) {
+ case "lattice":
+ const verticesPerRow = figure.verticesPerRow;
+ const rows = Math.floor(ps.length / verticesPerRow) - 1;
+ const cols = verticesPerRow - 1;
+
+ for (i = 0; i < rows; i++) {
+ let q = i * verticesPerRow;
+
+ for (let j = 0; j < cols; j++, q++) {
+ drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);
+ drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);
+ }
+ }
+
+ break;
+
+ case "triangles":
+ for (i = 0, ii = ps.length; i < ii; i += 3) {
+ drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);
+ }
+
+ break;
+
+ default:
+ throw new Error("illegal figure");
+ }
+}
+
+class MeshShadingPattern extends BaseShadingPattern {
+ constructor(IR) {
+ super();
+ this._coords = IR[2];
+ this._colors = IR[3];
+ this._figures = IR[4];
+ this._bounds = IR[5];
+ this._bbox = IR[7];
+ this._background = IR[8];
+ this.matrix = null;
+ }
+
+ _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {
+ const EXPECTED_SCALE = 1.1;
+ const MAX_PATTERN_SIZE = 3000;
+ const BORDER_SIZE = 2;
+ const offsetX = Math.floor(this._bounds[0]);
+ const offsetY = Math.floor(this._bounds[1]);
+ const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;
+ const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;
+ const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+ const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);
+ const scaleX = boundsWidth / width;
+ const scaleY = boundsHeight / height;
+ const context = {
+ coords: this._coords,
+ colors: this._colors,
+ offsetX: -offsetX,
+ offsetY: -offsetY,
+ scaleX: 1 / scaleX,
+ scaleY: 1 / scaleY
+ };
+ const paddedWidth = width + BORDER_SIZE * 2;
+ const paddedHeight = height + BORDER_SIZE * 2;
+ const tmpCanvas = cachedCanvases.getCanvas("mesh", paddedWidth, paddedHeight, false);
+ const tmpCtx = tmpCanvas.context;
+ const data = tmpCtx.createImageData(width, height);
+
+ if (backgroundColor) {
+ const bytes = data.data;
+
+ for (let i = 0, ii = bytes.length; i < ii; i += 4) {
+ bytes[i] = backgroundColor[0];
+ bytes[i + 1] = backgroundColor[1];
+ bytes[i + 2] = backgroundColor[2];
+ bytes[i + 3] = 255;
+ }
+ }
+
+ for (const figure of this._figures) {
+ drawFigure(data, figure, context);
+ }
+
+ tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);
+ const canvas = tmpCanvas.canvas;
+ return {
+ canvas,
+ offsetX: offsetX - BORDER_SIZE * scaleX,
+ offsetY: offsetY - BORDER_SIZE * scaleY,
+ scaleX,
+ scaleY
+ };
+ }
+
+ getPattern(ctx, owner, inverse, pathType) {
+ applyBoundingBox(ctx, this._bbox);
+ let scale;
+
+ if (pathType === PathType.SHADING) {
+ scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);
+ } else {
+ scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);
+
+ if (this.matrix) {
+ const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
+
+ scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];
+ }
+ }
+
+ const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);
+
+ if (pathType !== PathType.SHADING) {
+ ctx.setTransform.apply(ctx, owner.baseTransform);
+
+ if (this.matrix) {
+ ctx.transform.apply(ctx, this.matrix);
+ }
+ }
+
+ ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
+ ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);
+ return ctx.createPattern(temporaryPatternCanvas.canvas, "no-repeat");
+ }
+
+}
+
+class DummyShadingPattern extends BaseShadingPattern {
+ getPattern() {
+ return "hotpink";
+ }
+
+}
+
+function getShadingPattern(IR) {
+ switch (IR[0]) {
+ case "RadialAxial":
+ return new RadialAxialShadingPattern(IR);
+
+ case "Mesh":
+ return new MeshShadingPattern(IR);
+
+ case "Dummy":
+ return new DummyShadingPattern();
+ }
+
+ throw new Error(`Unknown IR type: ${IR[0]}`);
+}
+
+const PaintType = {
+ COLORED: 1,
+ UNCOLORED: 2
+};
+
+class TilingPattern {
+ static get MAX_PATTERN_SIZE() {
+ return (0, _util.shadow)(this, "MAX_PATTERN_SIZE", 3000);
+ }
+
+ constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {
+ this.operatorList = IR[2];
+ this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];
+ this.bbox = IR[4];
+ this.xstep = IR[5];
+ this.ystep = IR[6];
+ this.paintType = IR[7];
+ this.tilingType = IR[8];
+ this.color = color;
+ this.ctx = ctx;
+ this.canvasGraphicsFactory = canvasGraphicsFactory;
+ this.baseTransform = baseTransform;
+ }
+
+ createPatternCanvas(owner) {
+ const operatorList = this.operatorList;
+ const bbox = this.bbox;
+ const xstep = this.xstep;
+ const ystep = this.ystep;
+ const paintType = this.paintType;
+ const tilingType = this.tilingType;
+ const color = this.color;
+ const canvasGraphicsFactory = this.canvasGraphicsFactory;
+ (0, _util.info)("TilingType: " + tilingType);
+ const x0 = bbox[0],
+ y0 = bbox[1],
+ x1 = bbox[2],
+ y1 = bbox[3];
+
+ const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);
+
+ const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);
+
+ const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];
+ const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);
+ const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);
+ const tmpCanvas = owner.cachedCanvases.getCanvas("pattern", dimx.size, dimy.size, true);
+ const tmpCtx = tmpCanvas.context;
+ const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);
+ graphics.groupLevel = owner.groupLevel;
+ this.setFillAndStrokeStyleToContext(graphics, paintType, color);
+ let adjustedX0 = x0;
+ let adjustedY0 = y0;
+ let adjustedX1 = x1;
+ let adjustedY1 = y1;
+
+ if (x0 < 0) {
+ adjustedX0 = 0;
+ adjustedX1 += Math.abs(x0);
+ }
+
+ if (y0 < 0) {
+ adjustedY0 = 0;
+ adjustedY1 += Math.abs(y0);
+ }
+
+ tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));
+ graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);
+ tmpCtx.save();
+ this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);
+ graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();
+ graphics.executeOperatorList(operatorList);
+ graphics.endDrawing();
+ return {
+ canvas: tmpCanvas.canvas,
+ scaleX: dimx.scale,
+ scaleY: dimy.scale,
+ offsetX: adjustedX0,
+ offsetY: adjustedY0
+ };
+ }
+
+ getSizeAndScale(step, realOutputSize, scale) {
+ step = Math.abs(step);
+ const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);
+ let size = Math.ceil(step * scale);
+
+ if (size >= maxSize) {
+ size = maxSize;
+ } else {
+ scale = size / step;
+ }
+
+ return {
+ scale,
+ size
+ };
+ }
+
+ clipBbox(graphics, x0, y0, x1, y1) {
+ const bboxWidth = x1 - x0;
+ const bboxHeight = y1 - y0;
+ graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);
+ graphics.clip();
+ graphics.endPath();
+ }
+
+ setFillAndStrokeStyleToContext(graphics, paintType, color) {
+ const context = graphics.ctx,
+ current = graphics.current;
+
+ switch (paintType) {
+ case PaintType.COLORED:
+ const ctx = this.ctx;
+ context.fillStyle = ctx.fillStyle;
+ context.strokeStyle = ctx.strokeStyle;
+ current.fillColor = ctx.fillStyle;
+ current.strokeColor = ctx.strokeStyle;
+ break;
+
+ case PaintType.UNCOLORED:
+ const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);
+
+ context.fillStyle = cssColor;
+ context.strokeStyle = cssColor;
+ current.fillColor = cssColor;
+ current.strokeColor = cssColor;
+ break;
+
+ default:
+ throw new _util.FormatError(`Unsupported paint type: ${paintType}`);
+ }
+ }
+
+ getPattern(ctx, owner, inverse, pathType) {
+ let matrix = inverse;
+
+ if (pathType !== PathType.SHADING) {
+ matrix = _util.Util.transform(matrix, owner.baseTransform);
+
+ if (this.matrix) {
+ matrix = _util.Util.transform(matrix, this.matrix);
+ }
+ }
+
+ const temporaryPatternCanvas = this.createPatternCanvas(owner);
+ let domMatrix = new DOMMatrix(matrix);
+ domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);
+ domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);
+ const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, "repeat");
+
+ try {
+ pattern.setTransform(domMatrix);
+ } catch (ex) {
+ (0, _util.warn)(`TilingPattern.getPattern: "${ex?.message}".`);
+ }
+
+ return pattern;
+ }
+
+}
+
+exports.TilingPattern = TilingPattern;
+
+/***/ }),
+/* 12 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.GlobalWorkerOptions = void 0;
+const GlobalWorkerOptions = Object.create(null);
+exports.GlobalWorkerOptions = GlobalWorkerOptions;
+GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
+GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? "" : GlobalWorkerOptions.workerSrc;
+
+/***/ }),
+/* 13 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.MessageHandler = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+const CallbackKind = {
+ UNKNOWN: 0,
+ DATA: 1,
+ ERROR: 2
+};
+const StreamKind = {
+ UNKNOWN: 0,
+ CANCEL: 1,
+ CANCEL_COMPLETE: 2,
+ CLOSE: 3,
+ ENQUEUE: 4,
+ ERROR: 5,
+ PULL: 6,
+ PULL_COMPLETE: 7,
+ START_COMPLETE: 8
+};
+
+function wrapReason(reason) {
+ if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) {
+ (0, _util.unreachable)('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
+ }
+
+ switch (reason.name) {
+ case "AbortException":
+ return new _util.AbortException(reason.message);
+
+ case "MissingPDFException":
+ return new _util.MissingPDFException(reason.message);
+
+ case "PasswordException":
+ return new _util.PasswordException(reason.message, reason.code);
+
+ case "UnexpectedResponseException":
+ return new _util.UnexpectedResponseException(reason.message, reason.status);
+
+ case "UnknownErrorException":
+ return new _util.UnknownErrorException(reason.message, reason.details);
+
+ default:
+ return new _util.UnknownErrorException(reason.message, reason.toString());
+ }
+}
+
+class MessageHandler {
+ constructor(sourceName, targetName, comObj) {
+ this.sourceName = sourceName;
+ this.targetName = targetName;
+ this.comObj = comObj;
+ this.callbackId = 1;
+ this.streamId = 1;
+ this.streamSinks = Object.create(null);
+ this.streamControllers = Object.create(null);
+ this.callbackCapabilities = Object.create(null);
+ this.actionHandler = Object.create(null);
+
+ this._onComObjOnMessage = event => {
+ const data = event.data;
+
+ if (data.targetName !== this.sourceName) {
+ return;
+ }
+
+ if (data.stream) {
+ this._processStreamMessage(data);
+
+ return;
+ }
+
+ if (data.callback) {
+ const callbackId = data.callbackId;
+ const capability = this.callbackCapabilities[callbackId];
+
+ if (!capability) {
+ throw new Error(`Cannot resolve callback ${callbackId}`);
+ }
+
+ delete this.callbackCapabilities[callbackId];
+
+ if (data.callback === CallbackKind.DATA) {
+ capability.resolve(data.data);
+ } else if (data.callback === CallbackKind.ERROR) {
+ capability.reject(wrapReason(data.reason));
+ } else {
+ throw new Error("Unexpected callback case");
+ }
+
+ return;
+ }
+
+ const action = this.actionHandler[data.action];
+
+ if (!action) {
+ throw new Error(`Unknown action from worker: ${data.action}`);
+ }
+
+ if (data.callbackId) {
+ const cbSourceName = this.sourceName;
+ const cbTargetName = data.sourceName;
+ new Promise(function (resolve) {
+ resolve(action(data.data));
+ }).then(function (result) {
+ comObj.postMessage({
+ sourceName: cbSourceName,
+ targetName: cbTargetName,
+ callback: CallbackKind.DATA,
+ callbackId: data.callbackId,
+ data: result
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName: cbSourceName,
+ targetName: cbTargetName,
+ callback: CallbackKind.ERROR,
+ callbackId: data.callbackId,
+ reason: wrapReason(reason)
+ });
+ });
+ return;
+ }
+
+ if (data.streamId) {
+ this._createStreamSink(data);
+
+ return;
+ }
+
+ action(data.data);
+ };
+
+ comObj.addEventListener("message", this._onComObjOnMessage);
+ }
+
+ on(actionName, handler) {
+ const ah = this.actionHandler;
+
+ if (ah[actionName]) {
+ throw new Error(`There is already an actionName called "${actionName}"`);
+ }
+
+ ah[actionName] = handler;
+ }
+
+ send(actionName, data, transfers) {
+ this.comObj.postMessage({
+ sourceName: this.sourceName,
+ targetName: this.targetName,
+ action: actionName,
+ data
+ }, transfers);
+ }
+
+ sendWithPromise(actionName, data, transfers) {
+ const callbackId = this.callbackId++;
+ const capability = (0, _util.createPromiseCapability)();
+ this.callbackCapabilities[callbackId] = capability;
+
+ try {
+ this.comObj.postMessage({
+ sourceName: this.sourceName,
+ targetName: this.targetName,
+ action: actionName,
+ callbackId,
+ data
+ }, transfers);
+ } catch (ex) {
+ capability.reject(ex);
+ }
+
+ return capability.promise;
+ }
+
+ sendWithStream(actionName, data, queueingStrategy, transfers) {
+ const streamId = this.streamId++,
+ sourceName = this.sourceName,
+ targetName = this.targetName,
+ comObj = this.comObj;
+ return new ReadableStream({
+ start: controller => {
+ const startCapability = (0, _util.createPromiseCapability)();
+ this.streamControllers[streamId] = {
+ controller,
+ startCall: startCapability,
+ pullCall: null,
+ cancelCall: null,
+ isClosed: false
+ };
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ action: actionName,
+ streamId,
+ data,
+ desiredSize: controller.desiredSize
+ }, transfers);
+ return startCapability.promise;
+ },
+ pull: controller => {
+ const pullCapability = (0, _util.createPromiseCapability)();
+ this.streamControllers[streamId].pullCall = pullCapability;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL,
+ streamId,
+ desiredSize: controller.desiredSize
+ });
+ return pullCapability.promise;
+ },
+ cancel: reason => {
+ (0, _util.assert)(reason instanceof Error, "cancel must have a valid reason");
+ const cancelCapability = (0, _util.createPromiseCapability)();
+ this.streamControllers[streamId].cancelCall = cancelCapability;
+ this.streamControllers[streamId].isClosed = true;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CANCEL,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ return cancelCapability.promise;
+ }
+ }, queueingStrategy);
+ }
+
+ _createStreamSink(data) {
+ const streamId = data.streamId,
+ sourceName = this.sourceName,
+ targetName = data.sourceName,
+ comObj = this.comObj;
+ const self = this,
+ action = this.actionHandler[data.action];
+ const streamSink = {
+ enqueue(chunk, size = 1, transfers) {
+ if (this.isCancelled) {
+ return;
+ }
+
+ const lastDesiredSize = this.desiredSize;
+ this.desiredSize -= size;
+
+ if (lastDesiredSize > 0 && this.desiredSize <= 0) {
+ this.sinkCapability = (0, _util.createPromiseCapability)();
+ this.ready = this.sinkCapability.promise;
+ }
+
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.ENQUEUE,
+ streamId,
+ chunk
+ }, transfers);
+ },
+
+ close() {
+ if (this.isCancelled) {
+ return;
+ }
+
+ this.isCancelled = true;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CLOSE,
+ streamId
+ });
+ delete self.streamSinks[streamId];
+ },
+
+ error(reason) {
+ (0, _util.assert)(reason instanceof Error, "error must have a valid reason");
+
+ if (this.isCancelled) {
+ return;
+ }
+
+ this.isCancelled = true;
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.ERROR,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ },
+
+ sinkCapability: (0, _util.createPromiseCapability)(),
+ onPull: null,
+ onCancel: null,
+ isCancelled: false,
+ desiredSize: data.desiredSize,
+ ready: null
+ };
+ streamSink.sinkCapability.resolve();
+ streamSink.ready = streamSink.sinkCapability.promise;
+ this.streamSinks[streamId] = streamSink;
+ new Promise(function (resolve) {
+ resolve(action(data.data, streamSink));
+ }).then(function () {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.START_COMPLETE,
+ streamId,
+ success: true
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.START_COMPLETE,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ });
+ }
+
+ _processStreamMessage(data) {
+ const streamId = data.streamId,
+ sourceName = this.sourceName,
+ targetName = data.sourceName,
+ comObj = this.comObj;
+ const streamController = this.streamControllers[streamId],
+ streamSink = this.streamSinks[streamId];
+
+ switch (data.stream) {
+ case StreamKind.START_COMPLETE:
+ if (data.success) {
+ streamController.startCall.resolve();
+ } else {
+ streamController.startCall.reject(wrapReason(data.reason));
+ }
+
+ break;
+
+ case StreamKind.PULL_COMPLETE:
+ if (data.success) {
+ streamController.pullCall.resolve();
+ } else {
+ streamController.pullCall.reject(wrapReason(data.reason));
+ }
+
+ break;
+
+ case StreamKind.PULL:
+ if (!streamSink) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL_COMPLETE,
+ streamId,
+ success: true
+ });
+ break;
+ }
+
+ if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {
+ streamSink.sinkCapability.resolve();
+ }
+
+ streamSink.desiredSize = data.desiredSize;
+ new Promise(function (resolve) {
+ resolve(streamSink.onPull && streamSink.onPull());
+ }).then(function () {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL_COMPLETE,
+ streamId,
+ success: true
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.PULL_COMPLETE,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ });
+ break;
+
+ case StreamKind.ENQUEUE:
+ (0, _util.assert)(streamController, "enqueue should have stream controller");
+
+ if (streamController.isClosed) {
+ break;
+ }
+
+ streamController.controller.enqueue(data.chunk);
+ break;
+
+ case StreamKind.CLOSE:
+ (0, _util.assert)(streamController, "close should have stream controller");
+
+ if (streamController.isClosed) {
+ break;
+ }
+
+ streamController.isClosed = true;
+ streamController.controller.close();
+
+ this._deleteStreamController(streamController, streamId);
+
+ break;
+
+ case StreamKind.ERROR:
+ (0, _util.assert)(streamController, "error should have stream controller");
+ streamController.controller.error(wrapReason(data.reason));
+
+ this._deleteStreamController(streamController, streamId);
+
+ break;
+
+ case StreamKind.CANCEL_COMPLETE:
+ if (data.success) {
+ streamController.cancelCall.resolve();
+ } else {
+ streamController.cancelCall.reject(wrapReason(data.reason));
+ }
+
+ this._deleteStreamController(streamController, streamId);
+
+ break;
+
+ case StreamKind.CANCEL:
+ if (!streamSink) {
+ break;
+ }
+
+ new Promise(function (resolve) {
+ resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));
+ }).then(function () {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CANCEL_COMPLETE,
+ streamId,
+ success: true
+ });
+ }, function (reason) {
+ comObj.postMessage({
+ sourceName,
+ targetName,
+ stream: StreamKind.CANCEL_COMPLETE,
+ streamId,
+ reason: wrapReason(reason)
+ });
+ });
+ streamSink.sinkCapability.reject(wrapReason(data.reason));
+ streamSink.isCancelled = true;
+ delete this.streamSinks[streamId];
+ break;
+
+ default:
+ throw new Error("Unexpected stream case");
+ }
+ }
+
+ async _deleteStreamController(streamController, streamId) {
+ await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]);
+ delete this.streamControllers[streamId];
+ }
+
+ destroy() {
+ this.comObj.removeEventListener("message", this._onComObjOnMessage);
+ }
+
+}
+
+exports.MessageHandler = MessageHandler;
+
+/***/ }),
+/* 14 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.Metadata = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+class Metadata {
+ #metadataMap;
+ #data;
+
+ constructor({
+ parsedData,
+ rawData
+ }) {
+ this.#metadataMap = parsedData;
+ this.#data = rawData;
+ }
+
+ getRaw() {
+ return this.#data;
+ }
+
+ get(name) {
+ return this.#metadataMap.get(name) ?? null;
+ }
+
+ getAll() {
+ return (0, _util.objectFromMap)(this.#metadataMap);
+ }
+
+ has(name) {
+ return this.#metadataMap.has(name);
+ }
+
+}
+
+exports.Metadata = Metadata;
+
+/***/ }),
+/* 15 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.OptionalContentConfig = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+class OptionalContentGroup {
+ constructor(name, intent) {
+ this.visible = true;
+ this.name = name;
+ this.intent = intent;
+ }
+
+}
+
+class OptionalContentConfig {
+ constructor(data) {
+ this.name = null;
+ this.creator = null;
+ this._order = null;
+ this._groups = new Map();
+
+ if (data === null) {
+ return;
+ }
+
+ this.name = data.name;
+ this.creator = data.creator;
+ this._order = data.order;
+
+ for (const group of data.groups) {
+ this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent));
+ }
+
+ if (data.baseState === "OFF") {
+ for (const group of this._groups) {
+ group.visible = false;
+ }
+ }
+
+ for (const on of data.on) {
+ this._groups.get(on).visible = true;
+ }
+
+ for (const off of data.off) {
+ this._groups.get(off).visible = false;
+ }
+ }
+
+ _evaluateVisibilityExpression(array) {
+ const length = array.length;
+
+ if (length < 2) {
+ return true;
+ }
+
+ const operator = array[0];
+
+ for (let i = 1; i < length; i++) {
+ const element = array[i];
+ let state;
+
+ if (Array.isArray(element)) {
+ state = this._evaluateVisibilityExpression(element);
+ } else if (this._groups.has(element)) {
+ state = this._groups.get(element).visible;
+ } else {
+ (0, _util.warn)(`Optional content group not found: ${element}`);
+ return true;
+ }
+
+ switch (operator) {
+ case "And":
+ if (!state) {
+ return false;
+ }
+
+ break;
+
+ case "Or":
+ if (state) {
+ return true;
+ }
+
+ break;
+
+ case "Not":
+ return !state;
+
+ default:
+ return true;
+ }
+ }
+
+ return operator === "And";
+ }
+
+ isVisible(group) {
+ if (this._groups.size === 0) {
+ return true;
+ }
+
+ if (!group) {
+ (0, _util.warn)("Optional content group not defined.");
+ return true;
+ }
+
+ if (group.type === "OCG") {
+ if (!this._groups.has(group.id)) {
+ (0, _util.warn)(`Optional content group not found: ${group.id}`);
+ return true;
+ }
+
+ return this._groups.get(group.id).visible;
+ } else if (group.type === "OCMD") {
+ if (group.expression) {
+ return this._evaluateVisibilityExpression(group.expression);
+ }
+
+ if (!group.policy || group.policy === "AnyOn") {
+ for (const id of group.ids) {
+ if (!this._groups.has(id)) {
+ (0, _util.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+
+ if (this._groups.get(id).visible) {
+ return true;
+ }
+ }
+
+ return false;
+ } else if (group.policy === "AllOn") {
+ for (const id of group.ids) {
+ if (!this._groups.has(id)) {
+ (0, _util.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+
+ if (!this._groups.get(id).visible) {
+ return false;
+ }
+ }
+
+ return true;
+ } else if (group.policy === "AnyOff") {
+ for (const id of group.ids) {
+ if (!this._groups.has(id)) {
+ (0, _util.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+
+ if (!this._groups.get(id).visible) {
+ return true;
+ }
+ }
+
+ return false;
+ } else if (group.policy === "AllOff") {
+ for (const id of group.ids) {
+ if (!this._groups.has(id)) {
+ (0, _util.warn)(`Optional content group not found: ${id}`);
+ return true;
+ }
+
+ if (this._groups.get(id).visible) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);
+ return true;
+ }
+
+ (0, _util.warn)(`Unknown group type ${group.type}.`);
+ return true;
+ }
+
+ setVisibility(id, visible = true) {
+ if (!this._groups.has(id)) {
+ (0, _util.warn)(`Optional content group not found: ${id}`);
+ return;
+ }
+
+ this._groups.get(id).visible = !!visible;
+ }
+
+ getOrder() {
+ if (!this._groups.size) {
+ return null;
+ }
+
+ if (this._order) {
+ return this._order.slice();
+ }
+
+ return Array.from(this._groups.keys());
+ }
+
+ getGroups() {
+ return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null;
+ }
+
+ getGroup(id) {
+ return this._groups.get(id) || null;
+ }
+
+}
+
+exports.OptionalContentConfig = OptionalContentConfig;
+
+/***/ }),
+/* 16 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.PDFDataTransportStream = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _display_utils = __w_pdfjs_require__(5);
+
+class PDFDataTransportStream {
+ constructor(params, pdfDataRangeTransport) {
+ (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required "pdfDataRangeTransport" argument.');
+ this._queuedChunks = [];
+ this._progressiveDone = params.progressiveDone || false;
+ this._contentDispositionFilename = params.contentDispositionFilename || null;
+ const initialData = params.initialData;
+
+ if (initialData?.length > 0) {
+ const buffer = new Uint8Array(initialData).buffer;
+
+ this._queuedChunks.push(buffer);
+ }
+
+ this._pdfDataRangeTransport = pdfDataRangeTransport;
+ this._isStreamingSupported = !params.disableStream;
+ this._isRangeSupported = !params.disableRange;
+ this._contentLength = params.length;
+ this._fullRequestReader = null;
+ this._rangeReaders = [];
+
+ this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {
+ this._onReceiveData({
+ begin,
+ chunk
+ });
+ });
+
+ this._pdfDataRangeTransport.addProgressListener((loaded, total) => {
+ this._onProgress({
+ loaded,
+ total
+ });
+ });
+
+ this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {
+ this._onReceiveData({
+ chunk
+ });
+ });
+
+ this._pdfDataRangeTransport.addProgressiveDoneListener(() => {
+ this._onProgressiveDone();
+ });
+
+ this._pdfDataRangeTransport.transportReady();
+ }
+
+ _onReceiveData(args) {
+ const buffer = new Uint8Array(args.chunk).buffer;
+
+ if (args.begin === undefined) {
+ if (this._fullRequestReader) {
+ this._fullRequestReader._enqueue(buffer);
+ } else {
+ this._queuedChunks.push(buffer);
+ }
+ } else {
+ const found = this._rangeReaders.some(function (rangeReader) {
+ if (rangeReader._begin !== args.begin) {
+ return false;
+ }
+
+ rangeReader._enqueue(buffer);
+
+ return true;
+ });
+
+ (0, _util.assert)(found, "_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.");
+ }
+ }
+
+ get _progressiveDataLength() {
+ return this._fullRequestReader?._loaded ?? 0;
+ }
+
+ _onProgress(evt) {
+ if (evt.total === undefined) {
+ const firstReader = this._rangeReaders[0];
+
+ if (firstReader?.onProgress) {
+ firstReader.onProgress({
+ loaded: evt.loaded
+ });
+ }
+ } else {
+ const fullReader = this._fullRequestReader;
+
+ if (fullReader?.onProgress) {
+ fullReader.onProgress({
+ loaded: evt.loaded,
+ total: evt.total
+ });
+ }
+ }
+ }
+
+ _onProgressiveDone() {
+ if (this._fullRequestReader) {
+ this._fullRequestReader.progressiveDone();
+ }
+
+ this._progressiveDone = true;
+ }
+
+ _removeRangeReader(reader) {
+ const i = this._rangeReaders.indexOf(reader);
+
+ if (i >= 0) {
+ this._rangeReaders.splice(i, 1);
+ }
+ }
+
+ getFullReader() {
+ (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called once.");
+ const queuedChunks = this._queuedChunks;
+ this._queuedChunks = null;
+ return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);
+ }
+
+ getRangeReader(begin, end) {
+ if (end <= this._progressiveDataLength) {
+ return null;
+ }
+
+ const reader = new PDFDataTransportStreamRangeReader(this, begin, end);
+
+ this._pdfDataRangeTransport.requestDataRange(begin, end);
+
+ this._rangeReaders.push(reader);
+
+ return reader;
+ }
+
+ cancelAllRequests(reason) {
+ if (this._fullRequestReader) {
+ this._fullRequestReader.cancel(reason);
+ }
+
+ for (const reader of this._rangeReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+
+ this._pdfDataRangeTransport.abort();
+ }
+
+}
+
+exports.PDFDataTransportStream = PDFDataTransportStream;
+
+class PDFDataTransportStreamReader {
+ constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {
+ this._stream = stream;
+ this._done = progressiveDone || false;
+ this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;
+ this._queuedChunks = queuedChunks || [];
+ this._loaded = 0;
+
+ for (const chunk of this._queuedChunks) {
+ this._loaded += chunk.byteLength;
+ }
+
+ this._requests = [];
+ this._headersReady = Promise.resolve();
+ stream._fullRequestReader = this;
+ this.onProgress = null;
+ }
+
+ _enqueue(chunk) {
+ if (this._done) {
+ return;
+ }
+
+ if (this._requests.length > 0) {
+ const requestCapability = this._requests.shift();
+
+ requestCapability.resolve({
+ value: chunk,
+ done: false
+ });
+ } else {
+ this._queuedChunks.push(chunk);
+ }
+
+ this._loaded += chunk.byteLength;
+ }
+
+ get headersReady() {
+ return this._headersReady;
+ }
+
+ get filename() {
+ return this._filename;
+ }
+
+ get isRangeSupported() {
+ return this._stream._isRangeSupported;
+ }
+
+ get isStreamingSupported() {
+ return this._stream._isStreamingSupported;
+ }
+
+ get contentLength() {
+ return this._stream._contentLength;
+ }
+
+ async read() {
+ if (this._queuedChunks.length > 0) {
+ const chunk = this._queuedChunks.shift();
+
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ const requestCapability = (0, _util.createPromiseCapability)();
+
+ this._requests.push(requestCapability);
+
+ return requestCapability.promise;
+ }
+
+ cancel(reason) {
+ this._done = true;
+
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+
+ this._requests.length = 0;
+ }
+
+ progressiveDone() {
+ if (this._done) {
+ return;
+ }
+
+ this._done = true;
+ }
+
+}
+
+class PDFDataTransportStreamRangeReader {
+ constructor(stream, begin, end) {
+ this._stream = stream;
+ this._begin = begin;
+ this._end = end;
+ this._queuedChunk = null;
+ this._requests = [];
+ this._done = false;
+ this.onProgress = null;
+ }
+
+ _enqueue(chunk) {
+ if (this._done) {
+ return;
+ }
+
+ if (this._requests.length === 0) {
+ this._queuedChunk = chunk;
+ } else {
+ const requestsCapability = this._requests.shift();
+
+ requestsCapability.resolve({
+ value: chunk,
+ done: false
+ });
+
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+
+ this._requests.length = 0;
+ }
+
+ this._done = true;
+
+ this._stream._removeRangeReader(this);
+ }
+
+ get isStreamingSupported() {
+ return false;
+ }
+
+ async read() {
+ if (this._queuedChunk) {
+ const chunk = this._queuedChunk;
+ this._queuedChunk = null;
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ const requestCapability = (0, _util.createPromiseCapability)();
+
+ this._requests.push(requestCapability);
+
+ return requestCapability.promise;
+ }
+
+ cancel(reason) {
+ this._done = true;
+
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+
+ this._requests.length = 0;
+
+ this._stream._removeRangeReader(this);
+ }
+
+}
+
+/***/ }),
+/* 17 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.XfaText = void 0;
+
+class XfaText {
+ static textContent(xfa) {
+ const items = [];
+ const output = {
+ items,
+ styles: Object.create(null)
+ };
+
+ function walk(node) {
+ if (!node) {
+ return;
+ }
+
+ let str = null;
+ const name = node.name;
+
+ if (name === "#text") {
+ str = node.value;
+ } else if (!XfaText.shouldBuildText(name)) {
+ return;
+ } else if (node?.attributes?.textContent) {
+ str = node.attributes.textContent;
+ } else if (node.value) {
+ str = node.value;
+ }
+
+ if (str !== null) {
+ items.push({
+ str
+ });
+ }
+
+ if (!node.children) {
+ return;
+ }
+
+ for (const child of node.children) {
+ walk(child);
+ }
+ }
+
+ walk(xfa);
+ return output;
+ }
+
+ static shouldBuildText(name) {
+ return !(name === "textarea" || name === "input" || name === "option" || name === "select");
+ }
+
+}
+
+exports.XfaText = XfaText;
+
+/***/ }),
+/* 18 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.AnnotationLayer = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _display_utils = __w_pdfjs_require__(5);
+
+var _annotation_storage = __w_pdfjs_require__(9);
+
+var _scripting_utils = __w_pdfjs_require__(19);
+
+var _xfa_layer = __w_pdfjs_require__(20);
+
+const DEFAULT_TAB_INDEX = 1000;
+const GetElementsByNameSet = new WeakSet();
+
+function getRectDims(rect) {
+ return {
+ width: rect[2] - rect[0],
+ height: rect[3] - rect[1]
+ };
+}
+
+class AnnotationElementFactory {
+ static create(parameters) {
+ const subtype = parameters.data.annotationType;
+
+ switch (subtype) {
+ case _util.AnnotationType.LINK:
+ return new LinkAnnotationElement(parameters);
+
+ case _util.AnnotationType.TEXT:
+ return new TextAnnotationElement(parameters);
+
+ case _util.AnnotationType.WIDGET:
+ const fieldType = parameters.data.fieldType;
+
+ switch (fieldType) {
+ case "Tx":
+ return new TextWidgetAnnotationElement(parameters);
+
+ case "Btn":
+ if (parameters.data.radioButton) {
+ return new RadioButtonWidgetAnnotationElement(parameters);
+ } else if (parameters.data.checkBox) {
+ return new CheckboxWidgetAnnotationElement(parameters);
+ }
+
+ return new PushButtonWidgetAnnotationElement(parameters);
+
+ case "Ch":
+ return new ChoiceWidgetAnnotationElement(parameters);
+ }
+
+ return new WidgetAnnotationElement(parameters);
+
+ case _util.AnnotationType.POPUP:
+ return new PopupAnnotationElement(parameters);
+
+ case _util.AnnotationType.FREETEXT:
+ return new FreeTextAnnotationElement(parameters);
+
+ case _util.AnnotationType.LINE:
+ return new LineAnnotationElement(parameters);
+
+ case _util.AnnotationType.SQUARE:
+ return new SquareAnnotationElement(parameters);
+
+ case _util.AnnotationType.CIRCLE:
+ return new CircleAnnotationElement(parameters);
+
+ case _util.AnnotationType.POLYLINE:
+ return new PolylineAnnotationElement(parameters);
+
+ case _util.AnnotationType.CARET:
+ return new CaretAnnotationElement(parameters);
+
+ case _util.AnnotationType.INK:
+ return new InkAnnotationElement(parameters);
+
+ case _util.AnnotationType.POLYGON:
+ return new PolygonAnnotationElement(parameters);
+
+ case _util.AnnotationType.HIGHLIGHT:
+ return new HighlightAnnotationElement(parameters);
+
+ case _util.AnnotationType.UNDERLINE:
+ return new UnderlineAnnotationElement(parameters);
+
+ case _util.AnnotationType.SQUIGGLY:
+ return new SquigglyAnnotationElement(parameters);
+
+ case _util.AnnotationType.STRIKEOUT:
+ return new StrikeOutAnnotationElement(parameters);
+
+ case _util.AnnotationType.STAMP:
+ return new StampAnnotationElement(parameters);
+
+ case _util.AnnotationType.FILEATTACHMENT:
+ return new FileAttachmentAnnotationElement(parameters);
+
+ default:
+ return new AnnotationElement(parameters);
+ }
+ }
+
+}
+
+class AnnotationElement {
+ constructor(parameters, {
+ isRenderable = false,
+ ignoreBorder = false,
+ createQuadrilaterals = false
+ } = {}) {
+ this.isRenderable = isRenderable;
+ this.data = parameters.data;
+ this.layer = parameters.layer;
+ this.page = parameters.page;
+ this.viewport = parameters.viewport;
+ this.linkService = parameters.linkService;
+ this.downloadManager = parameters.downloadManager;
+ this.imageResourcesPath = parameters.imageResourcesPath;
+ this.renderForms = parameters.renderForms;
+ this.svgFactory = parameters.svgFactory;
+ this.annotationStorage = parameters.annotationStorage;
+ this.enableScripting = parameters.enableScripting;
+ this.hasJSActions = parameters.hasJSActions;
+ this._fieldObjects = parameters.fieldObjects;
+ this._mouseState = parameters.mouseState;
+
+ if (isRenderable) {
+ this.container = this._createContainer(ignoreBorder);
+ }
+
+ if (createQuadrilaterals) {
+ this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);
+ }
+ }
+
+ _createContainer(ignoreBorder = false) {
+ const data = this.data,
+ page = this.page,
+ viewport = this.viewport;
+ const container = document.createElement("section");
+ let {
+ width,
+ height
+ } = getRectDims(data.rect);
+ container.setAttribute("data-annotation-id", data.id);
+
+ const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
+
+ if (data.hasOwnCanvas) {
+ const transform = viewport.transform.slice();
+
+ const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(transform);
+
+ width = Math.ceil(width * scaleX);
+ height = Math.ceil(height * scaleY);
+ rect[0] *= scaleX;
+ rect[1] *= scaleY;
+
+ for (let i = 0; i < 4; i++) {
+ transform[i] = Math.sign(transform[i]);
+ }
+
+ container.style.transform = `matrix(${transform.join(",")})`;
+ } else {
+ container.style.transform = `matrix(${viewport.transform.join(",")})`;
+ }
+
+ container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;
+
+ if (!ignoreBorder && data.borderStyle.width > 0) {
+ container.style.borderWidth = `${data.borderStyle.width}px`;
+
+ if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
+ width -= 2 * data.borderStyle.width;
+ height -= 2 * data.borderStyle.width;
+ }
+
+ const horizontalRadius = data.borderStyle.horizontalCornerRadius;
+ const verticalRadius = data.borderStyle.verticalCornerRadius;
+
+ if (horizontalRadius > 0 || verticalRadius > 0) {
+ const radius = `${horizontalRadius}px / ${verticalRadius}px`;
+ container.style.borderRadius = radius;
+ }
+
+ switch (data.borderStyle.style) {
+ case _util.AnnotationBorderStyleType.SOLID:
+ container.style.borderStyle = "solid";
+ break;
+
+ case _util.AnnotationBorderStyleType.DASHED:
+ container.style.borderStyle = "dashed";
+ break;
+
+ case _util.AnnotationBorderStyleType.BEVELED:
+ (0, _util.warn)("Unimplemented border style: beveled");
+ break;
+
+ case _util.AnnotationBorderStyleType.INSET:
+ (0, _util.warn)("Unimplemented border style: inset");
+ break;
+
+ case _util.AnnotationBorderStyleType.UNDERLINE:
+ container.style.borderBottomStyle = "solid";
+ break;
+
+ default:
+ break;
+ }
+
+ const borderColor = data.borderColor || data.color || null;
+
+ if (borderColor) {
+ container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
+ } else {
+ container.style.borderWidth = 0;
+ }
+ }
+
+ container.style.left = `${rect[0]}px`;
+ container.style.top = `${rect[1]}px`;
+
+ if (data.hasOwnCanvas) {
+ container.style.width = container.style.height = "auto";
+ } else {
+ container.style.width = `${width}px`;
+ container.style.height = `${height}px`;
+ }
+
+ return container;
+ }
+
+ _createQuadrilaterals(ignoreBorder = false) {
+ if (!this.data.quadPoints) {
+ return null;
+ }
+
+ const quadrilaterals = [];
+ const savedRect = this.data.rect;
+
+ for (const quadPoint of this.data.quadPoints) {
+ this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];
+ quadrilaterals.push(this._createContainer(ignoreBorder));
+ }
+
+ this.data.rect = savedRect;
+ return quadrilaterals;
+ }
+
+ _createPopup(trigger, data) {
+ let container = this.container;
+
+ if (this.quadrilaterals) {
+ trigger = trigger || this.quadrilaterals;
+ container = this.quadrilaterals[0];
+ }
+
+ if (!trigger) {
+ trigger = document.createElement("div");
+ trigger.style.height = container.style.height;
+ trigger.style.width = container.style.width;
+ container.appendChild(trigger);
+ }
+
+ const popupElement = new PopupElement({
+ container,
+ trigger,
+ color: data.color,
+ titleObj: data.titleObj,
+ modificationDate: data.modificationDate,
+ contentsObj: data.contentsObj,
+ richText: data.richText,
+ hideWrapper: true
+ });
+ const popup = popupElement.render();
+ popup.style.left = container.style.width;
+ container.appendChild(popup);
+ }
+
+ _renderQuadrilaterals(className) {
+ for (const quadrilateral of this.quadrilaterals) {
+ quadrilateral.className = className;
+ }
+
+ return this.quadrilaterals;
+ }
+
+ render() {
+ (0, _util.unreachable)("Abstract method `AnnotationElement.render` called");
+ }
+
+ _getElementsByName(name, skipId = null) {
+ const fields = [];
+
+ if (this._fieldObjects) {
+ const fieldObj = this._fieldObjects[name];
+
+ if (fieldObj) {
+ for (const {
+ page,
+ id,
+ exportValues
+ } of fieldObj) {
+ if (page === -1) {
+ continue;
+ }
+
+ if (id === skipId) {
+ continue;
+ }
+
+ const exportValue = typeof exportValues === "string" ? exportValues : null;
+ const domElement = document.getElementById(id);
+
+ if (domElement && !GetElementsByNameSet.has(domElement)) {
+ (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`);
+ continue;
+ }
+
+ fields.push({
+ id,
+ exportValue,
+ domElement
+ });
+ }
+ }
+
+ return fields;
+ }
+
+ for (const domElement of document.getElementsByName(name)) {
+ const {
+ id,
+ exportValue
+ } = domElement;
+
+ if (id === skipId) {
+ continue;
+ }
+
+ if (!GetElementsByNameSet.has(domElement)) {
+ continue;
+ }
+
+ fields.push({
+ id,
+ exportValue,
+ domElement
+ });
+ }
+
+ return fields;
+ }
+
+ static get platform() {
+ const platform = typeof navigator !== "undefined" ? navigator.platform : "";
+ return (0, _util.shadow)(this, "platform", {
+ isWin: platform.includes("Win"),
+ isMac: platform.includes("Mac")
+ });
+ }
+
+}
+
+class LinkAnnotationElement extends AnnotationElement {
+ constructor(parameters, options = null) {
+ const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.resetForm || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions["Mouse Up"] || parameters.data.actions["Mouse Down"]));
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: !!options?.ignoreBorder,
+ createQuadrilaterals: true
+ });
+ }
+
+ render() {
+ const {
+ data,
+ linkService
+ } = this;
+ const link = document.createElement("a");
+
+ if (data.url) {
+ if (!linkService.addLinkAttributes) {
+ (0, _util.warn)("LinkAnnotationElement.render - missing `addLinkAttributes`-method on the `linkService`-instance.");
+ }
+
+ linkService.addLinkAttributes?.(link, data.url, data.newWindow);
+ } else if (data.action) {
+ this._bindNamedAction(link, data.action);
+ } else if (data.dest) {
+ this._bindLink(link, data.dest);
+ } else {
+ let hasClickAction = false;
+
+ if (data.actions && (data.actions.Action || data.actions["Mouse Up"] || data.actions["Mouse Down"]) && this.enableScripting && this.hasJSActions) {
+ hasClickAction = true;
+
+ this._bindJSAction(link, data);
+ }
+
+ if (data.resetForm) {
+ this._bindResetFormAction(link, data.resetForm);
+ } else if (!hasClickAction) {
+ this._bindLink(link, "");
+ }
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("linkAnnotation").map((quadrilateral, index) => {
+ const linkElement = index === 0 ? link : link.cloneNode();
+ quadrilateral.appendChild(linkElement);
+ return quadrilateral;
+ });
+ }
+
+ this.container.className = "linkAnnotation";
+ this.container.appendChild(link);
+ return this.container;
+ }
+
+ _bindLink(link, destination) {
+ link.href = this.linkService.getDestinationHash(destination);
+
+ link.onclick = () => {
+ if (destination) {
+ this.linkService.goToDestination(destination);
+ }
+
+ return false;
+ };
+
+ if (destination || destination === "") {
+ link.className = "internalLink";
+ }
+ }
+
+ _bindNamedAction(link, action) {
+ link.href = this.linkService.getAnchorUrl("");
+
+ link.onclick = () => {
+ this.linkService.executeNamedAction(action);
+ return false;
+ };
+
+ link.className = "internalLink";
+ }
+
+ _bindJSAction(link, data) {
+ link.href = this.linkService.getAnchorUrl("");
+ const map = new Map([["Action", "onclick"], ["Mouse Up", "onmouseup"], ["Mouse Down", "onmousedown"]]);
+
+ for (const name of Object.keys(data.actions)) {
+ const jsName = map.get(name);
+
+ if (!jsName) {
+ continue;
+ }
+
+ link[jsName] = () => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: data.id,
+ name
+ }
+ });
+ return false;
+ };
+ }
+
+ if (!link.onclick) {
+ link.onclick = () => false;
+ }
+
+ link.className = "internalLink";
+ }
+
+ _bindResetFormAction(link, resetForm) {
+ const otherClickAction = link.onclick;
+
+ if (!otherClickAction) {
+ link.href = this.linkService.getAnchorUrl("");
+ }
+
+ link.className = "internalLink";
+
+ if (!this._fieldObjects) {
+ (0, _util.warn)(`_bindResetFormAction - "resetForm" action not supported, ` + "ensure that the `fieldObjects` parameter is provided.");
+
+ if (!otherClickAction) {
+ link.onclick = () => false;
+ }
+
+ return;
+ }
+
+ link.onclick = () => {
+ if (otherClickAction) {
+ otherClickAction();
+ }
+
+ const {
+ fields: resetFormFields,
+ refs: resetFormRefs,
+ include
+ } = resetForm;
+ const allFields = [];
+
+ if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {
+ const fieldIds = new Set(resetFormRefs);
+
+ for (const fieldName of resetFormFields) {
+ const fields = this._fieldObjects[fieldName] || [];
+
+ for (const {
+ id
+ } of fields) {
+ fieldIds.add(id);
+ }
+ }
+
+ for (const fields of Object.values(this._fieldObjects)) {
+ for (const field of fields) {
+ if (fieldIds.has(field.id) === include) {
+ allFields.push(field);
+ }
+ }
+ }
+ } else {
+ for (const fields of Object.values(this._fieldObjects)) {
+ allFields.push(...fields);
+ }
+ }
+
+ const storage = this.annotationStorage;
+ const allIds = [];
+
+ for (const field of allFields) {
+ const {
+ id
+ } = field;
+ allIds.push(id);
+
+ switch (field.type) {
+ case "text":
+ {
+ const value = field.defaultValue || "";
+ storage.setValue(id, {
+ value,
+ valueAsString: value
+ });
+ break;
+ }
+
+ case "checkbox":
+ case "radiobutton":
+ {
+ const value = field.defaultValue === field.exportValues;
+ storage.setValue(id, {
+ value
+ });
+ break;
+ }
+
+ case "combobox":
+ case "listbox":
+ {
+ const value = field.defaultValue || "";
+ storage.setValue(id, {
+ value
+ });
+ break;
+ }
+
+ default:
+ continue;
+ }
+
+ const domElement = document.getElementById(id);
+
+ if (!domElement || !GetElementsByNameSet.has(domElement)) {
+ continue;
+ }
+
+ domElement.dispatchEvent(new Event("resetform"));
+ }
+
+ if (this.enableScripting) {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: "app",
+ ids: allIds,
+ name: "ResetForm"
+ }
+ });
+ }
+
+ return false;
+ };
+ }
+
+}
+
+class TextAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable
+ });
+ }
+
+ render() {
+ this.container.className = "textAnnotation";
+ const image = document.createElement("img");
+ image.style.height = this.container.style.height;
+ image.style.width = this.container.style.width;
+ image.src = this.imageResourcesPath + "annotation-" + this.data.name.toLowerCase() + ".svg";
+ image.alt = "[{{type}} Annotation]";
+ image.dataset.l10nId = "text_annotation_type";
+ image.dataset.l10nArgs = JSON.stringify({
+ type: this.data.name
+ });
+
+ if (!this.data.hasPopup) {
+ this._createPopup(image, this.data);
+ }
+
+ this.container.appendChild(image);
+ return this.container;
+ }
+
+}
+
+class WidgetAnnotationElement extends AnnotationElement {
+ render() {
+ if (this.data.alternativeText) {
+ this.container.title = this.data.alternativeText;
+ }
+
+ return this.container;
+ }
+
+ _getKeyModifier(event) {
+ const {
+ isWin,
+ isMac
+ } = AnnotationElement.platform;
+ return isWin && event.ctrlKey || isMac && event.metaKey;
+ }
+
+ _setEventListener(element, baseName, eventName, valueGetter) {
+ if (baseName.includes("mouse")) {
+ element.addEventListener(baseName, event => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: this.data.id,
+ name: eventName,
+ value: valueGetter(event),
+ shift: event.shiftKey,
+ modifier: this._getKeyModifier(event)
+ }
+ });
+ });
+ } else {
+ element.addEventListener(baseName, event => {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id: this.data.id,
+ name: eventName,
+ value: valueGetter(event)
+ }
+ });
+ });
+ }
+ }
+
+ _setEventListeners(element, names, getter) {
+ for (const [baseName, eventName] of names) {
+ if (eventName === "Action" || this.data.actions?.[eventName]) {
+ this._setEventListener(element, baseName, eventName, getter);
+ }
+ }
+ }
+
+ _setBackgroundColor(element) {
+ const color = this.data.backgroundColor || null;
+ element.style.backgroundColor = color === null ? "transparent" : _util.Util.makeHexColor(color[0], color[1], color[2]);
+ }
+
+ _dispatchEventFromSandbox(actions, jsEvent) {
+ const setColor = (jsName, styleName, event) => {
+ const color = event.detail[jsName];
+ event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
+ };
+
+ const commonActions = {
+ display: event => {
+ const hidden = event.detail.display % 2 === 1;
+ event.target.style.visibility = hidden ? "hidden" : "visible";
+ this.annotationStorage.setValue(this.data.id, {
+ hidden,
+ print: event.detail.display === 0 || event.detail.display === 3
+ });
+ },
+ print: event => {
+ this.annotationStorage.setValue(this.data.id, {
+ print: event.detail.print
+ });
+ },
+ hidden: event => {
+ event.target.style.visibility = event.detail.hidden ? "hidden" : "visible";
+ this.annotationStorage.setValue(this.data.id, {
+ hidden: event.detail.hidden
+ });
+ },
+ focus: event => {
+ setTimeout(() => event.target.focus({
+ preventScroll: false
+ }), 0);
+ },
+ userName: event => {
+ event.target.title = event.detail.userName;
+ },
+ readonly: event => {
+ if (event.detail.readonly) {
+ event.target.setAttribute("readonly", "");
+ } else {
+ event.target.removeAttribute("readonly");
+ }
+ },
+ required: event => {
+ if (event.detail.required) {
+ event.target.setAttribute("required", "");
+ } else {
+ event.target.removeAttribute("required");
+ }
+ },
+ bgColor: event => {
+ setColor("bgColor", "backgroundColor", event);
+ },
+ fillColor: event => {
+ setColor("fillColor", "backgroundColor", event);
+ },
+ fgColor: event => {
+ setColor("fgColor", "color", event);
+ },
+ textColor: event => {
+ setColor("textColor", "color", event);
+ },
+ borderColor: event => {
+ setColor("borderColor", "borderColor", event);
+ },
+ strokeColor: event => {
+ setColor("strokeColor", "borderColor", event);
+ }
+ };
+
+ for (const name of Object.keys(jsEvent.detail)) {
+ const action = actions[name] || commonActions[name];
+
+ if (action) {
+ action(jsEvent);
+ }
+ }
+ }
+
+}
+
+class TextWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
+ super(parameters, {
+ isRenderable
+ });
+ }
+
+ setPropertyOnSiblings(base, key, value, keyInStorage) {
+ const storage = this.annotationStorage;
+
+ for (const element of this._getElementsByName(base.name, base.id)) {
+ if (element.domElement) {
+ element.domElement[key] = value;
+ }
+
+ storage.setValue(element.id, {
+ [keyInStorage]: value
+ });
+ }
+ }
+
+ render() {
+ const storage = this.annotationStorage;
+ const id = this.data.id;
+ this.container.className = "textWidgetAnnotation";
+ let element = null;
+
+ if (this.renderForms) {
+ const storedData = storage.getValue(id, {
+ value: this.data.fieldValue,
+ valueAsString: this.data.fieldValue
+ });
+ const textContent = storedData.valueAsString || storedData.value || "";
+ const elementData = {
+ userValue: null,
+ formattedValue: null
+ };
+
+ if (this.data.multiLine) {
+ element = document.createElement("textarea");
+ element.textContent = textContent;
+ } else {
+ element = document.createElement("input");
+ element.type = "text";
+ element.setAttribute("value", textContent);
+ }
+
+ GetElementsByNameSet.add(element);
+ element.disabled = this.data.readOnly;
+ element.name = this.data.fieldName;
+ element.tabIndex = DEFAULT_TAB_INDEX;
+ elementData.userValue = textContent;
+ element.setAttribute("id", id);
+ element.addEventListener("input", event => {
+ storage.setValue(id, {
+ value: event.target.value
+ });
+ this.setPropertyOnSiblings(element, "value", event.target.value, "value");
+ });
+ element.addEventListener("resetform", event => {
+ const defaultValue = this.data.defaultFieldValue || "";
+ element.value = elementData.userValue = defaultValue;
+ delete elementData.formattedValue;
+ });
+
+ let blurListener = event => {
+ if (elementData.formattedValue) {
+ event.target.value = elementData.formattedValue;
+ }
+
+ event.target.scrollLeft = 0;
+ };
+
+ if (this.enableScripting && this.hasJSActions) {
+ element.addEventListener("focus", event => {
+ if (elementData.userValue) {
+ event.target.value = elementData.userValue;
+ }
+ });
+ element.addEventListener("updatefromsandbox", jsEvent => {
+ const actions = {
+ value(event) {
+ elementData.userValue = event.detail.value || "";
+ storage.setValue(id, {
+ value: elementData.userValue.toString()
+ });
+
+ if (!elementData.formattedValue) {
+ event.target.value = elementData.userValue;
+ }
+ },
+
+ valueAsString(event) {
+ elementData.formattedValue = event.detail.valueAsString || "";
+
+ if (event.target !== document.activeElement) {
+ event.target.value = elementData.formattedValue;
+ }
+
+ storage.setValue(id, {
+ formattedValue: elementData.formattedValue
+ });
+ },
+
+ selRange(event) {
+ const [selStart, selEnd] = event.detail.selRange;
+
+ if (selStart >= 0 && selEnd < event.target.value.length) {
+ event.target.setSelectionRange(selStart, selEnd);
+ }
+ }
+
+ };
+
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+ element.addEventListener("keydown", event => {
+ let commitKey = -1;
+
+ if (event.key === "Escape") {
+ commitKey = 0;
+ } else if (event.key === "Enter") {
+ commitKey = 2;
+ } else if (event.key === "Tab") {
+ commitKey = 3;
+ }
+
+ if (commitKey === -1) {
+ return;
+ }
+
+ elementData.userValue = event.target.value;
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value: event.target.value,
+ willCommit: true,
+ commitKey,
+ selStart: event.target.selectionStart,
+ selEnd: event.target.selectionEnd
+ }
+ });
+ });
+ const _blurListener = blurListener;
+ blurListener = null;
+ element.addEventListener("blur", event => {
+ elementData.userValue = event.target.value;
+
+ if (this._mouseState.isDown) {
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value: event.target.value,
+ willCommit: true,
+ commitKey: 1,
+ selStart: event.target.selectionStart,
+ selEnd: event.target.selectionEnd
+ }
+ });
+ }
+
+ _blurListener(event);
+ });
+
+ if (this.data.actions?.Keystroke) {
+ element.addEventListener("beforeinput", event => {
+ elementData.formattedValue = "";
+ const {
+ data,
+ target
+ } = event;
+ const {
+ value,
+ selectionStart,
+ selectionEnd
+ } = target;
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value,
+ change: data,
+ willCommit: false,
+ selStart: selectionStart,
+ selEnd: selectionEnd
+ }
+ });
+ });
+ }
+
+ this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.value);
+ }
+
+ if (blurListener) {
+ element.addEventListener("blur", blurListener);
+ }
+
+ if (this.data.maxLen !== null) {
+ element.maxLength = this.data.maxLen;
+ }
+
+ if (this.data.comb) {
+ const fieldWidth = this.data.rect[2] - this.data.rect[0];
+ const combWidth = fieldWidth / this.data.maxLen;
+ element.classList.add("comb");
+ element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;
+ }
+ } else {
+ element = document.createElement("div");
+ element.textContent = this.data.fieldValue;
+ element.style.verticalAlign = "middle";
+ element.style.display = "table-cell";
+ }
+
+ this._setTextStyle(element);
+
+ this._setBackgroundColor(element);
+
+ this.container.appendChild(element);
+ return this.container;
+ }
+
+ _setTextStyle(element) {
+ const TEXT_ALIGNMENT = ["left", "center", "right"];
+ const {
+ fontSize,
+ fontColor
+ } = this.data.defaultAppearanceData;
+ const style = element.style;
+
+ if (fontSize) {
+ style.fontSize = `${fontSize}px`;
+ }
+
+ style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);
+
+ if (this.data.textAlignment !== null) {
+ style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
+ }
+ }
+
+}
+
+class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: parameters.renderForms
+ });
+ }
+
+ render() {
+ const storage = this.annotationStorage;
+ const data = this.data;
+ const id = data.id;
+ let value = storage.getValue(id, {
+ value: data.exportValue === data.fieldValue
+ }).value;
+
+ if (typeof value === "string") {
+ value = value !== "Off";
+ storage.setValue(id, {
+ value
+ });
+ }
+
+ this.container.className = "buttonWidgetAnnotation checkBox";
+ const element = document.createElement("input");
+ GetElementsByNameSet.add(element);
+ element.disabled = data.readOnly;
+ element.type = "checkbox";
+ element.name = data.fieldName;
+
+ if (value) {
+ element.setAttribute("checked", true);
+ }
+
+ element.setAttribute("id", id);
+ element.setAttribute("exportValue", data.exportValue);
+ element.tabIndex = DEFAULT_TAB_INDEX;
+ element.addEventListener("change", event => {
+ const {
+ name,
+ checked
+ } = event.target;
+
+ for (const checkbox of this._getElementsByName(name, id)) {
+ const curChecked = checked && checkbox.exportValue === data.exportValue;
+
+ if (checkbox.domElement) {
+ checkbox.domElement.checked = curChecked;
+ }
+
+ storage.setValue(checkbox.id, {
+ value: curChecked
+ });
+ }
+
+ storage.setValue(id, {
+ value: checked
+ });
+ });
+ element.addEventListener("resetform", event => {
+ const defaultValue = data.defaultFieldValue || "Off";
+ event.target.checked = defaultValue === data.exportValue;
+ });
+
+ if (this.enableScripting && this.hasJSActions) {
+ element.addEventListener("updatefromsandbox", jsEvent => {
+ const actions = {
+ value(event) {
+ event.target.checked = event.detail.value !== "Off";
+ storage.setValue(id, {
+ value: event.target.checked
+ });
+ }
+
+ };
+
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+
+ this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked);
+ }
+
+ this._setBackgroundColor(element);
+
+ this.container.appendChild(element);
+ return this.container;
+ }
+
+}
+
+class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: parameters.renderForms
+ });
+ }
+
+ render() {
+ this.container.className = "buttonWidgetAnnotation radioButton";
+ const storage = this.annotationStorage;
+ const data = this.data;
+ const id = data.id;
+ let value = storage.getValue(id, {
+ value: data.fieldValue === data.buttonValue
+ }).value;
+
+ if (typeof value === "string") {
+ value = value !== data.buttonValue;
+ storage.setValue(id, {
+ value
+ });
+ }
+
+ const element = document.createElement("input");
+ GetElementsByNameSet.add(element);
+ element.disabled = data.readOnly;
+ element.type = "radio";
+ element.name = data.fieldName;
+
+ if (value) {
+ element.setAttribute("checked", true);
+ }
+
+ element.setAttribute("id", id);
+ element.tabIndex = DEFAULT_TAB_INDEX;
+ element.addEventListener("change", event => {
+ const {
+ name,
+ checked
+ } = event.target;
+
+ for (const radio of this._getElementsByName(name, id)) {
+ storage.setValue(radio.id, {
+ value: false
+ });
+ }
+
+ storage.setValue(id, {
+ value: checked
+ });
+ });
+ element.addEventListener("resetform", event => {
+ const defaultValue = data.defaultFieldValue;
+ event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;
+ });
+
+ if (this.enableScripting && this.hasJSActions) {
+ const pdfButtonValue = data.buttonValue;
+ element.addEventListener("updatefromsandbox", jsEvent => {
+ const actions = {
+ value: event => {
+ const checked = pdfButtonValue === event.detail.value;
+
+ for (const radio of this._getElementsByName(event.target.name)) {
+ const curChecked = checked && radio.id === id;
+
+ if (radio.domElement) {
+ radio.domElement.checked = curChecked;
+ }
+
+ storage.setValue(radio.id, {
+ value: curChecked
+ });
+ }
+ }
+ };
+
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+
+ this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => event.target.checked);
+ }
+
+ this._setBackgroundColor(element);
+
+ this.container.appendChild(element);
+ return this.container;
+ }
+
+}
+
+class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ ignoreBorder: parameters.data.hasAppearance
+ });
+ }
+
+ render() {
+ const container = super.render();
+ container.className = "buttonWidgetAnnotation pushButton";
+
+ if (this.data.alternativeText) {
+ container.title = this.data.alternativeText;
+ }
+
+ return container;
+ }
+
+}
+
+class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: parameters.renderForms
+ });
+ }
+
+ render() {
+ this.container.className = "choiceWidgetAnnotation";
+ const storage = this.annotationStorage;
+ const id = this.data.id;
+ storage.getValue(id, {
+ value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined
+ });
+ let {
+ fontSize
+ } = this.data.defaultAppearanceData;
+
+ if (!fontSize) {
+ fontSize = 9;
+ }
+
+ const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;
+ const selectElement = document.createElement("select");
+ GetElementsByNameSet.add(selectElement);
+ selectElement.disabled = this.data.readOnly;
+ selectElement.name = this.data.fieldName;
+ selectElement.setAttribute("id", id);
+ selectElement.tabIndex = DEFAULT_TAB_INDEX;
+ selectElement.style.fontSize = `${fontSize}px`;
+
+ if (!this.data.combo) {
+ selectElement.size = this.data.options.length;
+
+ if (this.data.multiSelect) {
+ selectElement.multiple = true;
+ }
+ }
+
+ selectElement.addEventListener("resetform", event => {
+ const defaultValue = this.data.defaultFieldValue;
+
+ for (const option of selectElement.options) {
+ option.selected = option.value === defaultValue;
+ }
+ });
+
+ for (const option of this.data.options) {
+ const optionElement = document.createElement("option");
+ optionElement.textContent = option.displayValue;
+ optionElement.value = option.exportValue;
+
+ if (this.data.combo) {
+ optionElement.style.fontSize = fontSizeStyle;
+ }
+
+ if (this.data.fieldValue.includes(option.exportValue)) {
+ optionElement.setAttribute("selected", true);
+ }
+
+ selectElement.appendChild(optionElement);
+ }
+
+ const getValue = (event, isExport) => {
+ const name = isExport ? "value" : "textContent";
+ const options = event.target.options;
+
+ if (!event.target.multiple) {
+ return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];
+ }
+
+ return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);
+ };
+
+ const getItems = event => {
+ const options = event.target.options;
+ return Array.prototype.map.call(options, option => {
+ return {
+ displayValue: option.textContent,
+ exportValue: option.value
+ };
+ });
+ };
+
+ if (this.enableScripting && this.hasJSActions) {
+ selectElement.addEventListener("updatefromsandbox", jsEvent => {
+ const actions = {
+ value(event) {
+ const value = event.detail.value;
+ const values = new Set(Array.isArray(value) ? value : [value]);
+
+ for (const option of selectElement.options) {
+ option.selected = values.has(option.value);
+ }
+
+ storage.setValue(id, {
+ value: getValue(event, true)
+ });
+ },
+
+ multipleSelection(event) {
+ selectElement.multiple = true;
+ },
+
+ remove(event) {
+ const options = selectElement.options;
+ const index = event.detail.remove;
+ options[index].selected = false;
+ selectElement.remove(index);
+
+ if (options.length > 0) {
+ const i = Array.prototype.findIndex.call(options, option => option.selected);
+
+ if (i === -1) {
+ options[0].selected = true;
+ }
+ }
+
+ storage.setValue(id, {
+ value: getValue(event, true),
+ items: getItems(event)
+ });
+ },
+
+ clear(event) {
+ while (selectElement.length !== 0) {
+ selectElement.remove(0);
+ }
+
+ storage.setValue(id, {
+ value: null,
+ items: []
+ });
+ },
+
+ insert(event) {
+ const {
+ index,
+ displayValue,
+ exportValue
+ } = event.detail.insert;
+ const optionElement = document.createElement("option");
+ optionElement.textContent = displayValue;
+ optionElement.value = exportValue;
+ selectElement.insertBefore(optionElement, selectElement.children[index]);
+ storage.setValue(id, {
+ value: getValue(event, true),
+ items: getItems(event)
+ });
+ },
+
+ items(event) {
+ const {
+ items
+ } = event.detail;
+
+ while (selectElement.length !== 0) {
+ selectElement.remove(0);
+ }
+
+ for (const item of items) {
+ const {
+ displayValue,
+ exportValue
+ } = item;
+ const optionElement = document.createElement("option");
+ optionElement.textContent = displayValue;
+ optionElement.value = exportValue;
+ selectElement.appendChild(optionElement);
+ }
+
+ if (selectElement.options.length > 0) {
+ selectElement.options[0].selected = true;
+ }
+
+ storage.setValue(id, {
+ value: getValue(event, true),
+ items: getItems(event)
+ });
+ },
+
+ indices(event) {
+ const indices = new Set(event.detail.indices);
+
+ for (const option of event.target.options) {
+ option.selected = indices.has(option.index);
+ }
+
+ storage.setValue(id, {
+ value: getValue(event, true)
+ });
+ },
+
+ editable(event) {
+ event.target.disabled = !event.detail.editable;
+ }
+
+ };
+
+ this._dispatchEventFromSandbox(actions, jsEvent);
+ });
+ selectElement.addEventListener("input", event => {
+ const exportValue = getValue(event, true);
+ const value = getValue(event, false);
+ storage.setValue(id, {
+ value: exportValue
+ });
+ this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+ source: this,
+ detail: {
+ id,
+ name: "Keystroke",
+ value,
+ changeEx: exportValue,
+ willCommit: true,
+ commitKey: 1,
+ keyDown: false
+ }
+ });
+ });
+
+ this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", "Action"]], event => event.target.checked);
+ } else {
+ selectElement.addEventListener("input", function (event) {
+ storage.setValue(id, {
+ value: getValue(event)
+ });
+ });
+ }
+
+ this._setBackgroundColor(selectElement);
+
+ this.container.appendChild(selectElement);
+ return this.container;
+ }
+
+}
+
+class PopupAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable
+ });
+ }
+
+ render() {
+ const IGNORE_TYPES = ["Line", "Square", "Circle", "PolyLine", "Polygon", "Ink"];
+ this.container.className = "popupAnnotation";
+
+ if (IGNORE_TYPES.includes(this.data.parentType)) {
+ return this.container;
+ }
+
+ const selector = `[data-annotation-id="${this.data.parentId}"]`;
+ const parentElements = this.layer.querySelectorAll(selector);
+
+ if (parentElements.length === 0) {
+ return this.container;
+ }
+
+ const popup = new PopupElement({
+ container: this.container,
+ trigger: Array.from(parentElements),
+ color: this.data.color,
+ titleObj: this.data.titleObj,
+ modificationDate: this.data.modificationDate,
+ contentsObj: this.data.contentsObj,
+ richText: this.data.richText
+ });
+ const page = this.page;
+
+ const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);
+
+ const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];
+ const popupTop = rect[1];
+ this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;
+ this.container.style.left = `${popupLeft}px`;
+ this.container.style.top = `${popupTop}px`;
+ this.container.appendChild(popup.render());
+ return this.container;
+ }
+
+}
+
+class PopupElement {
+ constructor(parameters) {
+ this.container = parameters.container;
+ this.trigger = parameters.trigger;
+ this.color = parameters.color;
+ this.titleObj = parameters.titleObj;
+ this.modificationDate = parameters.modificationDate;
+ this.contentsObj = parameters.contentsObj;
+ this.richText = parameters.richText;
+ this.hideWrapper = parameters.hideWrapper || false;
+ this.pinned = false;
+ }
+
+ render() {
+ const BACKGROUND_ENLIGHT = 0.7;
+ const wrapper = document.createElement("div");
+ wrapper.className = "popupWrapper";
+ this.hideElement = this.hideWrapper ? wrapper : this.container;
+ this.hideElement.hidden = true;
+ const popup = document.createElement("div");
+ popup.className = "popup";
+ const color = this.color;
+
+ if (color) {
+ const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
+ const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
+ const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
+ popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);
+ }
+
+ const title = document.createElement("h1");
+ title.dir = this.titleObj.dir;
+ title.textContent = this.titleObj.str;
+ popup.appendChild(title);
+
+ const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);
+
+ if (dateObject) {
+ const modificationDate = document.createElement("span");
+ modificationDate.className = "popupDate";
+ modificationDate.textContent = "{{date}}, {{time}}";
+ modificationDate.dataset.l10nId = "annotation_date_string";
+ modificationDate.dataset.l10nArgs = JSON.stringify({
+ date: dateObject.toLocaleDateString(),
+ time: dateObject.toLocaleTimeString()
+ });
+ popup.appendChild(modificationDate);
+ }
+
+ if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) {
+ _xfa_layer.XfaLayer.render({
+ xfaHtml: this.richText.html,
+ intent: "richText",
+ div: popup
+ });
+
+ popup.lastChild.className = "richText popupContent";
+ } else {
+ const contents = this._formatContents(this.contentsObj);
+
+ popup.appendChild(contents);
+ }
+
+ if (!Array.isArray(this.trigger)) {
+ this.trigger = [this.trigger];
+ }
+
+ for (const element of this.trigger) {
+ element.addEventListener("click", this._toggle.bind(this));
+ element.addEventListener("mouseover", this._show.bind(this, false));
+ element.addEventListener("mouseout", this._hide.bind(this, false));
+ }
+
+ popup.addEventListener("click", this._hide.bind(this, true));
+ wrapper.appendChild(popup);
+ return wrapper;
+ }
+
+ _formatContents({
+ str,
+ dir
+ }) {
+ const p = document.createElement("p");
+ p.className = "popupContent";
+ p.dir = dir;
+ const lines = str.split(/(?:\r\n?|\n)/);
+
+ for (let i = 0, ii = lines.length; i < ii; ++i) {
+ const line = lines[i];
+ p.appendChild(document.createTextNode(line));
+
+ if (i < ii - 1) {
+ p.appendChild(document.createElement("br"));
+ }
+ }
+
+ return p;
+ }
+
+ _toggle() {
+ if (this.pinned) {
+ this._hide(true);
+ } else {
+ this._show(true);
+ }
+ }
+
+ _show(pin = false) {
+ if (pin) {
+ this.pinned = true;
+ }
+
+ if (this.hideElement.hidden) {
+ this.hideElement.hidden = false;
+ this.container.style.zIndex += 1;
+ }
+ }
+
+ _hide(unpin = true) {
+ if (unpin) {
+ this.pinned = false;
+ }
+
+ if (!this.hideElement.hidden && !this.pinned) {
+ this.hideElement.hidden = true;
+ this.container.style.zIndex -= 1;
+ }
+ }
+
+}
+
+class FreeTextAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ }
+
+ render() {
+ this.container.className = "freeTextAnnotation";
+
+ if (!this.data.hasPopup) {
+ this._createPopup(null, this.data);
+ }
+
+ return this.container;
+ }
+
+}
+
+class LineAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ }
+
+ render() {
+ this.container.className = "lineAnnotation";
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height);
+ const line = this.svgFactory.createElement("svg:line");
+ line.setAttribute("x1", data.rect[2] - data.lineCoordinates[0]);
+ line.setAttribute("y1", data.rect[3] - data.lineCoordinates[1]);
+ line.setAttribute("x2", data.rect[2] - data.lineCoordinates[2]);
+ line.setAttribute("y2", data.rect[3] - data.lineCoordinates[3]);
+ line.setAttribute("stroke-width", data.borderStyle.width || 1);
+ line.setAttribute("stroke", "transparent");
+ line.setAttribute("fill", "transparent");
+ svg.appendChild(line);
+ this.container.append(svg);
+
+ this._createPopup(line, data);
+
+ return this.container;
+ }
+
+}
+
+class SquareAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ }
+
+ render() {
+ this.container.className = "squareAnnotation";
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height);
+ const borderWidth = data.borderStyle.width;
+ const square = this.svgFactory.createElement("svg:rect");
+ square.setAttribute("x", borderWidth / 2);
+ square.setAttribute("y", borderWidth / 2);
+ square.setAttribute("width", width - borderWidth);
+ square.setAttribute("height", height - borderWidth);
+ square.setAttribute("stroke-width", borderWidth || 1);
+ square.setAttribute("stroke", "transparent");
+ square.setAttribute("fill", "transparent");
+ svg.appendChild(square);
+ this.container.append(svg);
+
+ this._createPopup(square, data);
+
+ return this.container;
+ }
+
+}
+
+class CircleAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ }
+
+ render() {
+ this.container.className = "circleAnnotation";
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height);
+ const borderWidth = data.borderStyle.width;
+ const circle = this.svgFactory.createElement("svg:ellipse");
+ circle.setAttribute("cx", width / 2);
+ circle.setAttribute("cy", height / 2);
+ circle.setAttribute("rx", width / 2 - borderWidth / 2);
+ circle.setAttribute("ry", height / 2 - borderWidth / 2);
+ circle.setAttribute("stroke-width", borderWidth || 1);
+ circle.setAttribute("stroke", "transparent");
+ circle.setAttribute("fill", "transparent");
+ svg.appendChild(circle);
+ this.container.append(svg);
+
+ this._createPopup(circle, data);
+
+ return this.container;
+ }
+
+}
+
+class PolylineAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ this.containerClassName = "polylineAnnotation";
+ this.svgElementName = "svg:polyline";
+ }
+
+ render() {
+ this.container.className = this.containerClassName;
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height);
+ let points = [];
+
+ for (const coordinate of data.vertices) {
+ const x = coordinate.x - data.rect[0];
+ const y = data.rect[3] - coordinate.y;
+ points.push(x + "," + y);
+ }
+
+ points = points.join(" ");
+ const polyline = this.svgFactory.createElement(this.svgElementName);
+ polyline.setAttribute("points", points);
+ polyline.setAttribute("stroke-width", data.borderStyle.width || 1);
+ polyline.setAttribute("stroke", "transparent");
+ polyline.setAttribute("fill", "transparent");
+ svg.appendChild(polyline);
+ this.container.append(svg);
+
+ this._createPopup(polyline, data);
+
+ return this.container;
+ }
+
+}
+
+class PolygonAnnotationElement extends PolylineAnnotationElement {
+ constructor(parameters) {
+ super(parameters);
+ this.containerClassName = "polygonAnnotation";
+ this.svgElementName = "svg:polygon";
+ }
+
+}
+
+class CaretAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ }
+
+ render() {
+ this.container.className = "caretAnnotation";
+
+ if (!this.data.hasPopup) {
+ this._createPopup(null, this.data);
+ }
+
+ return this.container;
+ }
+
+}
+
+class InkAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ this.containerClassName = "inkAnnotation";
+ this.svgElementName = "svg:polyline";
+ }
+
+ render() {
+ this.container.className = this.containerClassName;
+ const data = this.data;
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+ const svg = this.svgFactory.create(width, height);
+
+ for (const inkList of data.inkLists) {
+ let points = [];
+
+ for (const coordinate of inkList) {
+ const x = coordinate.x - data.rect[0];
+ const y = data.rect[3] - coordinate.y;
+ points.push(`${x},${y}`);
+ }
+
+ points = points.join(" ");
+ const polyline = this.svgFactory.createElement(this.svgElementName);
+ polyline.setAttribute("points", points);
+ polyline.setAttribute("stroke-width", data.borderStyle.width || 1);
+ polyline.setAttribute("stroke", "transparent");
+ polyline.setAttribute("fill", "transparent");
+
+ this._createPopup(polyline, data);
+
+ svg.appendChild(polyline);
+ }
+
+ this.container.append(svg);
+ return this.container;
+ }
+
+}
+
+class HighlightAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+
+ render() {
+ if (!this.data.hasPopup) {
+ this._createPopup(null, this.data);
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("highlightAnnotation");
+ }
+
+ this.container.className = "highlightAnnotation";
+ return this.container;
+ }
+
+}
+
+class UnderlineAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+
+ render() {
+ if (!this.data.hasPopup) {
+ this._createPopup(null, this.data);
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("underlineAnnotation");
+ }
+
+ this.container.className = "underlineAnnotation";
+ return this.container;
+ }
+
+}
+
+class SquigglyAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+
+ render() {
+ if (!this.data.hasPopup) {
+ this._createPopup(null, this.data);
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("squigglyAnnotation");
+ }
+
+ this.container.className = "squigglyAnnotation";
+ return this.container;
+ }
+
+}
+
+class StrikeOutAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true,
+ createQuadrilaterals: true
+ });
+ }
+
+ render() {
+ if (!this.data.hasPopup) {
+ this._createPopup(null, this.data);
+ }
+
+ if (this.quadrilaterals) {
+ return this._renderQuadrilaterals("strikeoutAnnotation");
+ }
+
+ this.container.className = "strikeoutAnnotation";
+ return this.container;
+ }
+
+}
+
+class StampAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);
+ super(parameters, {
+ isRenderable,
+ ignoreBorder: true
+ });
+ }
+
+ render() {
+ this.container.className = "stampAnnotation";
+
+ if (!this.data.hasPopup) {
+ this._createPopup(null, this.data);
+ }
+
+ return this.container;
+ }
+
+}
+
+class FileAttachmentAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, {
+ isRenderable: true
+ });
+ const {
+ filename,
+ content
+ } = this.data.file;
+ this.filename = (0, _display_utils.getFilenameFromUrl)(filename);
+ this.content = content;
+ this.linkService.eventBus?.dispatch("fileattachmentannotation", {
+ source: this,
+ id: (0, _util.stringToPDFString)(filename),
+ filename,
+ content
+ });
+ }
+
+ render() {
+ this.container.className = "fileAttachmentAnnotation";
+ const trigger = document.createElement("div");
+ trigger.style.height = this.container.style.height;
+ trigger.style.width = this.container.style.width;
+ trigger.addEventListener("dblclick", this._download.bind(this));
+
+ if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) {
+ this._createPopup(trigger, this.data);
+ }
+
+ this.container.appendChild(trigger);
+ return this.container;
+ }
+
+ _download() {
+ this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);
+ }
+
+}
+
+class AnnotationLayer {
+ static render(parameters) {
+ const sortedAnnotations = [],
+ popupAnnotations = [];
+
+ for (const data of parameters.annotations) {
+ if (!data) {
+ continue;
+ }
+
+ const {
+ width,
+ height
+ } = getRectDims(data.rect);
+
+ if (width <= 0 || height <= 0) {
+ continue;
+ }
+
+ if (data.annotationType === _util.AnnotationType.POPUP) {
+ popupAnnotations.push(data);
+ continue;
+ }
+
+ sortedAnnotations.push(data);
+ }
+
+ if (popupAnnotations.length) {
+ sortedAnnotations.push(...popupAnnotations);
+ }
+
+ const div = parameters.div;
+
+ for (const data of sortedAnnotations) {
+ const element = AnnotationElementFactory.create({
+ data,
+ layer: div,
+ page: parameters.page,
+ viewport: parameters.viewport,
+ linkService: parameters.linkService,
+ downloadManager: parameters.downloadManager,
+ imageResourcesPath: parameters.imageResourcesPath || "",
+ renderForms: parameters.renderForms !== false,
+ svgFactory: new _display_utils.DOMSVGFactory(),
+ annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),
+ enableScripting: parameters.enableScripting,
+ hasJSActions: parameters.hasJSActions,
+ fieldObjects: parameters.fieldObjects,
+ mouseState: parameters.mouseState || {
+ isDown: false
+ }
+ });
+
+ if (element.isRenderable) {
+ const rendered = element.render();
+
+ if (data.hidden) {
+ rendered.style.visibility = "hidden";
+ }
+
+ if (Array.isArray(rendered)) {
+ for (const renderedElement of rendered) {
+ div.appendChild(renderedElement);
+ }
+ } else {
+ if (element instanceof PopupAnnotationElement) {
+ div.prepend(rendered);
+ } else {
+ div.appendChild(rendered);
+ }
+ }
+ }
+ }
+
+ this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);
+ }
+
+ static update(parameters) {
+ const {
+ page,
+ viewport,
+ annotations,
+ annotationCanvasMap,
+ div
+ } = parameters;
+ const transform = viewport.transform;
+ const matrix = `matrix(${transform.join(",")})`;
+ let scale, ownMatrix;
+
+ for (const data of annotations) {
+ const elements = div.querySelectorAll(`[data-annotation-id="${data.id}"]`);
+
+ if (elements) {
+ for (const element of elements) {
+ if (data.hasOwnCanvas) {
+ const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);
+
+ if (!ownMatrix) {
+ scale = Math.abs(transform[0] || transform[1]);
+ const ownTransform = transform.slice();
+
+ for (let i = 0; i < 4; i++) {
+ ownTransform[i] = Math.sign(ownTransform[i]);
+ }
+
+ ownMatrix = `matrix(${ownTransform.join(",")})`;
+ }
+
+ const left = rect[0] * scale;
+ const top = rect[1] * scale;
+ element.style.left = `${left}px`;
+ element.style.top = `${top}px`;
+ element.style.transformOrigin = `${-left}px ${-top}px`;
+ element.style.transform = ownMatrix;
+ } else {
+ element.style.transform = matrix;
+ }
+ }
+ }
+ }
+
+ this.#setAnnotationCanvasMap(div, annotationCanvasMap);
+ div.hidden = false;
+ }
+
+ static #setAnnotationCanvasMap(div, annotationCanvasMap) {
+ if (!annotationCanvasMap) {
+ return;
+ }
+
+ for (const [id, canvas] of annotationCanvasMap) {
+ const element = div.querySelector(`[data-annotation-id="${id}"]`);
+
+ if (!element) {
+ continue;
+ }
+
+ const {
+ firstChild
+ } = element;
+
+ if (firstChild.nodeName === "CANVAS") {
+ element.replaceChild(canvas, firstChild);
+ } else {
+ element.insertBefore(canvas, firstChild);
+ }
+ }
+
+ annotationCanvasMap.clear();
+ }
+
+}
+
+exports.AnnotationLayer = AnnotationLayer;
+
+/***/ }),
+/* 19 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.ColorConverters = void 0;
+
+function makeColorComp(n) {
+ return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
+}
+
+class ColorConverters {
+ static CMYK_G([c, y, m, k]) {
+ return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];
+ }
+
+ static G_CMYK([g]) {
+ return ["CMYK", 0, 0, 0, 1 - g];
+ }
+
+ static G_RGB([g]) {
+ return ["RGB", g, g, g];
+ }
+
+ static G_HTML([g]) {
+ const G = makeColorComp(g);
+ return `#${G}${G}${G}`;
+ }
+
+ static RGB_G([r, g, b]) {
+ return ["G", 0.3 * r + 0.59 * g + 0.11 * b];
+ }
+
+ static RGB_HTML([r, g, b]) {
+ const R = makeColorComp(r);
+ const G = makeColorComp(g);
+ const B = makeColorComp(b);
+ return `#${R}${G}${B}`;
+ }
+
+ static T_HTML() {
+ return "#00000000";
+ }
+
+ static CMYK_RGB([c, y, m, k]) {
+ return ["RGB", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];
+ }
+
+ static CMYK_HTML(components) {
+ return this.RGB_HTML(this.CMYK_RGB(components));
+ }
+
+ static RGB_CMYK([r, g, b]) {
+ const c = 1 - r;
+ const m = 1 - g;
+ const y = 1 - b;
+ const k = Math.min(c, m, y);
+ return ["CMYK", c, m, y, k];
+ }
+
+}
+
+exports.ColorConverters = ColorConverters;
+
+/***/ }),
+/* 20 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.XfaLayer = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _xfa_text = __w_pdfjs_require__(17);
+
+class XfaLayer {
+ static setupStorage(html, id, element, storage, intent) {
+ const storedData = storage.getValue(id, {
+ value: null
+ });
+
+ switch (element.name) {
+ case "textarea":
+ if (storedData.value !== null) {
+ html.textContent = storedData.value;
+ }
+
+ if (intent === "print") {
+ break;
+ }
+
+ html.addEventListener("input", event => {
+ storage.setValue(id, {
+ value: event.target.value
+ });
+ });
+ break;
+
+ case "input":
+ if (element.attributes.type === "radio" || element.attributes.type === "checkbox") {
+ if (storedData.value === element.attributes.xfaOn) {
+ html.setAttribute("checked", true);
+ } else if (storedData.value === element.attributes.xfaOff) {
+ html.removeAttribute("checked");
+ }
+
+ if (intent === "print") {
+ break;
+ }
+
+ html.addEventListener("change", event => {
+ storage.setValue(id, {
+ value: event.target.checked ? event.target.getAttribute("xfaOn") : event.target.getAttribute("xfaOff")
+ });
+ });
+ } else {
+ if (storedData.value !== null) {
+ html.setAttribute("value", storedData.value);
+ }
+
+ if (intent === "print") {
+ break;
+ }
+
+ html.addEventListener("input", event => {
+ storage.setValue(id, {
+ value: event.target.value
+ });
+ });
+ }
+
+ break;
+
+ case "select":
+ if (storedData.value !== null) {
+ for (const option of element.children) {
+ if (option.attributes.value === storedData.value) {
+ option.attributes.selected = true;
+ }
+ }
+ }
+
+ html.addEventListener("input", event => {
+ const options = event.target.options;
+ const value = options.selectedIndex === -1 ? "" : options[options.selectedIndex].value;
+ storage.setValue(id, {
+ value
+ });
+ });
+ break;
+ }
+ }
+
+ static setAttributes({
+ html,
+ element,
+ storage = null,
+ intent,
+ linkService
+ }) {
+ const {
+ attributes
+ } = element;
+ const isHTMLAnchorElement = html instanceof HTMLAnchorElement;
+
+ if (attributes.type === "radio") {
+ attributes.name = `${attributes.name}-${intent}`;
+ }
+
+ for (const [key, value] of Object.entries(attributes)) {
+ if (value === null || value === undefined || key === "dataId") {
+ continue;
+ }
+
+ if (key !== "style") {
+ if (key === "textContent") {
+ html.textContent = value;
+ } else if (key === "class") {
+ if (value.length) {
+ html.setAttribute(key, value.join(" "));
+ }
+ } else {
+ if (isHTMLAnchorElement && (key === "href" || key === "newWindow")) {
+ continue;
+ }
+
+ html.setAttribute(key, value);
+ }
+ } else {
+ Object.assign(html.style, value);
+ }
+ }
+
+ if (isHTMLAnchorElement) {
+ if (!linkService.addLinkAttributes) {
+ (0, _util.warn)("XfaLayer.setAttribute - missing `addLinkAttributes`-method on the `linkService`-instance.");
+ }
+
+ linkService.addLinkAttributes?.(html, attributes.href, attributes.newWindow);
+ }
+
+ if (storage && attributes.dataId) {
+ this.setupStorage(html, attributes.dataId, element, storage);
+ }
+ }
+
+ static render(parameters) {
+ const storage = parameters.annotationStorage;
+ const linkService = parameters.linkService;
+ const root = parameters.xfaHtml;
+ const intent = parameters.intent || "display";
+ const rootHtml = document.createElement(root.name);
+
+ if (root.attributes) {
+ this.setAttributes({
+ html: rootHtml,
+ element: root,
+ intent,
+ linkService
+ });
+ }
+
+ const stack = [[root, -1, rootHtml]];
+ const rootDiv = parameters.div;
+ rootDiv.appendChild(rootHtml);
+
+ if (parameters.viewport) {
+ const transform = `matrix(${parameters.viewport.transform.join(",")})`;
+ rootDiv.style.transform = transform;
+ }
+
+ if (intent !== "richText") {
+ rootDiv.setAttribute("class", "xfaLayer xfaFont");
+ }
+
+ const textDivs = [];
+
+ while (stack.length > 0) {
+ const [parent, i, html] = stack[stack.length - 1];
+
+ if (i + 1 === parent.children.length) {
+ stack.pop();
+ continue;
+ }
+
+ const child = parent.children[++stack[stack.length - 1][1]];
+
+ if (child === null) {
+ continue;
+ }
+
+ const {
+ name
+ } = child;
+
+ if (name === "#text") {
+ const node = document.createTextNode(child.value);
+ textDivs.push(node);
+ html.appendChild(node);
+ continue;
+ }
+
+ let childHtml;
+
+ if (child?.attributes?.xmlns) {
+ childHtml = document.createElementNS(child.attributes.xmlns, name);
+ } else {
+ childHtml = document.createElement(name);
+ }
+
+ html.appendChild(childHtml);
+
+ if (child.attributes) {
+ this.setAttributes({
+ html: childHtml,
+ element: child,
+ storage,
+ intent,
+ linkService
+ });
+ }
+
+ if (child.children && child.children.length > 0) {
+ stack.push([child, -1, childHtml]);
+ } else if (child.value) {
+ const node = document.createTextNode(child.value);
+
+ if (_xfa_text.XfaText.shouldBuildText(name)) {
+ textDivs.push(node);
+ }
+
+ childHtml.appendChild(node);
+ }
+ }
+
+ for (const el of rootDiv.querySelectorAll(".xfaNonInteractive input, .xfaNonInteractive textarea")) {
+ el.setAttribute("readOnly", true);
+ }
+
+ return {
+ textDivs
+ };
+ }
+
+ static update(parameters) {
+ const transform = `matrix(${parameters.viewport.transform.join(",")})`;
+ parameters.div.style.transform = transform;
+ parameters.div.hidden = false;
+ }
+
+}
+
+exports.XfaLayer = XfaLayer;
+
+/***/ }),
+/* 21 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.renderTextLayer = renderTextLayer;
+
+var _util = __w_pdfjs_require__(1);
+
+const MAX_TEXT_DIVS_TO_RENDER = 100000;
+const DEFAULT_FONT_SIZE = 30;
+const DEFAULT_FONT_ASCENT = 0.8;
+const ascentCache = new Map();
+const AllWhitespaceRegexp = /^\s+$/g;
+
+function getAscent(fontFamily, ctx) {
+ const cachedAscent = ascentCache.get(fontFamily);
+
+ if (cachedAscent) {
+ return cachedAscent;
+ }
+
+ ctx.save();
+ ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;
+ const metrics = ctx.measureText("");
+ let ascent = metrics.fontBoundingBoxAscent;
+ let descent = Math.abs(metrics.fontBoundingBoxDescent);
+
+ if (ascent) {
+ ctx.restore();
+ const ratio = ascent / (ascent + descent);
+ ascentCache.set(fontFamily, ratio);
+ return ratio;
+ }
+
+ ctx.strokeStyle = "red";
+ ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
+ ctx.strokeText("g", 0, 0);
+ let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
+ descent = 0;
+
+ for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {
+ if (pixels[i] > 0) {
+ descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);
+ break;
+ }
+ }
+
+ ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
+ ctx.strokeText("A", 0, DEFAULT_FONT_SIZE);
+ pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
+ ascent = 0;
+
+ for (let i = 0, ii = pixels.length; i < ii; i += 4) {
+ if (pixels[i] > 0) {
+ ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);
+ break;
+ }
+ }
+
+ ctx.restore();
+
+ if (ascent) {
+ const ratio = ascent / (ascent + descent);
+ ascentCache.set(fontFamily, ratio);
+ return ratio;
+ }
+
+ ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);
+ return DEFAULT_FONT_ASCENT;
+}
+
+function appendText(task, geom, styles, ctx) {
+ const textDiv = document.createElement("span");
+ const textDivProperties = task._enhanceTextSelection ? {
+ angle: 0,
+ canvasWidth: 0,
+ hasText: geom.str !== "",
+ hasEOL: geom.hasEOL,
+ originalTransform: null,
+ paddingBottom: 0,
+ paddingLeft: 0,
+ paddingRight: 0,
+ paddingTop: 0,
+ scale: 1
+ } : {
+ angle: 0,
+ canvasWidth: 0,
+ hasText: geom.str !== "",
+ hasEOL: geom.hasEOL
+ };
+
+ task._textDivs.push(textDiv);
+
+ const tx = _util.Util.transform(task._viewport.transform, geom.transform);
+
+ let angle = Math.atan2(tx[1], tx[0]);
+ const style = styles[geom.fontName];
+
+ if (style.vertical) {
+ angle += Math.PI / 2;
+ }
+
+ const fontHeight = Math.hypot(tx[2], tx[3]);
+ const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);
+ let left, top;
+
+ if (angle === 0) {
+ left = tx[4];
+ top = tx[5] - fontAscent;
+ } else {
+ left = tx[4] + fontAscent * Math.sin(angle);
+ top = tx[5] - fontAscent * Math.cos(angle);
+ }
+
+ textDiv.style.left = `${left}px`;
+ textDiv.style.top = `${top}px`;
+ textDiv.style.fontSize = `${fontHeight}px`;
+ textDiv.style.fontFamily = style.fontFamily;
+ textDiv.setAttribute("role", "presentation");
+ textDiv.textContent = geom.str;
+ textDiv.dir = geom.dir;
+
+ if (task._fontInspectorEnabled) {
+ textDiv.dataset.fontName = geom.fontName;
+ }
+
+ if (angle !== 0) {
+ textDivProperties.angle = angle * (180 / Math.PI);
+ }
+
+ let shouldScaleText = false;
+
+ if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) {
+ shouldScaleText = true;
+ } else if (geom.str !== " " && geom.transform[0] !== geom.transform[3]) {
+ const absScaleX = Math.abs(geom.transform[0]),
+ absScaleY = Math.abs(geom.transform[3]);
+
+ if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {
+ shouldScaleText = true;
+ }
+ }
+
+ if (shouldScaleText) {
+ if (style.vertical) {
+ textDivProperties.canvasWidth = geom.height * task._viewport.scale;
+ } else {
+ textDivProperties.canvasWidth = geom.width * task._viewport.scale;
+ }
+ }
+
+ task._textDivProperties.set(textDiv, textDivProperties);
+
+ if (task._textContentStream) {
+ task._layoutText(textDiv);
+ }
+
+ if (task._enhanceTextSelection && textDivProperties.hasText) {
+ let angleCos = 1,
+ angleSin = 0;
+
+ if (angle !== 0) {
+ angleCos = Math.cos(angle);
+ angleSin = Math.sin(angle);
+ }
+
+ const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
+ const divHeight = fontHeight;
+ let m, b;
+
+ if (angle !== 0) {
+ m = [angleCos, angleSin, -angleSin, angleCos, left, top];
+ b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
+ } else {
+ b = [left, top, left + divWidth, top + divHeight];
+ }
+
+ task._bounds.push({
+ left: b[0],
+ top: b[1],
+ right: b[2],
+ bottom: b[3],
+ div: textDiv,
+ size: [divWidth, divHeight],
+ m
+ });
+ }
+}
+
+function render(task) {
+ if (task._canceled) {
+ return;
+ }
+
+ const textDivs = task._textDivs;
+ const capability = task._capability;
+ const textDivsLength = textDivs.length;
+
+ if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
+ task._renderingDone = true;
+ capability.resolve();
+ return;
+ }
+
+ if (!task._textContentStream) {
+ for (let i = 0; i < textDivsLength; i++) {
+ task._layoutText(textDivs[i]);
+ }
+ }
+
+ task._renderingDone = true;
+ capability.resolve();
+}
+
+function findPositiveMin(ts, offset, count) {
+ let result = 0;
+
+ for (let i = 0; i < count; i++) {
+ const t = ts[offset++];
+
+ if (t > 0) {
+ result = result ? Math.min(t, result) : t;
+ }
+ }
+
+ return result;
+}
+
+function expand(task) {
+ const bounds = task._bounds;
+ const viewport = task._viewport;
+ const expanded = expandBounds(viewport.width, viewport.height, bounds);
+
+ for (let i = 0; i < expanded.length; i++) {
+ const div = bounds[i].div;
+
+ const divProperties = task._textDivProperties.get(div);
+
+ if (divProperties.angle === 0) {
+ divProperties.paddingLeft = bounds[i].left - expanded[i].left;
+ divProperties.paddingTop = bounds[i].top - expanded[i].top;
+ divProperties.paddingRight = expanded[i].right - bounds[i].right;
+ divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
+
+ task._textDivProperties.set(div, divProperties);
+
+ continue;
+ }
+
+ const e = expanded[i],
+ b = bounds[i];
+ const m = b.m,
+ c = m[0],
+ s = m[1];
+ const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];
+ const ts = new Float64Array(64);
+
+ for (let j = 0, jj = points.length; j < jj; j++) {
+ const t = _util.Util.applyTransform(points[j], m);
+
+ ts[j + 0] = c && (e.left - t[0]) / c;
+ ts[j + 4] = s && (e.top - t[1]) / s;
+ ts[j + 8] = c && (e.right - t[0]) / c;
+ ts[j + 12] = s && (e.bottom - t[1]) / s;
+ ts[j + 16] = s && (e.left - t[0]) / -s;
+ ts[j + 20] = c && (e.top - t[1]) / c;
+ ts[j + 24] = s && (e.right - t[0]) / -s;
+ ts[j + 28] = c && (e.bottom - t[1]) / c;
+ ts[j + 32] = c && (e.left - t[0]) / -c;
+ ts[j + 36] = s && (e.top - t[1]) / -s;
+ ts[j + 40] = c && (e.right - t[0]) / -c;
+ ts[j + 44] = s && (e.bottom - t[1]) / -s;
+ ts[j + 48] = s && (e.left - t[0]) / s;
+ ts[j + 52] = c && (e.top - t[1]) / -c;
+ ts[j + 56] = s && (e.right - t[0]) / s;
+ ts[j + 60] = c && (e.bottom - t[1]) / -c;
+ }
+
+ const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
+ divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
+ divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
+ divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
+ divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
+
+ task._textDivProperties.set(div, divProperties);
+ }
+}
+
+function expandBounds(width, height, boxes) {
+ const bounds = boxes.map(function (box, i) {
+ return {
+ x1: box.left,
+ y1: box.top,
+ x2: box.right,
+ y2: box.bottom,
+ index: i,
+ x1New: undefined,
+ x2New: undefined
+ };
+ });
+ expandBoundsLTR(width, bounds);
+ const expanded = new Array(boxes.length);
+
+ for (const b of bounds) {
+ const i = b.index;
+ expanded[i] = {
+ left: b.x1New,
+ top: 0,
+ right: b.x2New,
+ bottom: 0
+ };
+ }
+
+ boxes.map(function (box, i) {
+ const e = expanded[i],
+ b = bounds[i];
+ b.x1 = box.top;
+ b.y1 = width - e.right;
+ b.x2 = box.bottom;
+ b.y2 = width - e.left;
+ b.index = i;
+ b.x1New = undefined;
+ b.x2New = undefined;
+ });
+ expandBoundsLTR(height, bounds);
+
+ for (const b of bounds) {
+ const i = b.index;
+ expanded[i].top = b.x1New;
+ expanded[i].bottom = b.x2New;
+ }
+
+ return expanded;
+}
+
+function expandBoundsLTR(width, bounds) {
+ bounds.sort(function (a, b) {
+ return a.x1 - b.x1 || a.index - b.index;
+ });
+ const fakeBoundary = {
+ x1: -Infinity,
+ y1: -Infinity,
+ x2: 0,
+ y2: Infinity,
+ index: -1,
+ x1New: 0,
+ x2New: 0
+ };
+ const horizon = [{
+ start: -Infinity,
+ end: Infinity,
+ boundary: fakeBoundary
+ }];
+
+ for (const boundary of bounds) {
+ let i = 0;
+
+ while (i < horizon.length && horizon[i].end <= boundary.y1) {
+ i++;
+ }
+
+ let j = horizon.length - 1;
+
+ while (j >= 0 && horizon[j].start >= boundary.y2) {
+ j--;
+ }
+
+ let horizonPart, affectedBoundary;
+ let q,
+ k,
+ maxXNew = -Infinity;
+
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ let xNew;
+
+ if (affectedBoundary.x2 > boundary.x1) {
+ xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
+ } else if (affectedBoundary.x2New === undefined) {
+ xNew = (affectedBoundary.x2 + boundary.x1) / 2;
+ } else {
+ xNew = affectedBoundary.x2New;
+ }
+
+ if (xNew > maxXNew) {
+ maxXNew = xNew;
+ }
+ }
+
+ boundary.x1New = maxXNew;
+
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+
+ if (affectedBoundary.x2New === undefined) {
+ if (affectedBoundary.x2 > boundary.x1) {
+ if (affectedBoundary.index > boundary.index) {
+ affectedBoundary.x2New = affectedBoundary.x2;
+ }
+ } else {
+ affectedBoundary.x2New = maxXNew;
+ }
+ } else if (affectedBoundary.x2New > maxXNew) {
+ affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
+ }
+ }
+
+ const changedHorizon = [];
+ let lastBoundary = null;
+
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
+
+ if (lastBoundary === useBoundary) {
+ changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
+ } else {
+ changedHorizon.push({
+ start: horizonPart.start,
+ end: horizonPart.end,
+ boundary: useBoundary
+ });
+ lastBoundary = useBoundary;
+ }
+ }
+
+ if (horizon[i].start < boundary.y1) {
+ changedHorizon[0].start = boundary.y1;
+ changedHorizon.unshift({
+ start: horizon[i].start,
+ end: boundary.y1,
+ boundary: horizon[i].boundary
+ });
+ }
+
+ if (boundary.y2 < horizon[j].end) {
+ changedHorizon[changedHorizon.length - 1].end = boundary.y2;
+ changedHorizon.push({
+ start: boundary.y2,
+ end: horizon[j].end,
+ boundary: horizon[j].boundary
+ });
+ }
+
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+
+ if (affectedBoundary.x2New !== undefined) {
+ continue;
+ }
+
+ let used = false;
+
+ for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
+ used = horizon[k].boundary === affectedBoundary;
+ }
+
+ for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
+ used = horizon[k].boundary === affectedBoundary;
+ }
+
+ for (k = 0; !used && k < changedHorizon.length; k++) {
+ used = changedHorizon[k].boundary === affectedBoundary;
+ }
+
+ if (!used) {
+ affectedBoundary.x2New = maxXNew;
+ }
+ }
+
+ Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
+ }
+
+ for (const horizonPart of horizon) {
+ const affectedBoundary = horizonPart.boundary;
+
+ if (affectedBoundary.x2New === undefined) {
+ affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
+ }
+ }
+}
+
+class TextLayerRenderTask {
+ constructor({
+ textContent,
+ textContentStream,
+ container,
+ viewport,
+ textDivs,
+ textContentItemsStr,
+ enhanceTextSelection
+ }) {
+ this._textContent = textContent;
+ this._textContentStream = textContentStream;
+ this._container = container;
+ this._document = container.ownerDocument;
+ this._viewport = viewport;
+ this._textDivs = textDivs || [];
+ this._textContentItemsStr = textContentItemsStr || [];
+ this._enhanceTextSelection = !!enhanceTextSelection;
+ this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;
+ this._reader = null;
+ this._layoutTextLastFontSize = null;
+ this._layoutTextLastFontFamily = null;
+ this._layoutTextCtx = null;
+ this._textDivProperties = new WeakMap();
+ this._renderingDone = false;
+ this._canceled = false;
+ this._capability = (0, _util.createPromiseCapability)();
+ this._renderTimer = null;
+ this._bounds = [];
+
+ this._capability.promise.finally(() => {
+ if (!this._enhanceTextSelection) {
+ this._textDivProperties = null;
+ }
+
+ if (this._layoutTextCtx) {
+ this._layoutTextCtx.canvas.width = 0;
+ this._layoutTextCtx.canvas.height = 0;
+ this._layoutTextCtx = null;
+ }
+ }).catch(() => {});
+ }
+
+ get promise() {
+ return this._capability.promise;
+ }
+
+ cancel() {
+ this._canceled = true;
+
+ if (this._reader) {
+ this._reader.cancel(new _util.AbortException("TextLayer task cancelled.")).catch(() => {});
+
+ this._reader = null;
+ }
+
+ if (this._renderTimer !== null) {
+ clearTimeout(this._renderTimer);
+ this._renderTimer = null;
+ }
+
+ this._capability.reject(new Error("TextLayer task cancelled."));
+ }
+
+ _processItems(items, styleCache) {
+ for (let i = 0, len = items.length; i < len; i++) {
+ if (items[i].str === undefined) {
+ if (items[i].type === "beginMarkedContentProps" || items[i].type === "beginMarkedContent") {
+ const parent = this._container;
+ this._container = document.createElement("span");
+
+ this._container.classList.add("markedContent");
+
+ if (items[i].id !== null) {
+ this._container.setAttribute("id", `${items[i].id}`);
+ }
+
+ parent.appendChild(this._container);
+ } else if (items[i].type === "endMarkedContent") {
+ this._container = this._container.parentNode;
+ }
+
+ continue;
+ }
+
+ this._textContentItemsStr.push(items[i].str);
+
+ appendText(this, items[i], styleCache, this._layoutTextCtx);
+ }
+ }
+
+ _layoutText(textDiv) {
+ const textDivProperties = this._textDivProperties.get(textDiv);
+
+ let transform = "";
+
+ if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {
+ const {
+ fontSize,
+ fontFamily
+ } = textDiv.style;
+
+ if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
+ this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;
+ this._layoutTextLastFontSize = fontSize;
+ this._layoutTextLastFontFamily = fontFamily;
+ }
+
+ const {
+ width
+ } = this._layoutTextCtx.measureText(textDiv.textContent);
+
+ if (width > 0) {
+ const scale = textDivProperties.canvasWidth / width;
+
+ if (this._enhanceTextSelection) {
+ textDivProperties.scale = scale;
+ }
+
+ transform = `scaleX(${scale})`;
+ }
+ }
+
+ if (textDivProperties.angle !== 0) {
+ transform = `rotate(${textDivProperties.angle}deg) ${transform}`;
+ }
+
+ if (transform.length > 0) {
+ if (this._enhanceTextSelection) {
+ textDivProperties.originalTransform = transform;
+ }
+
+ textDiv.style.transform = transform;
+ }
+
+ if (textDivProperties.hasText) {
+ this._container.appendChild(textDiv);
+ }
+
+ if (textDivProperties.hasEOL) {
+ const br = document.createElement("br");
+ br.setAttribute("role", "presentation");
+
+ this._container.appendChild(br);
+ }
+ }
+
+ _render(timeout = 0) {
+ const capability = (0, _util.createPromiseCapability)();
+ let styleCache = Object.create(null);
+
+ const canvas = this._document.createElement("canvas");
+
+ canvas.height = canvas.width = DEFAULT_FONT_SIZE;
+ canvas.mozOpaque = true;
+ this._layoutTextCtx = canvas.getContext("2d", {
+ alpha: false
+ });
+
+ if (this._textContent) {
+ const textItems = this._textContent.items;
+ const textStyles = this._textContent.styles;
+
+ this._processItems(textItems, textStyles);
+
+ capability.resolve();
+ } else if (this._textContentStream) {
+ const pump = () => {
+ this._reader.read().then(({
+ value,
+ done
+ }) => {
+ if (done) {
+ capability.resolve();
+ return;
+ }
+
+ Object.assign(styleCache, value.styles);
+
+ this._processItems(value.items, styleCache);
+
+ pump();
+ }, capability.reject);
+ };
+
+ this._reader = this._textContentStream.getReader();
+ pump();
+ } else {
+ throw new Error('Neither "textContent" nor "textContentStream" parameters specified.');
+ }
+
+ capability.promise.then(() => {
+ styleCache = null;
+
+ if (!timeout) {
+ render(this);
+ } else {
+ this._renderTimer = setTimeout(() => {
+ render(this);
+ this._renderTimer = null;
+ }, timeout);
+ }
+ }, this._capability.reject);
+ }
+
+ expandTextDivs(expandDivs = false) {
+ if (!this._enhanceTextSelection || !this._renderingDone) {
+ return;
+ }
+
+ if (this._bounds !== null) {
+ expand(this);
+ this._bounds = null;
+ }
+
+ const transformBuf = [],
+ paddingBuf = [];
+
+ for (let i = 0, ii = this._textDivs.length; i < ii; i++) {
+ const div = this._textDivs[i];
+
+ const divProps = this._textDivProperties.get(div);
+
+ if (!divProps.hasText) {
+ continue;
+ }
+
+ if (expandDivs) {
+ transformBuf.length = 0;
+ paddingBuf.length = 0;
+
+ if (divProps.originalTransform) {
+ transformBuf.push(divProps.originalTransform);
+ }
+
+ if (divProps.paddingTop > 0) {
+ paddingBuf.push(`${divProps.paddingTop}px`);
+ transformBuf.push(`translateY(${-divProps.paddingTop}px)`);
+ } else {
+ paddingBuf.push(0);
+ }
+
+ if (divProps.paddingRight > 0) {
+ paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);
+ } else {
+ paddingBuf.push(0);
+ }
+
+ if (divProps.paddingBottom > 0) {
+ paddingBuf.push(`${divProps.paddingBottom}px`);
+ } else {
+ paddingBuf.push(0);
+ }
+
+ if (divProps.paddingLeft > 0) {
+ paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);
+ transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);
+ } else {
+ paddingBuf.push(0);
+ }
+
+ div.style.padding = paddingBuf.join(" ");
+
+ if (transformBuf.length) {
+ div.style.transform = transformBuf.join(" ");
+ }
+ } else {
+ div.style.padding = null;
+ div.style.transform = divProps.originalTransform;
+ }
+ }
+ }
+
+}
+
+function renderTextLayer(renderParameters) {
+ const task = new TextLayerRenderTask({
+ textContent: renderParameters.textContent,
+ textContentStream: renderParameters.textContentStream,
+ container: renderParameters.container,
+ viewport: renderParameters.viewport,
+ textDivs: renderParameters.textDivs,
+ textContentItemsStr: renderParameters.textContentItemsStr,
+ enhanceTextSelection: renderParameters.enhanceTextSelection
+ });
+
+ task._render(renderParameters.timeout);
+
+ return task;
+}
+
+/***/ }),
+/* 22 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.SVGGraphics = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _display_utils = __w_pdfjs_require__(5);
+
+var _is_node = __w_pdfjs_require__(3);
+
+let SVGGraphics = class {
+ constructor() {
+ (0, _util.unreachable)("Not implemented: SVGGraphics");
+ }
+
+};
+exports.SVGGraphics = SVGGraphics;
+{
+ const SVG_DEFAULTS = {
+ fontStyle: "normal",
+ fontWeight: "normal",
+ fillColor: "#000000"
+ };
+ const XML_NS = "http://www.w3.org/XML/1998/namespace";
+ const XLINK_NS = "http://www.w3.org/1999/xlink";
+ const LINE_CAP_STYLES = ["butt", "round", "square"];
+ const LINE_JOIN_STYLES = ["miter", "round", "bevel"];
+
+ const createObjectURL = function (data, contentType = "", forceDataSchema = false) {
+ if (URL.createObjectURL && typeof Blob !== "undefined" && !forceDataSchema) {
+ return URL.createObjectURL(new Blob([data], {
+ type: contentType
+ }));
+ }
+
+ const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+ let buffer = `data:${contentType};base64,`;
+
+ for (let i = 0, ii = data.length; i < ii; i += 3) {
+ const b1 = data[i] & 0xff;
+ const b2 = data[i + 1] & 0xff;
+ const b3 = data[i + 2] & 0xff;
+ const d1 = b1 >> 2,
+ d2 = (b1 & 3) << 4 | b2 >> 4;
+ const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
+ const d4 = i + 2 < ii ? b3 & 0x3f : 64;
+ buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+ }
+
+ return buffer;
+ };
+
+ const convertImgDataToPng = function () {
+ const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
+ const CHUNK_WRAPPER_SIZE = 12;
+ const crcTable = new Int32Array(256);
+
+ for (let i = 0; i < 256; i++) {
+ let c = i;
+
+ for (let h = 0; h < 8; h++) {
+ if (c & 1) {
+ c = 0xedb88320 ^ c >> 1 & 0x7fffffff;
+ } else {
+ c = c >> 1 & 0x7fffffff;
+ }
+ }
+
+ crcTable[i] = c;
+ }
+
+ function crc32(data, start, end) {
+ let crc = -1;
+
+ for (let i = start; i < end; i++) {
+ const a = (crc ^ data[i]) & 0xff;
+ const b = crcTable[a];
+ crc = crc >>> 8 ^ b;
+ }
+
+ return crc ^ -1;
+ }
+
+ function writePngChunk(type, body, data, offset) {
+ let p = offset;
+ const len = body.length;
+ data[p] = len >> 24 & 0xff;
+ data[p + 1] = len >> 16 & 0xff;
+ data[p + 2] = len >> 8 & 0xff;
+ data[p + 3] = len & 0xff;
+ p += 4;
+ data[p] = type.charCodeAt(0) & 0xff;
+ data[p + 1] = type.charCodeAt(1) & 0xff;
+ data[p + 2] = type.charCodeAt(2) & 0xff;
+ data[p + 3] = type.charCodeAt(3) & 0xff;
+ p += 4;
+ data.set(body, p);
+ p += body.length;
+ const crc = crc32(data, offset + 4, p);
+ data[p] = crc >> 24 & 0xff;
+ data[p + 1] = crc >> 16 & 0xff;
+ data[p + 2] = crc >> 8 & 0xff;
+ data[p + 3] = crc & 0xff;
+ }
+
+ function adler32(data, start, end) {
+ let a = 1;
+ let b = 0;
+
+ for (let i = start; i < end; ++i) {
+ a = (a + (data[i] & 0xff)) % 65521;
+ b = (b + a) % 65521;
+ }
+
+ return b << 16 | a;
+ }
+
+ function deflateSync(literals) {
+ if (!_is_node.isNodeJS) {
+ return deflateSyncUncompressed(literals);
+ }
+
+ try {
+ let input;
+
+ if (parseInt(process.versions.node) >= 8) {
+ input = literals;
+ } else {
+ input = Buffer.from(literals);
+ }
+
+ const output = require("zlib").deflateSync(input, {
+ level: 9
+ });
+
+ return output instanceof Uint8Array ? output : new Uint8Array(output);
+ } catch (e) {
+ (0, _util.warn)("Not compressing PNG because zlib.deflateSync is unavailable: " + e);
+ }
+
+ return deflateSyncUncompressed(literals);
+ }
+
+ function deflateSyncUncompressed(literals) {
+ let len = literals.length;
+ const maxBlockLength = 0xffff;
+ const deflateBlocks = Math.ceil(len / maxBlockLength);
+ const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
+ let pi = 0;
+ idat[pi++] = 0x78;
+ idat[pi++] = 0x9c;
+ let pos = 0;
+
+ while (len > maxBlockLength) {
+ idat[pi++] = 0x00;
+ idat[pi++] = 0xff;
+ idat[pi++] = 0xff;
+ idat[pi++] = 0x00;
+ idat[pi++] = 0x00;
+ idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
+ pi += maxBlockLength;
+ pos += maxBlockLength;
+ len -= maxBlockLength;
+ }
+
+ idat[pi++] = 0x01;
+ idat[pi++] = len & 0xff;
+ idat[pi++] = len >> 8 & 0xff;
+ idat[pi++] = ~len & 0xffff & 0xff;
+ idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
+ idat.set(literals.subarray(pos), pi);
+ pi += literals.length - pos;
+ const adler = adler32(literals, 0, literals.length);
+ idat[pi++] = adler >> 24 & 0xff;
+ idat[pi++] = adler >> 16 & 0xff;
+ idat[pi++] = adler >> 8 & 0xff;
+ idat[pi++] = adler & 0xff;
+ return idat;
+ }
+
+ function encode(imgData, kind, forceDataSchema, isMask) {
+ const width = imgData.width;
+ const height = imgData.height;
+ let bitDepth, colorType, lineSize;
+ const bytes = imgData.data;
+
+ switch (kind) {
+ case _util.ImageKind.GRAYSCALE_1BPP:
+ colorType = 0;
+ bitDepth = 1;
+ lineSize = width + 7 >> 3;
+ break;
+
+ case _util.ImageKind.RGB_24BPP:
+ colorType = 2;
+ bitDepth = 8;
+ lineSize = width * 3;
+ break;
+
+ case _util.ImageKind.RGBA_32BPP:
+ colorType = 6;
+ bitDepth = 8;
+ lineSize = width * 4;
+ break;
+
+ default:
+ throw new Error("invalid format");
+ }
+
+ const literals = new Uint8Array((1 + lineSize) * height);
+ let offsetLiterals = 0,
+ offsetBytes = 0;
+
+ for (let y = 0; y < height; ++y) {
+ literals[offsetLiterals++] = 0;
+ literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
+ offsetBytes += lineSize;
+ offsetLiterals += lineSize;
+ }
+
+ if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
+ offsetLiterals = 0;
+
+ for (let y = 0; y < height; y++) {
+ offsetLiterals++;
+
+ for (let i = 0; i < lineSize; i++) {
+ literals[offsetLiterals++] ^= 0xff;
+ }
+ }
+ }
+
+ const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);
+ const idat = deflateSync(literals);
+ const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
+ const data = new Uint8Array(pngLength);
+ let offset = 0;
+ data.set(PNG_HEADER, offset);
+ offset += PNG_HEADER.length;
+ writePngChunk("IHDR", ihdr, data, offset);
+ offset += CHUNK_WRAPPER_SIZE + ihdr.length;
+ writePngChunk("IDATA", idat, data, offset);
+ offset += CHUNK_WRAPPER_SIZE + idat.length;
+ writePngChunk("IEND", new Uint8Array(0), data, offset);
+ return createObjectURL(data, "image/png", forceDataSchema);
+ }
+
+ return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
+ const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
+ return encode(imgData, kind, forceDataSchema, isMask);
+ };
+ }();
+
+ class SVGExtraState {
+ constructor() {
+ this.fontSizeScale = 1;
+ this.fontWeight = SVG_DEFAULTS.fontWeight;
+ this.fontSize = 0;
+ this.textMatrix = _util.IDENTITY_MATRIX;
+ this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
+ this.leading = 0;
+ this.textRenderingMode = _util.TextRenderingMode.FILL;
+ this.textMatrixScale = 1;
+ this.x = 0;
+ this.y = 0;
+ this.lineX = 0;
+ this.lineY = 0;
+ this.charSpacing = 0;
+ this.wordSpacing = 0;
+ this.textHScale = 1;
+ this.textRise = 0;
+ this.fillColor = SVG_DEFAULTS.fillColor;
+ this.strokeColor = "#000000";
+ this.fillAlpha = 1;
+ this.strokeAlpha = 1;
+ this.lineWidth = 1;
+ this.lineJoin = "";
+ this.lineCap = "";
+ this.miterLimit = 0;
+ this.dashArray = [];
+ this.dashPhase = 0;
+ this.dependencies = [];
+ this.activeClipUrl = null;
+ this.clipGroup = null;
+ this.maskId = "";
+ }
+
+ clone() {
+ return Object.create(this);
+ }
+
+ setCurrentPoint(x, y) {
+ this.x = x;
+ this.y = y;
+ }
+
+ }
+
+ function opListToTree(opList) {
+ let opTree = [];
+ const tmp = [];
+
+ for (const opListElement of opList) {
+ if (opListElement.fn === "save") {
+ opTree.push({
+ fnId: 92,
+ fn: "group",
+ items: []
+ });
+ tmp.push(opTree);
+ opTree = opTree[opTree.length - 1].items;
+ continue;
+ }
+
+ if (opListElement.fn === "restore") {
+ opTree = tmp.pop();
+ } else {
+ opTree.push(opListElement);
+ }
+ }
+
+ return opTree;
+ }
+
+ function pf(value) {
+ if (Number.isInteger(value)) {
+ return value.toString();
+ }
+
+ const s = value.toFixed(10);
+ let i = s.length - 1;
+
+ if (s[i] !== "0") {
+ return s;
+ }
+
+ do {
+ i--;
+ } while (s[i] === "0");
+
+ return s.substring(0, s[i] === "." ? i : i + 1);
+ }
+
+ function pm(m) {
+ if (m[4] === 0 && m[5] === 0) {
+ if (m[1] === 0 && m[2] === 0) {
+ if (m[0] === 1 && m[3] === 1) {
+ return "";
+ }
+
+ return `scale(${pf(m[0])} ${pf(m[3])})`;
+ }
+
+ if (m[0] === m[3] && m[1] === -m[2]) {
+ const a = Math.acos(m[0]) * 180 / Math.PI;
+ return `rotate(${pf(a)})`;
+ }
+ } else {
+ if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
+ return `translate(${pf(m[4])} ${pf(m[5])})`;
+ }
+ }
+
+ return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;
+ }
+
+ let clipCount = 0;
+ let maskCount = 0;
+ let shadingCount = 0;
+ exports.SVGGraphics = SVGGraphics = class {
+ constructor(commonObjs, objs, forceDataSchema = false) {
+ this.svgFactory = new _display_utils.DOMSVGFactory();
+ this.current = new SVGExtraState();
+ this.transformMatrix = _util.IDENTITY_MATRIX;
+ this.transformStack = [];
+ this.extraStack = [];
+ this.commonObjs = commonObjs;
+ this.objs = objs;
+ this.pendingClip = null;
+ this.pendingEOFill = false;
+ this.embedFonts = false;
+ this.embeddedFonts = Object.create(null);
+ this.cssStyle = null;
+ this.forceDataSchema = !!forceDataSchema;
+ this._operatorIdMapping = [];
+
+ for (const op in _util.OPS) {
+ this._operatorIdMapping[_util.OPS[op]] = op;
+ }
+ }
+
+ save() {
+ this.transformStack.push(this.transformMatrix);
+ const old = this.current;
+ this.extraStack.push(old);
+ this.current = old.clone();
+ }
+
+ restore() {
+ this.transformMatrix = this.transformStack.pop();
+ this.current = this.extraStack.pop();
+ this.pendingClip = null;
+ this.tgrp = null;
+ }
+
+ group(items) {
+ this.save();
+ this.executeOpTree(items);
+ this.restore();
+ }
+
+ loadDependencies(operatorList) {
+ const fnArray = operatorList.fnArray;
+ const argsArray = operatorList.argsArray;
+
+ for (let i = 0, ii = fnArray.length; i < ii; i++) {
+ if (fnArray[i] !== _util.OPS.dependency) {
+ continue;
+ }
+
+ for (const obj of argsArray[i]) {
+ const objsPool = obj.startsWith("g_") ? this.commonObjs : this.objs;
+ const promise = new Promise(resolve => {
+ objsPool.get(obj, resolve);
+ });
+ this.current.dependencies.push(promise);
+ }
+ }
+
+ return Promise.all(this.current.dependencies);
+ }
+
+ transform(a, b, c, d, e, f) {
+ const transformMatrix = [a, b, c, d, e, f];
+ this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);
+ this.tgrp = null;
+ }
+
+ getSVG(operatorList, viewport) {
+ this.viewport = viewport;
+
+ const svgElement = this._initialize(viewport);
+
+ return this.loadDependencies(operatorList).then(() => {
+ this.transformMatrix = _util.IDENTITY_MATRIX;
+ this.executeOpTree(this.convertOpList(operatorList));
+ return svgElement;
+ });
+ }
+
+ convertOpList(operatorList) {
+ const operatorIdMapping = this._operatorIdMapping;
+ const argsArray = operatorList.argsArray;
+ const fnArray = operatorList.fnArray;
+ const opList = [];
+
+ for (let i = 0, ii = fnArray.length; i < ii; i++) {
+ const fnId = fnArray[i];
+ opList.push({
+ fnId,
+ fn: operatorIdMapping[fnId],
+ args: argsArray[i]
+ });
+ }
+
+ return opListToTree(opList);
+ }
+
+ executeOpTree(opTree) {
+ for (const opTreeElement of opTree) {
+ const fn = opTreeElement.fn;
+ const fnId = opTreeElement.fnId;
+ const args = opTreeElement.args;
+
+ switch (fnId | 0) {
+ case _util.OPS.beginText:
+ this.beginText();
+ break;
+
+ case _util.OPS.dependency:
+ break;
+
+ case _util.OPS.setLeading:
+ this.setLeading(args);
+ break;
+
+ case _util.OPS.setLeadingMoveText:
+ this.setLeadingMoveText(args[0], args[1]);
+ break;
+
+ case _util.OPS.setFont:
+ this.setFont(args);
+ break;
+
+ case _util.OPS.showText:
+ this.showText(args[0]);
+ break;
+
+ case _util.OPS.showSpacedText:
+ this.showText(args[0]);
+ break;
+
+ case _util.OPS.endText:
+ this.endText();
+ break;
+
+ case _util.OPS.moveText:
+ this.moveText(args[0], args[1]);
+ break;
+
+ case _util.OPS.setCharSpacing:
+ this.setCharSpacing(args[0]);
+ break;
+
+ case _util.OPS.setWordSpacing:
+ this.setWordSpacing(args[0]);
+ break;
+
+ case _util.OPS.setHScale:
+ this.setHScale(args[0]);
+ break;
+
+ case _util.OPS.setTextMatrix:
+ this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
+ break;
+
+ case _util.OPS.setTextRise:
+ this.setTextRise(args[0]);
+ break;
+
+ case _util.OPS.setTextRenderingMode:
+ this.setTextRenderingMode(args[0]);
+ break;
+
+ case _util.OPS.setLineWidth:
+ this.setLineWidth(args[0]);
+ break;
+
+ case _util.OPS.setLineJoin:
+ this.setLineJoin(args[0]);
+ break;
+
+ case _util.OPS.setLineCap:
+ this.setLineCap(args[0]);
+ break;
+
+ case _util.OPS.setMiterLimit:
+ this.setMiterLimit(args[0]);
+ break;
+
+ case _util.OPS.setFillRGBColor:
+ this.setFillRGBColor(args[0], args[1], args[2]);
+ break;
+
+ case _util.OPS.setStrokeRGBColor:
+ this.setStrokeRGBColor(args[0], args[1], args[2]);
+ break;
+
+ case _util.OPS.setStrokeColorN:
+ this.setStrokeColorN(args);
+ break;
+
+ case _util.OPS.setFillColorN:
+ this.setFillColorN(args);
+ break;
+
+ case _util.OPS.shadingFill:
+ this.shadingFill(args[0]);
+ break;
+
+ case _util.OPS.setDash:
+ this.setDash(args[0], args[1]);
+ break;
+
+ case _util.OPS.setRenderingIntent:
+ this.setRenderingIntent(args[0]);
+ break;
+
+ case _util.OPS.setFlatness:
+ this.setFlatness(args[0]);
+ break;
+
+ case _util.OPS.setGState:
+ this.setGState(args[0]);
+ break;
+
+ case _util.OPS.fill:
+ this.fill();
+ break;
+
+ case _util.OPS.eoFill:
+ this.eoFill();
+ break;
+
+ case _util.OPS.stroke:
+ this.stroke();
+ break;
+
+ case _util.OPS.fillStroke:
+ this.fillStroke();
+ break;
+
+ case _util.OPS.eoFillStroke:
+ this.eoFillStroke();
+ break;
+
+ case _util.OPS.clip:
+ this.clip("nonzero");
+ break;
+
+ case _util.OPS.eoClip:
+ this.clip("evenodd");
+ break;
+
+ case _util.OPS.paintSolidColorImageMask:
+ this.paintSolidColorImageMask();
+ break;
+
+ case _util.OPS.paintImageXObject:
+ this.paintImageXObject(args[0]);
+ break;
+
+ case _util.OPS.paintInlineImageXObject:
+ this.paintInlineImageXObject(args[0]);
+ break;
+
+ case _util.OPS.paintImageMaskXObject:
+ this.paintImageMaskXObject(args[0]);
+ break;
+
+ case _util.OPS.paintFormXObjectBegin:
+ this.paintFormXObjectBegin(args[0], args[1]);
+ break;
+
+ case _util.OPS.paintFormXObjectEnd:
+ this.paintFormXObjectEnd();
+ break;
+
+ case _util.OPS.closePath:
+ this.closePath();
+ break;
+
+ case _util.OPS.closeStroke:
+ this.closeStroke();
+ break;
+
+ case _util.OPS.closeFillStroke:
+ this.closeFillStroke();
+ break;
+
+ case _util.OPS.closeEOFillStroke:
+ this.closeEOFillStroke();
+ break;
+
+ case _util.OPS.nextLine:
+ this.nextLine();
+ break;
+
+ case _util.OPS.transform:
+ this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
+ break;
+
+ case _util.OPS.constructPath:
+ this.constructPath(args[0], args[1]);
+ break;
+
+ case _util.OPS.endPath:
+ this.endPath();
+ break;
+
+ case 92:
+ this.group(opTreeElement.items);
+ break;
+
+ default:
+ (0, _util.warn)(`Unimplemented operator ${fn}`);
+ break;
+ }
+ }
+ }
+
+ setWordSpacing(wordSpacing) {
+ this.current.wordSpacing = wordSpacing;
+ }
+
+ setCharSpacing(charSpacing) {
+ this.current.charSpacing = charSpacing;
+ }
+
+ nextLine() {
+ this.moveText(0, this.current.leading);
+ }
+
+ setTextMatrix(a, b, c, d, e, f) {
+ const current = this.current;
+ current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];
+ current.textMatrixScale = Math.hypot(a, b);
+ current.x = current.lineX = 0;
+ current.y = current.lineY = 0;
+ current.xcoords = [];
+ current.ycoords = [];
+ current.tspan = this.svgFactory.createElement("svg:tspan");
+ current.tspan.setAttributeNS(null, "font-family", current.fontFamily);
+ current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`);
+ current.tspan.setAttributeNS(null, "y", pf(-current.y));
+ current.txtElement = this.svgFactory.createElement("svg:text");
+ current.txtElement.appendChild(current.tspan);
+ }
+
+ beginText() {
+ const current = this.current;
+ current.x = current.lineX = 0;
+ current.y = current.lineY = 0;
+ current.textMatrix = _util.IDENTITY_MATRIX;
+ current.lineMatrix = _util.IDENTITY_MATRIX;
+ current.textMatrixScale = 1;
+ current.tspan = this.svgFactory.createElement("svg:tspan");
+ current.txtElement = this.svgFactory.createElement("svg:text");
+ current.txtgrp = this.svgFactory.createElement("svg:g");
+ current.xcoords = [];
+ current.ycoords = [];
+ }
+
+ moveText(x, y) {
+ const current = this.current;
+ current.x = current.lineX += x;
+ current.y = current.lineY += y;
+ current.xcoords = [];
+ current.ycoords = [];
+ current.tspan = this.svgFactory.createElement("svg:tspan");
+ current.tspan.setAttributeNS(null, "font-family", current.fontFamily);
+ current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`);
+ current.tspan.setAttributeNS(null, "y", pf(-current.y));
+ }
+
+ showText(glyphs) {
+ const current = this.current;
+ const font = current.font;
+ const fontSize = current.fontSize;
+
+ if (fontSize === 0) {
+ return;
+ }
+
+ const fontSizeScale = current.fontSizeScale;
+ const charSpacing = current.charSpacing;
+ const wordSpacing = current.wordSpacing;
+ const fontDirection = current.fontDirection;
+ const textHScale = current.textHScale * fontDirection;
+ const vertical = font.vertical;
+ const spacingDir = vertical ? 1 : -1;
+ const defaultVMetrics = font.defaultVMetrics;
+ const widthAdvanceScale = fontSize * current.fontMatrix[0];
+ let x = 0;
+
+ for (const glyph of glyphs) {
+ if (glyph === null) {
+ x += fontDirection * wordSpacing;
+ continue;
+ } else if (typeof glyph === "number") {
+ x += spacingDir * glyph * fontSize / 1000;
+ continue;
+ }
+
+ const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ const character = glyph.fontChar;
+ let scaledX, scaledY;
+ let width = glyph.width;
+
+ if (vertical) {
+ let vx;
+ const vmetric = glyph.vmetric || defaultVMetrics;
+ vx = glyph.vmetric ? vmetric[1] : width * 0.5;
+ vx = -vx * widthAdvanceScale;
+ const vy = vmetric[2] * widthAdvanceScale;
+ width = vmetric ? -vmetric[0] : width;
+ scaledX = vx / fontSizeScale;
+ scaledY = (x + vy) / fontSizeScale;
+ } else {
+ scaledX = x / fontSizeScale;
+ scaledY = 0;
+ }
+
+ if (glyph.isInFont || font.missingFile) {
+ current.xcoords.push(current.x + scaledX);
+
+ if (vertical) {
+ current.ycoords.push(-current.y + scaledY);
+ }
+
+ current.tspan.textContent += character;
+ } else {}
+
+ let charWidth;
+
+ if (vertical) {
+ charWidth = width * widthAdvanceScale - spacing * fontDirection;
+ } else {
+ charWidth = width * widthAdvanceScale + spacing * fontDirection;
+ }
+
+ x += charWidth;
+ }
+
+ current.tspan.setAttributeNS(null, "x", current.xcoords.map(pf).join(" "));
+
+ if (vertical) {
+ current.tspan.setAttributeNS(null, "y", current.ycoords.map(pf).join(" "));
+ } else {
+ current.tspan.setAttributeNS(null, "y", pf(-current.y));
+ }
+
+ if (vertical) {
+ current.y -= x;
+ } else {
+ current.x += x * textHScale;
+ }
+
+ current.tspan.setAttributeNS(null, "font-family", current.fontFamily);
+ current.tspan.setAttributeNS(null, "font-size", `${pf(current.fontSize)}px`);
+
+ if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
+ current.tspan.setAttributeNS(null, "font-style", current.fontStyle);
+ }
+
+ if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
+ current.tspan.setAttributeNS(null, "font-weight", current.fontWeight);
+ }
+
+ const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
+
+ if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ if (current.fillColor !== SVG_DEFAULTS.fillColor) {
+ current.tspan.setAttributeNS(null, "fill", current.fillColor);
+ }
+
+ if (current.fillAlpha < 1) {
+ current.tspan.setAttributeNS(null, "fill-opacity", current.fillAlpha);
+ }
+ } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
+ current.tspan.setAttributeNS(null, "fill", "transparent");
+ } else {
+ current.tspan.setAttributeNS(null, "fill", "none");
+ }
+
+ if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
+ const lineWidthScale = 1 / (current.textMatrixScale || 1);
+
+ this._setStrokeAttributes(current.tspan, lineWidthScale);
+ }
+
+ let textMatrix = current.textMatrix;
+
+ if (current.textRise !== 0) {
+ textMatrix = textMatrix.slice();
+ textMatrix[5] += current.textRise;
+ }
+
+ current.txtElement.setAttributeNS(null, "transform", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);
+ current.txtElement.setAttributeNS(XML_NS, "xml:space", "preserve");
+ current.txtElement.appendChild(current.tspan);
+ current.txtgrp.appendChild(current.txtElement);
+
+ this._ensureTransformGroup().appendChild(current.txtElement);
+ }
+
+ setLeadingMoveText(x, y) {
+ this.setLeading(-y);
+ this.moveText(x, y);
+ }
+
+ addFontStyle(fontObj) {
+ if (!fontObj.data) {
+ throw new Error("addFontStyle: No font data available, " + 'ensure that the "fontExtraProperties" API parameter is set.');
+ }
+
+ if (!this.cssStyle) {
+ this.cssStyle = this.svgFactory.createElement("svg:style");
+ this.cssStyle.setAttributeNS(null, "type", "text/css");
+ this.defs.appendChild(this.cssStyle);
+ }
+
+ const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);
+ this.cssStyle.textContent += `@font-face { font-family: "${fontObj.loadedName}";` + ` src: url(${url}); }\n`;
+ }
+
+ setFont(details) {
+ const current = this.current;
+ const fontObj = this.commonObjs.get(details[0]);
+ let size = details[1];
+ current.font = fontObj;
+
+ if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {
+ this.addFontStyle(fontObj);
+ this.embeddedFonts[fontObj.loadedName] = fontObj;
+ }
+
+ current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;
+ let bold = "normal";
+
+ if (fontObj.black) {
+ bold = "900";
+ } else if (fontObj.bold) {
+ bold = "bold";
+ }
+
+ const italic = fontObj.italic ? "italic" : "normal";
+
+ if (size < 0) {
+ size = -size;
+ current.fontDirection = -1;
+ } else {
+ current.fontDirection = 1;
+ }
+
+ current.fontSize = size;
+ current.fontFamily = fontObj.loadedName;
+ current.fontWeight = bold;
+ current.fontStyle = italic;
+ current.tspan = this.svgFactory.createElement("svg:tspan");
+ current.tspan.setAttributeNS(null, "y", pf(-current.y));
+ current.xcoords = [];
+ current.ycoords = [];
+ }
+
+ endText() {
+ const current = this.current;
+
+ if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {
+ current.element = current.txtElement;
+ this.clip("nonzero");
+ this.endPath();
+ }
+ }
+
+ setLineWidth(width) {
+ if (width > 0) {
+ this.current.lineWidth = width;
+ }
+ }
+
+ setLineCap(style) {
+ this.current.lineCap = LINE_CAP_STYLES[style];
+ }
+
+ setLineJoin(style) {
+ this.current.lineJoin = LINE_JOIN_STYLES[style];
+ }
+
+ setMiterLimit(limit) {
+ this.current.miterLimit = limit;
+ }
+
+ setStrokeAlpha(strokeAlpha) {
+ this.current.strokeAlpha = strokeAlpha;
+ }
+
+ setStrokeRGBColor(r, g, b) {
+ this.current.strokeColor = _util.Util.makeHexColor(r, g, b);
+ }
+
+ setFillAlpha(fillAlpha) {
+ this.current.fillAlpha = fillAlpha;
+ }
+
+ setFillRGBColor(r, g, b) {
+ this.current.fillColor = _util.Util.makeHexColor(r, g, b);
+ this.current.tspan = this.svgFactory.createElement("svg:tspan");
+ this.current.xcoords = [];
+ this.current.ycoords = [];
+ }
+
+ setStrokeColorN(args) {
+ this.current.strokeColor = this._makeColorN_Pattern(args);
+ }
+
+ setFillColorN(args) {
+ this.current.fillColor = this._makeColorN_Pattern(args);
+ }
+
+ shadingFill(args) {
+ const width = this.viewport.width;
+ const height = this.viewport.height;
+
+ const inv = _util.Util.inverseTransform(this.transformMatrix);
+
+ const bl = _util.Util.applyTransform([0, 0], inv);
+
+ const br = _util.Util.applyTransform([0, height], inv);
+
+ const ul = _util.Util.applyTransform([width, 0], inv);
+
+ const ur = _util.Util.applyTransform([width, height], inv);
+
+ const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+ const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+ const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+ const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+ const rect = this.svgFactory.createElement("svg:rect");
+ rect.setAttributeNS(null, "x", x0);
+ rect.setAttributeNS(null, "y", y0);
+ rect.setAttributeNS(null, "width", x1 - x0);
+ rect.setAttributeNS(null, "height", y1 - y0);
+ rect.setAttributeNS(null, "fill", this._makeShadingPattern(args));
+
+ if (this.current.fillAlpha < 1) {
+ rect.setAttributeNS(null, "fill-opacity", this.current.fillAlpha);
+ }
+
+ this._ensureTransformGroup().appendChild(rect);
+ }
+
+ _makeColorN_Pattern(args) {
+ if (args[0] === "TilingPattern") {
+ return this._makeTilingPattern(args);
+ }
+
+ return this._makeShadingPattern(args);
+ }
+
+ _makeTilingPattern(args) {
+ const color = args[1];
+ const operatorList = args[2];
+ const matrix = args[3] || _util.IDENTITY_MATRIX;
+ const [x0, y0, x1, y1] = args[4];
+ const xstep = args[5];
+ const ystep = args[6];
+ const paintType = args[7];
+ const tilingId = `shading${shadingCount++}`;
+
+ const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]);
+
+ const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);
+
+ const txstep = xstep * xscale;
+ const tystep = ystep * yscale;
+ const tiling = this.svgFactory.createElement("svg:pattern");
+ tiling.setAttributeNS(null, "id", tilingId);
+ tiling.setAttributeNS(null, "patternUnits", "userSpaceOnUse");
+ tiling.setAttributeNS(null, "width", txstep);
+ tiling.setAttributeNS(null, "height", tystep);
+ tiling.setAttributeNS(null, "x", `${tx0}`);
+ tiling.setAttributeNS(null, "y", `${ty0}`);
+ const svg = this.svg;
+ const transformMatrix = this.transformMatrix;
+ const fillColor = this.current.fillColor;
+ const strokeColor = this.current.strokeColor;
+ const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);
+ this.svg = bbox;
+ this.transformMatrix = matrix;
+
+ if (paintType === 2) {
+ const cssColor = _util.Util.makeHexColor(...color);
+
+ this.current.fillColor = cssColor;
+ this.current.strokeColor = cssColor;
+ }
+
+ this.executeOpTree(this.convertOpList(operatorList));
+ this.svg = svg;
+ this.transformMatrix = transformMatrix;
+ this.current.fillColor = fillColor;
+ this.current.strokeColor = strokeColor;
+ tiling.appendChild(bbox.childNodes[0]);
+ this.defs.appendChild(tiling);
+ return `url(#${tilingId})`;
+ }
+
+ _makeShadingPattern(args) {
+ if (typeof args === "string") {
+ args = this.objs.get(args);
+ }
+
+ switch (args[0]) {
+ case "RadialAxial":
+ const shadingId = `shading${shadingCount++}`;
+ const colorStops = args[3];
+ let gradient;
+
+ switch (args[1]) {
+ case "axial":
+ const point0 = args[4];
+ const point1 = args[5];
+ gradient = this.svgFactory.createElement("svg:linearGradient");
+ gradient.setAttributeNS(null, "id", shadingId);
+ gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
+ gradient.setAttributeNS(null, "x1", point0[0]);
+ gradient.setAttributeNS(null, "y1", point0[1]);
+ gradient.setAttributeNS(null, "x2", point1[0]);
+ gradient.setAttributeNS(null, "y2", point1[1]);
+ break;
+
+ case "radial":
+ const focalPoint = args[4];
+ const circlePoint = args[5];
+ const focalRadius = args[6];
+ const circleRadius = args[7];
+ gradient = this.svgFactory.createElement("svg:radialGradient");
+ gradient.setAttributeNS(null, "id", shadingId);
+ gradient.setAttributeNS(null, "gradientUnits", "userSpaceOnUse");
+ gradient.setAttributeNS(null, "cx", circlePoint[0]);
+ gradient.setAttributeNS(null, "cy", circlePoint[1]);
+ gradient.setAttributeNS(null, "r", circleRadius);
+ gradient.setAttributeNS(null, "fx", focalPoint[0]);
+ gradient.setAttributeNS(null, "fy", focalPoint[1]);
+ gradient.setAttributeNS(null, "fr", focalRadius);
+ break;
+
+ default:
+ throw new Error(`Unknown RadialAxial type: ${args[1]}`);
+ }
+
+ for (const colorStop of colorStops) {
+ const stop = this.svgFactory.createElement("svg:stop");
+ stop.setAttributeNS(null, "offset", colorStop[0]);
+ stop.setAttributeNS(null, "stop-color", colorStop[1]);
+ gradient.appendChild(stop);
+ }
+
+ this.defs.appendChild(gradient);
+ return `url(#${shadingId})`;
+
+ case "Mesh":
+ (0, _util.warn)("Unimplemented pattern Mesh");
+ return null;
+
+ case "Dummy":
+ return "hotpink";
+
+ default:
+ throw new Error(`Unknown IR type: ${args[0]}`);
+ }
+ }
+
+ setDash(dashArray, dashPhase) {
+ this.current.dashArray = dashArray;
+ this.current.dashPhase = dashPhase;
+ }
+
+ constructPath(ops, args) {
+ const current = this.current;
+ let x = current.x,
+ y = current.y;
+ let d = [];
+ let j = 0;
+
+ for (const op of ops) {
+ switch (op | 0) {
+ case _util.OPS.rectangle:
+ x = args[j++];
+ y = args[j++];
+ const width = args[j++];
+ const height = args[j++];
+ const xw = x + width;
+ const yh = y + height;
+ d.push("M", pf(x), pf(y), "L", pf(xw), pf(y), "L", pf(xw), pf(yh), "L", pf(x), pf(yh), "Z");
+ break;
+
+ case _util.OPS.moveTo:
+ x = args[j++];
+ y = args[j++];
+ d.push("M", pf(x), pf(y));
+ break;
+
+ case _util.OPS.lineTo:
+ x = args[j++];
+ y = args[j++];
+ d.push("L", pf(x), pf(y));
+ break;
+
+ case _util.OPS.curveTo:
+ x = args[j + 4];
+ y = args[j + 5];
+ d.push("C", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
+ j += 6;
+ break;
+
+ case _util.OPS.curveTo2:
+ d.push("C", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
+ x = args[j + 2];
+ y = args[j + 3];
+ j += 4;
+ break;
+
+ case _util.OPS.curveTo3:
+ x = args[j + 2];
+ y = args[j + 3];
+ d.push("C", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
+ j += 4;
+ break;
+
+ case _util.OPS.closePath:
+ d.push("Z");
+ break;
+ }
+ }
+
+ d = d.join(" ");
+
+ if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {
+ d = current.path.getAttributeNS(null, "d") + d;
+ } else {
+ current.path = this.svgFactory.createElement("svg:path");
+
+ this._ensureTransformGroup().appendChild(current.path);
+ }
+
+ current.path.setAttributeNS(null, "d", d);
+ current.path.setAttributeNS(null, "fill", "none");
+ current.element = current.path;
+ current.setCurrentPoint(x, y);
+ }
+
+ endPath() {
+ const current = this.current;
+ current.path = null;
+
+ if (!this.pendingClip) {
+ return;
+ }
+
+ if (!current.element) {
+ this.pendingClip = null;
+ return;
+ }
+
+ const clipId = `clippath${clipCount++}`;
+ const clipPath = this.svgFactory.createElement("svg:clipPath");
+ clipPath.setAttributeNS(null, "id", clipId);
+ clipPath.setAttributeNS(null, "transform", pm(this.transformMatrix));
+ const clipElement = current.element.cloneNode(true);
+
+ if (this.pendingClip === "evenodd") {
+ clipElement.setAttributeNS(null, "clip-rule", "evenodd");
+ } else {
+ clipElement.setAttributeNS(null, "clip-rule", "nonzero");
+ }
+
+ this.pendingClip = null;
+ clipPath.appendChild(clipElement);
+ this.defs.appendChild(clipPath);
+
+ if (current.activeClipUrl) {
+ current.clipGroup = null;
+
+ for (const prev of this.extraStack) {
+ prev.clipGroup = null;
+ }
+
+ clipPath.setAttributeNS(null, "clip-path", current.activeClipUrl);
+ }
+
+ current.activeClipUrl = `url(#${clipId})`;
+ this.tgrp = null;
+ }
+
+ clip(type) {
+ this.pendingClip = type;
+ }
+
+ closePath() {
+ const current = this.current;
+
+ if (current.path) {
+ const d = `${current.path.getAttributeNS(null, "d")}Z`;
+ current.path.setAttributeNS(null, "d", d);
+ }
+ }
+
+ setLeading(leading) {
+ this.current.leading = -leading;
+ }
+
+ setTextRise(textRise) {
+ this.current.textRise = textRise;
+ }
+
+ setTextRenderingMode(textRenderingMode) {
+ this.current.textRenderingMode = textRenderingMode;
+ }
+
+ setHScale(scale) {
+ this.current.textHScale = scale / 100;
+ }
+
+ setRenderingIntent(intent) {}
+
+ setFlatness(flatness) {}
+
+ setGState(states) {
+ for (const [key, value] of states) {
+ switch (key) {
+ case "LW":
+ this.setLineWidth(value);
+ break;
+
+ case "LC":
+ this.setLineCap(value);
+ break;
+
+ case "LJ":
+ this.setLineJoin(value);
+ break;
+
+ case "ML":
+ this.setMiterLimit(value);
+ break;
+
+ case "D":
+ this.setDash(value[0], value[1]);
+ break;
+
+ case "RI":
+ this.setRenderingIntent(value);
+ break;
+
+ case "FL":
+ this.setFlatness(value);
+ break;
+
+ case "Font":
+ this.setFont(value);
+ break;
+
+ case "CA":
+ this.setStrokeAlpha(value);
+ break;
+
+ case "ca":
+ this.setFillAlpha(value);
+ break;
+
+ default:
+ (0, _util.warn)(`Unimplemented graphic state operator ${key}`);
+ break;
+ }
+ }
+ }
+
+ fill() {
+ const current = this.current;
+
+ if (current.element) {
+ current.element.setAttributeNS(null, "fill", current.fillColor);
+ current.element.setAttributeNS(null, "fill-opacity", current.fillAlpha);
+ this.endPath();
+ }
+ }
+
+ stroke() {
+ const current = this.current;
+
+ if (current.element) {
+ this._setStrokeAttributes(current.element);
+
+ current.element.setAttributeNS(null, "fill", "none");
+ this.endPath();
+ }
+ }
+
+ _setStrokeAttributes(element, lineWidthScale = 1) {
+ const current = this.current;
+ let dashArray = current.dashArray;
+
+ if (lineWidthScale !== 1 && dashArray.length > 0) {
+ dashArray = dashArray.map(function (value) {
+ return lineWidthScale * value;
+ });
+ }
+
+ element.setAttributeNS(null, "stroke", current.strokeColor);
+ element.setAttributeNS(null, "stroke-opacity", current.strokeAlpha);
+ element.setAttributeNS(null, "stroke-miterlimit", pf(current.miterLimit));
+ element.setAttributeNS(null, "stroke-linecap", current.lineCap);
+ element.setAttributeNS(null, "stroke-linejoin", current.lineJoin);
+ element.setAttributeNS(null, "stroke-width", pf(lineWidthScale * current.lineWidth) + "px");
+ element.setAttributeNS(null, "stroke-dasharray", dashArray.map(pf).join(" "));
+ element.setAttributeNS(null, "stroke-dashoffset", pf(lineWidthScale * current.dashPhase) + "px");
+ }
+
+ eoFill() {
+ if (this.current.element) {
+ this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
+ }
+
+ this.fill();
+ }
+
+ fillStroke() {
+ this.stroke();
+ this.fill();
+ }
+
+ eoFillStroke() {
+ if (this.current.element) {
+ this.current.element.setAttributeNS(null, "fill-rule", "evenodd");
+ }
+
+ this.fillStroke();
+ }
+
+ closeStroke() {
+ this.closePath();
+ this.stroke();
+ }
+
+ closeFillStroke() {
+ this.closePath();
+ this.fillStroke();
+ }
+
+ closeEOFillStroke() {
+ this.closePath();
+ this.eoFillStroke();
+ }
+
+ paintSolidColorImageMask() {
+ const rect = this.svgFactory.createElement("svg:rect");
+ rect.setAttributeNS(null, "x", "0");
+ rect.setAttributeNS(null, "y", "0");
+ rect.setAttributeNS(null, "width", "1px");
+ rect.setAttributeNS(null, "height", "1px");
+ rect.setAttributeNS(null, "fill", this.current.fillColor);
+
+ this._ensureTransformGroup().appendChild(rect);
+ }
+
+ paintImageXObject(objId) {
+ const imgData = objId.startsWith("g_") ? this.commonObjs.get(objId) : this.objs.get(objId);
+
+ if (!imgData) {
+ (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);
+ return;
+ }
+
+ this.paintInlineImageXObject(imgData);
+ }
+
+ paintInlineImageXObject(imgData, mask) {
+ const width = imgData.width;
+ const height = imgData.height;
+ const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);
+ const cliprect = this.svgFactory.createElement("svg:rect");
+ cliprect.setAttributeNS(null, "x", "0");
+ cliprect.setAttributeNS(null, "y", "0");
+ cliprect.setAttributeNS(null, "width", pf(width));
+ cliprect.setAttributeNS(null, "height", pf(height));
+ this.current.element = cliprect;
+ this.clip("nonzero");
+ const imgEl = this.svgFactory.createElement("svg:image");
+ imgEl.setAttributeNS(XLINK_NS, "xlink:href", imgSrc);
+ imgEl.setAttributeNS(null, "x", "0");
+ imgEl.setAttributeNS(null, "y", pf(-height));
+ imgEl.setAttributeNS(null, "width", pf(width) + "px");
+ imgEl.setAttributeNS(null, "height", pf(height) + "px");
+ imgEl.setAttributeNS(null, "transform", `scale(${pf(1 / width)} ${pf(-1 / height)})`);
+
+ if (mask) {
+ mask.appendChild(imgEl);
+ } else {
+ this._ensureTransformGroup().appendChild(imgEl);
+ }
+ }
+
+ paintImageMaskXObject(imgData) {
+ const current = this.current;
+ const width = imgData.width;
+ const height = imgData.height;
+ const fillColor = current.fillColor;
+ current.maskId = `mask${maskCount++}`;
+ const mask = this.svgFactory.createElement("svg:mask");
+ mask.setAttributeNS(null, "id", current.maskId);
+ const rect = this.svgFactory.createElement("svg:rect");
+ rect.setAttributeNS(null, "x", "0");
+ rect.setAttributeNS(null, "y", "0");
+ rect.setAttributeNS(null, "width", pf(width));
+ rect.setAttributeNS(null, "height", pf(height));
+ rect.setAttributeNS(null, "fill", fillColor);
+ rect.setAttributeNS(null, "mask", `url(#${current.maskId})`);
+ this.defs.appendChild(mask);
+
+ this._ensureTransformGroup().appendChild(rect);
+
+ this.paintInlineImageXObject(imgData, mask);
+ }
+
+ paintFormXObjectBegin(matrix, bbox) {
+ if (Array.isArray(matrix) && matrix.length === 6) {
+ this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+ }
+
+ if (bbox) {
+ const width = bbox[2] - bbox[0];
+ const height = bbox[3] - bbox[1];
+ const cliprect = this.svgFactory.createElement("svg:rect");
+ cliprect.setAttributeNS(null, "x", bbox[0]);
+ cliprect.setAttributeNS(null, "y", bbox[1]);
+ cliprect.setAttributeNS(null, "width", pf(width));
+ cliprect.setAttributeNS(null, "height", pf(height));
+ this.current.element = cliprect;
+ this.clip("nonzero");
+ this.endPath();
+ }
+ }
+
+ paintFormXObjectEnd() {}
+
+ _initialize(viewport) {
+ const svg = this.svgFactory.create(viewport.width, viewport.height);
+ const definitions = this.svgFactory.createElement("svg:defs");
+ svg.appendChild(definitions);
+ this.defs = definitions;
+ const rootGroup = this.svgFactory.createElement("svg:g");
+ rootGroup.setAttributeNS(null, "transform", pm(viewport.transform));
+ svg.appendChild(rootGroup);
+ this.svg = rootGroup;
+ return svg;
+ }
+
+ _ensureClipGroup() {
+ if (!this.current.clipGroup) {
+ const clipGroup = this.svgFactory.createElement("svg:g");
+ clipGroup.setAttributeNS(null, "clip-path", this.current.activeClipUrl);
+ this.svg.appendChild(clipGroup);
+ this.current.clipGroup = clipGroup;
+ }
+
+ return this.current.clipGroup;
+ }
+
+ _ensureTransformGroup() {
+ if (!this.tgrp) {
+ this.tgrp = this.svgFactory.createElement("svg:g");
+ this.tgrp.setAttributeNS(null, "transform", pm(this.transformMatrix));
+
+ if (this.current.activeClipUrl) {
+ this._ensureClipGroup().appendChild(this.tgrp);
+ } else {
+ this.svg.appendChild(this.tgrp);
+ }
+ }
+
+ return this.tgrp;
+ }
+
+ };
+}
+
+/***/ }),
+/* 23 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.PDFNodeStream = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _network_utils = __w_pdfjs_require__(24);
+
+;
+
+const fs = require("fs");
+
+const http = require("http");
+
+const https = require("https");
+
+const url = require("url");
+
+const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//;
+
+function parseUrl(sourceUrl) {
+ const parsedUrl = url.parse(sourceUrl);
+
+ if (parsedUrl.protocol === "file:" || parsedUrl.host) {
+ return parsedUrl;
+ }
+
+ if (/^[a-z]:[/\\]/i.test(sourceUrl)) {
+ return url.parse(`file:///${sourceUrl}`);
+ }
+
+ if (!parsedUrl.host) {
+ parsedUrl.protocol = "file:";
+ }
+
+ return parsedUrl;
+}
+
+class PDFNodeStream {
+ constructor(source) {
+ this.source = source;
+ this.url = parseUrl(source.url);
+ this.isHttp = this.url.protocol === "http:" || this.url.protocol === "https:";
+ this.isFsUrl = this.url.protocol === "file:";
+ this.httpHeaders = this.isHttp && source.httpHeaders || {};
+ this._fullRequestReader = null;
+ this._rangeRequestReaders = [];
+ }
+
+ get _progressiveDataLength() {
+ return this._fullRequestReader?._loaded ?? 0;
+ }
+
+ getFullReader() {
+ (0, _util.assert)(!this._fullRequestReader, "PDFNodeStream.getFullReader can only be called once.");
+ this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);
+ return this._fullRequestReader;
+ }
+
+ getRangeReader(start, end) {
+ if (end <= this._progressiveDataLength) {
+ return null;
+ }
+
+ const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);
+
+ this._rangeRequestReaders.push(rangeReader);
+
+ return rangeReader;
+ }
+
+ cancelAllRequests(reason) {
+ if (this._fullRequestReader) {
+ this._fullRequestReader.cancel(reason);
+ }
+
+ for (const reader of this._rangeRequestReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+ }
+
+}
+
+exports.PDFNodeStream = PDFNodeStream;
+
+class BaseFullReader {
+ constructor(stream) {
+ this._url = stream.url;
+ this._done = false;
+ this._storedError = null;
+ this.onProgress = null;
+ const source = stream.source;
+ this._contentLength = source.length;
+ this._loaded = 0;
+ this._filename = null;
+ this._disableRange = source.disableRange || false;
+ this._rangeChunkSize = source.rangeChunkSize;
+
+ if (!this._rangeChunkSize && !this._disableRange) {
+ this._disableRange = true;
+ }
+
+ this._isStreamingSupported = !source.disableStream;
+ this._isRangeSupported = !source.disableRange;
+ this._readableStream = null;
+ this._readCapability = (0, _util.createPromiseCapability)();
+ this._headersCapability = (0, _util.createPromiseCapability)();
+ }
+
+ get headersReady() {
+ return this._headersCapability.promise;
+ }
+
+ get filename() {
+ return this._filename;
+ }
+
+ get contentLength() {
+ return this._contentLength;
+ }
+
+ get isRangeSupported() {
+ return this._isRangeSupported;
+ }
+
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+
+ async read() {
+ await this._readCapability.promise;
+
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ if (this._storedError) {
+ throw this._storedError;
+ }
+
+ const chunk = this._readableStream.read();
+
+ if (chunk === null) {
+ this._readCapability = (0, _util.createPromiseCapability)();
+ return this.read();
+ }
+
+ this._loaded += chunk.length;
+
+ if (this.onProgress) {
+ this.onProgress({
+ loaded: this._loaded,
+ total: this._contentLength
+ });
+ }
+
+ const buffer = new Uint8Array(chunk).buffer;
+ return {
+ value: buffer,
+ done: false
+ };
+ }
+
+ cancel(reason) {
+ if (!this._readableStream) {
+ this._error(reason);
+
+ return;
+ }
+
+ this._readableStream.destroy(reason);
+ }
+
+ _error(reason) {
+ this._storedError = reason;
+
+ this._readCapability.resolve();
+ }
+
+ _setReadableStream(readableStream) {
+ this._readableStream = readableStream;
+ readableStream.on("readable", () => {
+ this._readCapability.resolve();
+ });
+ readableStream.on("end", () => {
+ readableStream.destroy();
+ this._done = true;
+
+ this._readCapability.resolve();
+ });
+ readableStream.on("error", reason => {
+ this._error(reason);
+ });
+
+ if (!this._isStreamingSupported && this._isRangeSupported) {
+ this._error(new _util.AbortException("streaming is disabled"));
+ }
+
+ if (this._storedError) {
+ this._readableStream.destroy(this._storedError);
+ }
+ }
+
+}
+
+class BaseRangeReader {
+ constructor(stream) {
+ this._url = stream.url;
+ this._done = false;
+ this._storedError = null;
+ this.onProgress = null;
+ this._loaded = 0;
+ this._readableStream = null;
+ this._readCapability = (0, _util.createPromiseCapability)();
+ const source = stream.source;
+ this._isStreamingSupported = !source.disableStream;
+ }
+
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+
+ async read() {
+ await this._readCapability.promise;
+
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ if (this._storedError) {
+ throw this._storedError;
+ }
+
+ const chunk = this._readableStream.read();
+
+ if (chunk === null) {
+ this._readCapability = (0, _util.createPromiseCapability)();
+ return this.read();
+ }
+
+ this._loaded += chunk.length;
+
+ if (this.onProgress) {
+ this.onProgress({
+ loaded: this._loaded
+ });
+ }
+
+ const buffer = new Uint8Array(chunk).buffer;
+ return {
+ value: buffer,
+ done: false
+ };
+ }
+
+ cancel(reason) {
+ if (!this._readableStream) {
+ this._error(reason);
+
+ return;
+ }
+
+ this._readableStream.destroy(reason);
+ }
+
+ _error(reason) {
+ this._storedError = reason;
+
+ this._readCapability.resolve();
+ }
+
+ _setReadableStream(readableStream) {
+ this._readableStream = readableStream;
+ readableStream.on("readable", () => {
+ this._readCapability.resolve();
+ });
+ readableStream.on("end", () => {
+ readableStream.destroy();
+ this._done = true;
+
+ this._readCapability.resolve();
+ });
+ readableStream.on("error", reason => {
+ this._error(reason);
+ });
+
+ if (this._storedError) {
+ this._readableStream.destroy(this._storedError);
+ }
+ }
+
+}
+
+function createRequestOptions(parsedUrl, headers) {
+ return {
+ protocol: parsedUrl.protocol,
+ auth: parsedUrl.auth,
+ host: parsedUrl.hostname,
+ port: parsedUrl.port,
+ path: parsedUrl.path,
+ method: "GET",
+ headers
+ };
+}
+
+class PDFNodeStreamFullReader extends BaseFullReader {
+ constructor(stream) {
+ super(stream);
+
+ const handleResponse = response => {
+ if (response.statusCode === 404) {
+ const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`);
+ this._storedError = error;
+
+ this._headersCapability.reject(error);
+
+ return;
+ }
+
+ this._headersCapability.resolve();
+
+ this._setReadableStream(response);
+
+ const getResponseHeader = name => {
+ return this._readableStream.headers[name.toLowerCase()];
+ };
+
+ const {
+ allowRangeRequests,
+ suggestedLength
+ } = (0, _network_utils.validateRangeRequestCapabilities)({
+ getResponseHeader,
+ isHttp: stream.isHttp,
+ rangeChunkSize: this._rangeChunkSize,
+ disableRange: this._disableRange
+ });
+ this._isRangeSupported = allowRangeRequests;
+ this._contentLength = suggestedLength || this._contentLength;
+ this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
+ };
+
+ this._request = null;
+
+ if (this._url.protocol === "http:") {
+ this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);
+ } else {
+ this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);
+ }
+
+ this._request.on("error", reason => {
+ this._storedError = reason;
+
+ this._headersCapability.reject(reason);
+ });
+
+ this._request.end();
+ }
+
+}
+
+class PDFNodeStreamRangeReader extends BaseRangeReader {
+ constructor(stream, start, end) {
+ super(stream);
+ this._httpHeaders = {};
+
+ for (const property in stream.httpHeaders) {
+ const value = stream.httpHeaders[property];
+
+ if (typeof value === "undefined") {
+ continue;
+ }
+
+ this._httpHeaders[property] = value;
+ }
+
+ this._httpHeaders.Range = `bytes=${start}-${end - 1}`;
+
+ const handleResponse = response => {
+ if (response.statusCode === 404) {
+ const error = new _util.MissingPDFException(`Missing PDF "${this._url}".`);
+ this._storedError = error;
+ return;
+ }
+
+ this._setReadableStream(response);
+ };
+
+ this._request = null;
+
+ if (this._url.protocol === "http:") {
+ this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
+ } else {
+ this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);
+ }
+
+ this._request.on("error", reason => {
+ this._storedError = reason;
+ });
+
+ this._request.end();
+ }
+
+}
+
+class PDFNodeStreamFsFullReader extends BaseFullReader {
+ constructor(stream) {
+ super(stream);
+ let path = decodeURIComponent(this._url.path);
+
+ if (fileUriRegex.test(this._url.href)) {
+ path = path.replace(/^\//, "");
+ }
+
+ fs.lstat(path, (error, stat) => {
+ if (error) {
+ if (error.code === "ENOENT") {
+ error = new _util.MissingPDFException(`Missing PDF "${path}".`);
+ }
+
+ this._storedError = error;
+
+ this._headersCapability.reject(error);
+
+ return;
+ }
+
+ this._contentLength = stat.size;
+
+ this._setReadableStream(fs.createReadStream(path));
+
+ this._headersCapability.resolve();
+ });
+ }
+
+}
+
+class PDFNodeStreamFsRangeReader extends BaseRangeReader {
+ constructor(stream, start, end) {
+ super(stream);
+ let path = decodeURIComponent(this._url.path);
+
+ if (fileUriRegex.test(this._url.href)) {
+ path = path.replace(/^\//, "");
+ }
+
+ this._setReadableStream(fs.createReadStream(path, {
+ start,
+ end: end - 1
+ }));
+ }
+
+}
+
+/***/ }),
+/* 24 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.createResponseStatusError = createResponseStatusError;
+exports.extractFilenameFromHeader = extractFilenameFromHeader;
+exports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;
+exports.validateResponseStatus = validateResponseStatus;
+
+var _util = __w_pdfjs_require__(1);
+
+var _content_disposition = __w_pdfjs_require__(25);
+
+var _display_utils = __w_pdfjs_require__(5);
+
+function validateRangeRequestCapabilities({
+ getResponseHeader,
+ isHttp,
+ rangeChunkSize,
+ disableRange
+}) {
+ (0, _util.assert)(rangeChunkSize > 0, "Range chunk size must be larger than zero");
+ const returnValues = {
+ allowRangeRequests: false,
+ suggestedLength: undefined
+ };
+ const length = parseInt(getResponseHeader("Content-Length"), 10);
+
+ if (!Number.isInteger(length)) {
+ return returnValues;
+ }
+
+ returnValues.suggestedLength = length;
+
+ if (length <= 2 * rangeChunkSize) {
+ return returnValues;
+ }
+
+ if (disableRange || !isHttp) {
+ return returnValues;
+ }
+
+ if (getResponseHeader("Accept-Ranges") !== "bytes") {
+ return returnValues;
+ }
+
+ const contentEncoding = getResponseHeader("Content-Encoding") || "identity";
+
+ if (contentEncoding !== "identity") {
+ return returnValues;
+ }
+
+ returnValues.allowRangeRequests = true;
+ return returnValues;
+}
+
+function extractFilenameFromHeader(getResponseHeader) {
+ const contentDisposition = getResponseHeader("Content-Disposition");
+
+ if (contentDisposition) {
+ let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);
+
+ if (filename.includes("%")) {
+ try {
+ filename = decodeURIComponent(filename);
+ } catch (ex) {}
+ }
+
+ if ((0, _display_utils.isPdfFile)(filename)) {
+ return filename;
+ }
+ }
+
+ return null;
+}
+
+function createResponseStatusError(status, url) {
+ if (status === 404 || status === 0 && url.startsWith("file:")) {
+ return new _util.MissingPDFException('Missing PDF "' + url + '".');
+ }
+
+ return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF "${url}".`, status);
+}
+
+function validateResponseStatus(status) {
+ return status === 200 || status === 206;
+}
+
+/***/ }),
+/* 25 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;
+
+var _util = __w_pdfjs_require__(1);
+
+function getFilenameFromContentDispositionHeader(contentDisposition) {
+ let needsEncodingFixup = true;
+ let tmp = toParamRegExp("filename\\*", "i").exec(contentDisposition);
+
+ if (tmp) {
+ tmp = tmp[1];
+ let filename = rfc2616unquote(tmp);
+ filename = unescape(filename);
+ filename = rfc5987decode(filename);
+ filename = rfc2047decode(filename);
+ return fixupEncoding(filename);
+ }
+
+ tmp = rfc2231getparam(contentDisposition);
+
+ if (tmp) {
+ const filename = rfc2047decode(tmp);
+ return fixupEncoding(filename);
+ }
+
+ tmp = toParamRegExp("filename", "i").exec(contentDisposition);
+
+ if (tmp) {
+ tmp = tmp[1];
+ let filename = rfc2616unquote(tmp);
+ filename = rfc2047decode(filename);
+ return fixupEncoding(filename);
+ }
+
+ function toParamRegExp(attributePattern, flags) {
+ return new RegExp("(?:^|;)\\s*" + attributePattern + "\\s*=\\s*" + "(" + '[^";\\s][^;\\s]*' + "|" + '"(?:[^"\\\\]|\\\\"?)+"?' + ")", flags);
+ }
+
+ function textdecode(encoding, value) {
+ if (encoding) {
+ if (!/^[\x00-\xFF]+$/.test(value)) {
+ return value;
+ }
+
+ try {
+ const decoder = new TextDecoder(encoding, {
+ fatal: true
+ });
+ const buffer = (0, _util.stringToBytes)(value);
+ value = decoder.decode(buffer);
+ needsEncodingFixup = false;
+ } catch (e) {}
+ }
+
+ return value;
+ }
+
+ function fixupEncoding(value) {
+ if (needsEncodingFixup && /[\x80-\xff]/.test(value)) {
+ value = textdecode("utf-8", value);
+
+ if (needsEncodingFixup) {
+ value = textdecode("iso-8859-1", value);
+ }
+ }
+
+ return value;
+ }
+
+ function rfc2231getparam(contentDispositionStr) {
+ const matches = [];
+ let match;
+ const iter = toParamRegExp("filename\\*((?!0\\d)\\d+)(\\*?)", "ig");
+
+ while ((match = iter.exec(contentDispositionStr)) !== null) {
+ let [, n, quot, part] = match;
+ n = parseInt(n, 10);
+
+ if (n in matches) {
+ if (n === 0) {
+ break;
+ }
+
+ continue;
+ }
+
+ matches[n] = [quot, part];
+ }
+
+ const parts = [];
+
+ for (let n = 0; n < matches.length; ++n) {
+ if (!(n in matches)) {
+ break;
+ }
+
+ let [quot, part] = matches[n];
+ part = rfc2616unquote(part);
+
+ if (quot) {
+ part = unescape(part);
+
+ if (n === 0) {
+ part = rfc5987decode(part);
+ }
+ }
+
+ parts.push(part);
+ }
+
+ return parts.join("");
+ }
+
+ function rfc2616unquote(value) {
+ if (value.startsWith('"')) {
+ const parts = value.slice(1).split('\\"');
+
+ for (let i = 0; i < parts.length; ++i) {
+ const quotindex = parts[i].indexOf('"');
+
+ if (quotindex !== -1) {
+ parts[i] = parts[i].slice(0, quotindex);
+ parts.length = i + 1;
+ }
+
+ parts[i] = parts[i].replace(/\\(.)/g, "$1");
+ }
+
+ value = parts.join('"');
+ }
+
+ return value;
+ }
+
+ function rfc5987decode(extvalue) {
+ const encodingend = extvalue.indexOf("'");
+
+ if (encodingend === -1) {
+ return extvalue;
+ }
+
+ const encoding = extvalue.slice(0, encodingend);
+ const langvalue = extvalue.slice(encodingend + 1);
+ const value = langvalue.replace(/^[^']*'/, "");
+ return textdecode(encoding, value);
+ }
+
+ function rfc2047decode(value) {
+ if (!value.startsWith("=?") || /[\x00-\x19\x80-\xff]/.test(value)) {
+ return value;
+ }
+
+ return value.replace(/=\?([\w-]*)\?([QqBb])\?((?:[^?]|\?(?!=))*)\?=/g, function (matches, charset, encoding, text) {
+ if (encoding === "q" || encoding === "Q") {
+ text = text.replace(/_/g, " ");
+ text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {
+ return String.fromCharCode(parseInt(hex, 16));
+ });
+ return textdecode(charset, text);
+ }
+
+ try {
+ text = atob(text);
+ } catch (e) {}
+
+ return textdecode(charset, text);
+ });
+ }
+
+ return "";
+}
+
+/***/ }),
+/* 26 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.PDFNetworkStream = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _network_utils = __w_pdfjs_require__(24);
+
+;
+const OK_RESPONSE = 200;
+const PARTIAL_CONTENT_RESPONSE = 206;
+
+function getArrayBuffer(xhr) {
+ const data = xhr.response;
+
+ if (typeof data !== "string") {
+ return data;
+ }
+
+ const array = (0, _util.stringToBytes)(data);
+ return array.buffer;
+}
+
+class NetworkManager {
+ constructor(url, args = {}) {
+ this.url = url;
+ this.isHttp = /^https?:/i.test(url);
+ this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);
+ this.withCredentials = args.withCredentials || false;
+
+ this.getXhr = args.getXhr || function NetworkManager_getXhr() {
+ return new XMLHttpRequest();
+ };
+
+ this.currXhrId = 0;
+ this.pendingRequests = Object.create(null);
+ }
+
+ requestRange(begin, end, listeners) {
+ const args = {
+ begin,
+ end
+ };
+
+ for (const prop in listeners) {
+ args[prop] = listeners[prop];
+ }
+
+ return this.request(args);
+ }
+
+ requestFull(listeners) {
+ return this.request(listeners);
+ }
+
+ request(args) {
+ const xhr = this.getXhr();
+ const xhrId = this.currXhrId++;
+ const pendingRequest = this.pendingRequests[xhrId] = {
+ xhr
+ };
+ xhr.open("GET", this.url);
+ xhr.withCredentials = this.withCredentials;
+
+ for (const property in this.httpHeaders) {
+ const value = this.httpHeaders[property];
+
+ if (typeof value === "undefined") {
+ continue;
+ }
+
+ xhr.setRequestHeader(property, value);
+ }
+
+ if (this.isHttp && "begin" in args && "end" in args) {
+ xhr.setRequestHeader("Range", `bytes=${args.begin}-${args.end - 1}`);
+ pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;
+ } else {
+ pendingRequest.expectedStatus = OK_RESPONSE;
+ }
+
+ xhr.responseType = "arraybuffer";
+
+ if (args.onError) {
+ xhr.onerror = function (evt) {
+ args.onError(xhr.status);
+ };
+ }
+
+ xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);
+ xhr.onprogress = this.onProgress.bind(this, xhrId);
+ pendingRequest.onHeadersReceived = args.onHeadersReceived;
+ pendingRequest.onDone = args.onDone;
+ pendingRequest.onError = args.onError;
+ pendingRequest.onProgress = args.onProgress;
+ xhr.send(null);
+ return xhrId;
+ }
+
+ onProgress(xhrId, evt) {
+ const pendingRequest = this.pendingRequests[xhrId];
+
+ if (!pendingRequest) {
+ return;
+ }
+
+ pendingRequest.onProgress?.(evt);
+ }
+
+ onStateChange(xhrId, evt) {
+ const pendingRequest = this.pendingRequests[xhrId];
+
+ if (!pendingRequest) {
+ return;
+ }
+
+ const xhr = pendingRequest.xhr;
+
+ if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {
+ pendingRequest.onHeadersReceived();
+ delete pendingRequest.onHeadersReceived;
+ }
+
+ if (xhr.readyState !== 4) {
+ return;
+ }
+
+ if (!(xhrId in this.pendingRequests)) {
+ return;
+ }
+
+ delete this.pendingRequests[xhrId];
+
+ if (xhr.status === 0 && this.isHttp) {
+ pendingRequest.onError?.(xhr.status);
+ return;
+ }
+
+ const xhrStatus = xhr.status || OK_RESPONSE;
+ const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;
+
+ if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {
+ pendingRequest.onError?.(xhr.status);
+ return;
+ }
+
+ const chunk = getArrayBuffer(xhr);
+
+ if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {
+ const rangeHeader = xhr.getResponseHeader("Content-Range");
+ const matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader);
+ pendingRequest.onDone({
+ begin: parseInt(matches[1], 10),
+ chunk
+ });
+ } else if (chunk) {
+ pendingRequest.onDone({
+ begin: 0,
+ chunk
+ });
+ } else {
+ pendingRequest.onError?.(xhr.status);
+ }
+ }
+
+ getRequestXhr(xhrId) {
+ return this.pendingRequests[xhrId].xhr;
+ }
+
+ isPendingRequest(xhrId) {
+ return xhrId in this.pendingRequests;
+ }
+
+ abortRequest(xhrId) {
+ const xhr = this.pendingRequests[xhrId].xhr;
+ delete this.pendingRequests[xhrId];
+ xhr.abort();
+ }
+
+}
+
+class PDFNetworkStream {
+ constructor(source) {
+ this._source = source;
+ this._manager = new NetworkManager(source.url, {
+ httpHeaders: source.httpHeaders,
+ withCredentials: source.withCredentials
+ });
+ this._rangeChunkSize = source.rangeChunkSize;
+ this._fullRequestReader = null;
+ this._rangeRequestReaders = [];
+ }
+
+ _onRangeRequestReaderClosed(reader) {
+ const i = this._rangeRequestReaders.indexOf(reader);
+
+ if (i >= 0) {
+ this._rangeRequestReaders.splice(i, 1);
+ }
+ }
+
+ getFullReader() {
+ (0, _util.assert)(!this._fullRequestReader, "PDFNetworkStream.getFullReader can only be called once.");
+ this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);
+ return this._fullRequestReader;
+ }
+
+ getRangeReader(begin, end) {
+ const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);
+ reader.onClosed = this._onRangeRequestReaderClosed.bind(this);
+
+ this._rangeRequestReaders.push(reader);
+
+ return reader;
+ }
+
+ cancelAllRequests(reason) {
+ this._fullRequestReader?.cancel(reason);
+
+ for (const reader of this._rangeRequestReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+ }
+
+}
+
+exports.PDFNetworkStream = PDFNetworkStream;
+
+class PDFNetworkStreamFullRequestReader {
+ constructor(manager, source) {
+ this._manager = manager;
+ const args = {
+ onHeadersReceived: this._onHeadersReceived.bind(this),
+ onDone: this._onDone.bind(this),
+ onError: this._onError.bind(this),
+ onProgress: this._onProgress.bind(this)
+ };
+ this._url = source.url;
+ this._fullRequestId = manager.requestFull(args);
+ this._headersReceivedCapability = (0, _util.createPromiseCapability)();
+ this._disableRange = source.disableRange || false;
+ this._contentLength = source.length;
+ this._rangeChunkSize = source.rangeChunkSize;
+
+ if (!this._rangeChunkSize && !this._disableRange) {
+ this._disableRange = true;
+ }
+
+ this._isStreamingSupported = false;
+ this._isRangeSupported = false;
+ this._cachedChunks = [];
+ this._requests = [];
+ this._done = false;
+ this._storedError = undefined;
+ this._filename = null;
+ this.onProgress = null;
+ }
+
+ _onHeadersReceived() {
+ const fullRequestXhrId = this._fullRequestId;
+
+ const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);
+
+ const getResponseHeader = name => {
+ return fullRequestXhr.getResponseHeader(name);
+ };
+
+ const {
+ allowRangeRequests,
+ suggestedLength
+ } = (0, _network_utils.validateRangeRequestCapabilities)({
+ getResponseHeader,
+ isHttp: this._manager.isHttp,
+ rangeChunkSize: this._rangeChunkSize,
+ disableRange: this._disableRange
+ });
+
+ if (allowRangeRequests) {
+ this._isRangeSupported = true;
+ }
+
+ this._contentLength = suggestedLength || this._contentLength;
+ this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
+
+ if (this._isRangeSupported) {
+ this._manager.abortRequest(fullRequestXhrId);
+ }
+
+ this._headersReceivedCapability.resolve();
+ }
+
+ _onDone(data) {
+ if (data) {
+ if (this._requests.length > 0) {
+ const requestCapability = this._requests.shift();
+
+ requestCapability.resolve({
+ value: data.chunk,
+ done: false
+ });
+ } else {
+ this._cachedChunks.push(data.chunk);
+ }
+ }
+
+ this._done = true;
+
+ if (this._cachedChunks.length > 0) {
+ return;
+ }
+
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+
+ this._requests.length = 0;
+ }
+
+ _onError(status) {
+ this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);
+
+ this._headersReceivedCapability.reject(this._storedError);
+
+ for (const requestCapability of this._requests) {
+ requestCapability.reject(this._storedError);
+ }
+
+ this._requests.length = 0;
+ this._cachedChunks.length = 0;
+ }
+
+ _onProgress(evt) {
+ this.onProgress?.({
+ loaded: evt.loaded,
+ total: evt.lengthComputable ? evt.total : this._contentLength
+ });
+ }
+
+ get filename() {
+ return this._filename;
+ }
+
+ get isRangeSupported() {
+ return this._isRangeSupported;
+ }
+
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+
+ get contentLength() {
+ return this._contentLength;
+ }
+
+ get headersReady() {
+ return this._headersReceivedCapability.promise;
+ }
+
+ async read() {
+ if (this._storedError) {
+ throw this._storedError;
+ }
+
+ if (this._cachedChunks.length > 0) {
+ const chunk = this._cachedChunks.shift();
+
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ const requestCapability = (0, _util.createPromiseCapability)();
+
+ this._requests.push(requestCapability);
+
+ return requestCapability.promise;
+ }
+
+ cancel(reason) {
+ this._done = true;
+
+ this._headersReceivedCapability.reject(reason);
+
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+
+ this._requests.length = 0;
+
+ if (this._manager.isPendingRequest(this._fullRequestId)) {
+ this._manager.abortRequest(this._fullRequestId);
+ }
+
+ this._fullRequestReader = null;
+ }
+
+}
+
+class PDFNetworkStreamRangeRequestReader {
+ constructor(manager, begin, end) {
+ this._manager = manager;
+ const args = {
+ onDone: this._onDone.bind(this),
+ onError: this._onError.bind(this),
+ onProgress: this._onProgress.bind(this)
+ };
+ this._url = manager.url;
+ this._requestId = manager.requestRange(begin, end, args);
+ this._requests = [];
+ this._queuedChunk = null;
+ this._done = false;
+ this._storedError = undefined;
+ this.onProgress = null;
+ this.onClosed = null;
+ }
+
+ _close() {
+ this.onClosed?.(this);
+ }
+
+ _onDone(data) {
+ const chunk = data.chunk;
+
+ if (this._requests.length > 0) {
+ const requestCapability = this._requests.shift();
+
+ requestCapability.resolve({
+ value: chunk,
+ done: false
+ });
+ } else {
+ this._queuedChunk = chunk;
+ }
+
+ this._done = true;
+
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+
+ this._requests.length = 0;
+
+ this._close();
+ }
+
+ _onError(status) {
+ this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);
+
+ for (const requestCapability of this._requests) {
+ requestCapability.reject(this._storedError);
+ }
+
+ this._requests.length = 0;
+ this._queuedChunk = null;
+ }
+
+ _onProgress(evt) {
+ if (!this.isStreamingSupported) {
+ this.onProgress?.({
+ loaded: evt.loaded
+ });
+ }
+ }
+
+ get isStreamingSupported() {
+ return false;
+ }
+
+ async read() {
+ if (this._storedError) {
+ throw this._storedError;
+ }
+
+ if (this._queuedChunk !== null) {
+ const chunk = this._queuedChunk;
+ this._queuedChunk = null;
+ return {
+ value: chunk,
+ done: false
+ };
+ }
+
+ if (this._done) {
+ return {
+ value: undefined,
+ done: true
+ };
+ }
+
+ const requestCapability = (0, _util.createPromiseCapability)();
+
+ this._requests.push(requestCapability);
+
+ return requestCapability.promise;
+ }
+
+ cancel(reason) {
+ this._done = true;
+
+ for (const requestCapability of this._requests) {
+ requestCapability.resolve({
+ value: undefined,
+ done: true
+ });
+ }
+
+ this._requests.length = 0;
+
+ if (this._manager.isPendingRequest(this._requestId)) {
+ this._manager.abortRequest(this._requestId);
+ }
+
+ this._close();
+ }
+
+}
+
+/***/ }),
+/* 27 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+exports.PDFFetchStream = void 0;
+
+var _util = __w_pdfjs_require__(1);
+
+var _network_utils = __w_pdfjs_require__(24);
+
+;
+
+function createFetchOptions(headers, withCredentials, abortController) {
+ return {
+ method: "GET",
+ headers,
+ signal: abortController?.signal,
+ mode: "cors",
+ credentials: withCredentials ? "include" : "same-origin",
+ redirect: "follow"
+ };
+}
+
+function createHeaders(httpHeaders) {
+ const headers = new Headers();
+
+ for (const property in httpHeaders) {
+ const value = httpHeaders[property];
+
+ if (typeof value === "undefined") {
+ continue;
+ }
+
+ headers.append(property, value);
+ }
+
+ return headers;
+}
+
+class PDFFetchStream {
+ constructor(source) {
+ this.source = source;
+ this.isHttp = /^https?:/i.test(source.url);
+ this.httpHeaders = this.isHttp && source.httpHeaders || {};
+ this._fullRequestReader = null;
+ this._rangeRequestReaders = [];
+ }
+
+ get _progressiveDataLength() {
+ return this._fullRequestReader?._loaded ?? 0;
+ }
+
+ getFullReader() {
+ (0, _util.assert)(!this._fullRequestReader, "PDFFetchStream.getFullReader can only be called once.");
+ this._fullRequestReader = new PDFFetchStreamReader(this);
+ return this._fullRequestReader;
+ }
+
+ getRangeReader(begin, end) {
+ if (end <= this._progressiveDataLength) {
+ return null;
+ }
+
+ const reader = new PDFFetchStreamRangeReader(this, begin, end);
+
+ this._rangeRequestReaders.push(reader);
+
+ return reader;
+ }
+
+ cancelAllRequests(reason) {
+ if (this._fullRequestReader) {
+ this._fullRequestReader.cancel(reason);
+ }
+
+ for (const reader of this._rangeRequestReaders.slice(0)) {
+ reader.cancel(reason);
+ }
+ }
+
+}
+
+exports.PDFFetchStream = PDFFetchStream;
+
+class PDFFetchStreamReader {
+ constructor(stream) {
+ this._stream = stream;
+ this._reader = null;
+ this._loaded = 0;
+ this._filename = null;
+ const source = stream.source;
+ this._withCredentials = source.withCredentials || false;
+ this._contentLength = source.length;
+ this._headersCapability = (0, _util.createPromiseCapability)();
+ this._disableRange = source.disableRange || false;
+ this._rangeChunkSize = source.rangeChunkSize;
+
+ if (!this._rangeChunkSize && !this._disableRange) {
+ this._disableRange = true;
+ }
+
+ if (typeof AbortController !== "undefined") {
+ this._abortController = new AbortController();
+ }
+
+ this._isStreamingSupported = !source.disableStream;
+ this._isRangeSupported = !source.disableRange;
+ this._headers = createHeaders(this._stream.httpHeaders);
+ const url = source.url;
+ fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {
+ if (!(0, _network_utils.validateResponseStatus)(response.status)) {
+ throw (0, _network_utils.createResponseStatusError)(response.status, url);
+ }
+
+ this._reader = response.body.getReader();
+
+ this._headersCapability.resolve();
+
+ const getResponseHeader = name => {
+ return response.headers.get(name);
+ };
+
+ const {
+ allowRangeRequests,
+ suggestedLength
+ } = (0, _network_utils.validateRangeRequestCapabilities)({
+ getResponseHeader,
+ isHttp: this._stream.isHttp,
+ rangeChunkSize: this._rangeChunkSize,
+ disableRange: this._disableRange
+ });
+ this._isRangeSupported = allowRangeRequests;
+ this._contentLength = suggestedLength || this._contentLength;
+ this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);
+
+ if (!this._isStreamingSupported && this._isRangeSupported) {
+ this.cancel(new _util.AbortException("Streaming is disabled."));
+ }
+ }).catch(this._headersCapability.reject);
+ this.onProgress = null;
+ }
+
+ get headersReady() {
+ return this._headersCapability.promise;
+ }
+
+ get filename() {
+ return this._filename;
+ }
+
+ get contentLength() {
+ return this._contentLength;
+ }
+
+ get isRangeSupported() {
+ return this._isRangeSupported;
+ }
+
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+
+ async read() {
+ await this._headersCapability.promise;
+ const {
+ value,
+ done
+ } = await this._reader.read();
+
+ if (done) {
+ return {
+ value,
+ done
+ };
+ }
+
+ this._loaded += value.byteLength;
+
+ if (this.onProgress) {
+ this.onProgress({
+ loaded: this._loaded,
+ total: this._contentLength
+ });
+ }
+
+ const buffer = new Uint8Array(value).buffer;
+ return {
+ value: buffer,
+ done: false
+ };
+ }
+
+ cancel(reason) {
+ if (this._reader) {
+ this._reader.cancel(reason);
+ }
+
+ if (this._abortController) {
+ this._abortController.abort();
+ }
+ }
+
+}
+
+class PDFFetchStreamRangeReader {
+ constructor(stream, begin, end) {
+ this._stream = stream;
+ this._reader = null;
+ this._loaded = 0;
+ const source = stream.source;
+ this._withCredentials = source.withCredentials || false;
+ this._readCapability = (0, _util.createPromiseCapability)();
+ this._isStreamingSupported = !source.disableStream;
+
+ if (typeof AbortController !== "undefined") {
+ this._abortController = new AbortController();
+ }
+
+ this._headers = createHeaders(this._stream.httpHeaders);
+
+ this._headers.append("Range", `bytes=${begin}-${end - 1}`);
+
+ const url = source.url;
+ fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {
+ if (!(0, _network_utils.validateResponseStatus)(response.status)) {
+ throw (0, _network_utils.createResponseStatusError)(response.status, url);
+ }
+
+ this._readCapability.resolve();
+
+ this._reader = response.body.getReader();
+ }).catch(this._readCapability.reject);
+ this.onProgress = null;
+ }
+
+ get isStreamingSupported() {
+ return this._isStreamingSupported;
+ }
+
+ async read() {
+ await this._readCapability.promise;
+ const {
+ value,
+ done
+ } = await this._reader.read();
+
+ if (done) {
+ return {
+ value,
+ done
+ };
+ }
+
+ this._loaded += value.byteLength;
+
+ if (this.onProgress) {
+ this.onProgress({
+ loaded: this._loaded
+ });
+ }
+
+ const buffer = new Uint8Array(value).buffer;
+ return {
+ value: buffer,
+ done: false
+ };
+ }
+
+ cancel(reason) {
+ if (this._reader) {
+ this._reader.cancel(reason);
+ }
+
+ if (this._abortController) {
+ this._abortController.abort();
+ }
+ }
+
+}
+
+/***/ })
+/******/ ]);
+/************************************************************************/
+/******/ // The module cache
+/******/ var __webpack_module_cache__ = {};
+/******/
+/******/ // The require function
+/******/ function __w_pdfjs_require__(moduleId) {
+/******/ // Check if module is in cache
+/******/ var cachedModule = __webpack_module_cache__[moduleId];
+/******/ if (cachedModule !== undefined) {
+/******/ return cachedModule.exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = __webpack_module_cache__[moduleId] = {
+/******/ // no module.id needed
+/******/ // no module.loaded needed
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/************************************************************************/
+var __webpack_exports__ = {};
+// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
+(() => {
+var exports = __webpack_exports__;
+
+
+Object.defineProperty(exports, "__esModule", ({
+ value: true
+}));
+Object.defineProperty(exports, "AnnotationLayer", ({
+ enumerable: true,
+ get: function () {
+ return _annotation_layer.AnnotationLayer;
+ }
+}));
+Object.defineProperty(exports, "AnnotationMode", ({
+ enumerable: true,
+ get: function () {
+ return _util.AnnotationMode;
+ }
+}));
+Object.defineProperty(exports, "CMapCompressionType", ({
+ enumerable: true,
+ get: function () {
+ return _util.CMapCompressionType;
+ }
+}));
+Object.defineProperty(exports, "GlobalWorkerOptions", ({
+ enumerable: true,
+ get: function () {
+ return _worker_options.GlobalWorkerOptions;
+ }
+}));
+Object.defineProperty(exports, "InvalidPDFException", ({
+ enumerable: true,
+ get: function () {
+ return _util.InvalidPDFException;
+ }
+}));
+Object.defineProperty(exports, "LoopbackPort", ({
+ enumerable: true,
+ get: function () {
+ return _api.LoopbackPort;
+ }
+}));
+Object.defineProperty(exports, "MissingPDFException", ({
+ enumerable: true,
+ get: function () {
+ return _util.MissingPDFException;
+ }
+}));
+Object.defineProperty(exports, "OPS", ({
+ enumerable: true,
+ get: function () {
+ return _util.OPS;
+ }
+}));
+Object.defineProperty(exports, "PDFDataRangeTransport", ({
+ enumerable: true,
+ get: function () {
+ return _api.PDFDataRangeTransport;
+ }
+}));
+Object.defineProperty(exports, "PDFDateString", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.PDFDateString;
+ }
+}));
+Object.defineProperty(exports, "PDFWorker", ({
+ enumerable: true,
+ get: function () {
+ return _api.PDFWorker;
+ }
+}));
+Object.defineProperty(exports, "PasswordResponses", ({
+ enumerable: true,
+ get: function () {
+ return _util.PasswordResponses;
+ }
+}));
+Object.defineProperty(exports, "PermissionFlag", ({
+ enumerable: true,
+ get: function () {
+ return _util.PermissionFlag;
+ }
+}));
+Object.defineProperty(exports, "PixelsPerInch", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.PixelsPerInch;
+ }
+}));
+Object.defineProperty(exports, "RenderingCancelledException", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.RenderingCancelledException;
+ }
+}));
+Object.defineProperty(exports, "SVGGraphics", ({
+ enumerable: true,
+ get: function () {
+ return _svg.SVGGraphics;
+ }
+}));
+Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({
+ enumerable: true,
+ get: function () {
+ return _util.UNSUPPORTED_FEATURES;
+ }
+}));
+Object.defineProperty(exports, "UnexpectedResponseException", ({
+ enumerable: true,
+ get: function () {
+ return _util.UnexpectedResponseException;
+ }
+}));
+Object.defineProperty(exports, "Util", ({
+ enumerable: true,
+ get: function () {
+ return _util.Util;
+ }
+}));
+Object.defineProperty(exports, "VerbosityLevel", ({
+ enumerable: true,
+ get: function () {
+ return _util.VerbosityLevel;
+ }
+}));
+Object.defineProperty(exports, "XfaLayer", ({
+ enumerable: true,
+ get: function () {
+ return _xfa_layer.XfaLayer;
+ }
+}));
+Object.defineProperty(exports, "build", ({
+ enumerable: true,
+ get: function () {
+ return _api.build;
+ }
+}));
+Object.defineProperty(exports, "createPromiseCapability", ({
+ enumerable: true,
+ get: function () {
+ return _util.createPromiseCapability;
+ }
+}));
+Object.defineProperty(exports, "createValidAbsoluteUrl", ({
+ enumerable: true,
+ get: function () {
+ return _util.createValidAbsoluteUrl;
+ }
+}));
+Object.defineProperty(exports, "getDocument", ({
+ enumerable: true,
+ get: function () {
+ return _api.getDocument;
+ }
+}));
+Object.defineProperty(exports, "getFilenameFromUrl", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.getFilenameFromUrl;
+ }
+}));
+Object.defineProperty(exports, "getPdfFilenameFromUrl", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.getPdfFilenameFromUrl;
+ }
+}));
+Object.defineProperty(exports, "getXfaPageViewport", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.getXfaPageViewport;
+ }
+}));
+Object.defineProperty(exports, "isPdfFile", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.isPdfFile;
+ }
+}));
+Object.defineProperty(exports, "loadScript", ({
+ enumerable: true,
+ get: function () {
+ return _display_utils.loadScript;
+ }
+}));
+Object.defineProperty(exports, "renderTextLayer", ({
+ enumerable: true,
+ get: function () {
+ return _text_layer.renderTextLayer;
+ }
+}));
+Object.defineProperty(exports, "shadow", ({
+ enumerable: true,
+ get: function () {
+ return _util.shadow;
+ }
+}));
+Object.defineProperty(exports, "version", ({
+ enumerable: true,
+ get: function () {
+ return _api.version;
+ }
+}));
+
+var _util = __w_pdfjs_require__(1);
+
+var _api = __w_pdfjs_require__(4);
+
+var _display_utils = __w_pdfjs_require__(5);
+
+var _annotation_layer = __w_pdfjs_require__(18);
+
+var _worker_options = __w_pdfjs_require__(12);
+
+var _is_node = __w_pdfjs_require__(3);
+
+var _text_layer = __w_pdfjs_require__(21);
+
+var _svg = __w_pdfjs_require__(22);
+
+var _xfa_layer = __w_pdfjs_require__(20);
+
+const pdfjsVersion = '2.13.216';
+const pdfjsBuild = '399a0ec60';
+{
+ if (_is_node.isNodeJS) {
+ const {
+ PDFNodeStream
+ } = __w_pdfjs_require__(23);
+
+ (0, _api.setPDFNetworkStreamFactory)(params => {
+ return new PDFNodeStream(params);
+ });
+ } else {
+ const {
+ PDFNetworkStream
+ } = __w_pdfjs_require__(26);
+
+ const {
+ PDFFetchStream
+ } = __w_pdfjs_require__(27);
+
+ (0, _api.setPDFNetworkStreamFactory)(params => {
+ if ((0, _display_utils.isValidFetchUrl)(params.url)) {
+ return new PDFFetchStream(params);
+ }
+
+ return new PDFNetworkStream(params);
+ });
+ }
+}
+})();
+
+/******/ return __webpack_exports__;
+/******/ })()
+;
+});
+//# sourceMappingURL=pdf.js.map
\ No newline at end of file
diff --git a/static/pdfjs/build/pdf.js.map b/static/pdfjs/build/pdf.js.map
new file mode 100644
index 0000000..6d9108a
--- /dev/null
+++ b/static/pdfjs/build/pdf.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isSameOrigin,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n !globalThis._pdfjsCompatibilityChecked\n) {\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n} from \"./node_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nconst DefaultCanvasFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultStandardFontDataFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type {IPDFStreamFactory}\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts =\n !(\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n isNodeJS\n ) && !params.disableFontFace;\n }\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static get idCounters() {\n return shadow(this, \"idCounters\", { doc: 0 });\n }\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise