commit fef4cd36fb2959dfa362d6296a880afa045776f7
Author: hooray <304327508@qq.com>
Date: Fri Aug 27 10:32:21 2021 +0800
first commit
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..da599f40
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,12 @@
+root = true
+
+[*]
+charset = utf-8
+indent_style = space
+indent_size = 4
+end_of_line = lf
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/.env.development b/.env.development
new file mode 100644
index 00000000..cd0e69b6
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,9 @@
+# 页面标题
+VITE_APP_TITLE = Fantastic-admin 基础版
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL =
+
+# 是否开启代理
+VITE_OPEN_PROXY = true
diff --git a/.env.example b/.env.example
new file mode 100644
index 00000000..dfc56c35
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,17 @@
+NODE_ENV = production
+
+VITE_APP_MODE = example
+
+# 页面标题
+VITE_APP_TITLE = Fantastic-admin 基础版
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL =
+
+# 是否在打包时生成 sourcemap
+VITE_BUILD_SOURCEMAP = false
+# 是否在打包时删除 console 代码
+VITE_BUILD_DROP_CONSOLE = true
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS = gzip,brotli
diff --git a/.env.production b/.env.production
new file mode 100644
index 00000000..a22ba9db
--- /dev/null
+++ b/.env.production
@@ -0,0 +1,15 @@
+NODE_ENV = production
+
+# 页面标题
+VITE_APP_TITLE = Fantastic-admin 基础版
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL =
+
+# 是否在打包时生成 sourcemap
+VITE_BUILD_SOURCEMAP = false
+# 是否在打包时删除 console 代码
+VITE_BUILD_DROP_CONSOLE = true
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS = gzip,brotli
diff --git a/.env.test b/.env.test
new file mode 100644
index 00000000..6c085682
--- /dev/null
+++ b/.env.test
@@ -0,0 +1,17 @@
+NODE_ENV = production
+
+# 页面标题
+VITE_APP_TITLE = Fantastic-admin 专业版
+# 接口请求地址,会设置到 axios 的 baseURL 参数上
+VITE_APP_API_BASEURL = /
+# 调试工具,可设置 eruda 或 vconsole,如果不需要开启则留空
+VITE_APP_DEBUG_TOOL =
+
+# 是否在打包时生成 sourcemap
+VITE_BUILD_SOURCEMAP = true
+# 是否在打包时删除 console 代码
+VITE_BUILD_DROP_CONSOLE = true
+# 是否在打包时开启压缩,支持 gzip 和 brotli
+VITE_BUILD_COMPRESS = gzip,brotli
+# 是否在打包时候生成PWA
+VITE_BUILD_PWA = false
diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 00000000..58ce8430
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,4 @@
+dist/
+node_modules/
+babel.config.js
+.eslintrc.js
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..493e2e98
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,88 @@
+module.exports = {
+ root: true,
+ env: {
+ browser: true,
+ es6: true
+ },
+ globals: {
+ __dirname: true,
+ process: true,
+ require: true,
+ module: true,
+ AMap: true
+ },
+ extends: [
+ 'plugin:vue/vue3-recommended',
+ 'plugin:vue/vue3-strongly-recommended',
+ 'eslint:recommended'
+ ],
+ parser: 'vue-eslint-parser',
+ rules: {
+ // 代码风格
+ 'block-spacing': [2, 'always'],
+ 'brace-style': [2, '1tbs', {
+ 'allowSingleLine': true
+ }],
+ 'comma-spacing': [2, {
+ 'before': false,
+ 'after': true
+ }],
+ 'comma-dangle': [2, 'never'],
+ 'comma-style': [2, 'last'],
+ 'computed-property-spacing': [2, 'never'],
+ 'indent': [2, 4, {
+ 'SwitchCase': 1
+ }],
+ 'key-spacing': [2, {
+ 'beforeColon': false,
+ 'afterColon': true
+ }],
+ 'keyword-spacing': [2, {
+ 'before': true,
+ 'after': true
+ }],
+ 'linebreak-style': 0,
+ 'multiline-ternary': [2, 'always-multiline'],
+ 'no-multiple-empty-lines': [2, {
+ 'max': 1
+ }],
+ 'no-unneeded-ternary': [2, {
+ 'defaultAssignment': false
+ }],
+ 'quotes': [2, 'single'],
+ 'semi': [2, 'never'],
+ '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', '!', ',']
+ }],
+ 'switch-colon-spacing': [2, {
+ 'after': true,
+ 'before': false
+ }],
+ // ES6
+ 'arrow-parens': [2, 'as-needed'],
+ 'arrow-spacing': [2, {
+ 'before': true,
+ 'after': true
+ }],
+ // Vue - https://github.com/vuejs/eslint-plugin-vue
+ 'vue/html-indent': [2, 4],
+ 'vue/no-v-html': 0,
+ 'vue/max-attributes-per-line': 0,
+ 'vue/require-default-prop': 0,
+ 'vue/singleline-html-element-content-newline': 0,
+ 'vue/require-explicit-emits': [2, {
+ 'allowProps': true
+ }],
+ 'vue/script-indent': [2, 4, {
+ 'switchCase': 1
+ }]
+ }
+};
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..7d4c883d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+node_modules
+.DS_Store
+dist*
+dist-ssr
+*.local
+src/assets/sprites/*.*
\ No newline at end of file
diff --git a/.husky/lintstagedrc.js b/.husky/lintstagedrc.js
new file mode 100644
index 00000000..6e2ec737
--- /dev/null
+++ b/.husky/lintstagedrc.js
@@ -0,0 +1,5 @@
+module.exports = {
+ 'src/**/*.js': ['eslint --fix'],
+ 'src/**/*.vue': ['eslint --fix', 'stylelint --fix'],
+ 'src/**/*.{scss,less}': ['stylelint --fix']
+}
diff --git a/.husky/pre-commit b/.husky/pre-commit
new file mode 100644
index 00000000..229bb05c
--- /dev/null
+++ b/.husky/pre-commit
@@ -0,0 +1,4 @@
+#!/bin/sh
+. "$(dirname "$0")/_/husky.sh"
+
+yarn lint-staged -c ./.husky/lintstagedrc.js
diff --git a/.stylelintignore b/.stylelintignore
new file mode 100644
index 00000000..a1d18c49
--- /dev/null
+++ b/.stylelintignore
@@ -0,0 +1,3 @@
+dist/
+node_modules/
+src/assets/sprites/
diff --git a/.stylelintrc b/.stylelintrc
new file mode 100644
index 00000000..a8dc5662
--- /dev/null
+++ b/.stylelintrc
@@ -0,0 +1,18 @@
+{
+ "extends": [
+ "stylelint-config-standard",
+ "stylelint-config-recommended-scss"
+ ],
+ "plugins": [
+ "stylelint-scss"
+ ],
+ "rules": {
+ "indentation": 4,
+ "rule-empty-line-before": "never",
+ "at-rule-empty-line-before": "never",
+ "no-descending-specificity": null,
+ "selector-pseudo-class-no-unknown": null,
+ "property-no-unknown": null,
+ "font-family-no-missing-generic-family-keyword": null
+ }
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..8dcb46e2
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,12 @@
+{
+ "editor.codeActionsOnSave": {
+ "source.fixAll.eslint": true,
+ "source.fixAll.stylelint": true
+ },
+ "i18n-ally.localesPaths": [
+ "src/locales/lang"
+ ],
+ "i18n-ally.keystyle": "nested",
+ "i18n-ally.sortKeys": true,
+ "i18n-ally.keepFulfilled": true
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000..3e48fa1b
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 fantastic-template
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..71222edb
--- /dev/null
+++ b/README.md
@@ -0,0 +1,80 @@
+
+
+
+
+Fantastic-admin
+
+一款开箱即用的 Vue 中后台管理系统框架
+
+## 特点
+
+- 丰富的布局模式,覆盖市面上各种中后台布局,兼容PC、平板和移动端
+- 提供主题配置文件,轻松实现个性化定制
+- 精心设计的动效,让每一处的动画都干净利落
+- 根据路由配置自动生成导航栏
+- 支持全方位权限验证
+- 集成多级路由缓存方案
+
+## 演示
+
+**Vue3 版本**
+
+[基础版](https://hooray.gitee.io/fantastic-admin/vue3/basic) ([备份地址](https://hooray.github.io/fantastic-admin/vue3/basic))
+
+[专业版](https://hooray.gitee.io/fantastic-admin/vue3/pro) ([备份地址](https://hooray.github.io/fantastic-admin/vue3/pro))
+
+**Vue2 版本**
+
+[基础版](https://hooray.gitee.io/fantastic-admin/vue2/basic) ([备份地址](https://hooray.github.io/fantastic-admin/vue2/basic))
+
+[专业版](https://hooray.gitee.io/fantastic-admin/vue2/pro) ([备份地址](https://hooray.github.io/fantastic-admin/vue2/pro))
+
+## 下载 & 购买
+
+- 基础版(免费,可商用)
+ - 去 [Gitee](https://gitee.com/hooray/fantastic-admin) 下载
+ - 去 [Github](https://github.com/hooray/fantastic-admin) 下载
+- 专业版(付费,可商用)
+ - [去购买](https://hooray.gitee.io/fantastic-admin/buy.html) ([备份地址](https://hooray.github.io/fantastic-admin/buy.html))
+
+## 分支说明
+
+> 建议开发时,在本地同时下载演示分支和模版分支,模版分支用于项目开发,演示分支做为示例参考。
+
+- `master` Vue3 版本演示分支,同演示站
+- `template` Vue3 版本模版分支,移除演示代码,可直接用于实际开发
+- `vue2` Vue2 版本演示分支,同演示站
+- `template-vue2` Vue2 版本模版分支,移除演示代码,可直接用于实际开发
+
+## 技术支持
+
+[开发文档](https://hooray.gitee.io/fantastic-admin) ([备份地址](https://hooray.github.io/fantastic-admin))
+
+[Vue2版本视频教程](https://space.bilibili.com/3079082/channel/detail?cid=156985)
+
+技术交流QQ群:1001394973
+
+## 预览
+
+> 预览截图为 Vue3 专业版
+
+
+
+## 支持
+
+如果觉得 Fantastic-admin 这个框架不错,或者已经在使用了,希望你可以去 **Github** 或者 **Gitee(码云)** 帮我点个 ⭐ ,这将对我是极大的鼓励。
+
+[](https://github.com/hooray/fantastic-admin/stargazers)
+
+[](https://gitee.com/hooray/fantastic-admin/stargazers)
diff --git a/index.html b/index.html
new file mode 100644
index 00000000..b9f35c2b
--- /dev/null
+++ b/index.html
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+ <%= title %>
+
+ <% if (appMode == 'example') { %>
+
+ <% } %>
+
+
+
+
+ <% if (debugTool == 'eruda') { %>
+
+
+ <% } %>
+ <% if (debugTool == 'vconsole') { %>
+
+
+ <% } %>
+
+
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 00000000..8405955c
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "target": "es2017",
+ "allowSyntheticDefaultImports": false,
+ "baseUrl": "./",
+ "paths": {
+ "@/*": ["src/*"]
+ }
+ },
+ "exclude": ["node_modules", "dist", "dist-test"]
+}
diff --git a/package.json b/package.json
new file mode 100644
index 00000000..1c93fe57
--- /dev/null
+++ b/package.json
@@ -0,0 +1,62 @@
+{
+ "name": "fantastic-admin-pro",
+ "version": "0.1.0",
+ "scripts": {
+ "dev": "vite",
+ "build:test": "vite build --mode test",
+ "build": "vite build",
+ "build:example": "vite build --mode example",
+ "serve:test": "hs ./dist-test -o",
+ "serve": "hs ./dist -o",
+ "serve:example": "hs ./dist-example -o",
+ "svgo": "svgo -f src/assets/icons",
+ "new": "plop",
+ "lint:eslint": "eslint src/**/*.{js,vue} --fix",
+ "lint:stylelint": "stylelint src/**/*.{vue,scss,less} --fix",
+ "prepare": "husky install"
+ },
+ "dependencies": {
+ "@tinymce/tinymce-vue": "^4.0.4",
+ "axios": "^0.21.1",
+ "dayjs": "^1.10.6",
+ "element-plus": "^1.1.0-beta.6",
+ "hotkeys-js": "^3.8.7",
+ "js-cookie": "^2.2.1",
+ "mitt": "^3.0.0",
+ "mockjs": "^1.1.0",
+ "nprogress": "^0.2.0",
+ "path-browserify": "^1.0.1",
+ "path-to-regexp": "^6.2.0",
+ "screenfull": "^5.1.0",
+ "tinymce": "^5.9.0",
+ "vue": "^3.2.6",
+ "vue-router": "^4.0.11",
+ "vuex": "^4.0.2"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^1.6.0",
+ "@vue/compiler-sfc": "^3.2.6",
+ "eslint": "^7.32.0",
+ "eslint-plugin-vue": "^7.16.0",
+ "http-server": "^0.12.3",
+ "husky": "^7.0.2",
+ "lint-staged": "^11.1.2",
+ "plop": "^2.7.4",
+ "sass": "^1.38.1",
+ "stylelint": "^13.13.1",
+ "stylelint-config-recommended-scss": "^4.3.0",
+ "stylelint-config-standard": "^22.0.0",
+ "stylelint-scss": "^3.20.1",
+ "svgo": "^2.4.0",
+ "vite": "^2.5.1",
+ "vite-plugin-banner": "^0.1.3",
+ "vite-plugin-compression": "^0.3.5",
+ "vite-plugin-html": "^2.1.0",
+ "vite-plugin-mock": "^2.9.6",
+ "vite-plugin-restart": "^0.0.2",
+ "vite-plugin-spritesmith": "^0.1.0",
+ "vite-plugin-svg-icons": "^1.0.4",
+ "vue-eslint-parser": "^7.10.0",
+ "workbox-window": "^6.2.4"
+ }
+}
diff --git a/plop-templates/component/index.hbs b/plop-templates/component/index.hbs
new file mode 100644
index 00000000..950d9245
--- /dev/null
+++ b/plop-templates/component/index.hbs
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/plop-templates/component/prompt.js b/plop-templates/component/prompt.js
new file mode 100644
index 00000000..13739d19
--- /dev/null
+++ b/plop-templates/component/prompt.js
@@ -0,0 +1,63 @@
+const fs = require('fs')
+
+function getFolder(path) {
+ let components = []
+ const files = fs.readdirSync(path)
+ files.forEach(function(item) {
+ let stat = fs.lstatSync(path + '/' + item)
+ if (stat.isDirectory() === true && item != 'components') {
+ components.push(path + '/' + item)
+ components.push.apply(components, getFolder(path + '/' + item))
+ }
+ })
+ return components
+}
+
+module.exports = {
+ description: '创建组件',
+ prompts: [
+ {
+ type: 'confirm',
+ name: 'isGlobal',
+ message: '是否为全局组件',
+ default: false
+ },
+ {
+ type: 'list',
+ name: 'path',
+ message: '请选择组件创建目录',
+ choices: getFolder('src/views'),
+ when: answers => {
+ return !answers.isGlobal
+ }
+ },
+ {
+ type: 'input',
+ name: 'name',
+ message: '请输入组件名称',
+ validate: v => {
+ if (!v || v.trim === '') {
+ return '组件名称不能为空'
+ } else {
+ return true
+ }
+ }
+ }
+ ],
+ actions: data => {
+ let path = ''
+ if (data.isGlobal) {
+ path = 'src/components/{{properCase name}}/index.vue'
+ } else {
+ path = `${data.path}/components/{{properCase name}}/index.vue`
+ }
+ const actions = [
+ {
+ type: 'add',
+ path: path,
+ templateFile: 'plop-templates/component/index.hbs'
+ }
+ ]
+ return actions
+ }
+}
diff --git a/plop-templates/mock/mock.hbs b/plop-templates/mock/mock.hbs
new file mode 100644
index 00000000..4999f424
--- /dev/null
+++ b/plop-templates/mock/mock.hbs
@@ -0,0 +1,80 @@
+import Mock from 'mockjs'
+
+const AllList = []
+for (let i = 0; i < 50; i++) {
+ AllList.push(Mock.mock({
+ id: '@id',
+ title: '@ctitle(10, 20)'
+ }))
+}
+
+export default [
+ {
+ url: '/mock/{{#if relativePath}}{{ relativePath }}/{{/if}}{{ moduleName }}/list',
+ method: 'get',
+ response: option => {
+ let { title, from, limit } = option.query
+ from = ~~from
+ limit = ~~limit
+ let list = AllList.filter(item => {
+ return title ? item.title.includes(title) : true
+ })
+ let pageList = list.filter((item, index) => {
+ return index >= from && index < (from + limit)
+ })
+ return {
+ error: '',
+ status: 1,
+ data: {
+ list: pageList,
+ total: list.length
+ }
+ }
+ }
+ },
+ {
+ url: '/mock/{{#if relativePath}}{{ relativePath }}/{{/if}}{{ moduleName }}/detail',
+ method: 'get',
+ response: option => {
+ let info = AllList.filter(item => item.id == option.query.id)
+ return {
+ error: '',
+ status: 1,
+ data: info[0]
+ }
+ }
+ },
+ {
+ url: '/mock/{{#if relativePath}}{{ relativePath }}/{{/if}}{{ moduleName }}/create',
+ method: 'post',
+ response: {
+ error: '',
+ status: 1,
+ data: {
+ isSuccess: true
+ }
+ }
+ },
+ {
+ url: '/mock/{{#if relativePath}}{{ relativePath }}/{{/if}}{{ moduleName }}/edit',
+ method: 'post',
+ response: {
+ error: '',
+ status: 1,
+ data: {
+ isSuccess: true
+ }
+ }
+ },
+ {
+ url: '/mock/{{#if relativePath}}{{ relativePath }}/{{/if}}{{ moduleName }}/delete',
+ method: 'post',
+ response: {
+ error: '',
+ status: 1,
+ data: {
+ isSuccess: true
+ }
+ }
+ }
+]
diff --git a/plop-templates/mock/prompt.js b/plop-templates/mock/prompt.js
new file mode 100644
index 00000000..5d1c2f96
--- /dev/null
+++ b/plop-templates/mock/prompt.js
@@ -0,0 +1,43 @@
+const path = require('path')
+const fs = require('fs')
+
+function getFolder(path) {
+ let components = []
+ const files = fs.readdirSync(path)
+ files.forEach(function(item) {
+ let stat = fs.lstatSync(path + '/' + item)
+ if (stat.isDirectory() === true && item != 'components') {
+ components.push(path + '/' + item)
+ components.push.apply(components, getFolder(path + '/' + item))
+ }
+ })
+ return components
+}
+
+module.exports = {
+ description: '创建标准模块 Mock',
+ prompts: [
+ {
+ type: 'list',
+ name: 'path',
+ message: '请选择模块目录',
+ choices: getFolder('src/views')
+ }
+ ],
+ actions: data => {
+ let pathArr = path.relative('src/views', data.path).split('\\')
+ let moduleName = pathArr.pop()
+ let relativePath = pathArr.join('/')
+ const actions = []
+ actions.push({
+ type: 'add',
+ path: pathArr.length == 0 ? 'src/mock/{{moduleName}}.js' : `src/mock/${pathArr.join('.')}.{{moduleName}}.js`,
+ templateFile: 'plop-templates/mock/mock.hbs',
+ data: {
+ relativePath,
+ moduleName
+ }
+ })
+ return actions
+ }
+}
diff --git a/plop-templates/page/index.hbs b/plop-templates/page/index.hbs
new file mode 100644
index 00000000..8d4d42ad
--- /dev/null
+++ b/plop-templates/page/index.hbs
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
diff --git a/plop-templates/page/prompt.js b/plop-templates/page/prompt.js
new file mode 100644
index 00000000..8e631236
--- /dev/null
+++ b/plop-templates/page/prompt.js
@@ -0,0 +1,61 @@
+const path = require('path')
+const fs = require('fs')
+
+function getFolder(path) {
+ let components = []
+ const files = fs.readdirSync(path)
+ files.forEach(function(item) {
+ let stat = fs.lstatSync(path + '/' + item)
+ if (stat.isDirectory() === true && item != 'components') {
+ components.push(path + '/' + item)
+ components.push.apply(components, getFolder(path + '/' + item))
+ }
+ })
+ return components
+}
+
+module.exports = {
+ description: '创建页面',
+ prompts: [
+ {
+ type: 'list',
+ name: 'path',
+ message: '请选择页面创建目录',
+ choices: getFolder('src/views')
+ },
+ {
+ type: 'input',
+ name: 'name',
+ message: '请输入文件名',
+ validate: v => {
+ if (!v || v.trim === '') {
+ return '文件名不能为空'
+ } else if (v == 'list' || v == 'detail') {
+ return 'list 和 detail 为保留关键字,无法直接创建,请通过创建标准模块进行生成'
+ } else {
+ return true
+ }
+ }
+ },
+ {
+ type: 'input',
+ name: 'cname',
+ message: '请输入页面中文名称',
+ default: '默认页面'
+ }
+ ],
+ actions: data => {
+ let relativePath = path.relative('src/views', data.path)
+ const actions = [
+ {
+ type: 'add',
+ path: `${data.path}/{{dotCase name}}.vue`,
+ templateFile: 'plop-templates/page/index.hbs',
+ data: {
+ componentName: `${relativePath} ${data.name}`
+ }
+ }
+ ]
+ return actions
+ }
+}
diff --git a/plop-templates/store/index.hbs b/plop-templates/store/index.hbs
new file mode 100644
index 00000000..27428aae
--- /dev/null
+++ b/plop-templates/store/index.hbs
@@ -0,0 +1,15 @@
+const state = () => ({})
+
+const getters = {}
+
+const actions = {}
+
+const mutations = {}
+
+export default {
+ namespaced: true,
+ state,
+ actions,
+ getters,
+ mutations
+}
diff --git a/plop-templates/store/prompt.js b/plop-templates/store/prompt.js
new file mode 100644
index 00000000..d86b6193
--- /dev/null
+++ b/plop-templates/store/prompt.js
@@ -0,0 +1,27 @@
+module.exports = {
+ description: '创建全局状态',
+ prompts: [
+ {
+ type: 'input',
+ name: 'name',
+ message: '请输入模块名称',
+ validate: v => {
+ if (!v || v.trim === '') {
+ return '模块名称不能为空'
+ } else {
+ return true
+ }
+ }
+ }
+ ],
+ actions: data => {
+ const actions = [
+ {
+ type: 'add',
+ path: `src/store/modules/${data.name}.js`,
+ templateFile: 'plop-templates/store/index.hbs'
+ }
+ ]
+ return actions
+ }
+}
diff --git a/plopfile.js b/plopfile.js
new file mode 100644
index 00000000..f6109325
--- /dev/null
+++ b/plopfile.js
@@ -0,0 +1,7 @@
+module.exports = function(plop) {
+ plop.setWelcomeMessage('请选择需要创建的模式:')
+ plop.setGenerator('page', require('./plop-templates/page/prompt'))
+ plop.setGenerator('component', require('./plop-templates/component/prompt'))
+ plop.setGenerator('store', require('./plop-templates/store/prompt'))
+ plop.setGenerator('mock', require('./plop-templates/mock/prompt'))
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 00000000..87f2eac3
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,6439 @@
+lockfileVersion: 5.3
+
+specifiers:
+ '@tinymce/tinymce-vue': ^4.0.4
+ '@vitejs/plugin-vue': ^1.6.0
+ '@vue/compiler-sfc': ^3.2.6
+ axios: ^0.21.1
+ dayjs: ^1.10.6
+ element-plus: ^1.1.0-beta.6
+ eslint: ^7.32.0
+ eslint-plugin-vue: ^7.16.0
+ hotkeys-js: ^3.8.7
+ http-server: ^0.12.3
+ husky: ^7.0.2
+ js-cookie: ^2.2.1
+ lint-staged: ^11.1.2
+ mitt: ^3.0.0
+ mockjs: ^1.1.0
+ nprogress: ^0.2.0
+ path-browserify: ^1.0.1
+ path-to-regexp: ^6.2.0
+ plop: ^2.7.4
+ sass: ^1.38.1
+ screenfull: ^5.1.0
+ stylelint: ^13.13.1
+ stylelint-config-recommended-scss: ^4.3.0
+ stylelint-config-standard: ^22.0.0
+ stylelint-scss: ^3.20.1
+ svgo: ^2.4.0
+ tinymce: ^5.9.0
+ vite: ^2.5.1
+ vite-plugin-banner: ^0.1.3
+ vite-plugin-compression: ^0.3.5
+ vite-plugin-html: ^2.1.0
+ vite-plugin-mock: ^2.9.6
+ vite-plugin-restart: ^0.0.2
+ vite-plugin-spritesmith: ^0.1.0
+ vite-plugin-svg-icons: ^1.0.4
+ vue: ^3.2.6
+ vue-eslint-parser: ^7.10.0
+ vue-router: ^4.0.11
+ vuex: ^4.0.2
+ workbox-window: ^6.2.4
+
+dependencies:
+ '@tinymce/tinymce-vue': registry.nlark.com/@tinymce/tinymce-vue/4.0.4_vue@3.2.6
+ axios: 0.21.1
+ dayjs: registry.nlark.com/dayjs/1.10.6
+ element-plus: registry.nlark.com/element-plus/1.1.0-beta.6_vue@3.2.6
+ hotkeys-js: registry.nlark.com/hotkeys-js/3.8.7
+ js-cookie: registry.nlark.com/js-cookie/2.2.1
+ mitt: registry.nlark.com/mitt/3.0.0
+ mockjs: 1.1.0
+ nprogress: 0.2.0
+ path-browserify: 1.0.1
+ path-to-regexp: 6.2.0
+ screenfull: registry.nlark.com/screenfull/5.1.0
+ tinymce: registry.nlark.com/tinymce/5.9.0
+ vue: registry.nlark.com/vue/3.2.6
+ vue-router: registry.nlark.com/vue-router/4.0.11_vue@3.2.6
+ vuex: registry.nlark.com/vuex/4.0.2_vue@3.2.6
+
+devDependencies:
+ '@vitejs/plugin-vue': registry.nlark.com/@vitejs/plugin-vue/1.6.0_@vue+compiler-sfc@3.2.6
+ '@vue/compiler-sfc': registry.nlark.com/@vue/compiler-sfc/3.2.6
+ eslint: registry.nlark.com/eslint/7.32.0
+ eslint-plugin-vue: registry.nlark.com/eslint-plugin-vue/7.16.0_eslint@7.32.0
+ http-server: registry.nlark.com/http-server/0.12.3
+ husky: registry.nlark.com/husky/7.0.2
+ lint-staged: registry.nlark.com/lint-staged/11.1.2
+ plop: 2.7.4
+ sass: registry.nlark.com/sass/1.38.1
+ stylelint: registry.nlark.com/stylelint/13.13.1
+ stylelint-config-recommended-scss: registry.nlark.com/stylelint-config-recommended-scss/4.3.0_fd1d61e57b9553f3887f804324f52132
+ stylelint-config-standard: registry.nlark.com/stylelint-config-standard/22.0.0_stylelint@13.13.1
+ stylelint-scss: registry.nlark.com/stylelint-scss/3.20.1_stylelint@13.13.1
+ svgo: registry.nlark.com/svgo/2.4.0
+ vite: registry.nlark.com/vite/2.5.1
+ vite-plugin-banner: registry.nlark.com/vite-plugin-banner/0.1.3
+ vite-plugin-compression: registry.nlark.com/vite-plugin-compression/0.3.5_vite@2.5.1
+ vite-plugin-html: registry.nlark.com/vite-plugin-html/2.1.0_vite@2.5.1
+ vite-plugin-mock: registry.nlark.com/vite-plugin-mock/2.9.6_mockjs@1.1.0+vite@2.5.1
+ vite-plugin-restart: registry.nlark.com/vite-plugin-restart/0.0.2_vite@2.5.1
+ vite-plugin-spritesmith: registry.nlark.com/vite-plugin-spritesmith/0.1.0
+ vite-plugin-svg-icons: registry.nlark.com/vite-plugin-svg-icons/1.0.4_vite@2.5.1
+ vue-eslint-parser: registry.nlark.com/vue-eslint-parser/7.10.0_eslint@7.32.0
+ workbox-window: registry.nlark.com/workbox-window/6.2.4
+
+packages:
+
+ /@stylelint/postcss-css-in-js/0.37.2_2b33a41d320e3e2012e5b3b0fadc703b:
+ resolution: {integrity: sha1-flqErRgfQjSiSAgDQipHuHSa89I=, tarball: '@stylelint/postcss-css-in-js/download/@stylelint/postcss-css-in-js-0.37.2.tgz'}
+ peerDependencies:
+ postcss: '>=7.0.0'
+ postcss-syntax: '>=0.36.2'
+ dependencies:
+ '@babel/core': registry.nlark.com/@babel/core/7.15.0
+ postcss: registry.nlark.com/postcss/7.0.36
+ postcss-syntax: 0.36.2_postcss@7.0.36
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@stylelint/postcss-markdown/0.36.2_2b33a41d320e3e2012e5b3b0fadc703b:
+ resolution: {integrity: sha1-ClQMRpL43N/BPI41LBfnv+4rs5E=, tarball: '@stylelint/postcss-markdown/download/@stylelint/postcss-markdown-0.36.2.tgz'}
+ peerDependencies:
+ postcss: '>=7.0.0'
+ postcss-syntax: '>=0.36.2'
+ dependencies:
+ postcss: registry.nlark.com/postcss/7.0.36
+ postcss-syntax: 0.36.2_postcss@7.0.36
+ remark: registry.nlark.com/remark/13.0.0
+ unist-util-find-all-after: registry.nlark.com/unist-util-find-all-after/3.0.2
+ dev: true
+
+ /aggregate-error/3.1.0:
+ resolution: {integrity: sha1-kmcP9Q9TWb23o+DUDQ7DDFc3aHo=, tarball: aggregate-error/download/aggregate-error-3.1.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ clean-stack: registry.nlark.com/clean-stack/2.2.0
+ indent-string: 4.0.0
+ dev: true
+
+ /ansi-colors/4.1.1:
+ resolution: {integrity: sha1-y7muJWv3UK8eqzRPIpqif+lLo0g=, tarball: ansi-colors/download/ansi-colors-4.1.1.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-escapes/4.3.2:
+ resolution: {integrity: sha1-ayKR0dt9mLZSHV8e+kLQ86n+tl4=, tarball: ansi-escapes/download/ansi-escapes-4.3.2.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: registry.nlark.com/type-fest/0.21.3
+ dev: true
+
+ /ansi-regex/2.1.1:
+ resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=, tarball: ansi-regex/download/ansi-regex-2.1.1.tgz?cache=0&sync_timestamp=1618553945397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-2.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /ansi-regex/4.1.0:
+ resolution: {integrity: sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc=, tarball: ansi-regex/download/ansi-regex-4.1.0.tgz?cache=0&sync_timestamp=1618553945397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-4.1.0.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-regex/5.0.0:
+ resolution: {integrity: sha1-OIU59VF5vzkznIGvMKZU1p+Hy3U=, tarball: ansi-regex/download/ansi-regex-5.0.0.tgz?cache=0&sync_timestamp=1618553945397&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fansi-regex%2Fdownload%2Fansi-regex-5.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /anymatch/3.1.2:
+ resolution: {integrity: sha1-wFV8CWrzLxBhmPT04qODU343hxY=, tarball: anymatch/download/anymatch-3.1.2.tgz}
+ engines: {node: '>= 8'}
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: registry.nlark.com/picomatch/2.3.0
+ dev: true
+
+ /argparse/1.0.10:
+ resolution: {integrity: sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=, tarball: argparse/download/argparse-1.0.10.tgz}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
+ /arr-diff/4.0.0:
+ resolution: {integrity: sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=, tarball: arr-diff/download/arr-diff-4.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /arr-flatten/1.1.0:
+ resolution: {integrity: sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=, tarball: arr-flatten/download/arr-flatten-1.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /arr-union/3.1.0:
+ resolution: {integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=, tarball: arr-union/download/arr-union-3.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array-slice/1.1.0:
+ resolution: {integrity: sha1-42jqFfibxwaff/uJrsOmx9SsItQ=, tarball: array-slice/download/array-slice-1.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array-union/2.1.0:
+ resolution: {integrity: sha1-t5hCCtvrHego2ErNii4j0+/oXo0=, tarball: array-union/download/array-union-2.1.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /array-unique/0.3.2:
+ resolution: {integrity: sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=, tarball: array-unique/download/array-unique-0.3.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /asn1/0.2.4:
+ resolution: {integrity: sha1-jSR136tVO7M+d7VOWeiAu4ziMTY=, tarball: asn1/download/asn1-0.2.4.tgz}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /assert-plus/1.0.0:
+ resolution: {integrity: sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=, tarball: assert-plus/download/assert-plus-1.0.0.tgz}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /assign-symbols/1.0.0:
+ resolution: {integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=, tarball: assign-symbols/download/assign-symbols-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /astral-regex/2.0.0:
+ resolution: {integrity: sha1-SDFDxWeu7UeFdZwIZXhtx319LjE=, tarball: astral-regex/download/astral-regex-2.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /asynckit/0.4.0:
+ resolution: {integrity: sha1-x57Zf380y48robyXkLzDZkdLS3k=, tarball: asynckit/download/asynckit-0.4.0.tgz}
+ dev: true
+
+ /atob/2.1.2:
+ resolution: {integrity: sha1-bZUX654DDSQ2ZmZR6GvZ9vE1M8k=, tarball: atob/download/atob-2.1.2.tgz}
+ engines: {node: '>= 4.5.0'}
+ hasBin: true
+ dev: true
+
+ /aws-sign2/0.7.0:
+ resolution: {integrity: sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=, tarball: aws-sign2/download/aws-sign2-0.7.0.tgz}
+ dev: true
+
+ /aws4/1.11.0:
+ resolution: {integrity: sha1-1h9G2DslGSUOJ4Ta9bCUeai0HFk=, tarball: aws4/download/aws4-1.11.0.tgz}
+ dev: true
+
+ /axios/0.21.1:
+ resolution: {integrity: sha1-IlY0gZYvTWvemnbVFu8OXTwJsrg=, tarball: axios/download/axios-0.21.1.tgz}
+ dependencies:
+ follow-redirects: registry.nlark.com/follow-redirects/1.14.2
+ dev: false
+
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=, tarball: balanced-match/download/balanced-match-1.0.2.tgz}
+ dev: true
+
+ /balanced-match/2.0.0:
+ resolution: {integrity: sha1-3HD5INeNuLhYU1eVhnv0j4IGM9k=, tarball: balanced-match/download/balanced-match-2.0.0.tgz}
+ dev: true
+
+ /base/0.11.2:
+ resolution: {integrity: sha1-e95c7RRbbVUakNuH+DxVi060io8=, tarball: base/download/base-0.11.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ cache-base: 1.0.1
+ class-utils: 0.3.6
+ component-emitter: 1.3.0
+ define-property: 1.0.0
+ isobject: 3.0.1
+ mixin-deep: 1.3.2
+ pascalcase: 0.1.1
+ dev: true
+
+ /basic-auth/1.1.0:
+ resolution: {integrity: sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=, tarball: basic-auth/download/basic-auth-1.1.0.tgz}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /bcrypt-pbkdf/1.0.2:
+ resolution: {integrity: sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=, tarball: bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.2.tgz}
+ dependencies:
+ tweetnacl: 0.14.5
+ dev: true
+
+ /binary-extensions/2.2.0:
+ resolution: {integrity: sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=, tarball: binary-extensions/download/binary-extensions-2.2.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /bluebird/3.7.2:
+ resolution: {integrity: sha1-nyKcFb4nJFT/qXOs4NvueaGww28=, tarball: bluebird/download/bluebird-3.7.2.tgz}
+ dev: true
+
+ /boolbase/1.0.0:
+ resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=, tarball: boolbase/download/boolbase-1.0.0.tgz}
+ dev: true
+
+ /brace-expansion/1.1.11:
+ resolution: {integrity: sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=, tarball: brace-expansion/download/brace-expansion-1.1.11.tgz}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: true
+
+ /braces/2.3.2:
+ resolution: {integrity: sha1-WXn9PxTNUxVl5fot8av/8d+u5yk=, tarball: braces/download/braces-2.3.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ 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.4
+ snapdragon: registry.nlark.com/snapdragon/0.8.2
+ snapdragon-node: 2.1.1
+ split-string: 3.1.0
+ to-regex: 3.0.2
+ dev: true
+
+ /braces/3.0.2:
+ resolution: {integrity: sha1-NFThpGLujVmeI23zNs2epPiv4Qc=, tarball: braces/download/braces-3.0.2.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.0.1
+ dev: true
+
+ /builtin-modules/3.2.0:
+ resolution: {integrity: sha1-RdXbmefuXmvE82LgCL+RerUEmIc=, tarball: builtin-modules/download/builtin-modules-3.2.0.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /cache-base/1.0.1:
+ resolution: {integrity: sha1-Cn9GQWgxyLZi7jb+TnxZ129marI=, tarball: cache-base/download/cache-base-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ collection-visit: 1.0.0
+ component-emitter: 1.3.0
+ get-value: 2.0.6
+ has-value: 1.0.0
+ isobject: 3.0.1
+ set-value: registry.nlark.com/set-value/2.0.1
+ to-object-path: 0.3.0
+ union-value: 1.0.1
+ unset-value: 1.0.0
+ dev: true
+
+ /call-bind/1.0.2:
+ resolution: {integrity: sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=, tarball: call-bind/download/call-bind-1.0.2.tgz}
+ dependencies:
+ function-bind: 1.1.1
+ get-intrinsic: 1.1.1
+ dev: true
+
+ /camel-case/3.0.0:
+ resolution: {integrity: sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=, tarball: camel-case/download/camel-case-3.0.0.tgz}
+ dependencies:
+ no-case: 2.3.2
+ upper-case: 1.1.3
+ dev: true
+
+ /camel-case/4.1.2:
+ resolution: {integrity: sha1-lygHKpVPgFIoIlpt7qazhGHhvVo=, tarball: camel-case/download/camel-case-4.1.2.tgz}
+ dependencies:
+ pascal-case: 3.1.2
+ tslib: registry.nlark.com/tslib/2.3.1
+ dev: true
+
+ /camelcase/5.3.1:
+ resolution: {integrity: sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=, tarball: camelcase/download/camelcase-5.3.1.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /caseless/0.12.0:
+ resolution: {integrity: sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=, tarball: caseless/download/caseless-0.12.0.tgz}
+ dev: true
+
+ /change-case/3.1.0:
+ resolution: {integrity: sha1-DmEbftyZUt8uhROye0LecmR90X4=, tarball: change-case/download/change-case-3.1.0.tgz}
+ dependencies:
+ camel-case: 3.0.0
+ constant-case: 2.0.0
+ dot-case: 2.1.1
+ header-case: 1.0.1
+ is-lower-case: registry.nlark.com/is-lower-case/1.1.3
+ is-upper-case: 1.1.2
+ lower-case: 1.1.4
+ lower-case-first: 1.0.2
+ no-case: 2.3.2
+ param-case: 2.1.1
+ pascal-case: 2.0.1
+ path-case: registry.nlark.com/path-case/2.1.1
+ sentence-case: 2.1.1
+ snake-case: 2.1.0
+ swap-case: 1.1.2
+ title-case: registry.nlark.com/title-case/2.1.1
+ upper-case: 1.1.3
+ upper-case-first: 1.1.2
+ dev: true
+
+ /character-entities-legacy/1.1.4:
+ resolution: {integrity: sha1-lLwYRdznClu50uzHSHJWYSk9j8E=, tarball: character-entities-legacy/download/character-entities-legacy-1.1.4.tgz}
+ dev: true
+
+ /character-entities/1.2.4:
+ resolution: {integrity: sha1-4Sw5Obfq9OWxXnrUxeKOHUjFsWs=, tarball: character-entities/download/character-entities-1.2.4.tgz}
+ dev: true
+
+ /character-reference-invalid/1.1.4:
+ resolution: {integrity: sha1-CDMpzaDq4nKrPbvzfpo4LBOvFWA=, tarball: character-reference-invalid/download/character-reference-invalid-1.1.4.tgz}
+ dev: true
+
+ /chardet/0.7.0:
+ resolution: {integrity: sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=, tarball: chardet/download/chardet-0.7.0.tgz}
+ dev: true
+
+ /class-utils/0.3.6:
+ resolution: {integrity: sha1-+TNprouafOAv1B+q0MqDAzGQxGM=, tarball: class-utils/download/class-utils-0.3.6.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ define-property: 0.2.5
+ isobject: 3.0.1
+ static-extend: 0.1.2
+ dev: true
+
+ /cli-spinners/2.6.0:
+ resolution: {integrity: sha1-NsfcmPtqmna9YjjsP3fiQlYn6Tk=, tarball: cli-spinners/download/cli-spinners-2.6.0.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /cli-width/3.0.0:
+ resolution: {integrity: sha1-ovSEN6LKqaIkNueUvwceyeYc7fY=, tarball: cli-width/download/cli-width-3.0.0.tgz}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /clone-regexp/2.2.0:
+ resolution: {integrity: sha1-fWXgCIXNh5ZAXDWnN+eoa3Qp428=, tarball: clone-regexp/download/clone-regexp-2.2.0.tgz}
+ engines: {node: '>=6'}
+ dependencies:
+ is-regexp: 2.1.0
+ dev: true
+
+ /clone-stats/0.0.1:
+ resolution: {integrity: sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=, tarball: clone-stats/download/clone-stats-0.0.1.tgz}
+ dev: true
+
+ /clone/1.0.4:
+ resolution: {integrity: sha1-2jCcwmPfFZlMaIypAheco8fNfH4=, tarball: clone/download/clone-1.0.4.tgz}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /clone/2.1.2:
+ resolution: {integrity: sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=, tarball: clone/download/clone-2.1.2.tgz}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /collection-visit/1.0.0:
+ resolution: {integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=, tarball: collection-visit/download/collection-visit-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-visit: 1.0.0
+ object-visit: 1.0.1
+ dev: true
+
+ /color-convert/1.9.3:
+ resolution: {integrity: sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=, tarball: color-convert/download/color-convert-1.9.3.tgz}
+ dependencies:
+ color-name: 1.1.3
+ dev: true
+
+ /color-convert/2.0.1:
+ resolution: {integrity: sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=, tarball: color-convert/download/color-convert-2.0.1.tgz}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name/1.1.3:
+ resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=, tarball: color-name/download/color-name-1.1.3.tgz}
+ dev: true
+
+ /color-name/1.1.4:
+ resolution: {integrity: sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=, tarball: color-name/download/color-name-1.1.4.tgz}
+ dev: true
+
+ /colors/1.4.0:
+ resolution: {integrity: sha1-xQSRR51MG9rtLJztMs98fcI2D3g=, tarball: colors/download/colors-1.4.0.tgz}
+ engines: {node: '>=0.1.90'}
+ dev: true
+
+ /combined-stream/1.0.8:
+ resolution: {integrity: sha1-w9RaizT9cwYxoRCoolIGgrMdWn8=, tarball: combined-stream/download/combined-stream-1.0.8.tgz}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+ dev: true
+
+ /component-emitter/1.3.0:
+ resolution: {integrity: sha1-FuQHD7qK4ptnnyIVhT7hgasuq8A=, tarball: component-emitter/download/component-emitter-1.3.0.tgz}
+ dev: true
+
+ /concat-map/0.0.1:
+ resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=, tarball: concat-map/download/concat-map-0.0.1.tgz}
+ dev: true
+
+ /concat-stream/1.5.2:
+ resolution: {integrity: sha1-cIl4Yk2FavQaWnQd790mHadSwmY=, tarball: concat-stream/download/concat-stream-1.5.2.tgz}
+ engines: {'0': node >= 0.8}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.0.6
+ typedarray: 0.0.6
+ dev: true
+
+ /connect/3.7.0:
+ resolution: {integrity: sha1-XUk0iRDKpeB6AYALAw0MNfIEhPg=, tarball: connect/download/connect-3.7.0.tgz}
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ debug: registry.nlark.com/debug/2.6.9
+ finalhandler: 1.1.2
+ parseurl: registry.nlark.com/parseurl/1.3.3
+ utils-merge: 1.0.1
+ dev: true
+
+ /consolidate/0.16.0:
+ resolution: {integrity: sha1-oRhkdokw8vGUMWYKZZBmaPX73BY=, tarball: consolidate/download/consolidate-0.16.0.tgz}
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ bluebird: 3.7.2
+ dev: true
+
+ /constant-case/2.0.0:
+ resolution: {integrity: sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=, tarball: constant-case/download/constant-case-2.0.0.tgz}
+ dependencies:
+ snake-case: 2.1.0
+ upper-case: 1.1.3
+ dev: true
+
+ /copy-descriptor/0.1.1:
+ resolution: {integrity: sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=, tarball: copy-descriptor/download/copy-descriptor-0.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /core-util-is/1.0.2:
+ resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=, tarball: core-util-is/download/core-util-is-1.0.2.tgz}
+ dev: true
+
+ /cors/2.8.5:
+ resolution: {integrity: sha1-6sEdpRWS3Ya58G9uesKTs9+HXSk=, tarball: cors/download/cors-2.8.5.tgz}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ object-assign: 4.1.1
+ vary: 1.1.2
+ dev: true
+
+ /corser/2.0.1:
+ resolution: {integrity: sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=, tarball: corser/download/corser-2.0.1.tgz}
+ engines: {node: '>= 0.4.0'}
+ dev: true
+
+ /cross-spawn/7.0.3:
+ resolution: {integrity: sha1-9zqFudXUHQRVUcF34ogtSshXKKY=, tarball: cross-spawn/download/cross-spawn-7.0.3.tgz}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: true
+
+ /cssesc/3.0.0:
+ resolution: {integrity: sha1-N3QZGZA7hoVl4cCep0dEXNGJg+4=, tarball: cssesc/download/cssesc-3.0.0.tgz}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /csso/4.2.0:
+ resolution: {integrity: sha1-6jpWE0bo3J9UbW/r7dUBh884lSk=, tarball: csso/download/csso-4.2.0.tgz}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ css-tree: registry.nlark.com/css-tree/1.1.3
+ dev: true
+
+ /dashdash/1.14.1:
+ resolution: {integrity: sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=, tarball: dashdash/download/dashdash-1.14.1.tgz}
+ engines: {node: '>=0.10'}
+ dependencies:
+ assert-plus: 1.0.0
+ dev: true
+
+ /decamelize-keys/1.1.0:
+ resolution: {integrity: sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=, tarball: decamelize-keys/download/decamelize-keys-1.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+ dev: true
+
+ /decamelize/1.2.0:
+ resolution: {integrity: sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=, tarball: decamelize/download/decamelize-1.2.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /decode-uri-component/0.2.0:
+ resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=, tarball: decode-uri-component/download/decode-uri-component-0.2.0.tgz}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /deep-is/0.1.3:
+ resolution: {integrity: sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=, tarball: deep-is/download/deep-is-0.1.3.tgz}
+ dev: true
+
+ /deepmerge/4.2.2:
+ resolution: {integrity: sha1-RNLqNnm49NT/ujPwPYZfwee/SVU=, tarball: deepmerge/download/deepmerge-4.2.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /defaults/1.0.3:
+ resolution: {integrity: sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=, tarball: defaults/download/defaults-1.0.3.tgz}
+ dependencies:
+ clone: 1.0.4
+ dev: true
+
+ /define-property/0.2.5:
+ resolution: {integrity: sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=, tarball: define-property/download/define-property-0.2.5.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 0.1.6
+ dev: true
+
+ /define-property/1.0.0:
+ resolution: {integrity: sha1-dp66rz9KY6rTr56NMEybvnm/sOY=, tarball: define-property/download/define-property-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.2
+ dev: true
+
+ /define-property/2.0.2:
+ resolution: {integrity: sha1-1Flono1lS6d+AqgX+HENcCyxbp0=, tarball: define-property/download/define-property-2.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.2
+ isobject: 3.0.1
+ dev: true
+
+ /del/5.1.0:
+ resolution: {integrity: sha1-2Uh8lONnQQ5u/ykl7ljAyEp1s6c=, tarball: del/download/del-5.1.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ globby: registry.nlark.com/globby/10.0.2
+ graceful-fs: registry.nlark.com/graceful-fs/4.2.8
+ is-glob: 4.0.1
+ is-path-cwd: registry.nlark.com/is-path-cwd/2.2.0
+ is-path-inside: registry.nlark.com/is-path-inside/3.0.3
+ p-map: registry.nlark.com/p-map/3.0.0
+ rimraf: 3.0.2
+ slash: 3.0.0
+ dev: true
+
+ /delayed-stream/1.0.0:
+ resolution: {integrity: sha1-3zrhmayt+31ECqrgsp4icrJOxhk=, tarball: delayed-stream/download/delayed-stream-1.0.0.tgz}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /detect-file/1.0.0:
+ resolution: {integrity: sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=, tarball: detect-file/download/detect-file-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /dir-glob/3.0.1:
+ resolution: {integrity: sha1-Vtv3PZkqSpO6FYT0U0Bj/S5BcX8=, tarball: dir-glob/download/dir-glob-3.0.1.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+ dev: true
+
+ /doctrine/3.0.0:
+ resolution: {integrity: sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=, tarball: doctrine/download/doctrine-3.0.0.tgz}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: true
+
+ /domelementtype/1.3.1:
+ resolution: {integrity: sha1-0EjESzew0Qp/Kj1f7j9DM9eQSB8=, tarball: domelementtype/download/domelementtype-1.3.1.tgz}
+ dev: true
+
+ /domelementtype/2.2.0:
+ resolution: {integrity: sha1-mgtsJ4LtahxzI9QiZxg9+b2LHVc=, tarball: domelementtype/download/domelementtype-2.2.0.tgz}
+ dev: true
+
+ /domhandler/2.4.2:
+ resolution: {integrity: sha1-iAUJfpM9ZehVRvcm1g9euItE+AM=, tarball: domhandler/download/domhandler-2.4.2.tgz?cache=0&sync_timestamp=1618565946556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-2.4.2.tgz}
+ dependencies:
+ domelementtype: 1.3.1
+ dev: true
+
+ /domhandler/4.2.0:
+ resolution: {integrity: sha1-+XaKXwNL5gqJonwuTQ9066DYsFk=, tarball: domhandler/download/domhandler-4.2.0.tgz?cache=0&sync_timestamp=1618565946556&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fdomhandler%2Fdownload%2Fdomhandler-4.2.0.tgz}
+ engines: {node: '>= 4'}
+ dependencies:
+ domelementtype: 2.2.0
+ dev: true
+
+ /dot-case/2.1.1:
+ resolution: {integrity: sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=, tarball: dot-case/download/dot-case-2.1.1.tgz}
+ dependencies:
+ no-case: 2.3.2
+ dev: true
+
+ /dot-case/3.0.4:
+ resolution: {integrity: sha1-mytnDQCkMWZ6inW6Kc0bmICc51E=, tarball: dot-case/download/dot-case-3.0.4.tgz}
+ dependencies:
+ no-case: 3.0.4
+ tslib: registry.nlark.com/tslib/2.3.1
+ dev: true
+
+ /dotenv-expand/5.1.0:
+ resolution: {integrity: sha1-P7rwIL/XlIhAcuomsel5HUWmKfA=, tarball: dotenv-expand/download/dotenv-expand-5.1.0.tgz}
+ dev: true
+
+ /ecc-jsbn/0.1.2:
+ resolution: {integrity: sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=, tarball: ecc-jsbn/download/ecc-jsbn-0.1.2.tgz}
+ dependencies:
+ jsbn: 0.1.1
+ safer-buffer: 2.1.2
+ dev: true
+
+ /ee-first/1.1.1:
+ resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=, tarball: ee-first/download/ee-first-1.1.1.tgz}
+ dev: true
+
+ /ejs/3.1.6:
+ resolution: {integrity: sha1-W/0KBol0O7UmizVQzO7rvBcCgio=, tarball: ejs/download/ejs-3.1.6.tgz}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ jake: 10.8.2
+ dev: true
+
+ /emoji-regex/8.0.0:
+ resolution: {integrity: sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc=, tarball: emoji-regex/download/emoji-regex-8.0.0.tgz}
+ dev: true
+
+ /emojis-list/3.0.0:
+ resolution: {integrity: sha1-VXBmIEatKeLpFucariYKvf9Pang=, tarball: emojis-list/download/emojis-list-3.0.0.tgz}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /encodeurl/1.0.2:
+ resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=, tarball: encodeurl/download/encodeurl-1.0.2.tgz}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /enquirer/2.3.6:
+ resolution: {integrity: sha1-Kn/l3WNKHkElqXXsmU/1RW3Dc00=, tarball: enquirer/download/enquirer-2.3.6.tgz}
+ engines: {node: '>=8.6'}
+ dependencies:
+ ansi-colors: 4.1.1
+ dev: true
+
+ /error-ex/1.3.2:
+ resolution: {integrity: sha1-tKxAZIEH/c3PriQvQovqihTU8b8=, tarball: error-ex/download/error-ex-1.3.2.tgz}
+ dependencies:
+ is-arrayish: 0.2.1
+ dev: true
+
+ /escalade/3.1.1:
+ resolution: {integrity: sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=, tarball: escalade/download/escalade-3.1.1.tgz?cache=0&sync_timestamp=1602572632086&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fescalade%2Fdownload%2Fescalade-3.1.1.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-html/1.0.3:
+ resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=, tarball: escape-html/download/escape-html-1.0.3.tgz}
+ dev: true
+
+ /escape-string-regexp/1.0.5:
+ resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=, tarball: escape-string-regexp/download/escape-string-regexp-1.0.5.tgz}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /escape-string-regexp/4.0.0:
+ resolution: {integrity: sha1-FLqDpdNz49MR5a/KKc9b+tllvzQ=, tarball: escape-string-regexp/download/escape-string-regexp-4.0.0.tgz}
+ engines: {node: '>=10'}
+ dev: true
+
+ /esprima/4.0.1:
+ resolution: {integrity: sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=, tarball: esprima/download/esprima-4.0.1.tgz}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /esquery/1.4.0:
+ resolution: {integrity: sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=, tarball: esquery/download/esquery-1.4.0.tgz}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.2.0
+ dev: true
+
+ /esrecurse/4.3.0:
+ resolution: {integrity: sha1-eteWTWeauyi+5yzsY3WLHF0smSE=, tarball: esrecurse/download/esrecurse-4.3.0.tgz}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.2.0
+ dev: true
+
+ /estraverse/4.3.0:
+ resolution: {integrity: sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=, tarball: estraverse/download/estraverse-4.3.0.tgz}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estraverse/5.2.0:
+ resolution: {integrity: sha1-MH30JUfmzHMk088DwVXVzbjFOIA=, tarball: estraverse/download/estraverse-5.2.0.tgz}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estree-walker/1.0.1:
+ resolution: {integrity: sha1-MbxdYSyWtwQQa0d+bdXYqhOMtwA=, tarball: estree-walker/download/estree-walker-1.0.1.tgz}
+ dev: true
+
+ /estree-walker/2.0.2:
+ resolution: {integrity: sha1-UvAQF4wqTBF6d1fP6UKtt9LaTKw=, tarball: estree-walker/download/estree-walker-2.0.2.tgz}
+
+ /esutils/2.0.3:
+ resolution: {integrity: sha1-dNLrTeC42hKTcRkQ1Qd1ubcQ72Q=, tarball: esutils/download/esutils-2.0.3.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /etag/1.8.1:
+ resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=, tarball: etag/download/etag-1.8.1.tgz}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /eventemitter3/4.0.7:
+ resolution: {integrity: sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=, tarball: eventemitter3/download/eventemitter3-4.0.7.tgz}
+ dev: true
+
+ /execall/2.0.0:
+ resolution: {integrity: sha1-FqBrX+UJnffQC+XZwG7s3tFmO0U=, tarball: execall/download/execall-2.0.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ clone-regexp: 2.2.0
+ dev: true
+
+ /expand-brackets/2.1.4:
+ resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=, tarball: expand-brackets/download/expand-brackets-2.1.4.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ debug: registry.nlark.com/debug/2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ posix-character-classes: 0.1.1
+ regex-not: 1.0.2
+ snapdragon: registry.nlark.com/snapdragon/0.8.2
+ to-regex: 3.0.2
+ dev: true
+
+ /expand-tilde/2.0.2:
+ resolution: {integrity: sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=, tarball: expand-tilde/download/expand-tilde-2.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ homedir-polyfill: 1.0.3
+ dev: true
+
+ /extend-shallow/2.0.1:
+ resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=, tarball: extend-shallow/download/extend-shallow-2.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extendable: 0.1.1
+ dev: true
+
+ /extend-shallow/3.0.2:
+ resolution: {integrity: sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=, tarball: extend-shallow/download/extend-shallow-3.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ assign-symbols: 1.0.0
+ is-extendable: 1.0.1
+ dev: true
+
+ /external-editor/3.1.0:
+ resolution: {integrity: sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=, tarball: external-editor/download/external-editor-3.1.0.tgz}
+ engines: {node: '>=4'}
+ dependencies:
+ chardet: 0.7.0
+ iconv-lite: registry.nlark.com/iconv-lite/0.4.24
+ tmp: 0.0.33
+ dev: true
+
+ /extglob/2.0.4:
+ resolution: {integrity: sha1-rQD+TcYSqSMuhxhxHcXLWrAoVUM=, tarball: extglob/download/extglob-2.0.4.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ 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.2
+ snapdragon: registry.nlark.com/snapdragon/0.8.2
+ to-regex: 3.0.2
+ dev: true
+
+ /extsprintf/1.3.0:
+ resolution: {integrity: sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=, tarball: extsprintf/download/extsprintf-1.3.0.tgz}
+ engines: {'0': node >=0.6.0}
+ dev: true
+
+ /fast-deep-equal/3.1.3:
+ resolution: {integrity: sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=, tarball: fast-deep-equal/download/fast-deep-equal-3.1.3.tgz}
+ dev: true
+
+ /fast-json-stable-stringify/2.1.0:
+ resolution: {integrity: sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=, tarball: fast-json-stable-stringify/download/fast-json-stable-stringify-2.1.0.tgz}
+ dev: true
+
+ /fast-levenshtein/2.0.6:
+ resolution: {integrity: sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=, tarball: fast-levenshtein/download/fast-levenshtein-2.0.6.tgz}
+ dev: true
+
+ /fastest-levenshtein/1.0.12:
+ resolution: {integrity: sha1-mZD306iMxan/0fF0V0UlFwDUl+I=, tarball: fastest-levenshtein/download/fastest-levenshtein-1.0.12.tgz}
+ dev: true
+
+ /file-entry-cache/6.0.1:
+ resolution: {integrity: sha1-IRst2WWcsDlLBz5zI6w8kz1SICc=, tarball: file-entry-cache/download/file-entry-cache-6.0.1.tgz}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.0.4
+ dev: true
+
+ /filelist/1.0.2:
+ resolution: {integrity: sha1-gCAvIUYtTRwuIUEZsYB8G8A4Dls=, tarball: filelist/download/filelist-1.0.2.tgz}
+ dependencies:
+ minimatch: 3.0.4
+ dev: true
+
+ /fill-range/4.0.0:
+ resolution: {integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=, tarball: fill-range/download/fill-range-4.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ to-regex-range: 2.1.1
+ dev: true
+
+ /fill-range/7.0.1:
+ resolution: {integrity: sha1-GRmmp8df44ssfHflGYU12prN2kA=, tarball: fill-range/download/fill-range-7.0.1.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /finalhandler/1.1.2:
+ resolution: {integrity: sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=, tarball: finalhandler/download/finalhandler-1.1.2.tgz}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ debug: registry.nlark.com/debug/2.6.9
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.3.0
+ parseurl: registry.nlark.com/parseurl/1.3.3
+ statuses: 1.5.0
+ unpipe: 1.0.0
+ dev: true
+
+ /find-up/4.1.0:
+ resolution: {integrity: sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=, tarball: find-up/download/find-up-4.1.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: registry.nlark.com/locate-path/5.0.0
+ path-exists: registry.nlark.com/path-exists/4.0.0
+ dev: true
+
+ /findup-sync/2.0.0:
+ resolution: {integrity: sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=, tarball: findup-sync/download/findup-sync-2.0.0.tgz}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ detect-file: 1.0.0
+ is-glob: 3.1.0
+ micromatch: 3.1.10
+ resolve-dir: 1.0.1
+ dev: true
+
+ /fined/1.2.0:
+ resolution: {integrity: sha1-0AvszxqitHXRbUI7Aji3E6LEo3s=, tarball: fined/download/fined-1.2.0.tgz}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ expand-tilde: 2.0.2
+ is-plain-object: 2.0.4
+ object.defaults: registry.nlark.com/object.defaults/1.1.0
+ object.pick: 1.3.0
+ parse-filepath: 1.0.2
+ dev: true
+
+ /flat-cache/3.0.4:
+ resolution: {integrity: sha1-YbAzgwKy/p+Vfcwy/CqH8cMEixE=, tarball: flat-cache/download/flat-cache-3.0.4.tgz}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: registry.nlark.com/flatted/3.2.2
+ rimraf: 3.0.2
+ dev: true
+
+ /for-in/1.0.2:
+ resolution: {integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=, tarball: for-in/download/for-in-1.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /for-own/1.0.0:
+ resolution: {integrity: sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=, tarball: for-own/download/for-own-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-in: 1.0.2
+ dev: true
+
+ /forever-agent/0.6.1:
+ resolution: {integrity: sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=, tarball: forever-agent/download/forever-agent-0.6.1.tgz}
+ dev: true
+
+ /form-data/2.3.3:
+ resolution: {integrity: sha1-3M5SwF9kTymManq5Nr1yTO/786Y=, tarball: form-data/download/form-data-2.3.3.tgz}
+ engines: {node: '>= 0.12'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: registry.nlark.com/mime-types/2.1.32
+ dev: true
+
+ /fragment-cache/0.2.1:
+ resolution: {integrity: sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=, tarball: fragment-cache/download/fragment-cache-0.2.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-cache: 0.2.2
+ dev: true
+
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=, tarball: fs.realpath/download/fs.realpath-1.0.0.tgz}
+ dev: true
+
+ /fsevents/2.3.2:
+ resolution: {integrity: sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=, tarball: fsevents/download/fsevents-2.3.2.tgz?cache=0&sync_timestamp=1612537044236&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.3.2.tgz}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ dev: true
+ optional: true
+
+ /function-bind/1.1.1:
+ resolution: {integrity: sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=, tarball: function-bind/download/function-bind-1.1.1.tgz}
+ dev: true
+
+ /functional-red-black-tree/1.0.1:
+ resolution: {integrity: sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=, tarball: functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz}
+ dev: true
+
+ /gaze/1.1.3:
+ resolution: {integrity: sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=, tarball: gaze/download/gaze-1.1.3.tgz}
+ engines: {node: '>= 4.0.0'}
+ dependencies:
+ globule: registry.nlark.com/globule/1.3.3
+ dev: true
+
+ /generic-names/2.0.1:
+ resolution: {integrity: sha1-+KN46tLMqno08DF7BVVIMq5BuHI=, tarball: generic-names/download/generic-names-2.0.1.tgz}
+ dependencies:
+ loader-utils: 1.4.0
+ dev: true
+
+ /gensync/1.0.0-beta.2:
+ resolution: {integrity: sha1-MqbudsPX9S1GsrGuXZP+qFgKJeA=, tarball: gensync/download/gensync-1.0.0-beta.2.tgz}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /get-intrinsic/1.1.1:
+ resolution: {integrity: sha1-FfWfN2+FXERpY5SPDSTNNje0q8Y=, tarball: get-intrinsic/download/get-intrinsic-1.1.1.tgz}
+ dependencies:
+ function-bind: 1.1.1
+ has: 1.0.3
+ has-symbols: 1.0.2
+ dev: true
+
+ /get-stdin/8.0.0:
+ resolution: {integrity: sha1-y61qc/63X27rIrqeAfiaooqpelM=, tarball: get-stdin/download/get-stdin-8.0.0.tgz?cache=0&sync_timestamp=1618559266325&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fget-stdin%2Fdownload%2Fget-stdin-8.0.0.tgz}
+ engines: {node: '>=10'}
+ dev: true
+
+ /get-stream/6.0.1:
+ resolution: {integrity: sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=, tarball: get-stream/download/get-stream-6.0.1.tgz}
+ engines: {node: '>=10'}
+ dev: true
+
+ /get-value/2.0.6:
+ resolution: {integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=, tarball: get-value/download/get-value-2.0.6.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /getpass/0.1.7:
+ resolution: {integrity: sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=, tarball: getpass/download/getpass-0.1.7.tgz}
+ dependencies:
+ assert-plus: 1.0.0
+ dev: true
+
+ /global-modules/1.0.0:
+ resolution: {integrity: sha1-bXcPDrUjrHgWTXK15xqIdyZcw+o=, tarball: global-modules/download/global-modules-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ global-prefix: 1.0.2
+ is-windows: 1.0.2
+ resolve-dir: 1.0.1
+ dev: true
+
+ /global-modules/2.0.0:
+ resolution: {integrity: sha1-mXYFrSNF8n9RU5vqJldEISFcd4A=, tarball: global-modules/download/global-modules-2.0.0.tgz}
+ engines: {node: '>=6'}
+ dependencies:
+ global-prefix: 3.0.0
+ dev: true
+
+ /global-prefix/1.0.2:
+ resolution: {integrity: sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=, tarball: global-prefix/download/global-prefix-1.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ expand-tilde: 2.0.2
+ homedir-polyfill: 1.0.3
+ ini: 1.3.8
+ is-windows: 1.0.2
+ which: 1.3.1
+ dev: true
+
+ /global-prefix/3.0.0:
+ resolution: {integrity: sha1-/IX3MGTfafUEIfR/iD/luRO6m5c=, tarball: global-prefix/download/global-prefix-3.0.0.tgz}
+ engines: {node: '>=6'}
+ dependencies:
+ ini: 1.3.8
+ kind-of: 6.0.3
+ which: 1.3.1
+ dev: true
+
+ /globjoin/0.1.4:
+ resolution: {integrity: sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=, tarball: globjoin/download/globjoin-0.1.4.tgz}
+ dev: true
+
+ /gonzales-pe/4.3.0:
+ resolution: {integrity: sha1-/p3sXzxVfurQn/hoxlgmvlTQZ7M=, tarball: gonzales-pe/download/gonzales-pe-4.3.0.tgz}
+ engines: {node: '>=0.6.0'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ /handlebars/4.7.7:
+ resolution: {integrity: sha1-nOM0FqrQLb1sj6+oJA1dmABJRaE=, tarball: handlebars/download/handlebars-4.7.7.tgz}
+ engines: {node: '>=0.4.7'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ neo-async: 2.6.2
+ source-map: 0.6.1
+ wordwrap: 1.0.0
+ optionalDependencies:
+ uglify-js: registry.nlark.com/uglify-js/3.14.1
+ dev: true
+
+ /har-schema/2.0.0:
+ resolution: {integrity: sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=, tarball: har-schema/download/har-schema-2.0.0.tgz}
+ engines: {node: '>=4'}
+ dev: true
+
+ /har-validator/5.1.5:
+ resolution: {integrity: sha1-HwgDufjLIMD6E4It8ezds2veHv0=, tarball: har-validator/download/har-validator-5.1.5.tgz}
+ engines: {node: '>=6'}
+ deprecated: this library is no longer supported
+ dependencies:
+ ajv: registry.nlark.com/ajv/6.12.6
+ har-schema: 2.0.0
+ dev: true
+
+ /hard-rejection/2.1.0:
+ resolution: {integrity: sha1-HG7aXBaFxjlCdm15u0Cudzzs2IM=, tarball: hard-rejection/download/hard-rejection-2.1.0.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /has-ansi/2.0.0:
+ resolution: {integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=, tarball: has-ansi/download/has-ansi-2.0.0.tgz?cache=0&sync_timestamp=1618558151426&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhas-ansi%2Fdownload%2Fhas-ansi-2.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-regex: 2.1.1
+ dev: true
+
+ /has-symbols/1.0.2:
+ resolution: {integrity: sha1-Fl0wcMADCXUqEjakeTMeOsVvFCM=, tarball: has-symbols/download/has-symbols-1.0.2.tgz}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-value/0.3.1:
+ resolution: {integrity: sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=, tarball: has-value/download/has-value-0.3.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 0.1.4
+ isobject: 2.1.0
+ dev: true
+
+ /has-value/1.0.0:
+ resolution: {integrity: sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=, tarball: has-value/download/has-value-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 1.0.0
+ isobject: 3.0.1
+ dev: true
+
+ /has-values/0.1.4:
+ resolution: {integrity: sha1-bWHeldkd/Km5oCCJrThL/49it3E=, tarball: has-values/download/has-values-0.1.4.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /has-values/1.0.0:
+ resolution: {integrity: sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=, tarball: has-values/download/has-values-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ kind-of: 4.0.0
+ dev: true
+
+ /has/1.0.3:
+ resolution: {integrity: sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=, tarball: has/download/has-1.0.3.tgz}
+ engines: {node: '>= 0.4.0'}
+ dependencies:
+ function-bind: 1.1.1
+ dev: true
+
+ /hash-sum/2.0.0:
+ resolution: {integrity: sha1-gdAbtd6OpKIUrV1urRtSNGCwtFo=, tarball: hash-sum/download/hash-sum-2.0.0.tgz}
+ dev: true
+
+ /he/1.2.0:
+ resolution: {integrity: sha1-hK5l+n6vsWX922FWauFLrwVmTw8=, tarball: he/download/he-1.2.0.tgz}
+ hasBin: true
+ dev: true
+
+ /header-case/1.0.1:
+ resolution: {integrity: sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=, tarball: header-case/download/header-case-1.0.1.tgz}
+ dependencies:
+ no-case: 2.3.2
+ upper-case: 1.1.3
+ dev: true
+
+ /homedir-polyfill/1.0.3:
+ resolution: {integrity: sha1-dDKYzvTlrz4ZQWH7rcwhUdOgWOg=, tarball: homedir-polyfill/download/homedir-polyfill-1.0.3.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ parse-passwd: 1.0.0
+ dev: true
+
+ /hosted-git-info/2.8.9:
+ resolution: {integrity: sha1-3/wL+aIcAiCQkPKqaUKeFBTa8/k=, tarball: hosted-git-info/download/hosted-git-info-2.8.9.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-2.8.9.tgz}
+ dev: true
+
+ /hosted-git-info/4.0.2:
+ resolution: {integrity: sha1-XkJVB+7eT+qEa3Ji8IOEVsQgmWE=, tarball: hosted-git-info/download/hosted-git-info-4.0.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fhosted-git-info%2Fdownload%2Fhosted-git-info-4.0.2.tgz}
+ engines: {node: '>=10'}
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /html-minifier-terser/5.1.1:
+ resolution: {integrity: sha1-ki6W8fO7YIMsJjS3mIQJY4mx8FQ=, tarball: html-minifier-terser/download/html-minifier-terser-5.1.1.tgz}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ camel-case: 4.1.2
+ clean-css: registry.nlark.com/clean-css/4.2.3
+ commander: registry.nlark.com/commander/4.1.1
+ he: 1.2.0
+ param-case: 3.0.4
+ relateurl: 0.2.7
+ terser: registry.nlark.com/terser/4.8.0
+ dev: true
+
+ /html-tags/3.1.0:
+ resolution: {integrity: sha1-e15vfmZen7QfMAB+2eDUHpf7IUA=, tarball: html-tags/download/html-tags-3.1.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /http-proxy/1.18.1:
+ resolution: {integrity: sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=, tarball: http-proxy/download/http-proxy-1.18.1.tgz}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ eventemitter3: 4.0.7
+ follow-redirects: registry.nlark.com/follow-redirects/1.14.2
+ requires-port: 1.0.0
+ dev: true
+
+ /http-signature/1.2.0:
+ resolution: {integrity: sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=, tarball: http-signature/download/http-signature-1.2.0.tgz}
+ engines: {node: '>=0.8', npm: '>=1.3.7'}
+ dependencies:
+ assert-plus: 1.0.0
+ jsprim: 1.4.1
+ sshpk: 1.16.1
+ dev: true
+
+ /icss-replace-symbols/1.1.0:
+ resolution: {integrity: sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=, tarball: icss-replace-symbols/download/icss-replace-symbols-1.1.0.tgz}
+ dev: true
+
+ /icss-utils/5.1.0_postcss@8.3.6:
+ resolution: {integrity: sha1-xr5oWKvQE9do6YNmrkfiXViHsa4=, tarball: icss-utils/download/icss-utils-5.1.0.tgz}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: registry.nlark.com/postcss/8.3.6
+ dev: true
+
+ /ignore/4.0.6:
+ resolution: {integrity: sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=, tarball: ignore/download/ignore-4.0.6.tgz}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /ignore/5.1.8:
+ resolution: {integrity: sha1-8VCotQo0KJsz4i9YiavU2AFvDlc=, tarball: ignore/download/ignore-5.1.8.tgz}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /image-size/0.5.5:
+ resolution: {integrity: sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=, tarball: image-size/download/image-size-0.5.5.tgz}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dev: true
+
+ /import-fresh/3.3.0:
+ resolution: {integrity: sha1-NxYsJfy566oublPVtNiM4X2eDCs=, tarball: import-fresh/download/import-fresh-3.3.0.tgz}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ dev: true
+
+ /import-lazy/4.0.0:
+ resolution: {integrity: sha1-6OtidIOgpD2jwD8+NVSL5csMwVM=, tarball: import-lazy/download/import-lazy-4.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /imurmurhash/0.1.4:
+ resolution: {integrity: sha1-khi5srkoojixPcT7a21XbyMUU+o=, tarball: imurmurhash/download/imurmurhash-0.1.4.tgz}
+ engines: {node: '>=0.8.19'}
+ dev: true
+
+ /indent-string/4.0.0:
+ resolution: {integrity: sha1-Yk+PRJfWGbLZdoUx1Y9BIoVNclE=, tarball: indent-string/download/indent-string-4.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /inflight/1.0.6:
+ resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=, tarball: inflight/download/inflight-1.0.6.tgz}
+ dependencies:
+ once: 1.4.0
+ wrappy: registry.nlark.com/wrappy/1.0.2
+ dev: true
+
+ /inherits/2.0.4:
+ resolution: {integrity: sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=, tarball: inherits/download/inherits-2.0.4.tgz}
+ dev: true
+
+ /ini/1.3.8:
+ resolution: {integrity: sha1-op2kJbSIBvNHZ6Tvzjlyaa8oQyw=, tarball: ini/download/ini-1.3.8.tgz}
+ dev: true
+
+ /interpret/1.4.0:
+ resolution: {integrity: sha1-Zlq4vE2iendKQFhOgS4+D6RbGh4=, tarball: interpret/download/interpret-1.4.0.tgz}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /is-absolute/1.0.0:
+ resolution: {integrity: sha1-OV4a6EsR8mrReV5zwXN45IowFXY=, tarball: is-absolute/download/is-absolute-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-relative: registry.nlark.com/is-relative/1.0.0
+ is-windows: 1.0.2
+ dev: true
+
+ /is-accessor-descriptor/0.1.6:
+ resolution: {integrity: sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=, tarball: is-accessor-descriptor/download/is-accessor-descriptor-0.1.6.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /is-accessor-descriptor/1.0.0:
+ resolution: {integrity: sha1-FpwvbT3x+ZJhgHI2XJsOofaHhlY=, tarball: is-accessor-descriptor/download/is-accessor-descriptor-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: true
+
+ /is-alphabetical/1.0.4:
+ resolution: {integrity: sha1-nn1rlJFr4iFTdF0YTCmMv5hqaG0=, tarball: is-alphabetical/download/is-alphabetical-1.0.4.tgz}
+ dev: true
+
+ /is-alphanumerical/1.0.4:
+ resolution: {integrity: sha1-frmiQx+FX2se8aeOMm31FWlsTb8=, tarball: is-alphanumerical/download/is-alphanumerical-1.0.4.tgz}
+ dependencies:
+ is-alphabetical: 1.0.4
+ is-decimal: 1.0.4
+ dev: true
+
+ /is-arrayish/0.2.1:
+ resolution: {integrity: sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=, tarball: is-arrayish/download/is-arrayish-0.2.1.tgz}
+ dev: true
+
+ /is-binary-path/2.1.0:
+ resolution: {integrity: sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=, tarball: is-binary-path/download/is-binary-path-2.1.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ binary-extensions: 2.2.0
+ dev: true
+
+ /is-buffer/1.1.6:
+ resolution: {integrity: sha1-76ouqdqg16suoTqXsritUf776L4=, tarball: is-buffer/download/is-buffer-1.1.6.tgz}
+ dev: true
+
+ /is-buffer/2.0.5:
+ resolution: {integrity: sha1-68JS5ADSL/jXf6CYiIIaJKZYwZE=, tarball: is-buffer/download/is-buffer-2.0.5.tgz}
+ engines: {node: '>=4'}
+ dev: true
+
+ /is-data-descriptor/0.1.4:
+ resolution: {integrity: sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=, tarball: is-data-descriptor/download/is-data-descriptor-0.1.4.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /is-data-descriptor/1.0.0:
+ resolution: {integrity: sha1-2Eh2Mh0Oet0DmQQGq7u9NrqSaMc=, tarball: is-data-descriptor/download/is-data-descriptor-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: true
+
+ /is-decimal/1.0.4:
+ resolution: {integrity: sha1-ZaOllYocW2OnBuGzM9fNn2MNP6U=, tarball: is-decimal/download/is-decimal-1.0.4.tgz}
+ dev: true
+
+ /is-descriptor/0.1.6:
+ resolution: {integrity: sha1-Nm2CQN3kh8pRgjsaufB6EKeCUco=, tarball: is-descriptor/download/is-descriptor-0.1.6.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-accessor-descriptor: 0.1.6
+ is-data-descriptor: 0.1.4
+ kind-of: 5.1.0
+ dev: true
+
+ /is-descriptor/1.0.2:
+ resolution: {integrity: sha1-OxWXRqZmBLBPjIFSS6NlxfFNhuw=, tarball: is-descriptor/download/is-descriptor-1.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-accessor-descriptor: 1.0.0
+ is-data-descriptor: 1.0.0
+ kind-of: 6.0.3
+ dev: true
+
+ /is-extendable/0.1.1:
+ resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=, tarball: is-extendable/download/is-extendable-0.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-extendable/1.0.1:
+ resolution: {integrity: sha1-p0cPnkJnM9gb2B4RVSZOOjUHyrQ=, tarball: is-extendable/download/is-extendable-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-plain-object: 2.0.4
+ dev: true
+
+ /is-extglob/2.1.1:
+ resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=, tarball: is-extglob/download/is-extglob-2.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-fullwidth-code-point/3.0.0:
+ resolution: {integrity: sha1-8Rb4Bk/pCz94RKOJl8C3UFEmnx0=, tarball: is-fullwidth-code-point/download/is-fullwidth-code-point-3.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-glob/3.1.0:
+ resolution: {integrity: sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=, tarball: is-glob/download/is-glob-3.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-glob/4.0.1:
+ resolution: {integrity: sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw=, tarball: is-glob/download/is-glob-4.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-hexadecimal/1.0.4:
+ resolution: {integrity: sha1-zDXJdYjaS9Saju3WvECC1E3LI6c=, tarball: is-hexadecimal/download/is-hexadecimal-1.0.4.tgz}
+ dev: true
+
+ /is-module/1.0.0:
+ resolution: {integrity: sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=, tarball: is-module/download/is-module-1.0.0.tgz}
+ dev: true
+
+ /is-number/3.0.0:
+ resolution: {integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=, tarball: is-number/download/is-number-3.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /is-number/7.0.0:
+ resolution: {integrity: sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=, tarball: is-number/download/is-number-7.0.0.tgz}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-obj/1.0.1:
+ resolution: {integrity: sha1-PkcprB9f3gJc19g6iW2rn09n2w8=, tarball: is-obj/download/is-obj-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-plain-obj/1.1.0:
+ resolution: {integrity: sha1-caUMhCnfync8kqOQpKA7OfzVHT4=, tarball: is-plain-obj/download/is-plain-obj-1.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-plain-obj/2.1.0:
+ resolution: {integrity: sha1-ReQuN/zPH0Dajl927iFRWEDAkoc=, tarball: is-plain-obj/download/is-plain-obj-2.1.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-plain-object/2.0.4:
+ resolution: {integrity: sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=, tarball: is-plain-object/download/is-plain-object-2.0.4.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: true
+
+ /is-regexp/1.0.0:
+ resolution: {integrity: sha1-/S2INUXEa6xaYz57mgnof6LLUGk=, tarball: is-regexp/download/is-regexp-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-regexp/2.1.0:
+ resolution: {integrity: sha1-zXNKVoZOI7lWv058ZsOWpMCyLC0=, tarball: is-regexp/download/is-regexp-2.1.0.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /is-typedarray/1.0.0:
+ resolution: {integrity: sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=, tarball: is-typedarray/download/is-typedarray-1.0.0.tgz}
+ dev: true
+
+ /is-unc-path/1.0.0:
+ resolution: {integrity: sha1-1zHoiY7QkKEsNSrS6u1Qla0yLJ0=, tarball: is-unc-path/download/is-unc-path-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ unc-path-regex: 0.1.2
+ dev: true
+
+ /is-upper-case/1.1.2:
+ resolution: {integrity: sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=, tarball: is-upper-case/download/is-upper-case-1.1.2.tgz}
+ dependencies:
+ upper-case: 1.1.3
+ dev: true
+
+ /is-utf8/0.2.1:
+ resolution: {integrity: sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=, tarball: is-utf8/download/is-utf8-0.2.1.tgz}
+ dev: true
+
+ /is-windows/1.0.2:
+ resolution: {integrity: sha1-0YUOuXkezRjmGCzhKjDzlmNLsZ0=, tarball: is-windows/download/is-windows-1.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /isexe/2.0.0:
+ resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=, tarball: isexe/download/isexe-2.0.0.tgz}
+ dev: true
+
+ /isobject/2.1.0:
+ resolution: {integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=, tarball: isobject/download/isobject-2.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isarray: registry.nlark.com/isarray/1.0.0
+ dev: true
+
+ /isobject/3.0.1:
+ resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=, tarball: isobject/download/isobject-3.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /isstream/0.1.2:
+ resolution: {integrity: sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=, tarball: isstream/download/isstream-0.1.2.tgz}
+ dev: true
+
+ /jake/10.8.2:
+ resolution: {integrity: sha1-68nehVgWCmbYLQ6txqLlj7xQCns=, tarball: jake/download/jake-10.8.2.tgz}
+ hasBin: true
+ dependencies:
+ async: registry.nlark.com/async/0.9.2
+ chalk: registry.nlark.com/chalk/2.4.2
+ filelist: 1.0.2
+ minimatch: 3.0.4
+ dev: true
+
+ /js-yaml/3.14.1:
+ resolution: {integrity: sha1-2ugS/bOCX6MGYJqHFzg8UMNqBTc=, tarball: js-yaml/download/js-yaml-3.14.1.tgz?cache=0&sync_timestamp=1618447696130&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-yaml%2Fdownload%2Fjs-yaml-3.14.1.tgz}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
+ /jsbn/0.1.1:
+ resolution: {integrity: sha1-peZUwuWi3rXyAdls77yoDA7y9RM=, tarball: jsbn/download/jsbn-0.1.1.tgz}
+ dev: true
+
+ /jsesc/2.5.2:
+ resolution: {integrity: sha1-gFZNLkg9rPbo7yCWUKZ98/DCg6Q=, tarball: jsesc/download/jsesc-2.5.2.tgz}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /json-parse-even-better-errors/2.3.1:
+ resolution: {integrity: sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=, tarball: json-parse-even-better-errors/download/json-parse-even-better-errors-2.3.1.tgz}
+ dev: true
+
+ /json-schema-traverse/0.4.1:
+ resolution: {integrity: sha1-afaofZUTq4u4/mO9sJecRI5oRmA=, tarball: json-schema-traverse/download/json-schema-traverse-0.4.1.tgz}
+ dev: true
+
+ /json-schema-traverse/1.0.0:
+ resolution: {integrity: sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=, tarball: json-schema-traverse/download/json-schema-traverse-1.0.0.tgz}
+ dev: true
+
+ /json-schema/0.2.3:
+ resolution: {integrity: sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=, tarball: json-schema/download/json-schema-0.2.3.tgz}
+ dev: true
+
+ /json-stringify-safe/5.0.1:
+ resolution: {integrity: sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=, tarball: json-stringify-safe/download/json-stringify-safe-5.0.1.tgz}
+ dev: true
+
+ /jsonfile/6.1.0:
+ resolution: {integrity: sha1-vFWyY0eTxnnsZAMJTrE2mKbsCq4=, tarball: jsonfile/download/jsonfile-6.1.0.tgz}
+ dependencies:
+ universalify: 2.0.0
+ optionalDependencies:
+ graceful-fs: registry.nlark.com/graceful-fs/4.2.8
+ dev: true
+
+ /jsprim/1.4.1:
+ resolution: {integrity: sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=, tarball: jsprim/download/jsprim-1.4.1.tgz}
+ engines: {'0': node >=0.6.0}
+ dependencies:
+ assert-plus: 1.0.0
+ extsprintf: 1.3.0
+ json-schema: 0.2.3
+ verror: 1.10.0
+ dev: true
+
+ /kind-of/3.2.2:
+ resolution: {integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=, tarball: kind-of/download/kind-of-3.2.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: true
+
+ /kind-of/4.0.0:
+ resolution: {integrity: sha1-IIE989cSkosgc3hpGkUGb65y3Vc=, tarball: kind-of/download/kind-of-4.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: true
+
+ /kind-of/5.1.0:
+ resolution: {integrity: sha1-cpyR4thXt6QZofmqZWhcTDP1hF0=, tarball: kind-of/download/kind-of-5.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /kind-of/6.0.3:
+ resolution: {integrity: sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=, tarball: kind-of/download/kind-of-6.0.3.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /levn/0.4.1:
+ resolution: {integrity: sha1-rkViwAdHO5MqYgDUAyaN0v/8at4=, tarball: levn/download/levn-0.4.1.tgz}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: true
+
+ /lines-and-columns/1.1.6:
+ resolution: {integrity: sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=, tarball: lines-and-columns/download/lines-and-columns-1.1.6.tgz}
+ dev: true
+
+ /loader-utils/1.4.0:
+ resolution: {integrity: sha1-xXm140yzSxp07cbB+za/o3HVphM=, tarball: loader-utils/download/loader-utils-1.4.0.tgz}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ big.js: registry.nlark.com/big.js/5.2.2
+ emojis-list: 3.0.0
+ json5: registry.nlark.com/json5/1.0.1
+ dev: true
+
+ /lodash.camelcase/4.3.0:
+ resolution: {integrity: sha1-soqmKIorn8ZRA1x3EfZathkDMaY=, tarball: lodash.camelcase/download/lodash.camelcase-4.3.0.tgz}
+ dev: true
+
+ /lodash.clonedeep/4.5.0:
+ resolution: {integrity: sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=, tarball: lodash.clonedeep/download/lodash.clonedeep-4.5.0.tgz}
+ dev: true
+
+ /lodash.get/4.4.2:
+ resolution: {integrity: sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=, tarball: lodash.get/download/lodash.get-4.4.2.tgz}
+ dev: true
+
+ /lodash.merge/4.6.2:
+ resolution: {integrity: sha1-VYqlO0O2YeGSWgr9+japoQhf5Xo=, tarball: lodash.merge/download/lodash.merge-4.6.2.tgz}
+ dev: true
+
+ /lodash.truncate/4.4.2:
+ resolution: {integrity: sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=, tarball: lodash.truncate/download/lodash.truncate-4.4.2.tgz}
+ dev: true
+
+ /lodash/4.17.21:
+ resolution: {integrity: sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=, tarball: lodash/download/lodash-4.17.21.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flodash%2Fdownload%2Flodash-4.17.21.tgz}
+
+ /log-symbols/2.2.0:
+ resolution: {integrity: sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=, tarball: log-symbols/download/log-symbols-2.2.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-2.2.0.tgz}
+ engines: {node: '>=4'}
+ dependencies:
+ chalk: registry.nlark.com/chalk/2.4.2
+ dev: true
+
+ /log-symbols/4.1.0:
+ resolution: {integrity: sha1-P727lbRoOsn8eFER55LlWNSr1QM=, tarball: log-symbols/download/log-symbols-4.1.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Flog-symbols%2Fdownload%2Flog-symbols-4.1.0.tgz}
+ engines: {node: '>=10'}
+ dependencies:
+ chalk: registry.nlark.com/chalk/4.1.2
+ is-unicode-supported: registry.nlark.com/is-unicode-supported/0.1.0
+ dev: true
+
+ /longest-streak/2.0.4:
+ resolution: {integrity: sha1-uFmZV9pbXatk3uP+MW+ndFl9kOQ=, tarball: longest-streak/download/longest-streak-2.0.4.tgz}
+ dev: true
+
+ /lower-case-first/1.0.2:
+ resolution: {integrity: sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=, tarball: lower-case-first/download/lower-case-first-1.0.2.tgz}
+ dependencies:
+ lower-case: 1.1.4
+ dev: true
+
+ /lower-case/1.1.4:
+ resolution: {integrity: sha1-miyr0bno4K6ZOkv31YdcOcQujqw=, tarball: lower-case/download/lower-case-1.1.4.tgz}
+ dev: true
+
+ /lower-case/2.0.2:
+ resolution: {integrity: sha1-b6I3xj29xKgsoP2ILkci3F5jTig=, tarball: lower-case/download/lower-case-2.0.2.tgz}
+ dependencies:
+ tslib: registry.nlark.com/tslib/2.3.1
+ dev: true
+
+ /lru-cache/5.1.1:
+ resolution: {integrity: sha1-HaJ+ZxAnGUdpXa9oSOhH8B2EuSA=, tarball: lru-cache/download/lru-cache-5.1.1.tgz}
+ dependencies:
+ yallist: 3.1.1
+ dev: true
+
+ /lru-cache/6.0.0:
+ resolution: {integrity: sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=, tarball: lru-cache/download/lru-cache-6.0.0.tgz}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: true
+
+ /make-iterator/1.0.1:
+ resolution: {integrity: sha1-KbM/MSqo9UfEpeSQ9Wr87JkTOtY=, tarball: make-iterator/download/make-iterator-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: true
+
+ /map-cache/0.2.2:
+ resolution: {integrity: sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=, tarball: map-cache/download/map-cache-0.2.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj/1.0.1:
+ resolution: {integrity: sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=, tarball: map-obj/download/map-obj-1.0.1.tgz?cache=0&sync_timestamp=1617772368805&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj/4.2.1:
+ resolution: {integrity: sha1-5Oo5nbyXmuc1yDyGPdMb3zZCd7c=, tarball: map-obj/download/map-obj-4.2.1.tgz?cache=0&sync_timestamp=1617772368805&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmap-obj%2Fdownload%2Fmap-obj-4.2.1.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /map-visit/1.0.0:
+ resolution: {integrity: sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=, tarball: map-visit/download/map-visit-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ object-visit: 1.0.1
+ dev: true
+
+ /mathml-tag-names/2.1.3:
+ resolution: {integrity: sha1-TdrdZzCOeAzxakdoWHjuJ7c2oKM=, tarball: mathml-tag-names/download/mathml-tag-names-2.1.3.tgz}
+ dev: true
+
+ /merge-options/1.0.1:
+ resolution: {integrity: sha1-KmSyRFe+zU5NxggoMkfpTOWJqjI=, tarball: merge-options/download/merge-options-1.0.1.tgz}
+ engines: {node: '>=4'}
+ dependencies:
+ is-plain-obj: 1.1.0
+ dev: true
+
+ /merge-source-map/1.1.0:
+ resolution: {integrity: sha1-L93n5gIJOfcJBqaPLXrmheTIxkY=, tarball: merge-source-map/download/merge-source-map-1.1.0.tgz}
+ dependencies:
+ source-map: 0.6.1
+ dev: true
+
+ /merge-stream/2.0.0:
+ resolution: {integrity: sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=, tarball: merge-stream/download/merge-stream-2.0.0.tgz}
+ dev: true
+
+ /merge2/1.4.1:
+ resolution: {integrity: sha1-Q2iJL4hekHRVpv19xVwMnUBJkK4=, tarball: merge2/download/merge2-1.4.1.tgz}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch/3.1.0:
+ resolution: {integrity: sha1-UQLU6vILaZfWAI46z+HESj+oFeI=, tarball: micromatch/download/micromatch-3.1.0.tgz?cache=0&sync_timestamp=1618054885525&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ braces: 2.3.2
+ define-property: 1.0.0
+ extend-shallow: 2.0.1
+ extglob: 2.0.4
+ fragment-cache: 0.2.1
+ kind-of: 5.1.0
+ nanomatch: 1.2.13
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: registry.nlark.com/snapdragon/0.8.2
+ to-regex: 3.0.2
+ dev: true
+
+ /micromatch/3.1.10:
+ resolution: {integrity: sha1-cIWbyVyYQJUvNZoGij/En57PrCM=, tarball: micromatch/download/micromatch-3.1.10.tgz?cache=0&sync_timestamp=1618054885525&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-3.1.10.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ braces: 2.3.2
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ extglob: 2.0.4
+ fragment-cache: 0.2.1
+ kind-of: 6.0.3
+ nanomatch: 1.2.13
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: registry.nlark.com/snapdragon/0.8.2
+ to-regex: 3.0.2
+ dev: true
+
+ /micromatch/4.0.4:
+ resolution: {integrity: sha1-iW1Rnf6dsl/OlM63pQCRm/iB6/k=, tarball: micromatch/download/micromatch-4.0.4.tgz?cache=0&sync_timestamp=1618054885525&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmicromatch%2Fdownload%2Fmicromatch-4.0.4.tgz}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.2
+ picomatch: registry.nlark.com/picomatch/2.3.0
+ dev: true
+
+ /mime/1.6.0:
+ resolution: {integrity: sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=, tarball: mime/download/mime-1.6.0.tgz}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /mimic-fn/1.2.0:
+ resolution: {integrity: sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI=, tarball: mimic-fn/download/mimic-fn-1.2.0.tgz}
+ engines: {node: '>=4'}
+ dev: true
+
+ /mimic-fn/2.1.0:
+ resolution: {integrity: sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=, tarball: mimic-fn/download/mimic-fn-2.1.0.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /min-indent/1.0.1:
+ resolution: {integrity: sha1-pj9oFnOzBXH76LwlaGrnRu76mGk=, tarball: min-indent/download/min-indent-1.0.1.tgz}
+ engines: {node: '>=4'}
+ dev: true
+
+ /minimatch/3.0.4:
+ resolution: {integrity: sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=, tarball: minimatch/download/minimatch-3.0.4.tgz}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimist-options/4.1.0:
+ resolution: {integrity: sha1-wGVXE8U6ii69d/+iR9NCxA8BBhk=, tarball: minimist-options/download/minimist-options-4.1.0.tgz}
+ engines: {node: '>= 6'}
+ dependencies:
+ arrify: registry.nlark.com/arrify/1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+ dev: true
+
+ /minimist/1.2.5:
+ resolution: {integrity: sha1-Z9ZgFLZqaoqqDAg8X9WN9OTpdgI=, tarball: minimist/download/minimist-1.2.5.tgz}
+ dev: true
+
+ /mixin-deep/1.3.2:
+ resolution: {integrity: sha1-ESC0PcNZp4Xc5ltVuC4lfM9HlWY=, tarball: mixin-deep/download/mixin-deep-1.3.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-in: 1.0.2
+ is-extendable: 1.0.1
+ dev: true
+
+ /mkdirp/0.5.5:
+ resolution: {integrity: sha1-2Rzv1i0UNsoPQWIOJRKI1CAJne8=, tarball: mkdirp/download/mkdirp-0.5.5.tgz}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ /mkdirp/1.0.4:
+ resolution: {integrity: sha1-PrXtYmInVteaXw4qIh3+utdcL34=, tarball: mkdirp/download/mkdirp-1.0.4.tgz}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
+ /mockjs/1.1.0:
+ resolution: {integrity: sha1-5qDDeOkZBtuv8gkRzAJzs8fXWwY=, tarball: mockjs/download/mockjs-1.1.0.tgz}
+ hasBin: true
+ dependencies:
+ commander: registry.nlark.com/commander/8.1.0
+ dev: false
+
+ /mute-stream/0.0.8:
+ resolution: {integrity: sha1-FjDEKyJR/4HiooPelqVJfqkuXg0=, tarball: mute-stream/download/mute-stream-0.0.8.tgz}
+ dev: true
+
+ /nanomatch/1.2.13:
+ resolution: {integrity: sha1-uHqKpPwN6P5r6IiVs4mD/yZb0Rk=, tarball: nanomatch/download/nanomatch-1.2.13.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ 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.3
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: registry.nlark.com/snapdragon/0.8.2
+ to-regex: 3.0.2
+ dev: true
+
+ /natural-compare/1.4.0:
+ resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=, tarball: natural-compare/download/natural-compare-1.4.0.tgz}
+ dev: true
+
+ /neo-async/2.6.2:
+ resolution: {integrity: sha1-tKr7k+OustgXTKU88WOrfXMIMF8=, tarball: neo-async/download/neo-async-2.6.2.tgz}
+ dev: true
+
+ /no-case/2.3.2:
+ resolution: {integrity: sha1-YLgTOWvjmz8SiKTB7V0efSi0ZKw=, tarball: no-case/download/no-case-2.3.2.tgz}
+ dependencies:
+ lower-case: 1.1.4
+ dev: true
+
+ /no-case/3.0.4:
+ resolution: {integrity: sha1-02H9XJgA9VhVGoNp/A3NRmK2Ek0=, tarball: no-case/download/no-case-3.0.4.tgz}
+ dependencies:
+ lower-case: 2.0.2
+ tslib: registry.nlark.com/tslib/2.3.1
+ dev: true
+
+ /normalize-path/3.0.0:
+ resolution: {integrity: sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=, tarball: normalize-path/download/normalize-path-3.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /normalize-range/0.1.2:
+ resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=, tarball: normalize-range/download/normalize-range-0.1.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /normalize-selector/0.2.0:
+ resolution: {integrity: sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=, tarball: normalize-selector/download/normalize-selector-0.2.0.tgz}
+ dev: true
+
+ /normalize-wheel/1.0.1:
+ resolution: {integrity: sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=, tarball: normalize-wheel/download/normalize-wheel-1.0.1.tgz}
+ dev: false
+
+ /npm-run-path/4.0.1:
+ resolution: {integrity: sha1-t+zR5e1T2o43pV4cImnguX7XSOo=, tarball: npm-run-path/download/npm-run-path-4.0.1.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ path-key: 3.1.1
+ dev: true
+
+ /nprogress/0.2.0:
+ resolution: {integrity: sha1-y480xTIT2JVyP8urkH6UIq28r7E=, tarball: nprogress/download/nprogress-0.2.0.tgz}
+ dev: false
+
+ /nth-check/2.0.0:
+ resolution: {integrity: sha1-G7T22scAcvwxPoyc0UF7UHTAoSU=, tarball: nth-check/download/nth-check-2.0.0.tgz}
+ dependencies:
+ boolbase: 1.0.0
+ dev: true
+
+ /num2fraction/1.2.2:
+ resolution: {integrity: sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=, tarball: num2fraction/download/num2fraction-1.2.2.tgz}
+ dev: true
+
+ /oauth-sign/0.9.0:
+ resolution: {integrity: sha1-R6ewFrqmi1+g7PPe4IqFxnmsZFU=, tarball: oauth-sign/download/oauth-sign-0.9.0.tgz}
+ dev: true
+
+ /object-assign/4.1.1:
+ resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=, tarball: object-assign/download/object-assign-4.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /object-copy/0.1.0:
+ resolution: {integrity: sha1-fn2Fi3gb18mRpBupde04EnVOmYw=, tarball: object-copy/download/object-copy-0.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ copy-descriptor: 0.1.1
+ define-property: 0.2.5
+ kind-of: 3.2.2
+ dev: true
+
+ /object-visit/1.0.1:
+ resolution: {integrity: sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=, tarball: object-visit/download/object-visit-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: true
+
+ /object.map/1.0.1:
+ resolution: {integrity: sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=, tarball: object.map/download/object.map-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-own: 1.0.0
+ make-iterator: 1.0.1
+ dev: true
+
+ /object.pick/1.3.0:
+ resolution: {integrity: sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=, tarball: object.pick/download/object.pick-1.3.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: true
+
+ /on-finished/2.3.0:
+ resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=, tarball: on-finished/download/on-finished-2.3.0.tgz}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ ee-first: 1.1.1
+ dev: true
+
+ /once/1.4.0:
+ resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=, tarball: once/download/once-1.4.0.tgz}
+ dependencies:
+ wrappy: registry.nlark.com/wrappy/1.0.2
+ dev: true
+
+ /onetime/2.0.1:
+ resolution: {integrity: sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=, tarball: onetime/download/onetime-2.0.1.tgz}
+ engines: {node: '>=4'}
+ dependencies:
+ mimic-fn: 1.2.0
+ dev: true
+
+ /onetime/5.1.2:
+ resolution: {integrity: sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=, tarball: onetime/download/onetime-5.1.2.tgz}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: true
+
+ /opener/1.5.2:
+ resolution: {integrity: sha1-XTfh81B3udysQwE3InGv3rKhNZg=, tarball: opener/download/opener-1.5.2.tgz}
+ hasBin: true
+ dev: true
+
+ /optionator/0.9.1:
+ resolution: {integrity: sha1-TyNqY3Pa4FZqbUPhMmZ09QwpFJk=, tarball: optionator/download/optionator-0.9.1.tgz}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.3
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.3
+ dev: true
+
+ /os-tmpdir/1.0.2:
+ resolution: {integrity: sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=, tarball: os-tmpdir/download/os-tmpdir-1.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /p-try/2.2.0:
+ resolution: {integrity: sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=, tarball: p-try/download/p-try-2.2.0.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /param-case/2.1.1:
+ resolution: {integrity: sha1-35T9jPZTHs915r75oIWPvHK+Ikc=, tarball: param-case/download/param-case-2.1.1.tgz}
+ dependencies:
+ no-case: 2.3.2
+ dev: true
+
+ /param-case/3.0.4:
+ resolution: {integrity: sha1-fRf+SqEr3jTUp32RrPtiGcqtAcU=, tarball: param-case/download/param-case-3.0.4.tgz}
+ dependencies:
+ dot-case: 3.0.4
+ tslib: registry.nlark.com/tslib/2.3.1
+ dev: true
+
+ /parent-module/1.0.1:
+ resolution: {integrity: sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=, tarball: parent-module/download/parent-module-1.0.1.tgz}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: registry.nlark.com/callsites/3.1.0
+ dev: true
+
+ /parse-entities/2.0.0:
+ resolution: {integrity: sha1-U8brW5MUofTsmfoP33zgHs2gy+g=, tarball: parse-entities/download/parse-entities-2.0.0.tgz}
+ dependencies:
+ character-entities: 1.2.4
+ character-entities-legacy: 1.1.4
+ character-reference-invalid: 1.1.4
+ is-alphanumerical: 1.0.4
+ is-decimal: 1.0.4
+ is-hexadecimal: 1.0.4
+ dev: true
+
+ /parse-filepath/1.0.2:
+ resolution: {integrity: sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=, tarball: parse-filepath/download/parse-filepath-1.0.2.tgz}
+ engines: {node: '>=0.8'}
+ dependencies:
+ is-absolute: 1.0.0
+ map-cache: 0.2.2
+ path-root: 0.1.1
+ dev: true
+
+ /parse-json/5.2.0:
+ resolution: {integrity: sha1-x2/Gbe5UIxyWKyK8yKcs8vmXU80=, tarball: parse-json/download/parse-json-5.2.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': registry.nlark.com/@babel/code-frame/7.14.5
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.1.6
+ dev: true
+
+ /parse-passwd/1.0.0:
+ resolution: {integrity: sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=, tarball: parse-passwd/download/parse-passwd-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /pascal-case/2.0.1:
+ resolution: {integrity: sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=, tarball: pascal-case/download/pascal-case-2.0.1.tgz}
+ dependencies:
+ camel-case: 3.0.0
+ upper-case-first: 1.1.2
+ dev: true
+
+ /pascal-case/3.1.2:
+ resolution: {integrity: sha1-tI4O8rmOIF58Ha50fQsVCCN2YOs=, tarball: pascal-case/download/pascal-case-3.1.2.tgz}
+ dependencies:
+ no-case: 3.0.4
+ tslib: registry.nlark.com/tslib/2.3.1
+ dev: true
+
+ /pascalcase/0.1.1:
+ resolution: {integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=, tarball: pascalcase/download/pascalcase-0.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-browserify/1.0.1:
+ resolution: {integrity: sha1-2YRUqcN1PVeQhg8W9ohnueRr4f0=, tarball: path-browserify/download/path-browserify-1.0.1.tgz}
+ dev: false
+
+ /path-is-absolute/1.0.1:
+ resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=, tarball: path-is-absolute/download/path-is-absolute-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-key/3.1.1:
+ resolution: {integrity: sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=, tarball: path-key/download/path-key-3.1.1.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-root-regex/0.1.2:
+ resolution: {integrity: sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=, tarball: path-root-regex/download/path-root-regex-0.1.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-root/0.1.1:
+ resolution: {integrity: sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=, tarball: path-root/download/path-root-0.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ path-root-regex: 0.1.2
+ dev: true
+
+ /path-to-regexp/6.2.0:
+ resolution: {integrity: sha1-97OAMzYQTDRoia3s5hRmkjBkXzg=, tarball: path-to-regexp/download/path-to-regexp-6.2.0.tgz}
+
+ /path-type/4.0.0:
+ resolution: {integrity: sha1-hO0BwKe6OAr+CdkKjBgNzZ0DBDs=, tarball: path-type/download/path-type-4.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /performance-now/2.1.0:
+ resolution: {integrity: sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=, tarball: performance-now/download/performance-now-2.1.0.tgz}
+ dev: true
+
+ /please-upgrade-node/3.2.0:
+ resolution: {integrity: sha1-rt3T+ZTJM+StmLmdmlVu+g4v6UI=, tarball: please-upgrade-node/download/please-upgrade-node-3.2.0.tgz}
+ dependencies:
+ semver-compare: 1.0.0
+ dev: true
+
+ /plop/2.7.4:
+ resolution: {integrity: sha1-g1KArvNUEQIGO3WPURbM6Jnhxys=, tarball: plop/download/plop-2.7.4.tgz}
+ engines: {node: '>=8.9.4'}
+ hasBin: true
+ dependencies:
+ '@types/liftoff': registry.nlark.com/@types/liftoff/2.5.1
+ chalk: registry.nlark.com/chalk/1.1.3
+ interpret: 1.4.0
+ liftoff: registry.nlark.com/liftoff/2.5.0
+ minimist: 1.2.5
+ node-plop: registry.nlark.com/node-plop/0.26.2
+ ora: registry.nlark.com/ora/3.4.0
+ v8flags: registry.nlark.com/v8flags/2.1.1
+ dev: true
+
+ /portfinder/1.0.28:
+ resolution: {integrity: sha1-Z8RiKFK9U3TdHdkA93n1NGL6x3g=, tarball: portfinder/download/portfinder-1.0.28.tgz}
+ engines: {node: '>= 0.12.0'}
+ dependencies:
+ async: registry.nlark.com/async/2.6.3
+ debug: registry.nlark.com/debug/3.2.7
+ mkdirp: 0.5.5
+ dev: true
+
+ /posix-character-classes/0.1.1:
+ resolution: {integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=, tarball: posix-character-classes/download/posix-character-classes-0.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /postcss-html/0.36.0_2b33a41d320e3e2012e5b3b0fadc703b:
+ resolution: {integrity: sha1-tAkT+U6qzCRT/TChMnrW7h+IsgQ=, tarball: postcss-html/download/postcss-html-0.36.0.tgz}
+ peerDependencies:
+ postcss: '>=5.0.0'
+ postcss-syntax: '>=0.36.0'
+ dependencies:
+ htmlparser2: registry.nlark.com/htmlparser2/3.10.1
+ postcss: registry.nlark.com/postcss/7.0.36
+ postcss-syntax: 0.36.2_postcss@7.0.36
+ dev: true
+
+ /postcss-media-query-parser/0.2.3:
+ resolution: {integrity: sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=, tarball: postcss-media-query-parser/download/postcss-media-query-parser-0.2.3.tgz}
+ dev: true
+
+ /postcss-modules-extract-imports/3.0.0_postcss@8.3.6:
+ resolution: {integrity: sha1-zaHwR8CugMl9vijD52pDuIAldB0=, tarball: postcss-modules-extract-imports/download/postcss-modules-extract-imports-3.0.0.tgz}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: registry.nlark.com/postcss/8.3.6
+ dev: true
+
+ /postcss-modules-local-by-default/4.0.0_postcss@8.3.6:
+ resolution: {integrity: sha1-67tU+uFZjuz99pGgKz/zs5ClpRw=, tarball: postcss-modules-local-by-default/download/postcss-modules-local-by-default-4.0.0.tgz}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ icss-utils: 5.1.0_postcss@8.3.6
+ postcss: registry.nlark.com/postcss/8.3.6
+ postcss-selector-parser: registry.nlark.com/postcss-selector-parser/6.0.6
+ postcss-value-parser: 4.1.0
+ dev: true
+
+ /postcss-modules-values/4.0.0_postcss@8.3.6:
+ resolution: {integrity: sha1-18Xn5ow7s8myfL9Iyguz/7RgLJw=, tarball: postcss-modules-values/download/postcss-modules-values-4.0.0.tgz}
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ icss-utils: 5.1.0_postcss@8.3.6
+ postcss: registry.nlark.com/postcss/8.3.6
+ dev: true
+
+ /postcss-resolve-nested-selector/0.1.1:
+ resolution: {integrity: sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=, tarball: postcss-resolve-nested-selector/download/postcss-resolve-nested-selector-0.1.1.tgz}
+ dev: true
+
+ /postcss-syntax/0.36.2_postcss@7.0.36:
+ resolution: {integrity: sha1-8IV4x9lYNFdOVZOoLfv6ivrjtRw=, tarball: postcss-syntax/download/postcss-syntax-0.36.2.tgz}
+ peerDependencies:
+ postcss: '>=5.0.0'
+ dependencies:
+ postcss: registry.nlark.com/postcss/7.0.36
+ dev: true
+
+ /postcss-value-parser/4.1.0:
+ resolution: {integrity: sha1-RD9qIM7WSBor2k+oUypuVdeJoss=, tarball: postcss-value-parser/download/postcss-value-parser-4.1.0.tgz}
+ dev: true
+
+ /posthtml-svg-mode/1.0.3:
+ resolution: {integrity: sha1-q9VU+s6BIjyrDLNn4Y5O/SpOdLA=, tarball: posthtml-svg-mode/download/posthtml-svg-mode-1.0.3.tgz}
+ dependencies:
+ merge-options: 1.0.1
+ posthtml: registry.nlark.com/posthtml/0.9.2
+ posthtml-parser: registry.nlark.com/posthtml-parser/0.2.1
+ posthtml-render: registry.nlark.com/posthtml-render/1.4.0
+ dev: true
+
+ /prelude-ls/1.2.1:
+ resolution: {integrity: sha1-3rxkidem5rDnYRiIzsiAM30xY5Y=, tarball: prelude-ls/download/prelude-ls-1.2.1.tgz}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /process-nextick-args/1.0.7:
+ resolution: {integrity: sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=, tarball: process-nextick-args/download/process-nextick-args-1.0.7.tgz}
+ dev: true
+
+ /process-nextick-args/2.0.1:
+ resolution: {integrity: sha1-eCDZsWEgzFXKmud5JoCufbptf+I=, tarball: process-nextick-args/download/process-nextick-args-2.0.1.tgz}
+ dev: true
+
+ /progress/2.0.3:
+ resolution: {integrity: sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=, tarball: progress/download/progress-2.0.3.tgz?cache=0&sync_timestamp=1615986628587&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fprogress%2Fdownload%2Fprogress-2.0.3.tgz}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /psl/1.8.0:
+ resolution: {integrity: sha1-kyb4vPsBOtzABf3/BWrM4CDlHCQ=, tarball: psl/download/psl-1.8.0.tgz}
+ dev: true
+
+ /punycode/2.1.1:
+ resolution: {integrity: sha1-tYsBCsQMIsVldhbI0sLALHv0eew=, tarball: punycode/download/punycode-2.1.1.tgz}
+ engines: {node: '>=6'}
+ dev: true
+
+ /qs/6.10.1:
+ resolution: {integrity: sha1-STFIL6jWR6Wqt5nFJx0hM7mB+2o=, tarball: qs/download/qs-6.10.1.tgz?cache=0&sync_timestamp=1616385641529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.10.1.tgz}
+ engines: {node: '>=0.6'}
+ dependencies:
+ side-channel: 1.0.4
+ dev: true
+
+ /qs/6.5.2:
+ resolution: {integrity: sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=, tarball: qs/download/qs-6.5.2.tgz?cache=0&sync_timestamp=1616385641529&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.5.2.tgz}
+ engines: {node: '>=0.6'}
+ dev: true
+
+ /queue-microtask/1.2.3:
+ resolution: {integrity: sha1-SSkii7xyTfrEPg77BYyve2z7YkM=, tarball: queue-microtask/download/queue-microtask-1.2.3.tgz?cache=0&sync_timestamp=1616392663793&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqueue-microtask%2Fdownload%2Fqueue-microtask-1.2.3.tgz}
+ dev: true
+
+ /read-pkg-up/7.0.1:
+ resolution: {integrity: sha1-86YTV1hFlzOuK5VjgFbhhU5+9Qc=, tarball: read-pkg-up/download/read-pkg-up-7.0.1.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: registry.nlark.com/read-pkg/5.2.0
+ type-fest: registry.nlark.com/type-fest/0.8.1
+ dev: true
+
+ /readable-stream/1.0.34:
+ resolution: {integrity: sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=, tarball: readable-stream/download/readable-stream-1.0.34.tgz}
+ dependencies:
+ core-util-is: 1.0.2
+ inherits: 2.0.4
+ isarray: registry.nlark.com/isarray/0.0.1
+ string_decoder: 0.10.31
+ dev: true
+
+ /readable-stream/1.1.14:
+ resolution: {integrity: sha1-fPTFTvZI44EwhMY23SB54WbAgdk=, tarball: readable-stream/download/readable-stream-1.1.14.tgz}
+ dependencies:
+ core-util-is: 1.0.2
+ inherits: 2.0.4
+ isarray: registry.nlark.com/isarray/0.0.1
+ string_decoder: 0.10.31
+ dev: true
+
+ /readable-stream/2.0.6:
+ resolution: {integrity: sha1-j5A0HmilPMySh4jaz80Rs265t44=, tarball: readable-stream/download/readable-stream-2.0.6.tgz}
+ dependencies:
+ core-util-is: 1.0.2
+ inherits: 2.0.4
+ isarray: registry.nlark.com/isarray/1.0.0
+ process-nextick-args: 1.0.7
+ string_decoder: 0.10.31
+ util-deprecate: 1.0.2
+ dev: true
+
+ /readable-stream/2.3.7:
+ resolution: {integrity: sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=, tarball: readable-stream/download/readable-stream-2.3.7.tgz}
+ dependencies:
+ core-util-is: 1.0.2
+ inherits: 2.0.4
+ isarray: registry.nlark.com/isarray/1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+ dev: true
+
+ /readable-stream/3.6.0:
+ resolution: {integrity: sha1-M3u9o63AcGvT4CRCaihtS0sskZg=, tarball: readable-stream/download/readable-stream-3.6.0.tgz}
+ engines: {node: '>= 6'}
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ /readdirp/3.6.0:
+ resolution: {integrity: sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=, tarball: readdirp/download/readdirp-3.6.0.tgz?cache=0&sync_timestamp=1615719701333&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Freaddirp%2Fdownload%2Freaddirp-3.6.0.tgz}
+ engines: {node: '>=8.10.0'}
+ dependencies:
+ picomatch: registry.nlark.com/picomatch/2.3.0
+ dev: true
+
+ /regex-not/1.0.2:
+ resolution: {integrity: sha1-H07OJ+ALC2XgJHpoEOaoXYOldSw=, tarball: regex-not/download/regex-not-1.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ safe-regex: 1.1.0
+ dev: true
+
+ /relateurl/0.2.7:
+ resolution: {integrity: sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=, tarball: relateurl/download/relateurl-0.2.7.tgz}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /repeat-element/1.1.4:
+ resolution: {integrity: sha1-vmgVIIR6tYx1aKx1+/rSjtQtOek=, tarball: repeat-element/download/repeat-element-1.1.4.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /repeat-string/1.6.1:
+ resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=, tarball: repeat-string/download/repeat-string-1.6.1.tgz}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /replace-ext/0.0.1:
+ resolution: {integrity: sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=, tarball: replace-ext/download/replace-ext-0.0.1.tgz}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /request/2.88.2:
+ resolution: {integrity: sha1-1zyRhzHLWofaBH4gcjQUb2ZNErM=, tarball: request/download/request-2.88.2.tgz}
+ engines: {node: '>= 6'}
+ deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
+ dependencies:
+ aws-sign2: 0.7.0
+ aws4: 1.11.0
+ caseless: 0.12.0
+ combined-stream: 1.0.8
+ extend: registry.nlark.com/extend/3.0.2
+ forever-agent: 0.6.1
+ form-data: 2.3.3
+ har-validator: 5.1.5
+ http-signature: 1.2.0
+ is-typedarray: 1.0.0
+ isstream: 0.1.2
+ json-stringify-safe: 5.0.1
+ mime-types: registry.nlark.com/mime-types/2.1.32
+ oauth-sign: 0.9.0
+ performance-now: 2.1.0
+ qs: 6.5.2
+ safe-buffer: 5.2.1
+ tough-cookie: 2.5.0
+ tunnel-agent: 0.6.0
+ uuid: registry.nlark.com/uuid/3.4.0
+ dev: true
+
+ /require-from-string/2.0.2:
+ resolution: {integrity: sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=, tarball: require-from-string/download/require-from-string-2.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /requires-port/1.0.0:
+ resolution: {integrity: sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=, tarball: requires-port/download/requires-port-1.0.0.tgz}
+ dev: true
+
+ /resize-observer-polyfill/1.5.1:
+ resolution: {integrity: sha1-DpAg3T0hAkRY1OvSfiPkAmmBBGQ=, tarball: resize-observer-polyfill/download/resize-observer-polyfill-1.5.1.tgz}
+ dev: false
+
+ /resolve-dir/1.0.1:
+ resolution: {integrity: sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=, tarball: resolve-dir/download/resolve-dir-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ expand-tilde: 2.0.2
+ global-modules: 1.0.0
+ dev: true
+
+ /resolve-from/4.0.0:
+ resolution: {integrity: sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=, tarball: resolve-from/download/resolve-from-4.0.0.tgz}
+ engines: {node: '>=4'}
+ dev: true
+
+ /resolve-from/5.0.0:
+ resolution: {integrity: sha1-w1IlhD3493bfIcV1V7wIfp39/Gk=, tarball: resolve-from/download/resolve-from-5.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /resolve-url/0.2.1:
+ resolution: {integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=, tarball: resolve-url/download/resolve-url-0.2.1.tgz}
+ deprecated: https://github.com/lydell/resolve-url#deprecated
+ dev: true
+
+ /resolve/1.20.0:
+ resolution: {integrity: sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=, tarball: resolve/download/resolve-1.20.0.tgz}
+ dependencies:
+ is-core-module: registry.nlark.com/is-core-module/2.6.0
+ path-parse: registry.nlark.com/path-parse/1.0.7
+ dev: true
+
+ /ret/0.1.15:
+ resolution: {integrity: sha1-uKSCXVvbH8P29Twrwz+BOIaBx7w=, tarball: ret/download/ret-0.1.15.tgz}
+ engines: {node: '>=0.12'}
+ dev: true
+
+ /reusify/1.0.4:
+ resolution: {integrity: sha1-kNo4Kx4SbvwCFG6QhFqI2xKSXXY=, tarball: reusify/download/reusify-1.0.4.tgz}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rimraf/3.0.2:
+ resolution: {integrity: sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=, tarball: rimraf/download/rimraf-3.0.2.tgz}
+ hasBin: true
+ dependencies:
+ glob: registry.nlark.com/glob/7.1.7
+ dev: true
+
+ /run-async/2.4.1:
+ resolution: {integrity: sha1-hEDsz5nqPnC9QJ1JqriOEMGJpFU=, tarball: run-async/download/run-async-2.4.1.tgz}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /run-parallel/1.2.0:
+ resolution: {integrity: sha1-ZtE2jae9+SHrnZW9GpIp5/IaQ+4=, tarball: run-parallel/download/run-parallel-1.2.0.tgz}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /safe-buffer/5.1.2:
+ resolution: {integrity: sha1-mR7GnSluAxN0fVm9/St0XDX4go0=, tarball: safe-buffer/download/safe-buffer-5.1.2.tgz}
+ dev: true
+
+ /safe-buffer/5.2.1:
+ resolution: {integrity: sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=, tarball: safe-buffer/download/safe-buffer-5.2.1.tgz}
+ dev: true
+
+ /safe-regex/1.1.0:
+ resolution: {integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4=, tarball: safe-regex/download/safe-regex-1.1.0.tgz}
+ dependencies:
+ ret: 0.1.15
+ dev: true
+
+ /safer-buffer/2.1.2:
+ resolution: {integrity: sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=, tarball: safer-buffer/download/safer-buffer-2.1.2.tgz}
+ dev: true
+
+ /semver-compare/1.0.0:
+ resolution: {integrity: sha1-De4hahyUGrN+nvsXiPavxf9VN/w=, tarball: semver-compare/download/semver-compare-1.0.0.tgz}
+ dev: true
+
+ /semver/5.0.3:
+ resolution: {integrity: sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=, tarball: semver/download/semver-5.0.3.tgz?cache=0&sync_timestamp=1616468020191&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.0.3.tgz}
+ hasBin: true
+ dev: true
+
+ /semver/5.7.1:
+ resolution: {integrity: sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=, tarball: semver/download/semver-5.7.1.tgz?cache=0&sync_timestamp=1616468020191&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-5.7.1.tgz}
+ hasBin: true
+ dev: true
+
+ /semver/6.3.0:
+ resolution: {integrity: sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=, tarball: semver/download/semver-6.3.0.tgz?cache=0&sync_timestamp=1616468020191&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-6.3.0.tgz}
+ hasBin: true
+ dev: true
+
+ /semver/7.3.5:
+ resolution: {integrity: sha1-C2Ich5NI2JmOSw5L6Us/EuYBjvc=, tarball: semver/download/semver-7.3.5.tgz?cache=0&sync_timestamp=1616468020191&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.3.5.tgz}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /sentence-case/2.1.1:
+ resolution: {integrity: sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=, tarball: sentence-case/download/sentence-case-2.1.1.tgz}
+ dependencies:
+ no-case: 2.3.2
+ upper-case-first: 1.1.2
+ dev: true
+
+ /shebang-command/2.0.0:
+ resolution: {integrity: sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=, tarball: shebang-command/download/shebang-command-2.0.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: registry.nlark.com/shebang-regex/3.0.0
+ dev: true
+
+ /side-channel/1.0.4:
+ resolution: {integrity: sha1-785cj9wQTudRslxY1CkAEfpeos8=, tarball: side-channel/download/side-channel-1.0.4.tgz}
+ dependencies:
+ call-bind: 1.0.2
+ get-intrinsic: 1.1.1
+ object-inspect: registry.nlark.com/object-inspect/1.11.0
+ dev: true
+
+ /signal-exit/3.0.3:
+ resolution: {integrity: sha1-oUEMLt2PB3sItOJTyOrPyvBXRhw=, tarball: signal-exit/download/signal-exit-3.0.3.tgz}
+ dev: true
+
+ /slash/3.0.0:
+ resolution: {integrity: sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=, tarball: slash/download/slash-3.0.0.tgz}
+ engines: {node: '>=8'}
+ dev: true
+
+ /slice-ansi/3.0.0:
+ resolution: {integrity: sha1-Md3BCTCht+C2ewjJbC9Jt3p4l4c=, tarball: slice-ansi/download/slice-ansi-3.0.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: registry.nlark.com/ansi-styles/4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slice-ansi/4.0.0:
+ resolution: {integrity: sha1-UA6N0P1VsFgVCGJVsxla3ypF/ms=, tarball: slice-ansi/download/slice-ansi-4.0.0.tgz}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: registry.nlark.com/ansi-styles/4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /snake-case/2.1.0:
+ resolution: {integrity: sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=, tarball: snake-case/download/snake-case-2.1.0.tgz}
+ dependencies:
+ no-case: 2.3.2
+ dev: true
+
+ /snapdragon-node/2.1.1:
+ resolution: {integrity: sha1-bBdfhv8UvbByRWPo88GwIaKGhTs=, tarball: snapdragon-node/download/snapdragon-node-2.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 1.0.0
+ isobject: 3.0.1
+ snapdragon-util: 3.0.1
+ dev: true
+
+ /snapdragon-util/3.0.1:
+ resolution: {integrity: sha1-+VZHlIbyrNeXAGk/b3uAXkWrVuI=, tarball: snapdragon-util/download/snapdragon-util-3.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /source-map-resolve/0.5.3:
+ resolution: {integrity: sha1-GQhmvs51U+H48mei7oLGBrVQmho=, tarball: source-map-resolve/download/source-map-resolve-0.5.3.tgz}
+ dependencies:
+ atob: 2.1.2
+ decode-uri-component: 0.2.0
+ resolve-url: 0.2.1
+ source-map-url: 0.4.1
+ urix: 0.1.0
+ dev: true
+
+ /source-map-support/0.5.19:
+ resolution: {integrity: sha1-qYti+G3K9PZzmWSMCFKRq56P7WE=, tarball: source-map-support/download/source-map-support-0.5.19.tgz}
+ dependencies:
+ buffer-from: registry.nlark.com/buffer-from/1.1.2
+ source-map: 0.6.1
+ dev: true
+
+ /source-map-url/0.4.1:
+ resolution: {integrity: sha1-CvZmBadFpaL5HPG7+KevvCg97FY=, tarball: source-map-url/download/source-map-url-0.4.1.tgz}
+ dev: true
+
+ /source-map/0.5.7:
+ resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=, tarball: source-map/download/source-map-0.5.7.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /source-map/0.6.1:
+ resolution: {integrity: sha1-dHIq8y6WFOnCh6jQu95IteLxomM=, tarball: source-map/download/source-map-0.6.1.tgz}
+ engines: {node: '>=0.10.0'}
+
+ /sourcemap-codec/1.4.8:
+ resolution: {integrity: sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=, tarball: sourcemap-codec/download/sourcemap-codec-1.4.8.tgz}
+ dev: true
+
+ /spdx-correct/3.1.1:
+ resolution: {integrity: sha1-3s6BrJweZxPl99G28X1Gj6U9iak=, tarball: spdx-correct/download/spdx-correct-3.1.1.tgz}
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: registry.nlark.com/spdx-license-ids/3.0.10
+ dev: true
+
+ /spdx-exceptions/2.3.0:
+ resolution: {integrity: sha1-PyjOGnegA3JoPq3kpDMYNSeiFj0=, tarball: spdx-exceptions/download/spdx-exceptions-2.3.0.tgz}
+ dev: true
+
+ /spdx-expression-parse/3.0.1:
+ resolution: {integrity: sha1-z3D1BILu/cmOPOCmgz5KU87rpnk=, tarball: spdx-expression-parse/download/spdx-expression-parse-3.0.1.tgz}
+ dependencies:
+ spdx-exceptions: 2.3.0
+ spdx-license-ids: registry.nlark.com/spdx-license-ids/3.0.10
+ dev: true
+
+ /split-string/3.1.0:
+ resolution: {integrity: sha1-fLCd2jqGWFcFxks5pkZgOGguj+I=, tarball: split-string/download/split-string-3.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ dev: true
+
+ /sprintf-js/1.0.3:
+ resolution: {integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=, tarball: sprintf-js/download/sprintf-js-1.0.3.tgz}
+ dev: true
+
+ /sprintf-js/1.1.2:
+ resolution: {integrity: sha1-2hdlJiv4wPVxdJ8q1sJjACB65nM=, tarball: sprintf-js/download/sprintf-js-1.1.2.tgz}
+ dev: true
+
+ /sshpk/1.16.1:
+ resolution: {integrity: sha1-+2YcC+8ps520B2nuOfpwCT1vaHc=, tarball: sshpk/download/sshpk-1.16.1.tgz}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ asn1: 0.2.4
+ assert-plus: 1.0.0
+ bcrypt-pbkdf: 1.0.2
+ dashdash: 1.14.1
+ ecc-jsbn: 0.1.2
+ getpass: 0.1.7
+ jsbn: 0.1.1
+ safer-buffer: 2.1.2
+ tweetnacl: 0.14.5
+ dev: true
+
+ /stable/0.1.8:
+ resolution: {integrity: sha1-g26zyDgv4pNv6vVEYxAXzn1Ho88=, tarball: stable/download/stable-0.1.8.tgz}
+ dev: true
+
+ /static-extend/0.1.2:
+ resolution: {integrity: sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=, tarball: static-extend/download/static-extend-0.1.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 0.2.5
+ object-copy: 0.1.0
+ dev: true
+
+ /statuses/1.5.0:
+ resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=, tarball: statuses/download/statuses-1.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /strict-uri-encode/1.1.0:
+ resolution: {integrity: sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=, tarball: strict-uri-encode/download/strict-uri-encode-1.1.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /string-argv/0.3.1:
+ resolution: {integrity: sha1-leL77AQnrhkYSTX4FtdKqkxcGdo=, tarball: string-argv/download/string-argv-0.3.1.tgz}
+ engines: {node: '>=0.6.19'}
+ dev: true
+
+ /string-hash/1.1.3:
+ resolution: {integrity: sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=, tarball: string-hash/download/string-hash-1.1.3.tgz}
+ dev: true
+
+ /string-width/4.2.2:
+ resolution: {integrity: sha1-2v1PlVmnWFz7pSnGoKT3NIjr1MU=, tarball: string-width/download/string-width-4.2.2.tgz?cache=0&sync_timestamp=1618559292372&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstring-width%2Fdownload%2Fstring-width-4.2.2.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.0
+ dev: true
+
+ /string_decoder/0.10.31:
+ resolution: {integrity: sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=, tarball: string_decoder/download/string_decoder-0.10.31.tgz}
+ dev: true
+
+ /string_decoder/1.1.1:
+ resolution: {integrity: sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=, tarball: string_decoder/download/string_decoder-1.1.1.tgz}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: true
+
+ /string_decoder/1.3.0:
+ resolution: {integrity: sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=, tarball: string_decoder/download/string_decoder-1.3.0.tgz}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
+ /strip-ansi/3.0.1:
+ resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=, tarball: strip-ansi/download/strip-ansi-3.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-regex: 2.1.1
+ dev: true
+
+ /strip-ansi/5.2.0:
+ resolution: {integrity: sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4=, tarball: strip-ansi/download/strip-ansi-5.2.0.tgz}
+ engines: {node: '>=6'}
+ dependencies:
+ ansi-regex: 4.1.0
+ dev: true
+
+ /strip-ansi/6.0.0:
+ resolution: {integrity: sha1-CxVx3XZpzNTz4G4U7x7tJiJa5TI=, tarball: strip-ansi/download/strip-ansi-6.0.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.0
+ dev: true
+
+ /strip-bom/2.0.0:
+ resolution: {integrity: sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=, tarball: strip-bom/download/strip-bom-2.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-utf8: 0.2.1
+ dev: true
+
+ /style-search/0.1.0:
+ resolution: {integrity: sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=, tarball: style-search/download/style-search-0.1.0.tgz}
+ dev: true
+
+ /svg-baker/1.7.0:
+ resolution: {integrity: sha1-g2f3jYdVUMUv5HVvcwPVxdfC6ac=, tarball: svg-baker/download/svg-baker-1.7.0.tgz}
+ dependencies:
+ bluebird: 3.7.2
+ clone: 2.1.2
+ he: 1.2.0
+ image-size: 0.5.5
+ loader-utils: 1.4.0
+ merge-options: 1.0.1
+ micromatch: 3.1.0
+ postcss: registry.nlark.com/postcss/5.2.18
+ postcss-prefix-selector: registry.nlark.com/postcss-prefix-selector/1.12.0
+ posthtml-rename-id: registry.nlark.com/posthtml-rename-id/1.0.12
+ posthtml-svg-mode: 1.0.3
+ query-string: registry.nlark.com/query-string/4.3.4
+ traverse: 0.6.6
+ dev: true
+
+ /svg-tags/1.0.0:
+ resolution: {integrity: sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=, tarball: svg-tags/download/svg-tags-1.0.0.tgz}
+ dev: true
+
+ /swap-case/1.1.2:
+ resolution: {integrity: sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=, tarball: swap-case/download/swap-case-1.1.2.tgz}
+ dependencies:
+ lower-case: 1.1.4
+ upper-case: 1.1.3
+ dev: true
+
+ /text-table/0.2.0:
+ resolution: {integrity: sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=, tarball: text-table/download/text-table-0.2.0.tgz}
+ dev: true
+
+ /through/2.3.8:
+ resolution: {integrity: sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=, tarball: through/download/through-2.3.8.tgz}
+ dev: true
+
+ /through2/2.0.5:
+ resolution: {integrity: sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=, tarball: through2/download/through2-2.0.5.tgz}
+ dependencies:
+ readable-stream: 2.3.7
+ xtend: 4.0.2
+ dev: true
+
+ /tmp/0.0.33:
+ resolution: {integrity: sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=, tarball: tmp/download/tmp-0.0.33.tgz}
+ engines: {node: '>=0.6.0'}
+ dependencies:
+ os-tmpdir: 1.0.2
+ dev: true
+
+ /to-object-path/0.3.0:
+ resolution: {integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=, tarball: to-object-path/download/to-object-path-0.3.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /to-regex-range/2.1.1:
+ resolution: {integrity: sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=, tarball: to-regex-range/download/to-regex-range-2.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ dev: true
+
+ /to-regex-range/5.0.1:
+ resolution: {integrity: sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=, tarball: to-regex-range/download/to-regex-range-5.0.1.tgz}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /to-regex/3.0.2:
+ resolution: {integrity: sha1-E8/dmzNlUvMLUfM6iuG0Knp1mc4=, tarball: to-regex/download/to-regex-3.0.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ regex-not: 1.0.2
+ safe-regex: 1.1.0
+ dev: true
+
+ /tough-cookie/2.5.0:
+ resolution: {integrity: sha1-zZ+yoKodWhK0c72fuW+j3P9lreI=, tarball: tough-cookie/download/tough-cookie-2.5.0.tgz}
+ engines: {node: '>=0.8'}
+ dependencies:
+ psl: 1.8.0
+ punycode: 2.1.1
+ dev: true
+
+ /traverse/0.6.6:
+ resolution: {integrity: sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=, tarball: traverse/download/traverse-0.6.6.tgz}
+ dev: true
+
+ /tunnel-agent/0.6.0:
+ resolution: {integrity: sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=, tarball: tunnel-agent/download/tunnel-agent-0.6.0.tgz}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
+ /tweetnacl/0.14.5:
+ resolution: {integrity: sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=, tarball: tweetnacl/download/tweetnacl-0.14.5.tgz}
+ dev: true
+
+ /type-check/0.4.0:
+ resolution: {integrity: sha1-B7ggO/pwVsBlcFDjzNLDdzC6uPE=, tarball: type-check/download/type-check-0.4.0.tgz}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ dev: true
+
+ /typedarray-to-buffer/3.1.5:
+ resolution: {integrity: sha1-qX7nqf9CaRufeD/xvFES/j/KkIA=, tarball: typedarray-to-buffer/download/typedarray-to-buffer-3.1.5.tgz}
+ dependencies:
+ is-typedarray: 1.0.0
+ dev: true
+
+ /typedarray/0.0.6:
+ resolution: {integrity: sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=, tarball: typedarray/download/typedarray-0.0.6.tgz}
+ dev: true
+
+ /unc-path-regex/0.1.2:
+ resolution: {integrity: sha1-5z3T17DXxe2G+6xrCufYxqadUPo=, tarball: unc-path-regex/download/unc-path-regex-0.1.2.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /underscore/1.13.1:
+ resolution: {integrity: sha1-DBxr0t9UtrafIxQGbWW2zeb8+dE=, tarball: underscore/download/underscore-1.13.1.tgz?cache=0&sync_timestamp=1618503588071&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Funderscore%2Fdownload%2Funderscore-1.13.1.tgz}
+ dev: true
+
+ /union-value/1.0.1:
+ resolution: {integrity: sha1-C2/nuDWuzaYcbqTU8CwUIh4QmEc=, tarball: union-value/download/union-value-1.0.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ get-value: 2.0.6
+ is-extendable: 0.1.1
+ set-value: registry.nlark.com/set-value/2.0.1
+ dev: true
+
+ /uniq/1.0.1:
+ resolution: {integrity: sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=, tarball: uniq/download/uniq-1.0.1.tgz}
+ dev: true
+
+ /unist-util-stringify-position/2.0.3:
+ resolution: {integrity: sha1-zOO/oc34W6c3XR1bF73Eytqb2do=, tarball: unist-util-stringify-position/download/unist-util-stringify-position-2.0.3.tgz}
+ dependencies:
+ '@types/unist': registry.nlark.com/@types/unist/2.0.6
+ dev: true
+
+ /universalify/2.0.0:
+ resolution: {integrity: sha1-daSYTv7cSwiXXFrrc/Uw0C3yVxc=, tarball: universalify/download/universalify-2.0.0.tgz}
+ engines: {node: '>= 10.0.0'}
+ dev: true
+
+ /unpipe/1.0.0:
+ resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=, tarball: unpipe/download/unpipe-1.0.0.tgz}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /unset-value/1.0.0:
+ resolution: {integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=, tarball: unset-value/download/unset-value-1.0.0.tgz}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ has-value: 0.3.1
+ isobject: 3.0.1
+ dev: true
+
+ /upper-case-first/1.1.2:
+ resolution: {integrity: sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=, tarball: upper-case-first/download/upper-case-first-1.1.2.tgz}
+ dependencies:
+ upper-case: 1.1.3
+ dev: true
+
+ /upper-case/1.1.3:
+ resolution: {integrity: sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=, tarball: upper-case/download/upper-case-1.1.3.tgz}
+ dev: true
+
+ /uri-js/4.4.1:
+ resolution: {integrity: sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=, tarball: uri-js/download/uri-js-4.4.1.tgz}
+ dependencies:
+ punycode: 2.1.1
+ dev: true
+
+ /urix/0.1.0:
+ resolution: {integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=, tarball: urix/download/urix-0.1.0.tgz}
+ deprecated: Please see https://github.com/lydell/urix#deprecated
+ dev: true
+
+ /url-join/2.0.5:
+ resolution: {integrity: sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=, tarball: url-join/download/url-join-2.0.5.tgz}
+ dev: true
+
+ /use/3.1.1:
+ resolution: {integrity: sha1-1QyMrHmhn7wg8pEfVuuXP04QBw8=, tarball: use/download/use-3.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /user-home/1.1.1:
+ resolution: {integrity: sha1-K1viOjK2Onyd640PKNSFcko98ZA=, tarball: user-home/download/user-home-1.1.1.tgz}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dev: true
+
+ /util-deprecate/1.0.2:
+ resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=, tarball: util-deprecate/download/util-deprecate-1.0.2.tgz}
+ dev: true
+
+ /utils-merge/1.0.1:
+ resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=, tarball: utils-merge/download/utils-merge-1.0.1.tgz}
+ engines: {node: '>= 0.4.0'}
+ dev: true
+
+ /v8-compile-cache/2.3.0:
+ resolution: {integrity: sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4=, tarball: v8-compile-cache/download/v8-compile-cache-2.3.0.tgz}
+ dev: true
+
+ /validate-npm-package-license/3.0.4:
+ resolution: {integrity: sha1-/JH2uce6FchX9MssXe/uw51PQQo=, tarball: validate-npm-package-license/download/validate-npm-package-license-3.0.4.tgz}
+ dependencies:
+ spdx-correct: 3.1.1
+ spdx-expression-parse: 3.0.1
+ dev: true
+
+ /vary/1.1.2:
+ resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=, tarball: vary/download/vary-1.1.2.tgz}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /verror/1.10.0:
+ resolution: {integrity: sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=, tarball: verror/download/verror-1.10.0.tgz}
+ engines: {'0': node >=0.6.0}
+ dependencies:
+ assert-plus: 1.0.0
+ core-util-is: 1.0.2
+ extsprintf: 1.3.0
+ dev: true
+
+ /vinyl/1.2.0:
+ resolution: {integrity: sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=, tarball: vinyl/download/vinyl-1.2.0.tgz}
+ engines: {node: '>= 0.9'}
+ dependencies:
+ clone: 1.0.4
+ clone-stats: 0.0.1
+ replace-ext: 0.0.1
+ dev: true
+
+ /wcwidth/1.0.1:
+ resolution: {integrity: sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=, tarball: wcwidth/download/wcwidth-1.0.1.tgz}
+ dependencies:
+ defaults: 1.0.3
+ dev: true
+
+ /which/1.3.1:
+ resolution: {integrity: sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=, tarball: which/download/which-1.3.1.tgz?cache=0&sync_timestamp=1615986567056&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-1.3.1.tgz}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /which/2.0.2:
+ resolution: {integrity: sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=, tarball: which/download/which-2.0.2.tgz?cache=0&sync_timestamp=1615986567056&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwhich%2Fdownload%2Fwhich-2.0.2.tgz}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /word-wrap/1.2.3:
+ resolution: {integrity: sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=, tarball: word-wrap/download/word-wrap-1.2.3.tgz}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /wordwrap/1.0.0:
+ resolution: {integrity: sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=, tarball: wordwrap/download/wordwrap-1.0.0.tgz}
+ dev: true
+
+ /wrap-ansi/6.2.0:
+ resolution: {integrity: sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=, tarball: wrap-ansi/download/wrap-ansi-6.2.0.tgz?cache=0&sync_timestamp=1618559292738&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrap-ansi%2Fdownload%2Fwrap-ansi-6.2.0.tgz}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: registry.nlark.com/ansi-styles/4.3.0
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ dev: true
+
+ /wrap-ansi/7.0.0:
+ resolution: {integrity: sha1-Z+FFz/UQpqaYS98RUpEdadLrnkM=, tarball: wrap-ansi/download/wrap-ansi-7.0.0.tgz?cache=0&sync_timestamp=1618559292738&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fwrap-ansi%2Fdownload%2Fwrap-ansi-7.0.0.tgz}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: registry.nlark.com/ansi-styles/4.3.0
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ dev: true
+
+ /write-file-atomic/3.0.3:
+ resolution: {integrity: sha1-Vr1cWlxwSBzRnFcb05q5ZaXeVug=, tarball: write-file-atomic/download/write-file-atomic-3.0.3.tgz}
+ dependencies:
+ imurmurhash: 0.1.4
+ is-typedarray: 1.0.0
+ signal-exit: 3.0.3
+ typedarray-to-buffer: 3.1.5
+ dev: true
+
+ /xtend/4.0.2:
+ resolution: {integrity: sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=, tarball: xtend/download/xtend-4.0.2.tgz}
+ engines: {node: '>=0.4'}
+ dev: true
+
+ /yallist/3.1.1:
+ resolution: {integrity: sha1-27fa+b/YusmrRev2ArjLrQ1dCP0=, tarball: yallist/download/yallist-3.1.1.tgz}
+ dev: true
+
+ /yallist/4.0.0:
+ resolution: {integrity: sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=, tarball: yallist/download/yallist-4.0.0.tgz}
+ dev: true
+
+ /zwitch/1.0.5:
+ resolution: {integrity: sha1-0R1zgf/tFrdC9q97PyI9XNn+mSA=, tarball: zwitch/download/zwitch-1.0.5.tgz}
+ dev: true
+
+ registry.nlark.com/@babel/code-frame/7.12.11:
+ resolution: {integrity: sha1-9K1DWqJj25NbjxDyxVLSP7cWpj8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/code-frame/download/@babel/code-frame-7.12.11.tgz}
+ name: '@babel/code-frame'
+ version: 7.12.11
+ dependencies:
+ '@babel/highlight': registry.nlark.com/@babel/highlight/7.14.5
+ dev: true
+
+ registry.nlark.com/@babel/code-frame/7.14.5:
+ resolution: {integrity: sha1-I7CNdA6D9JxeWZRfvxtD6Au/Tts=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/code-frame/download/@babel/code-frame-7.14.5.tgz}
+ name: '@babel/code-frame'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': registry.nlark.com/@babel/highlight/7.14.5
+ dev: true
+
+ registry.nlark.com/@babel/compat-data/7.15.0:
+ resolution: {integrity: sha1-Lbr4uFM0eWyvuw9Xk6kKL8AQsXY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/compat-data/download/@babel/compat-data-7.15.0.tgz}
+ name: '@babel/compat-data'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ registry.nlark.com/@babel/core/7.15.0:
+ resolution: {integrity: sha1-dJ5Xxod4tzrYCCd1Vh9n9Rlqr6g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/core/download/@babel/core-7.15.0.tgz}
+ name: '@babel/core'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': registry.nlark.com/@babel/code-frame/7.14.5
+ '@babel/generator': registry.nlark.com/@babel/generator/7.15.0
+ '@babel/helper-compilation-targets': registry.nlark.com/@babel/helper-compilation-targets/7.15.0_@babel+core@7.15.0
+ '@babel/helper-module-transforms': registry.nlark.com/@babel/helper-module-transforms/7.15.0
+ '@babel/helpers': registry.nlark.com/@babel/helpers/7.15.3
+ '@babel/parser': registry.nlark.com/@babel/parser/7.15.3
+ '@babel/template': registry.nlark.com/@babel/template/7.14.5
+ '@babel/traverse': registry.nlark.com/@babel/traverse/7.15.0
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ convert-source-map: registry.nlark.com/convert-source-map/1.8.0
+ debug: registry.nlark.com/debug/4.3.2
+ gensync: 1.0.0-beta.2
+ json5: registry.nlark.com/json5/2.2.0
+ semver: 6.3.0
+ source-map: 0.5.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/@babel/generator/7.15.0:
+ resolution: {integrity: sha1-p9DBcuDYFJdLrVqnes5UO5eRfxU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/generator/download/@babel/generator-7.15.0.tgz}
+ name: '@babel/generator'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ jsesc: 2.5.2
+ source-map: 0.5.7
+ dev: true
+
+ registry.nlark.com/@babel/helper-compilation-targets/7.15.0_@babel+core@7.15.0:
+ resolution: {integrity: sha1-lz34y9AlUV8/8l2wwF78cE+nmBg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-compilation-targets/download/@babel/helper-compilation-targets-7.15.0.tgz}
+ id: registry.nlark.com/@babel/helper-compilation-targets/7.15.0
+ name: '@babel/helper-compilation-targets'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/compat-data': registry.nlark.com/@babel/compat-data/7.15.0
+ '@babel/core': registry.nlark.com/@babel/core/7.15.0
+ '@babel/helper-validator-option': registry.nlark.com/@babel/helper-validator-option/7.14.5
+ browserslist: registry.nlark.com/browserslist/4.16.8
+ semver: 6.3.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-function-name/7.14.5:
+ resolution: {integrity: sha1-ieLEdJcvFdjiM7Uu6MSA4s/NUMQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-function-name/download/@babel/helper-function-name-7.14.5.tgz}
+ name: '@babel/helper-function-name'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-get-function-arity': registry.nlark.com/@babel/helper-get-function-arity/7.14.5
+ '@babel/template': registry.nlark.com/@babel/template/7.14.5
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-get-function-arity/7.14.5:
+ resolution: {integrity: sha1-Jfv6V5sJN+7h87gF7OTOOYxDGBU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-get-function-arity/download/@babel/helper-get-function-arity-7.14.5.tgz}
+ name: '@babel/helper-get-function-arity'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-hoist-variables/7.14.5:
+ resolution: {integrity: sha1-4N0nwzp45XfXyIhJFqPn7x98f40=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-hoist-variables/download/@babel/helper-hoist-variables-7.14.5.tgz}
+ name: '@babel/helper-hoist-variables'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-member-expression-to-functions/7.15.0:
+ resolution: {integrity: sha1-Ddr1KZyBefJ/NzJ5NlU+m7pgmQs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-member-expression-to-functions/download/@babel/helper-member-expression-to-functions-7.15.0.tgz}
+ name: '@babel/helper-member-expression-to-functions'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-module-imports/7.14.5:
+ resolution: {integrity: sha1-bRpE32o4yVeqfDEtoHZCnxG0IvM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-module-imports/download/@babel/helper-module-imports-7.14.5.tgz}
+ name: '@babel/helper-module-imports'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-module-transforms/7.15.0:
+ resolution: {integrity: sha1-Z5J1WB6gVjc+3b42DhQZ7yN4Owg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-module-transforms/download/@babel/helper-module-transforms-7.15.0.tgz}
+ name: '@babel/helper-module-transforms'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-module-imports': registry.nlark.com/@babel/helper-module-imports/7.14.5
+ '@babel/helper-replace-supers': registry.nlark.com/@babel/helper-replace-supers/7.15.0
+ '@babel/helper-simple-access': registry.nlark.com/@babel/helper-simple-access/7.14.8
+ '@babel/helper-split-export-declaration': registry.nlark.com/@babel/helper-split-export-declaration/7.14.5
+ '@babel/helper-validator-identifier': registry.nlark.com/@babel/helper-validator-identifier/7.14.9
+ '@babel/template': registry.nlark.com/@babel/template/7.14.5
+ '@babel/traverse': registry.nlark.com/@babel/traverse/7.15.0
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-optimise-call-expression/7.14.5:
+ resolution: {integrity: sha1-8nOVqGGeBmWz8DZM3bQcJdcbSZw=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-optimise-call-expression/download/@babel/helper-optimise-call-expression-7.14.5.tgz}
+ name: '@babel/helper-optimise-call-expression'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-replace-supers/7.15.0:
+ resolution: {integrity: sha1-rOB3CPW/dGvy5rqZVyzOebXU5/Q=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-replace-supers/download/@babel/helper-replace-supers-7.15.0.tgz}
+ name: '@babel/helper-replace-supers'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-member-expression-to-functions': registry.nlark.com/@babel/helper-member-expression-to-functions/7.15.0
+ '@babel/helper-optimise-call-expression': registry.nlark.com/@babel/helper-optimise-call-expression/7.14.5
+ '@babel/traverse': registry.nlark.com/@babel/traverse/7.15.0
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-simple-access/7.14.8:
+ resolution: {integrity: sha1-guH+wGRKfndcdNMF8hLDn4/nOSQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-simple-access/download/@babel/helper-simple-access-7.14.8.tgz}
+ name: '@babel/helper-simple-access'
+ version: 7.14.8
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-split-export-declaration/7.14.5:
+ resolution: {integrity: sha1-IrI6VO9RwrdgXYUZMMGXbdC8aTo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-split-export-declaration/download/@babel/helper-split-export-declaration-7.14.5.tgz}
+ name: '@babel/helper-split-export-declaration'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/helper-validator-identifier/7.14.9:
+ resolution: {integrity: sha1-ZlTRcbICT22O4VG/JQlpmRkTHUg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-validator-identifier/download/@babel/helper-validator-identifier-7.14.9.tgz?cache=0&sync_timestamp=1627804495811&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fhelper-validator-identifier%2Fdownload%2F%40babel%2Fhelper-validator-identifier-7.14.9.tgz}
+ name: '@babel/helper-validator-identifier'
+ version: 7.14.9
+ engines: {node: '>=6.9.0'}
+
+ registry.nlark.com/@babel/helper-validator-option/7.14.5:
+ resolution: {integrity: sha1-bnKh//GNXfy4eOHmLxoCHEty1aM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helper-validator-option/download/@babel/helper-validator-option-7.14.5.tgz}
+ name: '@babel/helper-validator-option'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ registry.nlark.com/@babel/helpers/7.15.3:
+ resolution: {integrity: sha1-yWg4t1K5Xc1SW050HtQLsdwqE1c=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/helpers/download/@babel/helpers-7.15.3.tgz}
+ name: '@babel/helpers'
+ version: 7.15.3
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': registry.nlark.com/@babel/template/7.14.5
+ '@babel/traverse': registry.nlark.com/@babel/traverse/7.15.0
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/highlight/7.14.5:
+ resolution: {integrity: sha1-aGGlLwOWZAUAH2qlNKAaJNmejNk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/highlight/download/@babel/highlight-7.14.5.tgz}
+ name: '@babel/highlight'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': registry.nlark.com/@babel/helper-validator-identifier/7.14.9
+ chalk: registry.nlark.com/chalk/2.4.2
+ js-tokens: registry.nlark.com/js-tokens/4.0.0
+ dev: true
+
+ registry.nlark.com/@babel/parser/7.15.3:
+ resolution: {integrity: sha1-NBbZvqdIBSz8tj28wnNoEFse2GI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/parser/download/@babel/parser-7.15.3.tgz?cache=0&sync_timestamp=1628668929918&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40babel%2Fparser%2Fdownload%2F%40babel%2Fparser-7.15.3.tgz}
+ name: '@babel/parser'
+ version: 7.15.3
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ registry.nlark.com/@babel/runtime-corejs3/7.15.3:
+ resolution: {integrity: sha1-KHVCY5iBmPKpKMCXM63i+00oCJ0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/runtime-corejs3/download/@babel/runtime-corejs3-7.15.3.tgz}
+ name: '@babel/runtime-corejs3'
+ version: 7.15.3
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ core-js-pure: registry.nlark.com/core-js-pure/3.16.3
+ regenerator-runtime: registry.nlark.com/regenerator-runtime/0.13.9
+ dev: true
+
+ registry.nlark.com/@babel/template/7.14.5:
+ resolution: {integrity: sha1-qbydizM1T/blWpxg0RCSAKaJdPQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/template/download/@babel/template-7.14.5.tgz}
+ name: '@babel/template'
+ version: 7.14.5
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': registry.nlark.com/@babel/code-frame/7.14.5
+ '@babel/parser': registry.nlark.com/@babel/parser/7.15.3
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ dev: true
+
+ registry.nlark.com/@babel/traverse/7.15.0:
+ resolution: {integrity: sha1-TMqDj9GyoDKDwfOOFB9jnWCz/Jg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/traverse/download/@babel/traverse-7.15.0.tgz}
+ name: '@babel/traverse'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': registry.nlark.com/@babel/code-frame/7.14.5
+ '@babel/generator': registry.nlark.com/@babel/generator/7.15.0
+ '@babel/helper-function-name': registry.nlark.com/@babel/helper-function-name/7.14.5
+ '@babel/helper-hoist-variables': registry.nlark.com/@babel/helper-hoist-variables/7.14.5
+ '@babel/helper-split-export-declaration': registry.nlark.com/@babel/helper-split-export-declaration/7.14.5
+ '@babel/parser': registry.nlark.com/@babel/parser/7.15.3
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ debug: registry.nlark.com/debug/4.3.2
+ globals: registry.nlark.com/globals/11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/@babel/types/7.15.0:
+ resolution: {integrity: sha1-Ya8R8ihsTpxpyo3rX0N1pzxy3L0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@babel/types/download/@babel/types-7.15.0.tgz}
+ name: '@babel/types'
+ version: 7.15.0
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': registry.nlark.com/@babel/helper-validator-identifier/7.14.9
+ to-fast-properties: registry.nlark.com/to-fast-properties/2.0.0
+
+ registry.nlark.com/@element-plus/icons/0.0.11:
+ resolution: {integrity: sha1-mxh8ACd0VIuRGFDRf6X8L5pRX1c=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@element-plus/icons/download/@element-plus/icons-0.0.11.tgz}
+ name: '@element-plus/icons'
+ version: 0.0.11
+ dev: false
+
+ registry.nlark.com/@eslint/eslintrc/0.4.3:
+ resolution: {integrity: sha1-nkKYHvA1vrPdSa3ResuW6P9vOUw=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@eslint/eslintrc/download/@eslint/eslintrc-0.4.3.tgz}
+ name: '@eslint/eslintrc'
+ version: 0.4.3
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ ajv: registry.nlark.com/ajv/6.12.6
+ debug: registry.nlark.com/debug/4.3.2
+ espree: registry.nlark.com/espree/7.3.1
+ globals: registry.nlark.com/globals/13.11.0
+ ignore: 4.0.6
+ import-fresh: 3.3.0
+ js-yaml: 3.14.1
+ minimatch: 3.0.4
+ strip-json-comments: registry.nlark.com/strip-json-comments/3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/@humanwhocodes/config-array/0.5.0:
+ resolution: {integrity: sha1-FAeWfUxu7Nc4j4Os8er00Mbljvk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@humanwhocodes/config-array/download/@humanwhocodes/config-array-0.5.0.tgz}
+ name: '@humanwhocodes/config-array'
+ version: 0.5.0
+ engines: {node: '>=10.10.0'}
+ dependencies:
+ '@humanwhocodes/object-schema': registry.nlark.com/@humanwhocodes/object-schema/1.2.0
+ debug: registry.nlark.com/debug/4.3.2
+ minimatch: 3.0.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/@humanwhocodes/object-schema/1.2.0:
+ resolution: {integrity: sha1-h956+cIxgm/daKxyWPd8Qp4OX88=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@humanwhocodes/object-schema/download/@humanwhocodes/object-schema-1.2.0.tgz}
+ name: '@humanwhocodes/object-schema'
+ version: 1.2.0
+ dev: true
+
+ registry.nlark.com/@nodelib/fs.scandir/2.1.5:
+ resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz}
+ name: '@nodelib/fs.scandir'
+ version: 2.1.5
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': registry.nlark.com/@nodelib/fs.stat/2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ registry.nlark.com/@nodelib/fs.stat/2.0.5:
+ resolution: {integrity: sha1-W9Jir5Tp0lvR5xsF3u1Eh2oiLos=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@nodelib/fs.stat/download/@nodelib/fs.stat-2.0.5.tgz}
+ name: '@nodelib/fs.stat'
+ version: 2.0.5
+ engines: {node: '>= 8'}
+ dev: true
+
+ registry.nlark.com/@nodelib/fs.walk/1.2.8:
+ resolution: {integrity: sha1-6Vc36LtnRt3t9pxVaVNJTxlv5po=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@nodelib/fs.walk/download/@nodelib/fs.walk-1.2.8.tgz?cache=0&sync_timestamp=1625770194804&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40nodelib%2Ffs.walk%2Fdownload%2F%40nodelib%2Ffs.walk-1.2.8.tgz}
+ name: '@nodelib/fs.walk'
+ version: 1.2.8
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': registry.nlark.com/@nodelib/fs.scandir/2.1.5
+ fastq: registry.nlark.com/fastq/1.12.0
+ dev: true
+
+ registry.nlark.com/@popperjs/core/2.9.3:
+ resolution: {integrity: sha1-i2jaHr1/xgOZnPbr7jSkiZoUuI4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@popperjs/core/download/@popperjs/core-2.9.3.tgz}
+ name: '@popperjs/core'
+ version: 2.9.3
+ dev: false
+
+ registry.nlark.com/@rollup/plugin-node-resolve/13.0.4:
+ resolution: {integrity: sha1-sQIi9BRaAZdArLdzhAITDYSGYMA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@rollup/plugin-node-resolve/download/@rollup/plugin-node-resolve-13.0.4.tgz}
+ name: '@rollup/plugin-node-resolve'
+ version: 13.0.4
+ engines: {node: '>= 10.0.0'}
+ peerDependencies:
+ rollup: ^2.42.0
+ dependencies:
+ '@rollup/pluginutils': registry.nlark.com/@rollup/pluginutils/3.1.0
+ '@types/resolve': registry.nlark.com/@types/resolve/1.17.1
+ builtin-modules: 3.2.0
+ deepmerge: 4.2.2
+ is-module: 1.0.0
+ resolve: 1.20.0
+ dev: true
+
+ registry.nlark.com/@rollup/pluginutils/3.1.0:
+ resolution: {integrity: sha1-cGtFJO5tyLEDs8mVUz5a1oDAK5s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@rollup/pluginutils/download/@rollup/pluginutils-3.1.0.tgz}
+ name: '@rollup/pluginutils'
+ version: 3.1.0
+ engines: {node: '>= 8.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@types/estree': registry.nlark.com/@types/estree/0.0.39
+ estree-walker: 1.0.1
+ picomatch: registry.nlark.com/picomatch/2.3.0
+ dev: true
+
+ registry.nlark.com/@rollup/pluginutils/4.1.1:
+ resolution: {integrity: sha1-HU2obdTt7RVlalfZM/2iuaCNR+w=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@rollup/pluginutils/download/@rollup/pluginutils-4.1.1.tgz}
+ name: '@rollup/pluginutils'
+ version: 4.1.1
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ estree-walker: 2.0.2
+ picomatch: registry.nlark.com/picomatch/2.3.0
+ dev: true
+
+ registry.nlark.com/@tinymce/tinymce-vue/4.0.4_vue@3.2.6:
+ resolution: {integrity: sha1-tHk08tHhBqya9/qboDFqjJbtMUw=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@tinymce/tinymce-vue/download/@tinymce/tinymce-vue-4.0.4.tgz}
+ id: registry.nlark.com/@tinymce/tinymce-vue/4.0.4
+ name: '@tinymce/tinymce-vue'
+ version: 4.0.4
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ vue: registry.nlark.com/vue/3.2.6
+ dev: false
+
+ registry.nlark.com/@trysound/sax/0.1.1:
+ resolution: {integrity: sha1-M0hWQEjnotc5jJNdRmwEFOu2pmk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@trysound/sax/download/@trysound/sax-0.1.1.tgz}
+ name: '@trysound/sax'
+ version: 0.1.1
+ engines: {node: '>=10.13.0'}
+ dev: true
+
+ registry.nlark.com/@types/estree/0.0.39:
+ resolution: {integrity: sha1-4Xfmme4bjCLSMXTKqnQiZEOJUJ8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/estree/download/@types/estree-0.0.39.tgz}
+ name: '@types/estree'
+ version: 0.0.39
+ dev: true
+
+ registry.nlark.com/@types/estree/0.0.48:
+ resolution: {integrity: sha1-GNyAkbKF35DbLyWqfZBs/DlLf3Q=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/estree/download/@types/estree-0.0.48.tgz}
+ name: '@types/estree'
+ version: 0.0.48
+ dev: true
+
+ registry.nlark.com/@types/fined/1.1.3:
+ resolution: {integrity: sha1-g/A+jwqNNnPfyvsY/ONXH2JQ4bw=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/fined/download/@types/fined-1.1.3.tgz}
+ name: '@types/fined'
+ version: 1.1.3
+ dev: true
+
+ registry.nlark.com/@types/glob/7.1.4:
+ resolution: {integrity: sha1-6lniHS7lxReRTLS8jkFTuZ5WZnI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/glob/download/@types/glob-7.1.4.tgz}
+ name: '@types/glob'
+ version: 7.1.4
+ dependencies:
+ '@types/minimatch': registry.nlark.com/@types/minimatch/3.0.5
+ '@types/node': registry.nlark.com/@types/node/16.7.2
+ dev: true
+
+ registry.nlark.com/@types/inquirer/6.5.0:
+ resolution: {integrity: sha1-uDsL8wuIuL5yRtQOUdMv6dEOCb4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/inquirer/download/@types/inquirer-6.5.0.tgz}
+ name: '@types/inquirer'
+ version: 6.5.0
+ dependencies:
+ '@types/through': registry.nlark.com/@types/through/0.0.30
+ rxjs: registry.nlark.com/rxjs/6.6.7
+ dev: true
+
+ registry.nlark.com/@types/interpret/1.1.1:
+ resolution: {integrity: sha1-sb+FsEIOJBS5ic4jdlitINwDcZs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/interpret/download/@types/interpret-1.1.1.tgz}
+ name: '@types/interpret'
+ version: 1.1.1
+ dependencies:
+ '@types/node': registry.nlark.com/@types/node/16.7.2
+ dev: true
+
+ registry.nlark.com/@types/liftoff/2.5.1:
+ resolution: {integrity: sha1-LrTB+G6dXuhVceVtsAhLJq8SnO0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/liftoff/download/@types/liftoff-2.5.1.tgz}
+ name: '@types/liftoff'
+ version: 2.5.1
+ dependencies:
+ '@types/fined': registry.nlark.com/@types/fined/1.1.3
+ '@types/interpret': registry.nlark.com/@types/interpret/1.1.1
+ '@types/node': registry.nlark.com/@types/node/16.7.2
+ dev: true
+
+ registry.nlark.com/@types/mdast/3.0.10:
+ resolution: {integrity: sha1-RyQkSoKkWYiEy76bz9c9/5J+6K8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/mdast/download/@types/mdast-3.0.10.tgz}
+ name: '@types/mdast'
+ version: 3.0.10
+ dependencies:
+ '@types/unist': registry.nlark.com/@types/unist/2.0.6
+ dev: true
+
+ registry.nlark.com/@types/minimatch/3.0.5:
+ resolution: {integrity: sha1-EAHMXmo3BLg8I2An538vWOoBD0A=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/minimatch/download/@types/minimatch-3.0.5.tgz?cache=0&sync_timestamp=1629710021422&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fminimatch%2Fdownload%2F%40types%2Fminimatch-3.0.5.tgz}
+ name: '@types/minimatch'
+ version: 3.0.5
+ dev: true
+
+ registry.nlark.com/@types/minimist/1.2.2:
+ resolution: {integrity: sha1-7nceK6Sz3Fs3KTXVSf2WF780W4w=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/minimist/download/@types/minimist-1.2.2.tgz?cache=0&sync_timestamp=1629710027998&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fminimist%2Fdownload%2F%40types%2Fminimist-1.2.2.tgz}
+ name: '@types/minimist'
+ version: 1.2.2
+ dev: true
+
+ registry.nlark.com/@types/mockjs/1.0.4:
+ resolution: {integrity: sha1-5waVHV4ztPCku3Ox+LEk4m8IHeA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/mockjs/download/@types/mockjs-1.0.4.tgz}
+ name: '@types/mockjs'
+ version: 1.0.4
+ dev: true
+
+ registry.nlark.com/@types/node/16.7.2:
+ resolution: {integrity: sha1-BGWjm1RWthoE2YvVVF+LNL40DLc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/node/download/@types/node-16.7.2.tgz?cache=0&sync_timestamp=1629940857634&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-16.7.2.tgz}
+ name: '@types/node'
+ version: 16.7.2
+ dev: true
+
+ registry.nlark.com/@types/normalize-package-data/2.4.1:
+ resolution: {integrity: sha1-0zV0eaD9/dWQf+Z+F+CoXJBuEwE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/normalize-package-data/download/@types/normalize-package-data-2.4.1.tgz?cache=0&sync_timestamp=1629710096135&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fnormalize-package-data%2Fdownload%2F%40types%2Fnormalize-package-data-2.4.1.tgz}
+ name: '@types/normalize-package-data'
+ version: 2.4.1
+ dev: true
+
+ registry.nlark.com/@types/parse-json/4.0.0:
+ resolution: {integrity: sha1-L4u0QUNNFjs1+4/9zNcTiSf/uMA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/parse-json/download/@types/parse-json-4.0.0.tgz?cache=0&sync_timestamp=1629709273211&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fparse-json%2Fdownload%2F%40types%2Fparse-json-4.0.0.tgz}
+ name: '@types/parse-json'
+ version: 4.0.0
+ dev: true
+
+ registry.nlark.com/@types/resolve/1.17.1:
+ resolution: {integrity: sha1-Ov1q2JZ8d+Q3bFmKgt3Vj0bsRdY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/resolve/download/@types/resolve-1.17.1.tgz}
+ name: '@types/resolve'
+ version: 1.17.1
+ dependencies:
+ '@types/node': registry.nlark.com/@types/node/16.7.2
+ dev: true
+
+ registry.nlark.com/@types/svgo/2.4.0:
+ resolution: {integrity: sha1-0EIeD1Y81HJvqCYQZvFtOZ5mWy4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/svgo/download/@types/svgo-2.4.0.tgz}
+ name: '@types/svgo'
+ version: 2.4.0
+ dev: true
+
+ registry.nlark.com/@types/through/0.0.30:
+ resolution: {integrity: sha1-4OQs536Je9aurW9upirrE1uKOJU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/through/download/@types/through-0.0.30.tgz?cache=0&sync_timestamp=1629710122580&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Fthrough%2Fdownload%2F%40types%2Fthrough-0.0.30.tgz}
+ name: '@types/through'
+ version: 0.0.30
+ dependencies:
+ '@types/node': registry.nlark.com/@types/node/16.7.2
+ dev: true
+
+ registry.nlark.com/@types/trusted-types/2.0.2:
+ resolution: {integrity: sha1-/CWtmUO8rBHM64Fo208nXg5y51Y=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/trusted-types/download/@types/trusted-types-2.0.2.tgz}
+ name: '@types/trusted-types'
+ version: 2.0.2
+ dev: true
+
+ registry.nlark.com/@types/unist/2.0.6:
+ resolution: {integrity: sha1-JQp7FsO5H2cqJFUuxkZ47rHToI0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@types/unist/download/@types/unist-2.0.6.tgz?cache=0&sync_timestamp=1629710137034&other_urls=https%3A%2F%2Fregistry.nlark.com%2F%40types%2Funist%2Fdownload%2F%40types%2Funist-2.0.6.tgz}
+ name: '@types/unist'
+ version: 2.0.6
+ dev: true
+
+ registry.nlark.com/@vitejs/plugin-vue/1.6.0_@vue+compiler-sfc@3.2.6:
+ resolution: {integrity: sha1-5VWOIMIOkJjNW9ZbmQH9zSw1SYM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vitejs/plugin-vue/download/@vitejs/plugin-vue-1.6.0.tgz}
+ id: registry.nlark.com/@vitejs/plugin-vue/1.6.0
+ name: '@vitejs/plugin-vue'
+ version: 1.6.0
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ '@vue/compiler-sfc': ^3.2.6
+ dependencies:
+ '@vue/compiler-sfc': registry.nlark.com/@vue/compiler-sfc/3.2.6
+ dev: true
+
+ registry.nlark.com/@vue/compiler-core/3.2.6:
+ resolution: {integrity: sha1-cWK7BnAnPwRWavDTUwCRh6tXeRU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/compiler-core/download/@vue/compiler-core-3.2.6.tgz}
+ name: '@vue/compiler-core'
+ version: 3.2.6
+ dependencies:
+ '@babel/parser': registry.nlark.com/@babel/parser/7.15.3
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ estree-walker: 2.0.2
+ source-map: 0.6.1
+
+ registry.nlark.com/@vue/compiler-dom/3.2.6:
+ resolution: {integrity: sha1-N2TX/hppbjn7KjydY42gdJ42my0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/compiler-dom/download/@vue/compiler-dom-3.2.6.tgz}
+ name: '@vue/compiler-dom'
+ version: 3.2.6
+ dependencies:
+ '@vue/compiler-core': registry.nlark.com/@vue/compiler-core/3.2.6
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+
+ registry.nlark.com/@vue/compiler-sfc/3.2.6:
+ resolution: {integrity: sha1-1qt0EM/1cIGrYnsVoepRoQcsfPE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/compiler-sfc/download/@vue/compiler-sfc-3.2.6.tgz}
+ name: '@vue/compiler-sfc'
+ version: 3.2.6
+ dependencies:
+ '@babel/parser': registry.nlark.com/@babel/parser/7.15.3
+ '@babel/types': registry.nlark.com/@babel/types/7.15.0
+ '@types/estree': registry.nlark.com/@types/estree/0.0.48
+ '@vue/compiler-core': registry.nlark.com/@vue/compiler-core/3.2.6
+ '@vue/compiler-dom': registry.nlark.com/@vue/compiler-dom/3.2.6
+ '@vue/compiler-ssr': registry.nlark.com/@vue/compiler-ssr/3.2.6
+ '@vue/ref-transform': registry.nlark.com/@vue/ref-transform/3.2.6
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ consolidate: 0.16.0
+ estree-walker: 2.0.2
+ hash-sum: 2.0.0
+ lru-cache: 5.1.1
+ magic-string: registry.nlark.com/magic-string/0.25.7
+ merge-source-map: 1.1.0
+ postcss: registry.nlark.com/postcss/8.3.6
+ postcss-modules: registry.nlark.com/postcss-modules/4.2.2_postcss@8.3.6
+ postcss-selector-parser: registry.nlark.com/postcss-selector-parser/6.0.6
+ source-map: 0.6.1
+ dev: true
+
+ registry.nlark.com/@vue/compiler-ssr/3.2.6:
+ resolution: {integrity: sha1-ytzxmYWfoAc59CdbTIWXDksKvn0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/compiler-ssr/download/@vue/compiler-ssr-3.2.6.tgz}
+ name: '@vue/compiler-ssr'
+ version: 3.2.6
+ dependencies:
+ '@vue/compiler-dom': registry.nlark.com/@vue/compiler-dom/3.2.6
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ dev: true
+
+ registry.nlark.com/@vue/devtools-api/6.0.0-beta.15:
+ resolution: {integrity: sha1-rXyzhOBi8WW8+cg3MhJb/7wq2D0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/devtools-api/download/@vue/devtools-api-6.0.0-beta.15.tgz}
+ name: '@vue/devtools-api'
+ version: 6.0.0-beta.15
+ dev: false
+
+ registry.nlark.com/@vue/reactivity/3.2.6:
+ resolution: {integrity: sha1-uJk/pvSFRReOWI4lqclDGhwbfVA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/reactivity/download/@vue/reactivity-3.2.6.tgz}
+ name: '@vue/reactivity'
+ version: 3.2.6
+ dependencies:
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ dev: false
+
+ registry.nlark.com/@vue/ref-transform/3.2.6:
+ resolution: {integrity: sha1-MLXx+nfa+YlLwj5qWg41hqSnlrg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/ref-transform/download/@vue/ref-transform-3.2.6.tgz}
+ name: '@vue/ref-transform'
+ version: 3.2.6
+ dependencies:
+ '@babel/parser': registry.nlark.com/@babel/parser/7.15.3
+ '@vue/compiler-core': registry.nlark.com/@vue/compiler-core/3.2.6
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ estree-walker: 2.0.2
+ magic-string: registry.nlark.com/magic-string/0.25.7
+ dev: true
+
+ registry.nlark.com/@vue/runtime-core/3.2.6:
+ resolution: {integrity: sha1-N2uu73/gKmI3fUbQ0KirlRDbHY4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/runtime-core/download/@vue/runtime-core-3.2.6.tgz}
+ name: '@vue/runtime-core'
+ version: 3.2.6
+ dependencies:
+ '@vue/reactivity': registry.nlark.com/@vue/reactivity/3.2.6
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ dev: false
+
+ registry.nlark.com/@vue/runtime-dom/3.2.6:
+ resolution: {integrity: sha1-D3TbyoTVbCIvv71TQVsmA4aFmjs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/runtime-dom/download/@vue/runtime-dom-3.2.6.tgz}
+ name: '@vue/runtime-dom'
+ version: 3.2.6
+ dependencies:
+ '@vue/runtime-core': registry.nlark.com/@vue/runtime-core/3.2.6
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ csstype: registry.nlark.com/csstype/2.6.17
+ dev: false
+
+ registry.nlark.com/@vue/shared/3.2.6:
+ resolution: {integrity: sha1-LCK66I/it7WfpoqcnEzWC64sF5Q=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@vue/shared/download/@vue/shared-3.2.6.tgz}
+ name: '@vue/shared'
+ version: 3.2.6
+
+ registry.nlark.com/acorn-jsx/5.3.2_acorn@7.4.1:
+ resolution: {integrity: sha1-ftW7VZCLOy8bxVxq8WU7rafweTc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/acorn-jsx/download/acorn-jsx-5.3.2.tgz}
+ id: registry.nlark.com/acorn-jsx/5.3.2
+ name: acorn-jsx
+ version: 5.3.2
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: registry.nlark.com/acorn/7.4.1
+ dev: true
+
+ registry.nlark.com/acorn/7.4.1:
+ resolution: {integrity: sha1-/q7SVZc9LndVW4PbwIhRpsY1IPo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/acorn/download/acorn-7.4.1.tgz?cache=0&sync_timestamp=1624527466084&other_urls=https%3A%2F%2Fregistry.nlark.com%2Facorn%2Fdownload%2Facorn-7.4.1.tgz}
+ name: acorn
+ version: 7.4.1
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ registry.nlark.com/ajv/6.12.6:
+ resolution: {integrity: sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ajv/download/ajv-6.12.6.tgz}
+ name: ajv
+ version: 6.12.6
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: true
+
+ registry.nlark.com/ajv/8.6.2:
+ resolution: {integrity: sha1-L7ReDl/LwIEzJsHD2lNdGIG7BXE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ajv/download/ajv-8.6.2.tgz}
+ name: ajv
+ version: 8.6.2
+ dependencies:
+ fast-deep-equal: 3.1.3
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ uri-js: 4.4.1
+ dev: true
+
+ registry.nlark.com/ansi-styles/2.2.1:
+ resolution: {integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ansi-styles/download/ansi-styles-2.2.1.tgz?cache=0&sync_timestamp=1618996996398&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-2.2.1.tgz}
+ name: ansi-styles
+ version: 2.2.1
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ registry.nlark.com/ansi-styles/3.2.1:
+ resolution: {integrity: sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ansi-styles/download/ansi-styles-3.2.1.tgz?cache=0&sync_timestamp=1618996996398&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-3.2.1.tgz}
+ name: ansi-styles
+ version: 3.2.1
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
+ registry.nlark.com/ansi-styles/4.3.0:
+ resolution: {integrity: sha1-7dgDYornHATIWuegkG7a00tkiTc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ansi-styles/download/ansi-styles-4.3.0.tgz?cache=0&sync_timestamp=1618996996398&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fansi-styles%2Fdownload%2Fansi-styles-4.3.0.tgz}
+ name: ansi-styles
+ version: 4.3.0
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ registry.nlark.com/array-each/1.0.1:
+ resolution: {integrity: sha1-p5SvDAWrF1KEbudTofIRoFugxE8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/array-each/download/array-each-1.0.1.tgz}
+ name: array-each
+ version: 1.0.1
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ registry.nlark.com/arrify/1.0.1:
+ resolution: {integrity: sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/arrify/download/arrify-1.0.1.tgz}
+ name: arrify
+ version: 1.0.1
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ registry.nlark.com/async-validator/3.5.2:
+ resolution: {integrity: sha1-aOhmqWgk6LJpT/eoMcGiXETV5QA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/async-validator/download/async-validator-3.5.2.tgz}
+ name: async-validator
+ version: 3.5.2
+ dev: false
+
+ registry.nlark.com/async/0.9.2:
+ resolution: {integrity: sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/async/download/async-0.9.2.tgz}
+ name: async
+ version: 0.9.2
+ dev: true
+
+ registry.nlark.com/async/2.6.3:
+ resolution: {integrity: sha1-1yYl4jRKNlbjo61Pp0n6gymdgv8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/async/download/async-2.6.3.tgz}
+ name: async
+ version: 2.6.3
+ dependencies:
+ lodash: 4.17.21
+ dev: true
+
+ registry.nlark.com/autoprefixer/9.8.6:
+ resolution: {integrity: sha1-O3NZTKG/kmYyDFrPFYjXTep0IQ8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/autoprefixer/download/autoprefixer-9.8.6.tgz}
+ name: autoprefixer
+ version: 9.8.6
+ hasBin: true
+ dependencies:
+ browserslist: registry.nlark.com/browserslist/4.16.8
+ caniuse-lite: registry.nlark.com/caniuse-lite/1.0.30001252
+ colorette: registry.nlark.com/colorette/1.3.0
+ normalize-range: 0.1.2
+ num2fraction: 1.2.2
+ postcss: registry.nlark.com/postcss/7.0.36
+ postcss-value-parser: 4.1.0
+ dev: true
+
+ registry.nlark.com/bail/1.0.5:
+ resolution: {integrity: sha1-tvoTNASjksvB+MS/Y/WVM1Hnp3Y=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/bail/download/bail-1.0.5.tgz}
+ name: bail
+ version: 1.0.5
+ dev: true
+
+ registry.nlark.com/big.js/5.2.2:
+ resolution: {integrity: sha1-ZfCvOC9Xi83HQr2cKB6cstd2gyg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/big.js/download/big.js-5.2.2.tgz}
+ name: big.js
+ version: 5.2.2
+ dev: true
+
+ registry.nlark.com/bin-pack/1.0.2:
+ resolution: {integrity: sha1-wqAU7b8L7XCjKSBi7UZXe5YSBnk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/bin-pack/download/bin-pack-1.0.2.tgz}
+ name: bin-pack
+ version: 1.0.2
+ dev: true
+
+ registry.nlark.com/browserslist/4.16.8:
+ resolution: {integrity: sha1-y4aLC1VPE3um4z3g7P8u2kA8T7A=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/browserslist/download/browserslist-4.16.8.tgz}
+ name: browserslist
+ version: 4.16.8
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: registry.nlark.com/caniuse-lite/1.0.30001252
+ colorette: registry.nlark.com/colorette/1.3.0
+ electron-to-chromium: registry.nlark.com/electron-to-chromium/1.3.818
+ escalade: 3.1.1
+ node-releases: registry.nlark.com/node-releases/1.1.75
+ dev: true
+
+ registry.nlark.com/buffer-from/1.1.2:
+ resolution: {integrity: sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/buffer-from/download/buffer-from-1.1.2.tgz}
+ name: buffer-from
+ version: 1.1.2
+ dev: true
+
+ registry.nlark.com/callsites/3.1.0:
+ resolution: {integrity: sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/callsites/download/callsites-3.1.0.tgz}
+ name: callsites
+ version: 3.1.0
+ engines: {node: '>=6'}
+ dev: true
+
+ registry.nlark.com/camelcase-keys/6.2.2:
+ resolution: {integrity: sha1-XnVda6UaoiPsfT1S8ld4IQ+dw8A=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/camelcase-keys/download/camelcase-keys-6.2.2.tgz}
+ name: camelcase-keys
+ version: 6.2.2
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.2.1
+ quick-lru: registry.nlark.com/quick-lru/4.0.1
+ dev: true
+
+ registry.nlark.com/caniuse-lite/1.0.30001252:
+ resolution: {integrity: sha1-yxbk49r+lI/EqbszB66gVLkSAZo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/caniuse-lite/download/caniuse-lite-1.0.30001252.tgz}
+ name: caniuse-lite
+ version: 1.0.30001252
+ dev: true
+
+ registry.nlark.com/chalk/1.1.3:
+ resolution: {integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/chalk/download/chalk-1.1.3.tgz?cache=0&sync_timestamp=1627650698357&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-1.1.3.tgz}
+ name: chalk
+ version: 1.1.3
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-styles: registry.nlark.com/ansi-styles/2.2.1
+ escape-string-regexp: 1.0.5
+ has-ansi: 2.0.0
+ strip-ansi: 3.0.1
+ supports-color: registry.nlark.com/supports-color/2.0.0
+ dev: true
+
+ registry.nlark.com/chalk/2.4.2:
+ resolution: {integrity: sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627650698357&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz}
+ name: chalk
+ version: 2.4.2
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: registry.nlark.com/ansi-styles/3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: registry.nlark.com/supports-color/5.5.0
+ dev: true
+
+ registry.nlark.com/chalk/4.1.2:
+ resolution: {integrity: sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/chalk/download/chalk-4.1.2.tgz?cache=0&sync_timestamp=1627650698357&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-4.1.2.tgz}
+ name: chalk
+ version: 4.1.2
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: registry.nlark.com/ansi-styles/4.3.0
+ supports-color: registry.nlark.com/supports-color/7.2.0
+ dev: true
+
+ registry.nlark.com/chokidar/3.5.2:
+ resolution: {integrity: sha1-26OXb8rbAW9m/TZQIdkWANAcHnU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/chokidar/download/chokidar-3.5.2.tgz?cache=0&sync_timestamp=1623763736136&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchokidar%2Fdownload%2Fchokidar-3.5.2.tgz}
+ name: chokidar
+ version: 3.5.2
+ engines: {node: '>= 8.10.0'}
+ dependencies:
+ anymatch: 3.1.2
+ braces: 3.0.2
+ glob-parent: registry.nlark.com/glob-parent/5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.1
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ registry.nlark.com/clean-css/4.2.3:
+ resolution: {integrity: sha1-UHtd59l7SO5T2ErbAWD/YhY4D3g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/clean-css/download/clean-css-4.2.3.tgz}
+ name: clean-css
+ version: 4.2.3
+ engines: {node: '>= 4.0'}
+ dependencies:
+ source-map: 0.6.1
+ dev: true
+
+ registry.nlark.com/clean-stack/2.2.0:
+ resolution: {integrity: sha1-7oRy27Ep5yezHooQpCfe6d/kAIs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/clean-stack/download/clean-stack-2.2.0.tgz}
+ name: clean-stack
+ version: 2.2.0
+ engines: {node: '>=6'}
+ dev: true
+
+ registry.nlark.com/cli-cursor/2.1.0:
+ resolution: {integrity: sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cli-cursor/download/cli-cursor-2.1.0.tgz}
+ name: cli-cursor
+ version: 2.1.0
+ engines: {node: '>=4'}
+ dependencies:
+ restore-cursor: registry.nlark.com/restore-cursor/2.0.0
+ dev: true
+
+ registry.nlark.com/cli-cursor/3.1.0:
+ resolution: {integrity: sha1-JkMFp65JDR0Dvwybp8kl0XU68wc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cli-cursor/download/cli-cursor-3.1.0.tgz}
+ name: cli-cursor
+ version: 3.1.0
+ engines: {node: '>=8'}
+ dependencies:
+ restore-cursor: registry.nlark.com/restore-cursor/3.1.0
+ dev: true
+
+ registry.nlark.com/cli-truncate/2.1.0:
+ resolution: {integrity: sha1-w54ovwXtzeW+O5iZKiLe7Vork8c=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cli-truncate/download/cli-truncate-2.1.0.tgz}
+ name: cli-truncate
+ version: 2.1.0
+ engines: {node: '>=8'}
+ dependencies:
+ slice-ansi: 3.0.0
+ string-width: 4.2.2
+ dev: true
+
+ registry.nlark.com/colorette/1.3.0:
+ resolution: {integrity: sha1-/0XS8O2yRAadO3cq3rBP7TjQoK8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/colorette/download/colorette-1.3.0.tgz?cache=0&sync_timestamp=1628605216202&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcolorette%2Fdownload%2Fcolorette-1.3.0.tgz}
+ name: colorette
+ version: 1.3.0
+ dev: true
+
+ registry.nlark.com/commander/2.20.3:
+ resolution: {integrity: sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/commander/download/commander-2.20.3.tgz?cache=0&sync_timestamp=1627363990355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-2.20.3.tgz}
+ name: commander
+ version: 2.20.3
+ dev: true
+
+ registry.nlark.com/commander/4.1.1:
+ resolution: {integrity: sha1-n9YCvZNilOnp70aj9NaWQESxgGg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/commander/download/commander-4.1.1.tgz?cache=0&sync_timestamp=1627363990355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-4.1.1.tgz}
+ name: commander
+ version: 4.1.1
+ engines: {node: '>= 6'}
+ dev: true
+
+ registry.nlark.com/commander/7.2.0:
+ resolution: {integrity: sha1-o2y1fQtQHOEI5NIFWaFQo5HZerc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/commander/download/commander-7.2.0.tgz?cache=0&sync_timestamp=1627363990355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-7.2.0.tgz}
+ name: commander
+ version: 7.2.0
+ engines: {node: '>= 10'}
+ dev: true
+
+ registry.nlark.com/commander/8.1.0:
+ resolution: {integrity: sha1-2zbj5m7fJP9ZHWOYYsarLFJmQ2I=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/commander/download/commander-8.1.0.tgz?cache=0&sync_timestamp=1627363990355&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcommander%2Fdownload%2Fcommander-8.1.0.tgz}
+ name: commander
+ version: 8.1.0
+ engines: {node: '>= 12'}
+ dev: false
+
+ registry.nlark.com/contentstream/1.0.0:
+ resolution: {integrity: sha1-C9z6RtowRkqGzo+n7OVlQQ3G+aU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/contentstream/download/contentstream-1.0.0.tgz}
+ name: contentstream
+ version: 1.0.0
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ readable-stream: 1.0.34
+ dev: true
+
+ registry.nlark.com/convert-source-map/1.8.0:
+ resolution: {integrity: sha1-8zc8MtIbTXgN2ABFFGhPt5HKQ2k=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/convert-source-map/download/convert-source-map-1.8.0.tgz}
+ name: convert-source-map
+ version: 1.8.0
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: true
+
+ registry.nlark.com/core-js-pure/3.16.3:
+ resolution: {integrity: sha1-Qcy5tgJ1NfjdUaCvAEwcfwqMnKc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/core-js-pure/download/core-js-pure-3.16.3.tgz}
+ name: core-js-pure
+ version: 3.16.3
+ requiresBuild: true
+ dev: true
+
+ registry.nlark.com/cosmiconfig/7.0.1:
+ resolution: {integrity: sha1-cU11ZSLKzoZ4Z8y0R0xdAbuuXW0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cosmiconfig/download/cosmiconfig-7.0.1.tgz}
+ name: cosmiconfig
+ version: 7.0.1
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/parse-json': registry.nlark.com/@types/parse-json/4.0.0
+ import-fresh: 3.3.0
+ parse-json: 5.2.0
+ path-type: 4.0.0
+ yaml: registry.nlark.com/yaml/1.10.2
+ dev: true
+
+ registry.nlark.com/css-select/4.1.3:
+ resolution: {integrity: sha1-pwRA9wMX8maRGK10/xBeZYSccGc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/css-select/download/css-select-4.1.3.tgz}
+ name: css-select
+ version: 4.1.3
+ dependencies:
+ boolbase: 1.0.0
+ css-what: registry.nlark.com/css-what/5.0.1
+ domhandler: 4.2.0
+ domutils: registry.nlark.com/domutils/2.7.0
+ nth-check: 2.0.0
+ dev: true
+
+ registry.nlark.com/css-tree/1.1.3:
+ resolution: {integrity: sha1-60hw+2/XcHMn7JXC/yqwm16NuR0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/css-tree/download/css-tree-1.1.3.tgz}
+ name: css-tree
+ version: 1.1.3
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ mdn-data: registry.nlark.com/mdn-data/2.0.14
+ source-map: 0.6.1
+ dev: true
+
+ registry.nlark.com/css-what/5.0.1:
+ resolution: {integrity: sha1-PvqCATH0ZpqKwkCPnDLnx96fTK0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/css-what/download/css-what-5.0.1.tgz}
+ name: css-what
+ version: 5.0.1
+ engines: {node: '>= 6'}
+ dev: true
+
+ registry.nlark.com/csstype/2.6.17:
+ resolution: {integrity: sha1-TPMOuH4dGgBdi2UQ+VKSQT9qHA4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/csstype/download/csstype-2.6.17.tgz?cache=0&sync_timestamp=1618818778879&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcsstype%2Fdownload%2Fcsstype-2.6.17.tgz}
+ name: csstype
+ version: 2.6.17
+ dev: false
+
+ registry.nlark.com/cwise-compiler/1.1.3:
+ resolution: {integrity: sha1-9NZnQQ6FDToxOn0tt7HlBbsDTMU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/cwise-compiler/download/cwise-compiler-1.1.3.tgz}
+ name: cwise-compiler
+ version: 1.1.3
+ dependencies:
+ uniq: 1.0.1
+ dev: true
+
+ registry.nlark.com/data-uri-to-buffer/0.0.3:
+ resolution: {integrity: sha1-GK6XmmoMqZSwYlhTkW0mYruuCxo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/data-uri-to-buffer/download/data-uri-to-buffer-0.0.3.tgz}
+ name: data-uri-to-buffer
+ version: 0.0.3
+ dev: true
+
+ registry.nlark.com/dayjs/1.10.6:
+ resolution: {integrity: sha1-KIsqqC8thBimydTfWJjAc3rQKmM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/dayjs/download/dayjs-1.10.6.tgz}
+ name: dayjs
+ version: 1.10.6
+ dev: false
+
+ registry.nlark.com/debug/2.6.9:
+ resolution: {integrity: sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/debug/download/debug-2.6.9.tgz}
+ name: debug
+ version: 2.6.9
+ dependencies:
+ ms: registry.nlark.com/ms/2.0.0
+ dev: true
+
+ registry.nlark.com/debug/3.2.7:
+ resolution: {integrity: sha1-clgLfpFF+zm2Z2+cXl+xALk0F5o=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/debug/download/debug-3.2.7.tgz}
+ name: debug
+ version: 3.2.7
+ dependencies:
+ ms: registry.nlark.com/ms/2.1.3
+ dev: true
+
+ registry.nlark.com/debug/4.3.2:
+ resolution: {integrity: sha1-8KScGKyHeeMdSgxgKd+3aHPHQos=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/debug/download/debug-4.3.2.tgz}
+ name: debug
+ version: 4.3.2
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: registry.nlark.com/ms/2.1.2
+ dev: true
+
+ registry.nlark.com/dom-serializer/0.2.2:
+ resolution: {integrity: sha1-GvuB9TNxcXXUeGVd68XjMtn5u1E=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/dom-serializer/download/dom-serializer-0.2.2.tgz}
+ name: dom-serializer
+ version: 0.2.2
+ dependencies:
+ domelementtype: 2.2.0
+ entities: registry.nlark.com/entities/2.2.0
+ dev: true
+
+ registry.nlark.com/dom-serializer/1.3.2:
+ resolution: {integrity: sha1-YgZDfTLO767HFhgDIwx6ILwbTZE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/dom-serializer/download/dom-serializer-1.3.2.tgz}
+ name: dom-serializer
+ version: 1.3.2
+ dependencies:
+ domelementtype: 2.2.0
+ domhandler: 4.2.0
+ entities: registry.nlark.com/entities/2.2.0
+ dev: true
+
+ registry.nlark.com/domutils/1.7.0:
+ resolution: {integrity: sha1-Vuo0HoNOBuZ0ivehyyXaZ+qfjCo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/domutils/download/domutils-1.7.0.tgz}
+ name: domutils
+ version: 1.7.0
+ dependencies:
+ dom-serializer: registry.nlark.com/dom-serializer/0.2.2
+ domelementtype: 1.3.1
+ dev: true
+
+ registry.nlark.com/domutils/2.7.0:
+ resolution: {integrity: sha1-jrrwxB66/PVbC3LsMcVjI3EsVEI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/domutils/download/domutils-2.7.0.tgz}
+ name: domutils
+ version: 2.7.0
+ dependencies:
+ dom-serializer: registry.nlark.com/dom-serializer/1.3.2
+ domelementtype: 2.2.0
+ domhandler: 4.2.0
+ dev: true
+
+ registry.nlark.com/dotenv/10.0.0:
+ resolution: {integrity: sha1-PUInuPuV+BCWzdK2ZlP7LHCFuoE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/dotenv/download/dotenv-10.0.0.tgz}
+ name: dotenv
+ version: 10.0.0
+ engines: {node: '>=10'}
+ dev: true
+
+ registry.nlark.com/ecstatic/3.3.2:
+ resolution: {integrity: sha1-bR3UmBTQBZRoLGUq22YHamnUbEg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ecstatic/download/ecstatic-3.3.2.tgz}
+ name: ecstatic
+ version: 3.3.2
+ deprecated: This package is unmaintained and deprecated. See the GH Issue 259.
+ hasBin: true
+ dependencies:
+ he: 1.2.0
+ mime: 1.6.0
+ minimist: 1.2.5
+ url-join: 2.0.5
+ dev: true
+
+ registry.nlark.com/electron-to-chromium/1.3.818:
+ resolution: {integrity: sha1-Mu0CT6gxbl1GnJbuy+p9JGPYAIU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/electron-to-chromium/download/electron-to-chromium-1.3.818.tgz}
+ name: electron-to-chromium
+ version: 1.3.818
+ dev: true
+
+ registry.nlark.com/element-plus/1.1.0-beta.6_vue@3.2.6:
+ resolution: {integrity: sha1-ukewmzykNLF8biHMiJNGV9a0L/g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/element-plus/download/element-plus-1.1.0-beta.6.tgz}
+ id: registry.nlark.com/element-plus/1.1.0-beta.6
+ name: element-plus
+ version: 1.1.0-beta.6
+ peerDependencies:
+ vue: ^3.2.0
+ dependencies:
+ '@element-plus/icons': registry.nlark.com/@element-plus/icons/0.0.11
+ '@popperjs/core': registry.nlark.com/@popperjs/core/2.9.3
+ async-validator: registry.nlark.com/async-validator/3.5.2
+ dayjs: registry.nlark.com/dayjs/1.10.6
+ lodash: 4.17.21
+ mitt: registry.nlark.com/mitt/2.1.0
+ normalize-wheel: 1.0.1
+ resize-observer-polyfill: 1.5.1
+ vue: registry.nlark.com/vue/3.2.6
+ dev: false
+
+ registry.nlark.com/entities/1.1.2:
+ resolution: {integrity: sha1-vfpzUplmTfr9NFKe1PhSKidf6lY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/entities/download/entities-1.1.2.tgz}
+ name: entities
+ version: 1.1.2
+ dev: true
+
+ registry.nlark.com/entities/2.2.0:
+ resolution: {integrity: sha1-CY3JDruD2N/6CJ1VJWs1HTTE2lU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/entities/download/entities-2.2.0.tgz}
+ name: entities
+ version: 2.2.0
+ dev: true
+
+ registry.nlark.com/esbuild/0.11.3:
+ resolution: {integrity: sha1-tXFluQe+T/umUfZFBTjOjYwdXrA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/esbuild/download/esbuild-0.11.3.tgz}
+ name: esbuild
+ version: 0.11.3
+ hasBin: true
+ requiresBuild: true
+ dev: true
+
+ registry.nlark.com/esbuild/0.12.23:
+ resolution: {integrity: sha1-/UDXDT7F54k9jFvmVePjjQlt2II=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/esbuild/download/esbuild-0.12.23.tgz}
+ name: esbuild
+ version: 0.12.23
+ hasBin: true
+ requiresBuild: true
+ dev: true
+
+ registry.nlark.com/eslint-plugin-vue/7.16.0_eslint@7.32.0:
+ resolution: {integrity: sha1-f+n+oDmhkLEIMZwTgK31Q+9XcH0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/eslint-plugin-vue/download/eslint-plugin-vue-7.16.0.tgz}
+ id: registry.nlark.com/eslint-plugin-vue/7.16.0
+ name: eslint-plugin-vue
+ version: 7.16.0
+ engines: {node: '>=8.10'}
+ peerDependencies:
+ eslint: ^6.2.0 || ^7.0.0
+ dependencies:
+ eslint: registry.nlark.com/eslint/7.32.0
+ eslint-utils: registry.nlark.com/eslint-utils/2.1.0
+ natural-compare: 1.4.0
+ semver: 6.3.0
+ vue-eslint-parser: registry.nlark.com/vue-eslint-parser/7.10.0_eslint@7.32.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/eslint-scope/5.1.1:
+ resolution: {integrity: sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/eslint-scope/download/eslint-scope-5.1.1.tgz}
+ name: eslint-scope
+ version: 5.1.1
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+ dev: true
+
+ registry.nlark.com/eslint-utils/2.1.0:
+ resolution: {integrity: sha1-0t5eA0JOcH3BDHQGjd7a5wh0Gyc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/eslint-utils/download/eslint-utils-2.1.0.tgz?cache=0&sync_timestamp=1620977666265&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-utils%2Fdownload%2Feslint-utils-2.1.0.tgz}
+ name: eslint-utils
+ version: 2.1.0
+ engines: {node: '>=6'}
+ dependencies:
+ eslint-visitor-keys: registry.nlark.com/eslint-visitor-keys/1.3.0
+ dev: true
+
+ registry.nlark.com/eslint-visitor-keys/1.3.0:
+ resolution: {integrity: sha1-MOvR73wv3/AcOk8VEESvJfqwUj4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/eslint-visitor-keys/download/eslint-visitor-keys-1.3.0.tgz?cache=0&sync_timestamp=1624579502329&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-1.3.0.tgz}
+ name: eslint-visitor-keys
+ version: 1.3.0
+ engines: {node: '>=4'}
+ dev: true
+
+ registry.nlark.com/eslint-visitor-keys/2.1.0:
+ resolution: {integrity: sha1-9lMoJZMFknOSyTjtROsKXJsr0wM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/eslint-visitor-keys/download/eslint-visitor-keys-2.1.0.tgz?cache=0&sync_timestamp=1624579502329&other_urls=https%3A%2F%2Fregistry.nlark.com%2Feslint-visitor-keys%2Fdownload%2Feslint-visitor-keys-2.1.0.tgz}
+ name: eslint-visitor-keys
+ version: 2.1.0
+ engines: {node: '>=10'}
+ dev: true
+
+ registry.nlark.com/eslint/7.32.0:
+ resolution: {integrity: sha1-xtMooUvj+wjI0dIeEsAv23oqgS0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/eslint/download/eslint-7.32.0.tgz}
+ name: eslint
+ version: 7.32.0
+ engines: {node: ^10.12.0 || >=12.0.0}
+ hasBin: true
+ dependencies:
+ '@babel/code-frame': registry.nlark.com/@babel/code-frame/7.12.11
+ '@eslint/eslintrc': registry.nlark.com/@eslint/eslintrc/0.4.3
+ '@humanwhocodes/config-array': registry.nlark.com/@humanwhocodes/config-array/0.5.0
+ ajv: registry.nlark.com/ajv/6.12.6
+ chalk: registry.nlark.com/chalk/4.1.2
+ cross-spawn: 7.0.3
+ debug: registry.nlark.com/debug/4.3.2
+ doctrine: 3.0.0
+ enquirer: 2.3.6
+ escape-string-regexp: 4.0.0
+ eslint-scope: registry.nlark.com/eslint-scope/5.1.1
+ eslint-utils: registry.nlark.com/eslint-utils/2.1.0
+ eslint-visitor-keys: registry.nlark.com/eslint-visitor-keys/2.1.0
+ espree: registry.nlark.com/espree/7.3.1
+ esquery: 1.4.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ functional-red-black-tree: 1.0.1
+ glob-parent: registry.nlark.com/glob-parent/5.1.2
+ globals: registry.nlark.com/globals/13.11.0
+ ignore: 4.0.6
+ import-fresh: 3.3.0
+ imurmurhash: 0.1.4
+ is-glob: 4.0.1
+ js-yaml: 3.14.1
+ json-stable-stringify-without-jsonify: registry.nlark.com/json-stable-stringify-without-jsonify/1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.0.4
+ natural-compare: 1.4.0
+ optionator: 0.9.1
+ progress: 2.0.3
+ regexpp: registry.nlark.com/regexpp/3.2.0
+ semver: 7.3.5
+ strip-ansi: 6.0.0
+ strip-json-comments: registry.nlark.com/strip-json-comments/3.1.1
+ table: registry.nlark.com/table/6.7.1
+ text-table: 0.2.0
+ v8-compile-cache: 2.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/espree/6.2.1:
+ resolution: {integrity: sha1-d/xy4f10SiBSwg84pbV1gy6Cc0o=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/espree/download/espree-6.2.1.tgz}
+ name: espree
+ version: 6.2.1
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ acorn: registry.nlark.com/acorn/7.4.1
+ acorn-jsx: registry.nlark.com/acorn-jsx/5.3.2_acorn@7.4.1
+ eslint-visitor-keys: registry.nlark.com/eslint-visitor-keys/1.3.0
+ dev: true
+
+ registry.nlark.com/espree/7.3.1:
+ resolution: {integrity: sha1-8t8zC3Usb1UBn4vYm3ZgA5wbu7Y=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/espree/download/espree-7.3.1.tgz}
+ name: espree
+ version: 7.3.1
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ acorn: registry.nlark.com/acorn/7.4.1
+ acorn-jsx: registry.nlark.com/acorn-jsx/5.3.2_acorn@7.4.1
+ eslint-visitor-keys: registry.nlark.com/eslint-visitor-keys/1.3.0
+ dev: true
+
+ registry.nlark.com/execa/5.1.1:
+ resolution: {integrity: sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/execa/download/execa-5.1.1.tgz}
+ name: execa
+ version: 5.1.1
+ engines: {node: '>=10'}
+ dependencies:
+ cross-spawn: 7.0.3
+ get-stream: 6.0.1
+ human-signals: registry.nlark.com/human-signals/2.1.0
+ is-stream: registry.nlark.com/is-stream/2.0.1
+ merge-stream: 2.0.0
+ npm-run-path: 4.0.1
+ onetime: 5.1.2
+ signal-exit: 3.0.3
+ strip-final-newline: registry.nlark.com/strip-final-newline/2.0.0
+ dev: true
+
+ registry.nlark.com/extend/3.0.2:
+ resolution: {integrity: sha1-+LETa0Bx+9jrFAr/hYsQGewpFfo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/extend/download/extend-3.0.2.tgz}
+ name: extend
+ version: 3.0.2
+ dev: true
+
+ registry.nlark.com/fast-glob/3.2.7:
+ resolution: {integrity: sha1-/Wy3otfpqnp4RhEehaGW1rL3ZqE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fast-glob/download/fast-glob-3.2.7.tgz}
+ name: fast-glob
+ version: 3.2.7
+ engines: {node: '>=8'}
+ dependencies:
+ '@nodelib/fs.stat': registry.nlark.com/@nodelib/fs.stat/2.0.5
+ '@nodelib/fs.walk': registry.nlark.com/@nodelib/fs.walk/1.2.8
+ glob-parent: registry.nlark.com/glob-parent/5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.4
+ dev: true
+
+ registry.nlark.com/fastq/1.12.0:
+ resolution: {integrity: sha1-7XtqtdYjk/ssxZHIU2UqXDGL95Q=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fastq/download/fastq-1.12.0.tgz?cache=0&sync_timestamp=1629361837279&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ffastq%2Fdownload%2Ffastq-1.12.0.tgz}
+ name: fastq
+ version: 1.12.0
+ dependencies:
+ reusify: 1.0.4
+ dev: true
+
+ registry.nlark.com/figures/3.2.0:
+ resolution: {integrity: sha1-YlwYvSk8YE3EqN2y/r8MiDQXRq8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/figures/download/figures-3.2.0.tgz}
+ name: figures
+ version: 3.2.0
+ engines: {node: '>=8'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ registry.nlark.com/first-chunk-stream/1.0.0:
+ resolution: {integrity: sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/first-chunk-stream/download/first-chunk-stream-1.0.0.tgz}
+ name: first-chunk-stream
+ version: 1.0.0
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ registry.nlark.com/flagged-respawn/1.0.1:
+ resolution: {integrity: sha1-595vEnnd2cqarIpZcdYYYGs6q0E=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/flagged-respawn/download/flagged-respawn-1.0.1.tgz}
+ name: flagged-respawn
+ version: 1.0.1
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ registry.nlark.com/flatted/3.2.2:
+ resolution: {integrity: sha1-ZL/tXLaP48p4s+shStl7Y77c5WE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/flatted/download/flatted-3.2.2.tgz}
+ name: flatted
+ version: 3.2.2
+ dev: true
+
+ registry.nlark.com/follow-redirects/1.14.2:
+ resolution: {integrity: sha1-zsuCUEfAD15msUL5D+1PUV3seJs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/follow-redirects/download/follow-redirects-1.14.2.tgz}
+ name: follow-redirects
+ version: 1.14.2
+ engines: {node: '>=4.0'}
+
+ registry.nlark.com/fs-extra/10.0.0:
+ resolution: {integrity: sha1-n/YbZV3eU/s0qC34S7IUzoAuF8E=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/fs-extra/download/fs-extra-10.0.0.tgz}
+ name: fs-extra
+ version: 10.0.0
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: registry.nlark.com/graceful-fs/4.2.8
+ jsonfile: 6.1.0
+ universalify: 2.0.0
+ dev: true
+
+ registry.nlark.com/get-own-enumerable-property-symbols/3.0.2:
+ resolution: {integrity: sha1-tf3nfyLL4185C04ImSLFC85u9mQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/get-own-enumerable-property-symbols/download/get-own-enumerable-property-symbols-3.0.2.tgz}
+ name: get-own-enumerable-property-symbols
+ version: 3.0.2
+ dev: true
+
+ registry.nlark.com/get-pixels/3.3.3:
+ resolution: {integrity: sha1-ceLf1L77gQtUeKYcY1SACXbOAcc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/get-pixels/download/get-pixels-3.3.3.tgz}
+ name: get-pixels
+ version: 3.3.3
+ dependencies:
+ data-uri-to-buffer: registry.nlark.com/data-uri-to-buffer/0.0.3
+ jpeg-js: registry.nlark.com/jpeg-js/0.4.3
+ mime-types: registry.nlark.com/mime-types/2.1.32
+ ndarray: registry.nlark.com/ndarray/1.0.19
+ ndarray-pack: registry.nlark.com/ndarray-pack/1.2.1
+ node-bitmap: registry.nlark.com/node-bitmap/0.0.1
+ omggif: registry.nlark.com/omggif/1.0.10
+ parse-data-uri: registry.nlark.com/parse-data-uri/0.2.0
+ pngjs: registry.nlark.com/pngjs/3.4.0
+ request: 2.88.2
+ through: 2.3.8
+ dev: true
+
+ registry.nlark.com/gif-encoder/0.4.3:
+ resolution: {integrity: sha1-iitP6MqJWkjjoLbLs0CgpqNXGJk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/gif-encoder/download/gif-encoder-0.4.3.tgz}
+ name: gif-encoder
+ version: 0.4.3
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ readable-stream: 1.1.14
+ dev: true
+
+ registry.nlark.com/glob-parent/5.1.2:
+ resolution: {integrity: sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/glob-parent/download/glob-parent-5.1.2.tgz}
+ name: glob-parent
+ version: 5.1.2
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.1
+ dev: true
+
+ registry.nlark.com/glob/7.1.7:
+ resolution: {integrity: sha1-Oxk+kjPwHULQs/eClLvutBj5SpA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/glob/download/glob-7.1.7.tgz}
+ name: glob
+ version: 7.1.7
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.0.4
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ registry.nlark.com/globals/11.12.0:
+ resolution: {integrity: sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/globals/download/globals-11.12.0.tgz}
+ name: globals
+ version: 11.12.0
+ engines: {node: '>=4'}
+ dev: true
+
+ registry.nlark.com/globals/13.11.0:
+ resolution: {integrity: sha1-QO9njaEX/nvS4o8fqySVG9AlW+c=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/globals/download/globals-13.11.0.tgz}
+ name: globals
+ version: 13.11.0
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: registry.nlark.com/type-fest/0.20.2
+ dev: true
+
+ registry.nlark.com/globby/10.0.2:
+ resolution: {integrity: sha1-J3WT50WsqkZGw6tBEonsR6A5JUM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/globby/download/globby-10.0.2.tgz?cache=0&sync_timestamp=1629804366639&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobby%2Fdownload%2Fglobby-10.0.2.tgz}
+ name: globby
+ version: 10.0.2
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/glob': registry.nlark.com/@types/glob/7.1.4
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: registry.nlark.com/fast-glob/3.2.7
+ glob: registry.nlark.com/glob/7.1.7
+ ignore: 5.1.8
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
+ registry.nlark.com/globby/11.0.4:
+ resolution: {integrity: sha1-LLr/d8Lypi5x6bKBOme5ejowAaU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/globby/download/globby-11.0.4.tgz?cache=0&sync_timestamp=1629804366639&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fglobby%2Fdownload%2Fglobby-11.0.4.tgz}
+ name: globby
+ version: 11.0.4
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: registry.nlark.com/fast-glob/3.2.7
+ ignore: 5.1.8
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
+ registry.nlark.com/globule/1.3.3:
+ resolution: {integrity: sha1-gRkZ7qwatzROkF8uO+gKE0R5c8I=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/globule/download/globule-1.3.3.tgz}
+ name: globule
+ version: 1.3.3
+ engines: {node: '>= 0.10'}
+ dependencies:
+ glob: registry.nlark.com/glob/7.1.7
+ lodash: 4.17.21
+ minimatch: 3.0.4
+ dev: true
+
+ registry.nlark.com/graceful-fs/4.2.8:
+ resolution: {integrity: sha1-5BK40z9eAGWTy9PO5t+fLOu+gCo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/graceful-fs/download/graceful-fs-4.2.8.tgz}
+ name: graceful-fs
+ version: 4.2.8
+ dev: true
+
+ registry.nlark.com/handlebars-layouts/3.1.4:
+ resolution: {integrity: sha1-JrO+uTG0uHffv35v6vQFjuYiiwI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/handlebars-layouts/download/handlebars-layouts-3.1.4.tgz}
+ name: handlebars-layouts
+ version: 3.1.4
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ registry.nlark.com/has-flag/1.0.0:
+ resolution: {integrity: sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/has-flag/download/has-flag-1.0.0.tgz}
+ name: has-flag
+ version: 1.0.0
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ registry.nlark.com/has-flag/3.0.0:
+ resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/has-flag/download/has-flag-3.0.0.tgz}
+ name: has-flag
+ version: 3.0.0
+ engines: {node: '>=4'}
+ dev: true
+
+ registry.nlark.com/has-flag/4.0.0:
+ resolution: {integrity: sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/has-flag/download/has-flag-4.0.0.tgz}
+ name: has-flag
+ version: 4.0.0
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/hotkeys-js/3.8.7:
+ resolution: {integrity: sha1-wWyrl4tT1yQvhgyjky6Xa5I5mYE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/hotkeys-js/download/hotkeys-js-3.8.7.tgz}
+ name: hotkeys-js
+ version: 3.8.7
+ dev: false
+
+ registry.nlark.com/htmlparser2/3.10.1:
+ resolution: {integrity: sha1-vWedw/WYl7ajS7EHSchVu1OpOS8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/htmlparser2/download/htmlparser2-3.10.1.tgz}
+ name: htmlparser2
+ version: 3.10.1
+ dependencies:
+ domelementtype: 1.3.1
+ domhandler: 2.4.2
+ domutils: registry.nlark.com/domutils/1.7.0
+ entities: registry.nlark.com/entities/1.1.2
+ inherits: 2.0.4
+ readable-stream: 3.6.0
+ dev: true
+
+ registry.nlark.com/http-server/0.12.3:
+ resolution: {integrity: sha1-ugRx0OzEJYhmFss1xPryeRQKDTc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/http-server/download/http-server-0.12.3.tgz?cache=0&sync_timestamp=1629469581919&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhttp-server%2Fdownload%2Fhttp-server-0.12.3.tgz}
+ name: http-server
+ version: 0.12.3
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ basic-auth: 1.1.0
+ colors: 1.4.0
+ corser: 2.0.1
+ ecstatic: registry.nlark.com/ecstatic/3.3.2
+ http-proxy: 1.18.1
+ minimist: 1.2.5
+ opener: 1.5.2
+ portfinder: 1.0.28
+ secure-compare: registry.nlark.com/secure-compare/3.0.1
+ union: registry.nlark.com/union/0.5.0
+ dev: true
+
+ registry.nlark.com/human-signals/2.1.0:
+ resolution: {integrity: sha1-3JH8ukLk0G5Kuu0zs+ejwC9RTqA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/human-signals/download/human-signals-2.1.0.tgz}
+ name: human-signals
+ version: 2.1.0
+ engines: {node: '>=10.17.0'}
+ dev: true
+
+ registry.nlark.com/husky/7.0.2:
+ resolution: {integrity: sha1-IZANoPMBmazKQ6RsBDxK2Erojf8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/husky/download/husky-7.0.2.tgz?cache=0&sync_timestamp=1629876497873&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fhusky%2Fdownload%2Fhusky-7.0.2.tgz}
+ name: husky
+ version: 7.0.2
+ engines: {node: '>=12'}
+ hasBin: true
+ dev: true
+
+ registry.nlark.com/iconv-lite/0.4.24:
+ resolution: {integrity: sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/iconv-lite/download/iconv-lite-0.4.24.tgz}
+ name: iconv-lite
+ version: 0.4.24
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ registry.nlark.com/inquirer/7.3.3:
+ resolution: {integrity: sha1-BNF2sq8Er8FXqD/XwQDpjuCq0AM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/inquirer/download/inquirer-7.3.3.tgz}
+ name: inquirer
+ version: 7.3.3
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: registry.nlark.com/chalk/4.1.2
+ cli-cursor: registry.nlark.com/cli-cursor/3.1.0
+ cli-width: 3.0.0
+ external-editor: 3.1.0
+ figures: registry.nlark.com/figures/3.2.0
+ lodash: 4.17.21
+ mute-stream: 0.0.8
+ run-async: 2.4.1
+ rxjs: registry.nlark.com/rxjs/6.6.7
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ through: 2.3.8
+ dev: true
+
+ registry.nlark.com/iota-array/1.0.0:
+ resolution: {integrity: sha1-ge9X/l0FgUzVjCSDYyqZwwoOgIc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/iota-array/download/iota-array-1.0.0.tgz}
+ name: iota-array
+ version: 1.0.0
+ dev: true
+
+ registry.nlark.com/is-core-module/2.6.0:
+ resolution: {integrity: sha1-11U7JSb+Wbkro+QMjfdX7Ipwnhk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-core-module/download/is-core-module-2.6.0.tgz}
+ name: is-core-module
+ version: 2.6.0
+ dependencies:
+ has: 1.0.3
+ dev: true
+
+ registry.nlark.com/is-lower-case/1.1.3:
+ resolution: {integrity: sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-lower-case/download/is-lower-case-1.1.3.tgz}
+ name: is-lower-case
+ version: 1.1.3
+ dependencies:
+ lower-case: 1.1.4
+ dev: true
+
+ registry.nlark.com/is-path-cwd/2.2.0:
+ resolution: {integrity: sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-path-cwd/download/is-path-cwd-2.2.0.tgz?cache=0&sync_timestamp=1628686699494&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fis-path-cwd%2Fdownload%2Fis-path-cwd-2.2.0.tgz}
+ name: is-path-cwd
+ version: 2.2.0
+ engines: {node: '>=6'}
+ dev: true
+
+ registry.nlark.com/is-path-inside/3.0.3:
+ resolution: {integrity: sha1-0jE2LlOgf/Kw4Op/7QSRYf/RYoM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-path-inside/download/is-path-inside-3.0.3.tgz}
+ name: is-path-inside
+ version: 3.0.3
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/is-relative/1.0.0:
+ resolution: {integrity: sha1-obtpNc6MXboei5dUubLcwCDiJg0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-relative/download/is-relative-1.0.0.tgz}
+ name: is-relative
+ version: 1.0.0
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-unc-path: 1.0.0
+ dev: true
+
+ registry.nlark.com/is-stream/2.0.1:
+ resolution: {integrity: sha1-+sHj1TuXrVqdCunO8jifWBClwHc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-stream/download/is-stream-2.0.1.tgz}
+ name: is-stream
+ version: 2.0.1
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/is-unicode-supported/0.1.0:
+ resolution: {integrity: sha1-PybHaoCVk7Ur+i7LVxDtJ3m1Iqc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/is-unicode-supported/download/is-unicode-supported-0.1.0.tgz}
+ name: is-unicode-supported
+ version: 0.1.0
+ engines: {node: '>=10'}
+ dev: true
+
+ registry.nlark.com/isarray/0.0.1:
+ resolution: {integrity: sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/isarray/download/isarray-0.0.1.tgz}
+ name: isarray
+ version: 0.0.1
+ dev: true
+
+ registry.nlark.com/isarray/1.0.0:
+ resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/isarray/download/isarray-1.0.0.tgz}
+ name: isarray
+ version: 1.0.0
+ dev: true
+
+ registry.nlark.com/isbinaryfile/4.0.8:
+ resolution: {integrity: sha1-XTS5SGW9SUZjPsx4oCb8dsWxH88=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/isbinaryfile/download/isbinaryfile-4.0.8.tgz}
+ name: isbinaryfile
+ version: 4.0.8
+ engines: {node: '>= 8.0.0'}
+ dev: true
+
+ registry.nlark.com/jpeg-js/0.4.3:
+ resolution: {integrity: sha1-YVjgnxmDrXc4E3BL6AaAVQ7/l3s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/jpeg-js/download/jpeg-js-0.4.3.tgz}
+ name: jpeg-js
+ version: 0.4.3
+ dev: true
+
+ registry.nlark.com/js-base64/2.6.4:
+ resolution: {integrity: sha1-9OaGxd4eofhn28rT1G2WlCjfmMQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/js-base64/download/js-base64-2.6.4.tgz}
+ name: js-base64
+ version: 2.6.4
+ dev: true
+
+ registry.nlark.com/js-cookie/2.2.1:
+ resolution: {integrity: sha1-aeEG3F1YBolFYpAqpbrsN0Tpsrg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/js-cookie/download/js-cookie-2.2.1.tgz}
+ name: js-cookie
+ version: 2.2.1
+ dev: false
+
+ registry.nlark.com/js-tokens/4.0.0:
+ resolution: {integrity: sha1-GSA/tZmR35jjoocFDUZHzerzJJk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz}
+ name: js-tokens
+ version: 4.0.0
+ dev: true
+
+ registry.nlark.com/json-content-demux/0.1.4:
+ resolution: {integrity: sha1-bVc/u1orIkriJXNuKH8y6pGkJz0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/json-content-demux/download/json-content-demux-0.1.4.tgz}
+ name: json-content-demux
+ version: 0.1.4
+ engines: {node: '>= 0.6.0'}
+ dev: true
+
+ registry.nlark.com/json-stable-stringify-without-jsonify/1.0.1:
+ resolution: {integrity: sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz?cache=0&sync_timestamp=1620563338517&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjson-stable-stringify-without-jsonify%2Fdownload%2Fjson-stable-stringify-without-jsonify-1.0.1.tgz}
+ name: json-stable-stringify-without-jsonify
+ version: 1.0.1
+ dev: true
+
+ registry.nlark.com/json5/1.0.1:
+ resolution: {integrity: sha1-d5+wAYYE+oVOrL9iUhgNg1Q+Pb4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/json5/download/json5-1.0.1.tgz}
+ name: json5
+ version: 1.0.1
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ registry.nlark.com/json5/2.2.0:
+ resolution: {integrity: sha1-Lf7+cgxrpSXZ69kJlQ8FFTFsiaM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/json5/download/json5-2.2.0.tgz}
+ name: json5
+ version: 2.2.0
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.5
+ dev: true
+
+ registry.nlark.com/known-css-properties/0.21.0:
+ resolution: {integrity: sha1-FfvQu7g0R/POCdivJH7UfGjt6A0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/known-css-properties/download/known-css-properties-0.21.0.tgz}
+ name: known-css-properties
+ version: 0.21.0
+ dev: true
+
+ registry.nlark.com/layout/2.2.0:
+ resolution: {integrity: sha1-MeRL/BjdEBmz/7II5AKku/4uavQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/layout/download/layout-2.2.0.tgz}
+ name: layout
+ version: 2.2.0
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ bin-pack: registry.nlark.com/bin-pack/1.0.2
+ dev: true
+
+ registry.nlark.com/liftoff/2.5.0:
+ resolution: {integrity: sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/liftoff/download/liftoff-2.5.0.tgz}
+ name: liftoff
+ version: 2.5.0
+ engines: {node: '>= 0.8'}
+ dependencies:
+ extend: registry.nlark.com/extend/3.0.2
+ findup-sync: 2.0.0
+ fined: 1.2.0
+ flagged-respawn: registry.nlark.com/flagged-respawn/1.0.1
+ is-plain-object: 2.0.4
+ object.map: 1.0.1
+ rechoir: registry.nlark.com/rechoir/0.6.2
+ resolve: 1.20.0
+ dev: true
+
+ registry.nlark.com/lint-staged/11.1.2:
+ resolution: {integrity: sha1-TdeHgq5D7m6/KWnK2a9npGszzZA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/lint-staged/download/lint-staged-11.1.2.tgz?cache=0&sync_timestamp=1628226980816&other_urls=https%3A%2F%2Fregistry.nlark.com%2Flint-staged%2Fdownload%2Flint-staged-11.1.2.tgz}
+ name: lint-staged
+ version: 11.1.2
+ hasBin: true
+ dependencies:
+ chalk: registry.nlark.com/chalk/4.1.2
+ cli-truncate: registry.nlark.com/cli-truncate/2.1.0
+ commander: registry.nlark.com/commander/7.2.0
+ cosmiconfig: registry.nlark.com/cosmiconfig/7.0.1
+ debug: registry.nlark.com/debug/4.3.2
+ enquirer: 2.3.6
+ execa: registry.nlark.com/execa/5.1.1
+ listr2: registry.nlark.com/listr2/3.11.0_enquirer@2.3.6
+ log-symbols: 4.1.0
+ micromatch: 4.0.4
+ normalize-path: 3.0.0
+ please-upgrade-node: 3.2.0
+ string-argv: 0.3.1
+ stringify-object: registry.nlark.com/stringify-object/3.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/listr2/3.11.0_enquirer@2.3.6:
+ resolution: {integrity: sha1-l3GwJAeHWqeOc9bg/2VBu+wKruk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/listr2/download/listr2-3.11.0.tgz}
+ id: registry.nlark.com/listr2/3.11.0
+ name: listr2
+ version: 3.11.0
+ engines: {node: '>=10.0.0'}
+ peerDependencies:
+ enquirer: '>= 2.3.0 < 3'
+ dependencies:
+ cli-truncate: registry.nlark.com/cli-truncate/2.1.0
+ colorette: registry.nlark.com/colorette/1.3.0
+ enquirer: 2.3.6
+ log-update: registry.nlark.com/log-update/4.0.0
+ p-map: registry.nlark.com/p-map/4.0.0
+ rxjs: registry.nlark.com/rxjs/6.6.7
+ through: 2.3.8
+ wrap-ansi: 7.0.0
+ dev: true
+
+ registry.nlark.com/locate-path/5.0.0:
+ resolution: {integrity: sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/locate-path/download/locate-path-5.0.0.tgz}
+ name: locate-path
+ version: 5.0.0
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: registry.nlark.com/p-locate/4.1.0
+ dev: true
+
+ registry.nlark.com/log-update/4.0.0:
+ resolution: {integrity: sha1-WJ7NNSRx8qHAxXAodUOmTf0g4KE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/log-update/download/log-update-4.0.0.tgz}
+ name: log-update
+ version: 4.0.0
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: registry.nlark.com/cli-cursor/3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+ dev: true
+
+ registry.nlark.com/magic-string/0.25.7:
+ resolution: {integrity: sha1-P0l9b9NMZpxnmNy4IfLvMfVEUFE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/magic-string/download/magic-string-0.25.7.tgz}
+ name: magic-string
+ version: 0.25.7
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
+ registry.nlark.com/mdast-util-from-markdown/0.8.5:
+ resolution: {integrity: sha1-0e8spCvDd+ywRjqYeRDa6JvZoow=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mdast-util-from-markdown/download/mdast-util-from-markdown-0.8.5.tgz}
+ name: mdast-util-from-markdown
+ version: 0.8.5
+ dependencies:
+ '@types/mdast': registry.nlark.com/@types/mdast/3.0.10
+ mdast-util-to-string: registry.nlark.com/mdast-util-to-string/2.0.0
+ micromark: registry.nlark.com/micromark/2.11.4
+ parse-entities: 2.0.0
+ unist-util-stringify-position: 2.0.3
+ dev: true
+
+ registry.nlark.com/mdast-util-to-markdown/0.6.5:
+ resolution: {integrity: sha1-sz9nyoINaebMUnqT1AOSSbUEvr4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mdast-util-to-markdown/download/mdast-util-to-markdown-0.6.5.tgz}
+ name: mdast-util-to-markdown
+ version: 0.6.5
+ dependencies:
+ '@types/unist': registry.nlark.com/@types/unist/2.0.6
+ longest-streak: 2.0.4
+ mdast-util-to-string: registry.nlark.com/mdast-util-to-string/2.0.0
+ parse-entities: 2.0.0
+ repeat-string: 1.6.1
+ zwitch: 1.0.5
+ dev: true
+
+ registry.nlark.com/mdast-util-to-string/2.0.0:
+ resolution: {integrity: sha1-uM/mpxPhCRy1tyj8SIhaR2f4uXs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mdast-util-to-string/download/mdast-util-to-string-2.0.0.tgz}
+ name: mdast-util-to-string
+ version: 2.0.0
+ dev: true
+
+ registry.nlark.com/mdn-data/2.0.14:
+ resolution: {integrity: sha1-cRP8QoGRfWPOKbQ0RvcB5owlulA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mdn-data/download/mdn-data-2.0.14.tgz}
+ name: mdn-data
+ version: 2.0.14
+ dev: true
+
+ registry.nlark.com/meow/9.0.0:
+ resolution: {integrity: sha1-zZUQvFysne59A8c+4fmtlZ9Oo2Q=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/meow/download/meow-9.0.0.tgz?cache=0&sync_timestamp=1627561001606&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmeow%2Fdownload%2Fmeow-9.0.0.tgz}
+ name: meow
+ version: 9.0.0
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/minimist': registry.nlark.com/@types/minimist/1.2.2
+ camelcase-keys: registry.nlark.com/camelcase-keys/6.2.2
+ decamelize: 1.2.0
+ decamelize-keys: 1.1.0
+ hard-rejection: 2.1.0
+ minimist-options: 4.1.0
+ normalize-package-data: registry.nlark.com/normalize-package-data/3.0.3
+ read-pkg-up: 7.0.1
+ redent: registry.nlark.com/redent/3.0.0
+ trim-newlines: registry.nlark.com/trim-newlines/3.0.1
+ type-fest: registry.nlark.com/type-fest/0.18.1
+ yargs-parser: registry.nlark.com/yargs-parser/20.2.9
+ dev: true
+
+ registry.nlark.com/micromark/2.11.4:
+ resolution: {integrity: sha1-0TQ2E47qgmOD6CJEnJpcUO5EZlo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/micromark/download/micromark-2.11.4.tgz}
+ name: micromark
+ version: 2.11.4
+ dependencies:
+ debug: registry.nlark.com/debug/4.3.2
+ parse-entities: 2.0.0
+ dev: true
+
+ registry.nlark.com/mime-db/1.49.0:
+ resolution: {integrity: sha1-89/eYMmenPO8lwHWh3ePU3ABy+0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mime-db/download/mime-db-1.49.0.tgz}
+ name: mime-db
+ version: 1.49.0
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ registry.nlark.com/mime-types/2.1.32:
+ resolution: {integrity: sha1-HQDonn3n/gIAjbYQAdngKFJnD9U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mime-types/download/mime-types-2.1.32.tgz?cache=0&sync_timestamp=1627407854850&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fmime-types%2Fdownload%2Fmime-types-2.1.32.tgz}
+ name: mime-types
+ version: 2.1.32
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: registry.nlark.com/mime-db/1.49.0
+ dev: true
+
+ registry.nlark.com/mitt/2.1.0:
+ resolution: {integrity: sha1-90BXfCMXbGIFsSGylzUU6t4bIjA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mitt/download/mitt-2.1.0.tgz}
+ name: mitt
+ version: 2.1.0
+ dev: false
+
+ registry.nlark.com/mitt/3.0.0:
+ resolution: {integrity: sha1-ae+b1cgP9vV0c+jYkybQHEFL4L0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/mitt/download/mitt-3.0.0.tgz}
+ name: mitt
+ version: 3.0.0
+ dev: false
+
+ registry.nlark.com/ms/2.0.0:
+ resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ms/download/ms-2.0.0.tgz}
+ name: ms
+ version: 2.0.0
+ dev: true
+
+ registry.nlark.com/ms/2.1.2:
+ resolution: {integrity: sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ms/download/ms-2.1.2.tgz}
+ name: ms
+ version: 2.1.2
+ dev: true
+
+ registry.nlark.com/ms/2.1.3:
+ resolution: {integrity: sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ms/download/ms-2.1.3.tgz}
+ name: ms
+ version: 2.1.3
+ dev: true
+
+ registry.nlark.com/nanoid/3.1.25:
+ resolution: {integrity: sha1-CcoydHwOVD8OGBS303k0d/nI4VI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/nanoid/download/nanoid-3.1.25.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnanoid%2Fdownload%2Fnanoid-3.1.25.tgz}
+ name: nanoid
+ version: 3.1.25
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
+ registry.nlark.com/ndarray-ops/1.2.2:
+ resolution: {integrity: sha1-WeiNLDKn7ryxvGkPrhQVeVV6YU4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ndarray-ops/download/ndarray-ops-1.2.2.tgz}
+ name: ndarray-ops
+ version: 1.2.2
+ dependencies:
+ cwise-compiler: registry.nlark.com/cwise-compiler/1.1.3
+ dev: true
+
+ registry.nlark.com/ndarray-pack/1.2.1:
+ resolution: {integrity: sha1-jK6+qqJNXs9w/4YCBjeXfajuWFo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ndarray-pack/download/ndarray-pack-1.2.1.tgz}
+ name: ndarray-pack
+ version: 1.2.1
+ dependencies:
+ cwise-compiler: registry.nlark.com/cwise-compiler/1.1.3
+ ndarray: registry.nlark.com/ndarray/1.0.19
+ dev: true
+
+ registry.nlark.com/ndarray/1.0.19:
+ resolution: {integrity: sha1-Z4W19d+li4PjGuWyoFjP0as/aU4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ndarray/download/ndarray-1.0.19.tgz}
+ name: ndarray
+ version: 1.0.19
+ dependencies:
+ iota-array: registry.nlark.com/iota-array/1.0.0
+ is-buffer: 1.1.6
+ dev: true
+
+ registry.nlark.com/node-bitmap/0.0.1:
+ resolution: {integrity: sha1-GA6scAPgxwdhjvMTaPYvhLKmkJE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/node-bitmap/download/node-bitmap-0.0.1.tgz}
+ name: node-bitmap
+ version: 0.0.1
+ engines: {node: '>=v0.6.5'}
+ dev: true
+
+ registry.nlark.com/node-plop/0.26.2:
+ resolution: {integrity: sha1-wlI1ltq04oNg5hW3aLEbTWDVsbk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/node-plop/download/node-plop-0.26.2.tgz}
+ name: node-plop
+ version: 0.26.2
+ engines: {node: '>=8.9.4'}
+ dependencies:
+ '@babel/runtime-corejs3': registry.nlark.com/@babel/runtime-corejs3/7.15.3
+ '@types/inquirer': registry.nlark.com/@types/inquirer/6.5.0
+ change-case: 3.1.0
+ del: 5.1.0
+ globby: registry.nlark.com/globby/10.0.2
+ handlebars: 4.7.7
+ inquirer: registry.nlark.com/inquirer/7.3.3
+ isbinaryfile: registry.nlark.com/isbinaryfile/4.0.8
+ lodash.get: 4.4.2
+ mkdirp: 0.5.5
+ resolve: 1.20.0
+ dev: true
+
+ registry.nlark.com/node-releases/1.1.75:
+ resolution: {integrity: sha1-bdjIdrmJehuOWgLeJq+nm7VOu/4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/node-releases/download/node-releases-1.1.75.tgz}
+ name: node-releases
+ version: 1.1.75
+ dev: true
+
+ registry.nlark.com/normalize-package-data/2.5.0:
+ resolution: {integrity: sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/normalize-package-data/download/normalize-package-data-2.5.0.tgz?cache=0&sync_timestamp=1629302655389&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-package-data%2Fdownload%2Fnormalize-package-data-2.5.0.tgz}
+ name: normalize-package-data
+ version: 2.5.0
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.20.0
+ semver: 5.7.1
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ registry.nlark.com/normalize-package-data/3.0.3:
+ resolution: {integrity: sha1-28w+LaWVCaCYNCKITNFy7v36Ul4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/normalize-package-data/download/normalize-package-data-3.0.3.tgz?cache=0&sync_timestamp=1629302655389&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fnormalize-package-data%2Fdownload%2Fnormalize-package-data-3.0.3.tgz}
+ name: normalize-package-data
+ version: 3.0.3
+ engines: {node: '>=10'}
+ dependencies:
+ hosted-git-info: 4.0.2
+ is-core-module: registry.nlark.com/is-core-module/2.6.0
+ semver: 7.3.5
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ registry.nlark.com/obj-extend/0.1.0:
+ resolution: {integrity: sha1-u0SKR3X7les0p4H5CLusLfI9u1s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/obj-extend/download/obj-extend-0.1.0.tgz}
+ name: obj-extend
+ version: 0.1.0
+ dev: true
+
+ registry.nlark.com/object-inspect/1.11.0:
+ resolution: {integrity: sha1-nc6xRs7dQUig2eUauI00z1CZIrE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/object-inspect/download/object-inspect-1.11.0.tgz}
+ name: object-inspect
+ version: 1.11.0
+ dev: true
+
+ registry.nlark.com/object.defaults/1.1.0:
+ resolution: {integrity: sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/object.defaults/download/object.defaults-1.1.0.tgz}
+ name: object.defaults
+ version: 1.1.0
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-each: registry.nlark.com/array-each/1.0.1
+ array-slice: 1.1.0
+ for-own: 1.0.0
+ isobject: 3.0.1
+ dev: true
+
+ registry.nlark.com/omggif/1.0.10:
+ resolution: {integrity: sha1-3ar5DUpC9TLp58s6lezdR/F8exk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/omggif/download/omggif-1.0.10.tgz}
+ name: omggif
+ version: 1.0.10
+ dev: true
+
+ registry.nlark.com/ora/3.4.0:
+ resolution: {integrity: sha1-vwdSSRBZo+8+1MhQl1Md6f280xg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/ora/download/ora-3.4.0.tgz}
+ name: ora
+ version: 3.4.0
+ engines: {node: '>=6'}
+ dependencies:
+ chalk: registry.nlark.com/chalk/2.4.2
+ cli-cursor: registry.nlark.com/cli-cursor/2.1.0
+ cli-spinners: 2.6.0
+ log-symbols: 2.2.0
+ strip-ansi: 5.2.0
+ wcwidth: 1.0.1
+ dev: true
+
+ registry.nlark.com/p-limit/2.3.0:
+ resolution: {integrity: sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/p-limit/download/p-limit-2.3.0.tgz}
+ name: p-limit
+ version: 2.3.0
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+ dev: true
+
+ registry.nlark.com/p-locate/4.1.0:
+ resolution: {integrity: sha1-o0KLtwiLOmApL2aRkni3wpetTwc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/p-locate/download/p-locate-4.1.0.tgz}
+ name: p-locate
+ version: 4.1.0
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: registry.nlark.com/p-limit/2.3.0
+ dev: true
+
+ registry.nlark.com/p-map/3.0.0:
+ resolution: {integrity: sha1-1wTZr4orpoTiYA2aIVmD1BQal50=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/p-map/download/p-map-3.0.0.tgz?cache=0&sync_timestamp=1627084255349&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fp-map%2Fdownload%2Fp-map-3.0.0.tgz}
+ name: p-map
+ version: 3.0.0
+ engines: {node: '>=8'}
+ dependencies:
+ aggregate-error: 3.1.0
+ dev: true
+
+ registry.nlark.com/p-map/4.0.0:
+ resolution: {integrity: sha1-uy+Vpe2i7BaOySdOBqdHw+KQTSs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/p-map/download/p-map-4.0.0.tgz?cache=0&sync_timestamp=1627084255349&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fp-map%2Fdownload%2Fp-map-4.0.0.tgz}
+ name: p-map
+ version: 4.0.0
+ engines: {node: '>=10'}
+ dependencies:
+ aggregate-error: 3.1.0
+ dev: true
+
+ registry.nlark.com/parse-data-uri/0.2.0:
+ resolution: {integrity: sha1-vwTYUd1ch7CrI45dAazklLYEtMk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/parse-data-uri/download/parse-data-uri-0.2.0.tgz}
+ name: parse-data-uri
+ version: 0.2.0
+ dependencies:
+ data-uri-to-buffer: registry.nlark.com/data-uri-to-buffer/0.0.3
+ dev: true
+
+ registry.nlark.com/parseurl/1.3.3:
+ resolution: {integrity: sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/parseurl/download/parseurl-1.3.3.tgz}
+ name: parseurl
+ version: 1.3.3
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ registry.nlark.com/path-case/2.1.1:
+ resolution: {integrity: sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/path-case/download/path-case-2.1.1.tgz}
+ name: path-case
+ version: 2.1.1
+ dependencies:
+ no-case: 2.3.2
+ dev: true
+
+ registry.nlark.com/path-exists/4.0.0:
+ resolution: {integrity: sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/path-exists/download/path-exists-4.0.0.tgz}
+ name: path-exists
+ version: 4.0.0
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/path-parse/1.0.7:
+ resolution: {integrity: sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/path-parse/download/path-parse-1.0.7.tgz}
+ name: path-parse
+ version: 1.0.7
+ dev: true
+
+ registry.nlark.com/picomatch/2.3.0:
+ resolution: {integrity: sha1-8fBh3o9qS/AiiS4tEoI0+5gwKXI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/picomatch/download/picomatch-2.3.0.tgz}
+ name: picomatch
+ version: 2.3.0
+ engines: {node: '>=8.6'}
+ dev: true
+
+ registry.nlark.com/pixelsmith/2.4.1:
+ resolution: {integrity: sha1-TM/s9utUR9odOP4m8tcNJGpAF54=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/pixelsmith/download/pixelsmith-2.4.1.tgz}
+ name: pixelsmith
+ version: 2.4.1
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ async: registry.nlark.com/async/0.9.2
+ concat-stream: 1.5.2
+ get-pixels: registry.nlark.com/get-pixels/3.3.3
+ mime-types: registry.nlark.com/mime-types/2.1.32
+ ndarray: registry.nlark.com/ndarray/1.0.19
+ obj-extend: registry.nlark.com/obj-extend/0.1.0
+ save-pixels: registry.nlark.com/save-pixels/2.3.6
+ vinyl-file: registry.nlark.com/vinyl-file/1.3.0
+ dev: true
+
+ registry.nlark.com/pngjs-nozlib/1.0.0:
+ resolution: {integrity: sha1-nmTWAs/pzOTZ1Zl9BodCmnPwt9c=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/pngjs-nozlib/download/pngjs-nozlib-1.0.0.tgz}
+ name: pngjs-nozlib
+ version: 1.0.0
+ engines: {iojs: '>= 1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ registry.nlark.com/pngjs/3.4.0:
+ resolution: {integrity: sha1-mcp9clll+2VYFOr2XzjxK72/VV8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/pngjs/download/pngjs-3.4.0.tgz}
+ name: pngjs
+ version: 3.4.0
+ engines: {node: '>=4.0.0'}
+ dev: true
+
+ registry.nlark.com/postcss-less/3.1.4:
+ resolution: {integrity: sha1-Np9YZCtZKO+Jj/vBpuk8lYMExa0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-less/download/postcss-less-3.1.4.tgz}
+ name: postcss-less
+ version: 3.1.4
+ engines: {node: '>=6.14.4'}
+ dependencies:
+ postcss: registry.nlark.com/postcss/7.0.36
+ dev: true
+
+ registry.nlark.com/postcss-modules-scope/3.0.0_postcss@8.3.6:
+ resolution: {integrity: sha1-nvMVFFbTu/oSDKRImN/Kby+gHwY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-modules-scope/download/postcss-modules-scope-3.0.0.tgz}
+ id: registry.nlark.com/postcss-modules-scope/3.0.0
+ name: postcss-modules-scope
+ version: 3.0.0
+ engines: {node: ^10 || ^12 || >= 14}
+ peerDependencies:
+ postcss: ^8.1.0
+ dependencies:
+ postcss: registry.nlark.com/postcss/8.3.6
+ postcss-selector-parser: registry.nlark.com/postcss-selector-parser/6.0.6
+ dev: true
+
+ registry.nlark.com/postcss-modules/4.2.2_postcss@8.3.6:
+ resolution: {integrity: sha1-Xnd3xaiWTqF2kZ2QsuVO+JEyHOU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-modules/download/postcss-modules-4.2.2.tgz?cache=0&sync_timestamp=1627039302372&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fpostcss-modules%2Fdownload%2Fpostcss-modules-4.2.2.tgz}
+ id: registry.nlark.com/postcss-modules/4.2.2
+ name: postcss-modules
+ version: 4.2.2
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ generic-names: 2.0.1
+ icss-replace-symbols: 1.1.0
+ lodash.camelcase: 4.3.0
+ postcss: registry.nlark.com/postcss/8.3.6
+ postcss-modules-extract-imports: 3.0.0_postcss@8.3.6
+ postcss-modules-local-by-default: 4.0.0_postcss@8.3.6
+ postcss-modules-scope: registry.nlark.com/postcss-modules-scope/3.0.0_postcss@8.3.6
+ postcss-modules-values: 4.0.0_postcss@8.3.6
+ string-hash: 1.1.3
+ dev: true
+
+ registry.nlark.com/postcss-prefix-selector/1.12.0:
+ resolution: {integrity: sha1-HmK7be2DDFwdTsc3hVjfrqr16mI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-prefix-selector/download/postcss-prefix-selector-1.12.0.tgz}
+ name: postcss-prefix-selector
+ version: 1.12.0
+ dependencies:
+ postcss: registry.nlark.com/postcss/8.3.6
+ dev: true
+
+ registry.nlark.com/postcss-safe-parser/4.0.2:
+ resolution: {integrity: sha1-ptTkjw832ffBGypYG/APi6SHC5Y=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-safe-parser/download/postcss-safe-parser-4.0.2.tgz}
+ name: postcss-safe-parser
+ version: 4.0.2
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ postcss: registry.nlark.com/postcss/7.0.36
+ dev: true
+
+ registry.nlark.com/postcss-sass/0.4.4:
+ resolution: {integrity: sha1-kfDzRHtFzjcyJ6mLYfjY8HhShaM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-sass/download/postcss-sass-0.4.4.tgz}
+ name: postcss-sass
+ version: 0.4.4
+ dependencies:
+ gonzales-pe: 4.3.0
+ postcss: registry.nlark.com/postcss/7.0.36
+ dev: true
+
+ registry.nlark.com/postcss-scss/2.1.1:
+ resolution: {integrity: sha1-7Dp1+imlXgFrkL8yaQJsU8HSs4M=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-scss/download/postcss-scss-2.1.1.tgz}
+ name: postcss-scss
+ version: 2.1.1
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ postcss: registry.nlark.com/postcss/7.0.36
+ dev: true
+
+ registry.nlark.com/postcss-selector-parser/6.0.6:
+ resolution: {integrity: sha1-LFu6gXSsL2mBq2MaQqsO5UrzMuo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss-selector-parser/download/postcss-selector-parser-6.0.6.tgz}
+ name: postcss-selector-parser
+ version: 6.0.6
+ engines: {node: '>=4'}
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ registry.nlark.com/postcss/5.2.18:
+ resolution: {integrity: sha1-ut+hSX1GJE9jkPWLMZgw2RB4U8U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss/download/postcss-5.2.18.tgz}
+ name: postcss
+ version: 5.2.18
+ engines: {node: '>=0.12'}
+ dependencies:
+ chalk: registry.nlark.com/chalk/1.1.3
+ js-base64: registry.nlark.com/js-base64/2.6.4
+ source-map: 0.5.7
+ supports-color: registry.nlark.com/supports-color/3.2.3
+ dev: true
+
+ registry.nlark.com/postcss/7.0.36:
+ resolution: {integrity: sha1-BW+M/6k5ZiqPWQWVDAfVKFZE38s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss/download/postcss-7.0.36.tgz}
+ name: postcss
+ version: 7.0.36
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ chalk: registry.nlark.com/chalk/2.4.2
+ source-map: 0.6.1
+ supports-color: registry.nlark.com/supports-color/6.1.0
+ dev: true
+
+ registry.nlark.com/postcss/8.3.6:
+ resolution: {integrity: sha1-JzDddql5afN/U7mmCWGXvjEcxOo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/postcss/download/postcss-8.3.6.tgz}
+ name: postcss
+ version: 8.3.6
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ colorette: registry.nlark.com/colorette/1.3.0
+ nanoid: registry.nlark.com/nanoid/3.1.25
+ source-map-js: registry.nlark.com/source-map-js/0.6.2
+ dev: true
+
+ registry.nlark.com/posthtml-parser/0.2.1:
+ resolution: {integrity: sha1-NdUw3jhnQMK6JP8usvrznM3ycd0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/posthtml-parser/download/posthtml-parser-0.2.1.tgz}
+ name: posthtml-parser
+ version: 0.2.1
+ dependencies:
+ htmlparser2: registry.nlark.com/htmlparser2/3.10.1
+ isobject: 2.1.0
+ dev: true
+
+ registry.nlark.com/posthtml-rename-id/1.0.12:
+ resolution: {integrity: sha1-z39us3FGvxr6wx5o8YxswZrmFDM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/posthtml-rename-id/download/posthtml-rename-id-1.0.12.tgz}
+ name: posthtml-rename-id
+ version: 1.0.12
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ registry.nlark.com/posthtml-render/1.4.0:
+ resolution: {integrity: sha1-QBFAcMRYgcrLkzR9rj7/U6+8/xM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/posthtml-render/download/posthtml-render-1.4.0.tgz}
+ name: posthtml-render
+ version: 1.4.0
+ engines: {node: '>=10'}
+ dev: true
+
+ registry.nlark.com/posthtml/0.9.2:
+ resolution: {integrity: sha1-9MBtufZ7Yf0XxOJW5+PZUVv3Jv0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/posthtml/download/posthtml-0.9.2.tgz}
+ name: posthtml
+ version: 0.9.2
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ posthtml-parser: registry.nlark.com/posthtml-parser/0.2.1
+ posthtml-render: registry.nlark.com/posthtml-render/1.4.0
+ dev: true
+
+ registry.nlark.com/query-string/4.3.4:
+ resolution: {integrity: sha1-u7aTucqRXCMlFbIosaArYJBD2+s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/query-string/download/query-string-4.3.4.tgz}
+ name: query-string
+ version: 4.3.4
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ object-assign: 4.1.1
+ strict-uri-encode: 1.1.0
+ dev: true
+
+ registry.nlark.com/quick-lru/4.0.1:
+ resolution: {integrity: sha1-W4h48ROlgheEjGSCAmxz4bpXcn8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/quick-lru/download/quick-lru-4.0.1.tgz}
+ name: quick-lru
+ version: 4.0.1
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/read-pkg/5.2.0:
+ resolution: {integrity: sha1-e/KVQ4yloz5WzTDgU7NO5yUMk8w=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/read-pkg/download/read-pkg-5.2.0.tgz?cache=0&sync_timestamp=1628985520600&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fread-pkg%2Fdownload%2Fread-pkg-5.2.0.tgz}
+ name: read-pkg
+ version: 5.2.0
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': registry.nlark.com/@types/normalize-package-data/2.4.1
+ normalize-package-data: registry.nlark.com/normalize-package-data/2.5.0
+ parse-json: 5.2.0
+ type-fest: registry.nlark.com/type-fest/0.6.0
+ dev: true
+
+ registry.nlark.com/rechoir/0.6.2:
+ resolution: {integrity: sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/rechoir/download/rechoir-0.6.2.tgz}
+ name: rechoir
+ version: 0.6.2
+ engines: {node: '>= 0.10'}
+ dependencies:
+ resolve: 1.20.0
+ dev: true
+
+ registry.nlark.com/redent/3.0.0:
+ resolution: {integrity: sha1-5Ve3mYMWu1PJ8fVvpiY1LGljBZ8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/redent/download/redent-3.0.0.tgz}
+ name: redent
+ version: 3.0.0
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: registry.nlark.com/strip-indent/3.0.0
+ dev: true
+
+ registry.nlark.com/regenerator-runtime/0.13.9:
+ resolution: {integrity: sha1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/regenerator-runtime/download/regenerator-runtime-0.13.9.tgz?cache=0&sync_timestamp=1627000836896&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fregenerator-runtime%2Fdownload%2Fregenerator-runtime-0.13.9.tgz}
+ name: regenerator-runtime
+ version: 0.13.9
+ dev: true
+
+ registry.nlark.com/regexpp/3.2.0:
+ resolution: {integrity: sha1-BCWido2PI7rXDKS5BGH6LxIT4bI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/regexpp/download/regexpp-3.2.0.tgz?cache=0&sync_timestamp=1623676803528&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fregexpp%2Fdownload%2Fregexpp-3.2.0.tgz}
+ name: regexpp
+ version: 3.2.0
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/remark-parse/9.0.0:
+ resolution: {integrity: sha1-TSCimWZYgOT0r12Qt8e4qTWFNkA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/remark-parse/download/remark-parse-9.0.0.tgz}
+ name: remark-parse
+ version: 9.0.0
+ dependencies:
+ mdast-util-from-markdown: registry.nlark.com/mdast-util-from-markdown/0.8.5
+ dev: true
+
+ registry.nlark.com/remark-stringify/9.0.1:
+ resolution: {integrity: sha1-V20G6RBUiwpxkacfJ7M/EhiGKJQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/remark-stringify/download/remark-stringify-9.0.1.tgz}
+ name: remark-stringify
+ version: 9.0.1
+ dependencies:
+ mdast-util-to-markdown: registry.nlark.com/mdast-util-to-markdown/0.6.5
+ dev: true
+
+ registry.nlark.com/remark/13.0.0:
+ resolution: {integrity: sha1-0V2b9xpAL0Aofr42Bntm1Uho5CU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/remark/download/remark-13.0.0.tgz}
+ name: remark
+ version: 13.0.0
+ dependencies:
+ remark-parse: registry.nlark.com/remark-parse/9.0.0
+ remark-stringify: registry.nlark.com/remark-stringify/9.0.1
+ unified: registry.nlark.com/unified/9.2.2
+ dev: true
+
+ registry.nlark.com/restore-cursor/2.0.0:
+ resolution: {integrity: sha1-n37ih/gv0ybU/RYpI9YhKe7g368=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/restore-cursor/download/restore-cursor-2.0.0.tgz}
+ name: restore-cursor
+ version: 2.0.0
+ engines: {node: '>=4'}
+ dependencies:
+ onetime: 2.0.1
+ signal-exit: 3.0.3
+ dev: true
+
+ registry.nlark.com/restore-cursor/3.1.0:
+ resolution: {integrity: sha1-OfZ8VLOnpYzqUjbZXPADQjljH34=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/restore-cursor/download/restore-cursor-3.1.0.tgz}
+ name: restore-cursor
+ version: 3.1.0
+ engines: {node: '>=8'}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.3
+ dev: true
+
+ registry.nlark.com/rollup/2.56.3:
+ resolution: {integrity: sha1-tj7a3ZhRsNYYptDmr4IBlVp3rv8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/rollup/download/rollup-2.56.3.tgz?cache=0&sync_timestamp=1629698767006&other_urls=https%3A%2F%2Fregistry.nlark.com%2Frollup%2Fdownload%2Frollup-2.56.3.tgz}
+ name: rollup
+ version: 2.56.3
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ registry.nlark.com/rxjs/6.6.7:
+ resolution: {integrity: sha1-kKwBisq/SRv2UEQjXVhjxNq4BMk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/rxjs/download/rxjs-6.6.7.tgz}
+ name: rxjs
+ version: 6.6.7
+ engines: {npm: '>=2.0.0'}
+ dependencies:
+ tslib: registry.nlark.com/tslib/1.14.1
+ dev: true
+
+ registry.nlark.com/sass/1.38.1:
+ resolution: {integrity: sha1-VN+xf7FohGtYUDJLgvxi3Gj1G60=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/sass/download/sass-1.38.1.tgz}
+ name: sass
+ version: 1.38.1
+ engines: {node: '>=8.9.0'}
+ hasBin: true
+ dependencies:
+ chokidar: registry.nlark.com/chokidar/3.5.2
+ dev: true
+
+ registry.nlark.com/save-pixels/2.3.6:
+ resolution: {integrity: sha1-2fQKL2s3T5xh0U8bfe8lkdt/t4A=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/save-pixels/download/save-pixels-2.3.6.tgz}
+ name: save-pixels
+ version: 2.3.6
+ dependencies:
+ contentstream: registry.nlark.com/contentstream/1.0.0
+ gif-encoder: registry.nlark.com/gif-encoder/0.4.3
+ jpeg-js: registry.nlark.com/jpeg-js/0.4.3
+ ndarray: registry.nlark.com/ndarray/1.0.19
+ ndarray-ops: registry.nlark.com/ndarray-ops/1.2.2
+ pngjs-nozlib: registry.nlark.com/pngjs-nozlib/1.0.0
+ through: 2.3.8
+ dev: true
+
+ registry.nlark.com/screenfull/5.1.0:
+ resolution: {integrity: sha1-hcE8cPTq1MG4qTXHABDf3NLA5cg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/screenfull/download/screenfull-5.1.0.tgz}
+ name: screenfull
+ version: 5.1.0
+ engines: {node: '>=0.10.0'}
+ dev: false
+
+ registry.nlark.com/secure-compare/3.0.1:
+ resolution: {integrity: sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/secure-compare/download/secure-compare-3.0.1.tgz}
+ name: secure-compare
+ version: 3.0.1
+ dev: true
+
+ registry.nlark.com/set-value/2.0.1:
+ resolution: {integrity: sha1-oY1AUw5vB95CKMfe/kInr4ytAFs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/set-value/download/set-value-2.0.1.tgz}
+ name: set-value
+ version: 2.0.1
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-extendable: 0.1.1
+ is-plain-object: 2.0.4
+ split-string: 3.1.0
+ dev: true
+
+ registry.nlark.com/shebang-regex/3.0.0:
+ resolution: {integrity: sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/shebang-regex/download/shebang-regex-3.0.0.tgz}
+ name: shebang-regex
+ version: 3.0.0
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/snapdragon/0.8.2:
+ resolution: {integrity: sha1-ZJIufFZbDhQgS6GqfWlkJ40lGC0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/snapdragon/download/snapdragon-0.8.2.tgz}
+ name: snapdragon
+ version: 0.8.2
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ base: 0.11.2
+ debug: registry.nlark.com/debug/2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ map-cache: 0.2.2
+ source-map: 0.5.7
+ source-map-resolve: 0.5.3
+ use: 3.1.1
+ dev: true
+
+ registry.nlark.com/source-map-js/0.6.2:
+ resolution: {integrity: sha1-C7XeYxtBz72mz7qL0FqA79/SOF4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/source-map-js/download/source-map-js-0.6.2.tgz}
+ name: source-map-js
+ version: 0.6.2
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ registry.nlark.com/spdx-license-ids/3.0.10:
+ resolution: {integrity: sha1-DZvszN5wA9bGWNSH3UijLwvzAUs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/spdx-license-ids/download/spdx-license-ids-3.0.10.tgz?cache=0&sync_timestamp=1628483655780&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fspdx-license-ids%2Fdownload%2Fspdx-license-ids-3.0.10.tgz}
+ name: spdx-license-ids
+ version: 3.0.10
+ dev: true
+
+ registry.nlark.com/specificity/0.4.1:
+ resolution: {integrity: sha1-qrXmRQEtsIuhguFRFlc40AiHsBk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/specificity/download/specificity-0.4.1.tgz}
+ name: specificity
+ version: 0.4.1
+ hasBin: true
+ dev: true
+
+ registry.nlark.com/spritesheet-templates/10.5.2:
+ resolution: {integrity: sha1-t1JtHNzt48LL/MspY76b7GBm7Ek=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/spritesheet-templates/download/spritesheet-templates-10.5.2.tgz}
+ name: spritesheet-templates
+ version: 10.5.2
+ engines: {node: '>= 8.0.0'}
+ dependencies:
+ handlebars: 4.7.7
+ handlebars-layouts: registry.nlark.com/handlebars-layouts/3.1.4
+ json-content-demux: registry.nlark.com/json-content-demux/0.1.4
+ underscore: 1.13.1
+ underscore.string: registry.nlark.com/underscore.string/3.3.5
+ dev: true
+
+ registry.nlark.com/spritesmith/3.4.0:
+ resolution: {integrity: sha1-XPoAQnjJByq0kAoM2AAUHHzyluI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/spritesmith/download/spritesmith-3.4.0.tgz}
+ name: spritesmith
+ version: 3.4.0
+ engines: {node: '>= 4.0.0'}
+ dependencies:
+ concat-stream: 1.5.2
+ layout: registry.nlark.com/layout/2.2.0
+ pixelsmith: registry.nlark.com/pixelsmith/2.4.1
+ semver: 5.0.3
+ through2: 2.0.5
+ dev: true
+
+ registry.nlark.com/stringify-object/3.3.0:
+ resolution: {integrity: sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/stringify-object/download/stringify-object-3.3.0.tgz}
+ name: stringify-object
+ version: 3.3.0
+ engines: {node: '>=4'}
+ dependencies:
+ get-own-enumerable-property-symbols: registry.nlark.com/get-own-enumerable-property-symbols/3.0.2
+ is-obj: 1.0.1
+ is-regexp: 1.0.0
+ dev: true
+
+ registry.nlark.com/strip-bom-stream/1.0.0:
+ resolution: {integrity: sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/strip-bom-stream/download/strip-bom-stream-1.0.0.tgz}
+ name: strip-bom-stream
+ version: 1.0.0
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ first-chunk-stream: registry.nlark.com/first-chunk-stream/1.0.0
+ strip-bom: 2.0.0
+ dev: true
+
+ registry.nlark.com/strip-final-newline/2.0.0:
+ resolution: {integrity: sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/strip-final-newline/download/strip-final-newline-2.0.0.tgz}
+ name: strip-final-newline
+ version: 2.0.0
+ engines: {node: '>=6'}
+ dev: true
+
+ registry.nlark.com/strip-indent/3.0.0:
+ resolution: {integrity: sha1-wy4c7pQLazQyx3G8LFS8znPNMAE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/strip-indent/download/strip-indent-3.0.0.tgz}
+ name: strip-indent
+ version: 3.0.0
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+ dev: true
+
+ registry.nlark.com/strip-json-comments/3.1.1:
+ resolution: {integrity: sha1-MfEoGzgyYwQ0gxwxDAHMzajL4AY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/strip-json-comments/download/strip-json-comments-3.1.1.tgz}
+ name: strip-json-comments
+ version: 3.1.1
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/stylelint-config-recommended-scss/4.3.0_fd1d61e57b9553f3887f804324f52132:
+ resolution: {integrity: sha1-cX3CU7TKskbaZUzuII5JnFx5euQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/stylelint-config-recommended-scss/download/stylelint-config-recommended-scss-4.3.0.tgz}
+ id: registry.nlark.com/stylelint-config-recommended-scss/4.3.0
+ name: stylelint-config-recommended-scss
+ version: 4.3.0
+ peerDependencies:
+ stylelint: ^10.1.0 || ^11.0.0 || ^12.0.0 || ^13.0.0
+ stylelint-scss: ^3.0.0
+ dependencies:
+ stylelint: registry.nlark.com/stylelint/13.13.1
+ stylelint-config-recommended: registry.nlark.com/stylelint-config-recommended/5.0.0_stylelint@13.13.1
+ stylelint-scss: registry.nlark.com/stylelint-scss/3.20.1_stylelint@13.13.1
+ dev: true
+
+ registry.nlark.com/stylelint-config-recommended/5.0.0_stylelint@13.13.1:
+ resolution: {integrity: sha1-+1ZT9JWmC0k48q0+d3EtnhA5rng=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/stylelint-config-recommended/download/stylelint-config-recommended-5.0.0.tgz}
+ id: registry.nlark.com/stylelint-config-recommended/5.0.0
+ name: stylelint-config-recommended
+ version: 5.0.0
+ peerDependencies:
+ stylelint: ^13.13.0
+ dependencies:
+ stylelint: registry.nlark.com/stylelint/13.13.1
+ dev: true
+
+ registry.nlark.com/stylelint-config-standard/22.0.0_stylelint@13.13.1:
+ resolution: {integrity: sha1-yGC+mhPrvBsIRFb6EFJ78TpErd8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/stylelint-config-standard/download/stylelint-config-standard-22.0.0.tgz}
+ id: registry.nlark.com/stylelint-config-standard/22.0.0
+ name: stylelint-config-standard
+ version: 22.0.0
+ peerDependencies:
+ stylelint: ^13.13.0
+ dependencies:
+ stylelint: registry.nlark.com/stylelint/13.13.1
+ stylelint-config-recommended: registry.nlark.com/stylelint-config-recommended/5.0.0_stylelint@13.13.1
+ dev: true
+
+ registry.nlark.com/stylelint-scss/3.20.1_stylelint@13.13.1:
+ resolution: {integrity: sha1-iPF12c/hyBpyhYvQ01UM9hUw4hI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/stylelint-scss/download/stylelint-scss-3.20.1.tgz}
+ id: registry.nlark.com/stylelint-scss/3.20.1
+ name: stylelint-scss
+ version: 3.20.1
+ engines: {node: '>=8'}
+ peerDependencies:
+ stylelint: ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0
+ dependencies:
+ lodash: 4.17.21
+ postcss-media-query-parser: 0.2.3
+ postcss-resolve-nested-selector: 0.1.1
+ postcss-selector-parser: registry.nlark.com/postcss-selector-parser/6.0.6
+ postcss-value-parser: 4.1.0
+ stylelint: registry.nlark.com/stylelint/13.13.1
+ dev: true
+
+ registry.nlark.com/stylelint/13.13.1:
+ resolution: {integrity: sha1-/KnJ9d55kKsmoA8We4l48IOhjzw=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/stylelint/download/stylelint-13.13.1.tgz}
+ name: stylelint
+ version: 13.13.1
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dependencies:
+ '@stylelint/postcss-css-in-js': 0.37.2_2b33a41d320e3e2012e5b3b0fadc703b
+ '@stylelint/postcss-markdown': 0.36.2_2b33a41d320e3e2012e5b3b0fadc703b
+ autoprefixer: registry.nlark.com/autoprefixer/9.8.6
+ balanced-match: 2.0.0
+ chalk: registry.nlark.com/chalk/4.1.2
+ cosmiconfig: registry.nlark.com/cosmiconfig/7.0.1
+ debug: registry.nlark.com/debug/4.3.2
+ execall: 2.0.0
+ fast-glob: registry.nlark.com/fast-glob/3.2.7
+ fastest-levenshtein: 1.0.12
+ file-entry-cache: 6.0.1
+ get-stdin: 8.0.0
+ global-modules: 2.0.0
+ globby: registry.nlark.com/globby/11.0.4
+ globjoin: 0.1.4
+ html-tags: 3.1.0
+ ignore: 5.1.8
+ import-lazy: 4.0.0
+ imurmurhash: 0.1.4
+ known-css-properties: registry.nlark.com/known-css-properties/0.21.0
+ lodash: 4.17.21
+ log-symbols: 4.1.0
+ mathml-tag-names: 2.1.3
+ meow: registry.nlark.com/meow/9.0.0
+ micromatch: 4.0.4
+ normalize-selector: 0.2.0
+ postcss: registry.nlark.com/postcss/7.0.36
+ postcss-html: 0.36.0_2b33a41d320e3e2012e5b3b0fadc703b
+ postcss-less: registry.nlark.com/postcss-less/3.1.4
+ postcss-media-query-parser: 0.2.3
+ postcss-resolve-nested-selector: 0.1.1
+ postcss-safe-parser: registry.nlark.com/postcss-safe-parser/4.0.2
+ postcss-sass: registry.nlark.com/postcss-sass/0.4.4
+ postcss-scss: registry.nlark.com/postcss-scss/2.1.1
+ postcss-selector-parser: registry.nlark.com/postcss-selector-parser/6.0.6
+ postcss-syntax: 0.36.2_postcss@7.0.36
+ postcss-value-parser: 4.1.0
+ resolve-from: 5.0.0
+ slash: 3.0.0
+ specificity: registry.nlark.com/specificity/0.4.1
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ style-search: 0.1.0
+ sugarss: registry.nlark.com/sugarss/2.0.0
+ svg-tags: 1.0.0
+ table: registry.nlark.com/table/6.7.1
+ v8-compile-cache: 2.3.0
+ write-file-atomic: 3.0.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/sugarss/2.0.0:
+ resolution: {integrity: sha1-3dduASSyl9QL88yjHIsi7LQ7xh0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/sugarss/download/sugarss-2.0.0.tgz}
+ name: sugarss
+ version: 2.0.0
+ dependencies:
+ postcss: registry.nlark.com/postcss/7.0.36
+ dev: true
+
+ registry.nlark.com/supports-color/2.0.0:
+ resolution: {integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/supports-color/download/supports-color-2.0.0.tgz}
+ name: supports-color
+ version: 2.0.0
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ registry.nlark.com/supports-color/3.2.3:
+ resolution: {integrity: sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/supports-color/download/supports-color-3.2.3.tgz}
+ name: supports-color
+ version: 3.2.3
+ engines: {node: '>=0.8.0'}
+ dependencies:
+ has-flag: registry.nlark.com/has-flag/1.0.0
+ dev: true
+
+ registry.nlark.com/supports-color/5.5.0:
+ resolution: {integrity: sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/supports-color/download/supports-color-5.5.0.tgz}
+ name: supports-color
+ version: 5.5.0
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: registry.nlark.com/has-flag/3.0.0
+ dev: true
+
+ registry.nlark.com/supports-color/6.1.0:
+ resolution: {integrity: sha1-B2Srxpxj1ayELdSGfo0CXogN+PM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/supports-color/download/supports-color-6.1.0.tgz}
+ name: supports-color
+ version: 6.1.0
+ engines: {node: '>=6'}
+ dependencies:
+ has-flag: registry.nlark.com/has-flag/3.0.0
+ dev: true
+
+ registry.nlark.com/supports-color/7.2.0:
+ resolution: {integrity: sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/supports-color/download/supports-color-7.2.0.tgz}
+ name: supports-color
+ version: 7.2.0
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: registry.nlark.com/has-flag/4.0.0
+ dev: true
+
+ registry.nlark.com/svgo/2.4.0:
+ resolution: {integrity: sha1-DEJlMQH9ZoaSwPabVbjXsYLvQis=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/svgo/download/svgo-2.4.0.tgz}
+ name: svgo
+ version: 2.4.0
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ dependencies:
+ '@trysound/sax': registry.nlark.com/@trysound/sax/0.1.1
+ colorette: registry.nlark.com/colorette/1.3.0
+ commander: registry.nlark.com/commander/7.2.0
+ css-select: registry.nlark.com/css-select/4.1.3
+ css-tree: registry.nlark.com/css-tree/1.1.3
+ csso: 4.2.0
+ stable: 0.1.8
+ dev: true
+
+ registry.nlark.com/table/6.7.1:
+ resolution: {integrity: sha1-7gVZK3FDgxqMlPPO5qrkwczvM+I=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/table/download/table-6.7.1.tgz}
+ name: table
+ version: 6.7.1
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ ajv: registry.nlark.com/ajv/8.6.2
+ lodash.clonedeep: 4.5.0
+ lodash.truncate: 4.4.2
+ slice-ansi: 4.0.0
+ string-width: 4.2.2
+ strip-ansi: 6.0.0
+ dev: true
+
+ registry.nlark.com/terser/4.8.0:
+ resolution: {integrity: sha1-YwVjQ9fHC7KfOvZlhlpG/gOg3xc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/terser/download/terser-4.8.0.tgz}
+ name: terser
+ version: 4.8.0
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ commander: registry.nlark.com/commander/2.20.3
+ source-map: 0.6.1
+ source-map-support: 0.5.19
+ dev: true
+
+ registry.nlark.com/tinymce/5.9.0:
+ resolution: {integrity: sha1-xXmrM34xXMVPVo9l0IEALm4dw+Y=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/tinymce/download/tinymce-5.9.0.tgz}
+ name: tinymce
+ version: 5.9.0
+ dev: false
+
+ registry.nlark.com/title-case/2.1.1:
+ resolution: {integrity: sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/title-case/download/title-case-2.1.1.tgz}
+ name: title-case
+ version: 2.1.1
+ dependencies:
+ no-case: 2.3.2
+ upper-case: 1.1.3
+ dev: true
+
+ registry.nlark.com/to-fast-properties/2.0.0:
+ resolution: {integrity: sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/to-fast-properties/download/to-fast-properties-2.0.0.tgz?cache=0&sync_timestamp=1628419116313&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fto-fast-properties%2Fdownload%2Fto-fast-properties-2.0.0.tgz}
+ name: to-fast-properties
+ version: 2.0.0
+ engines: {node: '>=4'}
+
+ registry.nlark.com/trim-newlines/3.0.1:
+ resolution: {integrity: sha1-Jgpdli2LdSQlsy86fbDcrNF2wUQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/trim-newlines/download/trim-newlines-3.0.1.tgz}
+ name: trim-newlines
+ version: 3.0.1
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/trough/1.0.5:
+ resolution: {integrity: sha1-uLY5zvrX0LsqvTfUM/+Ck++l9AY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/trough/download/trough-1.0.5.tgz}
+ name: trough
+ version: 1.0.5
+ dev: true
+
+ registry.nlark.com/tslib/1.14.1:
+ resolution: {integrity: sha1-zy04vcNKE0vK8QkcQfZhni9nLQA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/tslib/download/tslib-1.14.1.tgz?cache=0&sync_timestamp=1628732355371&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-1.14.1.tgz}
+ name: tslib
+ version: 1.14.1
+ dev: true
+
+ registry.nlark.com/tslib/2.3.1:
+ resolution: {integrity: sha1-6KM1rdXOrlGqJh0ypJAVjvBC7wE=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/tslib/download/tslib-2.3.1.tgz?cache=0&sync_timestamp=1628732355371&other_urls=https%3A%2F%2Fregistry.nlark.com%2Ftslib%2Fdownload%2Ftslib-2.3.1.tgz}
+ name: tslib
+ version: 2.3.1
+ dev: true
+
+ registry.nlark.com/type-fest/0.18.1:
+ resolution: {integrity: sha1-20vBUaSiz07r+a3V23VQjbbMhB8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/type-fest/download/type-fest-0.18.1.tgz}
+ name: type-fest
+ version: 0.18.1
+ engines: {node: '>=10'}
+ dev: true
+
+ registry.nlark.com/type-fest/0.20.2:
+ resolution: {integrity: sha1-G/IH9LKPkVg2ZstfvTJ4hzAc1fQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/type-fest/download/type-fest-0.20.2.tgz}
+ name: type-fest
+ version: 0.20.2
+ engines: {node: '>=10'}
+ dev: true
+
+ registry.nlark.com/type-fest/0.21.3:
+ resolution: {integrity: sha1-0mCiSwGYQ24TP6JqUkptZfo7Ljc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/type-fest/download/type-fest-0.21.3.tgz}
+ name: type-fest
+ version: 0.21.3
+ engines: {node: '>=10'}
+ dev: true
+
+ registry.nlark.com/type-fest/0.6.0:
+ resolution: {integrity: sha1-jSojcNPfiG61yQraHFv2GIrPg4s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/type-fest/download/type-fest-0.6.0.tgz}
+ name: type-fest
+ version: 0.6.0
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/type-fest/0.8.1:
+ resolution: {integrity: sha1-CeJJ696FHTseSNJ8EFREZn8XuD0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/type-fest/download/type-fest-0.8.1.tgz}
+ name: type-fest
+ version: 0.8.1
+ engines: {node: '>=8'}
+ dev: true
+
+ registry.nlark.com/uglify-js/3.14.1:
+ resolution: {integrity: sha1-4suf4025y0z3410dJt/qKOCafQY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/uglify-js/download/uglify-js-3.14.1.tgz}
+ name: uglify-js
+ version: 3.14.1
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+ dev: true
+ optional: true
+
+ registry.nlark.com/underscore.string/3.3.5:
+ resolution: {integrity: sha1-/CrSVbi9MJ4jnLxYFv0jqbfqQCM=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/underscore.string/download/underscore.string-3.3.5.tgz}
+ name: underscore.string
+ version: 3.3.5
+ dependencies:
+ sprintf-js: 1.1.2
+ util-deprecate: 1.0.2
+ dev: true
+
+ registry.nlark.com/unified/9.2.2:
+ resolution: {integrity: sha1-Z2SaGr/Dq4XSlpUCkCd16wMUaXU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/unified/download/unified-9.2.2.tgz}
+ name: unified
+ version: 9.2.2
+ dependencies:
+ bail: registry.nlark.com/bail/1.0.5
+ extend: registry.nlark.com/extend/3.0.2
+ is-buffer: 2.0.5
+ is-plain-obj: 2.1.0
+ trough: registry.nlark.com/trough/1.0.5
+ vfile: registry.nlark.com/vfile/4.2.1
+ dev: true
+
+ registry.nlark.com/union/0.5.0:
+ resolution: {integrity: sha1-ssEb6E9gU4U3uEbtuboma6AJAHU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/union/download/union-0.5.0.tgz}
+ name: union
+ version: 0.5.0
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ qs: 6.10.1
+ dev: true
+
+ registry.nlark.com/unist-util-find-all-after/3.0.2:
+ resolution: {integrity: sha1-/f7NFMW3rqXp7zjV4NX3dO61YfY=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/unist-util-find-all-after/download/unist-util-find-all-after-3.0.2.tgz}
+ name: unist-util-find-all-after
+ version: 3.0.2
+ dependencies:
+ unist-util-is: registry.nlark.com/unist-util-is/4.1.0
+ dev: true
+
+ registry.nlark.com/unist-util-is/4.1.0:
+ resolution: {integrity: sha1-l25fRip6Xec9lLcGusG5BnG1d5c=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/unist-util-is/download/unist-util-is-4.1.0.tgz}
+ name: unist-util-is
+ version: 4.1.0
+ dev: true
+
+ registry.nlark.com/uuid/3.4.0:
+ resolution: {integrity: sha1-sj5DWK+oogL+ehAK8fX4g/AgB+4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/uuid/download/uuid-3.4.0.tgz?cache=0&sync_timestamp=1622213418456&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fuuid%2Fdownload%2Fuuid-3.4.0.tgz}
+ name: uuid
+ version: 3.4.0
+ hasBin: true
+ dev: true
+
+ registry.nlark.com/v8flags/2.1.1:
+ resolution: {integrity: sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/v8flags/download/v8flags-2.1.1.tgz}
+ name: v8flags
+ version: 2.1.1
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ user-home: 1.1.1
+ dev: true
+
+ registry.nlark.com/vfile-message/2.0.4:
+ resolution: {integrity: sha1-W0O4gXHUCerlhHfRPyPdQdUsNxo=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vfile-message/download/vfile-message-2.0.4.tgz}
+ name: vfile-message
+ version: 2.0.4
+ dependencies:
+ '@types/unist': registry.nlark.com/@types/unist/2.0.6
+ unist-util-stringify-position: 2.0.3
+ dev: true
+
+ registry.nlark.com/vfile/4.2.1:
+ resolution: {integrity: sha1-A/Hc4o/GJcYlvGUUNQ+9sA+p5iQ=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vfile/download/vfile-4.2.1.tgz?cache=0&sync_timestamp=1629482153900&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvfile%2Fdownload%2Fvfile-4.2.1.tgz}
+ name: vfile
+ version: 4.2.1
+ dependencies:
+ '@types/unist': registry.nlark.com/@types/unist/2.0.6
+ is-buffer: 2.0.5
+ unist-util-stringify-position: 2.0.3
+ vfile-message: registry.nlark.com/vfile-message/2.0.4
+ dev: true
+
+ registry.nlark.com/vinyl-file/1.3.0:
+ resolution: {integrity: sha1-qgVjTTqGe6kUR77bs0r8sm9E9uc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vinyl-file/download/vinyl-file-1.3.0.tgz}
+ name: vinyl-file
+ version: 1.3.0
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ graceful-fs: registry.nlark.com/graceful-fs/4.2.8
+ strip-bom: 2.0.0
+ strip-bom-stream: registry.nlark.com/strip-bom-stream/1.0.0
+ vinyl: 1.2.0
+ dev: true
+
+ registry.nlark.com/vite-plugin-banner/0.1.3:
+ resolution: {integrity: sha1-09To4oSt3tNf6qVKuMonOp0zSeA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite-plugin-banner/download/vite-plugin-banner-0.1.3.tgz}
+ name: vite-plugin-banner
+ version: 0.1.3
+ dev: true
+
+ registry.nlark.com/vite-plugin-compression/0.3.5_vite@2.5.1:
+ resolution: {integrity: sha1-HlM460PmASjebW8isqq/Dj3AwX8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite-plugin-compression/download/vite-plugin-compression-0.3.5.tgz}
+ id: registry.nlark.com/vite-plugin-compression/0.3.5
+ name: vite-plugin-compression
+ version: 0.3.5
+ peerDependencies:
+ vite: '>=2.0.0'
+ dependencies:
+ chalk: registry.nlark.com/chalk/4.1.2
+ debug: registry.nlark.com/debug/4.3.2
+ fs-extra: registry.nlark.com/fs-extra/10.0.0
+ vite: registry.nlark.com/vite/2.5.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/vite-plugin-html/2.1.0_vite@2.5.1:
+ resolution: {integrity: sha1-d7buEdnNvfdmtXMf1Ba6zyZ0T84=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite-plugin-html/download/vite-plugin-html-2.1.0.tgz}
+ id: registry.nlark.com/vite-plugin-html/2.1.0
+ name: vite-plugin-html
+ version: 2.1.0
+ peerDependencies:
+ vite: '>=2.0.0'
+ dependencies:
+ '@rollup/pluginutils': registry.nlark.com/@rollup/pluginutils/4.1.1
+ dotenv: registry.nlark.com/dotenv/10.0.0
+ dotenv-expand: 5.1.0
+ ejs: 3.1.6
+ fs-extra: registry.nlark.com/fs-extra/10.0.0
+ html-minifier-terser: 5.1.1
+ vite: registry.nlark.com/vite/2.5.1
+ dev: true
+
+ registry.nlark.com/vite-plugin-mock/2.9.6_mockjs@1.1.0+vite@2.5.1:
+ resolution: {integrity: sha1-BN0j3muqBS+qW5rTF1FMkNYgXiU=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite-plugin-mock/download/vite-plugin-mock-2.9.6.tgz}
+ id: registry.nlark.com/vite-plugin-mock/2.9.6
+ name: vite-plugin-mock
+ version: 2.9.6
+ engines: {node: '>=12.0.0'}
+ peerDependencies:
+ mockjs: '>=1.1.0'
+ vite: '>=2.0.0'
+ dependencies:
+ '@rollup/plugin-node-resolve': registry.nlark.com/@rollup/plugin-node-resolve/13.0.4
+ '@types/mockjs': registry.nlark.com/@types/mockjs/1.0.4
+ chalk: registry.nlark.com/chalk/4.1.2
+ chokidar: registry.nlark.com/chokidar/3.5.2
+ connect: 3.7.0
+ debug: registry.nlark.com/debug/4.3.2
+ esbuild: registry.nlark.com/esbuild/0.11.3
+ fast-glob: registry.nlark.com/fast-glob/3.2.7
+ mockjs: 1.1.0
+ path-to-regexp: 6.2.0
+ vite: registry.nlark.com/vite/2.5.1
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+ dev: true
+
+ registry.nlark.com/vite-plugin-restart/0.0.2_vite@2.5.1:
+ resolution: {integrity: sha1-EByTLpw8TV/2BuFaTzLOduHuTdc=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite-plugin-restart/download/vite-plugin-restart-0.0.2.tgz}
+ id: registry.nlark.com/vite-plugin-restart/0.0.2
+ name: vite-plugin-restart
+ version: 0.0.2
+ peerDependencies:
+ vite: ^2.0.0-beta.69
+ dependencies:
+ chalk: registry.nlark.com/chalk/4.1.2
+ micromatch: 4.0.4
+ vite: registry.nlark.com/vite/2.5.1
+ dev: true
+
+ registry.nlark.com/vite-plugin-spritesmith/0.1.0:
+ resolution: {integrity: sha1-Y+XrWtAC3RFDi4HZihK0odt3OTg=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite-plugin-spritesmith/download/vite-plugin-spritesmith-0.1.0.tgz}
+ name: vite-plugin-spritesmith
+ version: 0.1.0
+ dependencies:
+ fs-extra: registry.nlark.com/fs-extra/10.0.0
+ gaze: 1.1.3
+ lodash: 4.17.21
+ mkdirp: 1.0.4
+ spritesheet-templates: registry.nlark.com/spritesheet-templates/10.5.2
+ spritesmith: registry.nlark.com/spritesmith/3.4.0
+ dev: true
+
+ registry.nlark.com/vite-plugin-svg-icons/1.0.4_vite@2.5.1:
+ resolution: {integrity: sha1-nyD+/0s7+9z1QB0++nXUgT8n3CI=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite-plugin-svg-icons/download/vite-plugin-svg-icons-1.0.4.tgz}
+ id: registry.nlark.com/vite-plugin-svg-icons/1.0.4
+ name: vite-plugin-svg-icons
+ version: 1.0.4
+ peerDependencies:
+ vite: '>=2.0.0'
+ dependencies:
+ '@types/svgo': registry.nlark.com/@types/svgo/2.4.0
+ cors: 2.8.5
+ debug: registry.nlark.com/debug/4.3.2
+ etag: 1.8.1
+ fs-extra: registry.nlark.com/fs-extra/10.0.0
+ svg-baker: 1.7.0
+ svgo: registry.nlark.com/svgo/2.4.0
+ vite: registry.nlark.com/vite/2.5.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/vite/2.5.1:
+ resolution: {integrity: sha1-lTxxoDTAezrgRI1XZk7JxoYvI6g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vite/download/vite-2.5.1.tgz}
+ name: vite
+ version: 2.5.1
+ engines: {node: '>=12.2.0'}
+ hasBin: true
+ dependencies:
+ esbuild: registry.nlark.com/esbuild/0.12.23
+ postcss: registry.nlark.com/postcss/8.3.6
+ resolve: 1.20.0
+ rollup: registry.nlark.com/rollup/2.56.3
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ registry.nlark.com/vue-eslint-parser/7.10.0_eslint@7.32.0:
+ resolution: {integrity: sha1-6k5LEP0QqjXIp5rHg0iNirzSm+g=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vue-eslint-parser/download/vue-eslint-parser-7.10.0.tgz}
+ id: registry.nlark.com/vue-eslint-parser/7.10.0
+ name: vue-eslint-parser
+ version: 7.10.0
+ engines: {node: '>=8.10'}
+ peerDependencies:
+ eslint: '>=5.0.0'
+ dependencies:
+ debug: registry.nlark.com/debug/4.3.2
+ eslint: registry.nlark.com/eslint/7.32.0
+ eslint-scope: registry.nlark.com/eslint-scope/5.1.1
+ eslint-visitor-keys: registry.nlark.com/eslint-visitor-keys/1.3.0
+ espree: registry.nlark.com/espree/6.2.1
+ esquery: 1.4.0
+ lodash: 4.17.21
+ semver: 6.3.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ registry.nlark.com/vue-router/4.0.11_vue@3.2.6:
+ resolution: {integrity: sha1-zWSaCUHGNSgXY6IJZbWZZD3caO0=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vue-router/download/vue-router-4.0.11.tgz}
+ id: registry.nlark.com/vue-router/4.0.11
+ name: vue-router
+ version: 4.0.11
+ peerDependencies:
+ vue: ^3.0.0
+ dependencies:
+ '@vue/devtools-api': registry.nlark.com/@vue/devtools-api/6.0.0-beta.15
+ vue: registry.nlark.com/vue/3.2.6
+ dev: false
+
+ registry.nlark.com/vue/3.2.6:
+ resolution: {integrity: sha1-xxRFB4dR9Fhkj9j7Oi2pdVB9A9I=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vue/download/vue-3.2.6.tgz}
+ name: vue
+ version: 3.2.6
+ dependencies:
+ '@vue/compiler-dom': registry.nlark.com/@vue/compiler-dom/3.2.6
+ '@vue/runtime-dom': registry.nlark.com/@vue/runtime-dom/3.2.6
+ '@vue/shared': registry.nlark.com/@vue/shared/3.2.6
+ dev: false
+
+ registry.nlark.com/vuex/4.0.2_vue@3.2.6:
+ resolution: {integrity: sha1-+Jbb1b8qDpY/AMZ+m2EN50nMrMk=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/vuex/download/vuex-4.0.2.tgz}
+ id: registry.nlark.com/vuex/4.0.2
+ name: vuex
+ version: 4.0.2
+ peerDependencies:
+ vue: ^3.0.2
+ dependencies:
+ '@vue/devtools-api': registry.nlark.com/@vue/devtools-api/6.0.0-beta.15
+ vue: registry.nlark.com/vue/3.2.6
+ dev: false
+
+ registry.nlark.com/workbox-core/6.2.4:
+ resolution: {integrity: sha1-D/tPDObY428Qv0qr2WpvVXBczYA=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/workbox-core/download/workbox-core-6.2.4.tgz}
+ name: workbox-core
+ version: 6.2.4
+ dev: true
+
+ registry.nlark.com/workbox-window/6.2.4:
+ resolution: {integrity: sha1-N355IVjsg2cLb4EOAHekXBqUjRs=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/workbox-window/download/workbox-window-6.2.4.tgz}
+ name: workbox-window
+ version: 6.2.4
+ dependencies:
+ '@types/trusted-types': registry.nlark.com/@types/trusted-types/2.0.2
+ workbox-core: registry.nlark.com/workbox-core/6.2.4
+ dev: true
+
+ registry.nlark.com/wrappy/1.0.2:
+ resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/wrappy/download/wrappy-1.0.2.tgz}
+ name: wrappy
+ version: 1.0.2
+ dev: true
+
+ registry.nlark.com/yaml/1.10.2:
+ resolution: {integrity: sha1-IwHF/78StGfejaIzOkWeKeeSDks=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/yaml/download/yaml-1.10.2.tgz}
+ name: yaml
+ version: 1.10.2
+ engines: {node: '>= 6'}
+ dev: true
+
+ registry.nlark.com/yargs-parser/20.2.9:
+ resolution: {integrity: sha1-LrfcOwKJcY/ClfNidThFxBoMlO4=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/yargs-parser/download/yargs-parser-20.2.9.tgz}
+ name: yargs-parser
+ version: 20.2.9
+ engines: {node: '>=10'}
+ dev: true
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 00000000..794835dc
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/pwa_icons/192x192.png b/public/pwa_icons/192x192.png
new file mode 100644
index 00000000..557c4c0b
Binary files /dev/null and b/public/pwa_icons/192x192.png differ
diff --git a/public/pwa_icons/384x384.png b/public/pwa_icons/384x384.png
new file mode 100644
index 00000000..fe1f07ed
Binary files /dev/null and b/public/pwa_icons/384x384.png differ
diff --git a/public/tinymce/langs/zh_CN.js b/public/tinymce/langs/zh_CN.js
new file mode 100644
index 00000000..89b106c2
--- /dev/null
+++ b/public/tinymce/langs/zh_CN.js
@@ -0,0 +1,419 @@
+tinymce.addI18n('zh_CN',{
+"Redo": "\u91cd\u505a",
+"Undo": "\u64a4\u9500",
+"Cut": "\u526a\u5207",
+"Copy": "\u590d\u5236",
+"Paste": "\u7c98\u8d34",
+"Select all": "\u5168\u9009",
+"New document": "\u65b0\u6587\u4ef6",
+"Ok": "\u786e\u5b9a",
+"Cancel": "\u53d6\u6d88",
+"Visual aids": "\u7f51\u683c\u7ebf",
+"Bold": "\u7c97\u4f53",
+"Italic": "\u659c\u4f53",
+"Underline": "\u4e0b\u5212\u7ebf",
+"Strikethrough": "\u5220\u9664\u7ebf",
+"Superscript": "\u4e0a\u6807",
+"Subscript": "\u4e0b\u6807",
+"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
+"Align left": "\u5de6\u8fb9\u5bf9\u9f50",
+"Align center": "\u4e2d\u95f4\u5bf9\u9f50",
+"Align right": "\u53f3\u8fb9\u5bf9\u9f50",
+"Justify": "\u4e24\u7aef\u5bf9\u9f50",
+"Bullet list": "\u9879\u76ee\u7b26\u53f7",
+"Numbered list": "\u7f16\u53f7\u5217\u8868",
+"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
+"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
+"Close": "\u5173\u95ed",
+"Formats": "\u683c\u5f0f",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002",
+"Headers": "\u6807\u9898",
+"Header 1": "\u6807\u98981",
+"Header 2": "\u6807\u98982",
+"Header 3": "\u6807\u98983",
+"Header 4": "\u6807\u98984",
+"Header 5": "\u6807\u98985",
+"Header 6": "\u6807\u98986",
+"Headings": "\u6807\u9898",
+"Heading 1": "\u6807\u98981",
+"Heading 2": "\u6807\u98982",
+"Heading 3": "\u6807\u98983",
+"Heading 4": "\u6807\u98984",
+"Heading 5": "\u6807\u98985",
+"Heading 6": "\u6807\u98986",
+"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684",
+"Div": "Div",
+"Pre": "Pre",
+"Code": "\u4ee3\u7801",
+"Paragraph": "\u6bb5\u843d",
+"Blockquote": "\u5f15\u6587\u533a\u5757",
+"Inline": "\u6587\u672c",
+"Blocks": "\u57fa\u5757",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
+"Fonts": "\u5b57\u4f53",
+"Font Sizes": "\u5b57\u53f7",
+"Class": "\u7c7b\u578b",
+"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
+"OR": "\u6216",
+"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
+"Upload": "\u4e0a\u4f20",
+"Block": "\u5757",
+"Align": "\u5bf9\u9f50",
+"Default": "\u9ed8\u8ba4",
+"Circle": "\u7a7a\u5fc3\u5706",
+"Disc": "\u5b9e\u5fc3\u5706",
+"Square": "\u65b9\u5757",
+"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
+"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
+"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
+"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
+"Anchor...": "\u951a\u70b9...",
+"Name": "\u540d\u79f0",
+"Id": "\u6807\u8bc6\u7b26",
+"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
+"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
+"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
+"Special character...": "\u7279\u6b8a\u5b57\u7b26...",
+"Source code": "\u6e90\u4ee3\u7801",
+"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
+"Language": "\u8bed\u8a00",
+"Code sample...": "\u793a\u4f8b\u4ee3\u7801...",
+"Color Picker": "\u9009\u8272\u5668",
+"R": "R",
+"G": "G",
+"B": "B",
+"Left to right": "\u4ece\u5de6\u5230\u53f3",
+"Right to left": "\u4ece\u53f3\u5230\u5de6",
+"Emoticons...": "\u8868\u60c5\u7b26\u53f7...",
+"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027",
+"Title": "\u6807\u9898",
+"Keywords": "\u5173\u952e\u8bcd",
+"Description": "\u63cf\u8ff0",
+"Robots": "\u673a\u5668\u4eba",
+"Author": "\u4f5c\u8005",
+"Encoding": "\u7f16\u7801",
+"Fullscreen": "\u5168\u5c4f",
+"Action": "\u64cd\u4f5c",
+"Shortcut": "\u5feb\u6377\u952e",
+"Help": "\u5e2e\u52a9",
+"Address": "\u5730\u5740",
+"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
+"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
+"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
+"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
+"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
+"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
+"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
+"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
+"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
+"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
+"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
+"Plugins": "\u63d2\u4ef6",
+"Handy Shortcuts": "\u5feb\u6377\u952e",
+"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
+"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
+"Image description": "\u56fe\u7247\u63cf\u8ff0",
+"Source": "\u5730\u5740",
+"Dimensions": "\u5927\u5c0f",
+"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
+"General": "\u666e\u901a",
+"Advanced": "\u9ad8\u7ea7",
+"Style": "\u6837\u5f0f",
+"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
+"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
+"Border": "\u8fb9\u6846",
+"Insert image": "\u63d2\u5165\u56fe\u7247",
+"Image...": "\u56fe\u7247...",
+"Image list": "\u56fe\u7247\u5217\u8868",
+"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
+"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
+"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
+"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
+"Edit image": "\u7f16\u8f91\u56fe\u7247",
+"Image options": "\u56fe\u7247\u9009\u9879",
+"Zoom in": "\u653e\u5927",
+"Zoom out": "\u7f29\u5c0f",
+"Crop": "\u88c1\u526a",
+"Resize": "\u8c03\u6574\u5927\u5c0f",
+"Orientation": "\u65b9\u5411",
+"Brightness": "\u4eae\u5ea6",
+"Sharpen": "\u9510\u5316",
+"Contrast": "\u5bf9\u6bd4\u5ea6",
+"Color levels": "\u989c\u8272\u5c42\u6b21",
+"Gamma": "\u4f3d\u9a6c\u503c",
+"Invert": "\u53cd\u8f6c",
+"Apply": "\u5e94\u7528",
+"Back": "\u540e\u9000",
+"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
+"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
+"Insert\/Edit Link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
+"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
+"Text to display": "\u663e\u793a\u6587\u5b57",
+"Url": "\u5730\u5740",
+"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...",
+"Current window": "\u5f53\u524d\u7a97\u53e3",
+"None": "\u65e0",
+"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
+"Remove link": "\u5220\u9664\u94fe\u63a5",
+"Anchors": "\u951a\u70b9",
+"Link...": "\u94fe\u63a5...",
+"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
+"Link list": "\u94fe\u63a5\u5217\u8868",
+"Insert video": "\u63d2\u5165\u89c6\u9891",
+"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
+"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
+"Alternative source": "\u955c\u50cf",
+"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740",
+"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)",
+"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
+"Embed": "\u5185\u5d4c",
+"Media...": "\u591a\u5a92\u4f53...",
+"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
+"Page break": "\u5206\u9875\u7b26",
+"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
+"Preview": "\u9884\u89c8",
+"Print...": "\u6253\u5370...",
+"Save": "\u4fdd\u5b58",
+"Find": "\u67e5\u627e",
+"Replace with": "\u66ff\u6362\u4e3a",
+"Replace": "\u66ff\u6362",
+"Replace all": "\u5168\u90e8\u66ff\u6362",
+"Previous": "\u4e0a\u4e00\u4e2a",
+"Next": "\u4e0b\u4e00\u4e2a",
+"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...",
+"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
+"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
+"Find whole words only": "\u5168\u5b57\u5339\u914d",
+"Spell check": "\u62fc\u5199\u68c0\u67e5",
+"Ignore": "\u5ffd\u7565",
+"Ignore all": "\u5168\u90e8\u5ffd\u7565",
+"Finish": "\u5b8c\u6210",
+"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
+"Insert table": "\u63d2\u5165\u8868\u683c",
+"Table properties": "\u8868\u683c\u5c5e\u6027",
+"Delete table": "\u5220\u9664\u8868\u683c",
+"Cell": "\u5355\u5143\u683c",
+"Row": "\u884c",
+"Column": "\u5217",
+"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
+"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
+"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
+"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
+"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
+"Delete row": "\u5220\u9664\u884c",
+"Row properties": "\u884c\u5c5e\u6027",
+"Cut row": "\u526a\u5207\u884c",
+"Copy row": "\u590d\u5236\u884c",
+"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
+"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
+"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
+"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
+"Delete column": "\u5220\u9664\u5217",
+"Cols": "\u5217",
+"Rows": "\u884c",
+"Width": "\u5bbd",
+"Height": "\u9ad8",
+"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
+"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
+"Show caption": "\u663e\u793a\u6807\u9898",
+"Left": "\u5de6\u5bf9\u9f50",
+"Center": "\u5c45\u4e2d",
+"Right": "\u53f3\u5bf9\u9f50",
+"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
+"Scope": "\u8303\u56f4",
+"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
+"H Align": "\u6c34\u5e73\u5bf9\u9f50",
+"V Align": "\u5782\u76f4\u5bf9\u9f50",
+"Top": "\u9876\u90e8\u5bf9\u9f50",
+"Middle": "\u5782\u76f4\u5c45\u4e2d",
+"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
+"Header cell": "\u8868\u5934\u5355\u5143\u683c",
+"Row group": "\u884c\u7ec4",
+"Column group": "\u5217\u7ec4",
+"Row type": "\u884c\u7c7b\u578b",
+"Header": "\u8868\u5934",
+"Body": "\u8868\u4f53",
+"Footer": "\u8868\u5c3e",
+"Border color": "\u8fb9\u6846\u989c\u8272",
+"Insert template...": "\u63d2\u5165\u6a21\u677f...",
+"Templates": "\u6a21\u677f",
+"Template": "\u6a21\u677f",
+"Text color": "\u6587\u5b57\u989c\u8272",
+"Background color": "\u80cc\u666f\u8272",
+"Custom...": "\u81ea\u5b9a\u4e49...",
+"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
+"No color": "\u65e0",
+"Remove color": "\u79fb\u9664\u989c\u8272",
+"Table of Contents": "\u5185\u5bb9\u5217\u8868",
+"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
+"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
+"Word count": "\u5b57\u6570",
+"Count": "\u8ba1\u6570",
+"Document": "\u6587\u6863",
+"Selection": "\u9009\u62e9",
+"Words": "\u5355\u8bcd",
+"Words: {0}": "\u5b57\u6570\uff1a{0}",
+"{0} words": "{0} \u5b57",
+"File": "\u6587\u4ef6",
+"Edit": "\u7f16\u8f91",
+"Insert": "\u63d2\u5165",
+"View": "\u89c6\u56fe",
+"Format": "\u683c\u5f0f",
+"Table": "\u8868\u683c",
+"Tools": "\u5de5\u5177",
+"Powered by {0}": "\u7531{0}\u9a71\u52a8",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
+"Image title": "\u56fe\u7247\u6807\u9898",
+"Border width": "\u8fb9\u6846\u5bbd\u5ea6",
+"Border style": "\u8fb9\u6846\u6837\u5f0f",
+"Error": "\u9519\u8bef",
+"Warn": "\u8b66\u544a",
+"Valid": "\u6709\u6548",
+"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846",
+"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002",
+"System Font": "\u7cfb\u7edf\u5b57\u4f53",
+"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}",
+"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}",
+"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}",
+"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}",
+"example": "\u793a\u4f8b",
+"Search": "\u641c\u7d22",
+"All": "\u5168\u90e8",
+"Currency": "\u8d27\u5e01",
+"Text": "\u6587\u5b57",
+"Quotations": "\u5f15\u7528",
+"Mathematical": "\u6570\u5b66",
+"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145",
+"Symbols": "\u7b26\u53f7",
+"Arrows": "\u7bad\u5934",
+"User Defined": "\u81ea\u5b9a\u4e49",
+"dollar sign": "\u7f8e\u5143\u7b26\u53f7",
+"currency sign": "\u8d27\u5e01\u7b26\u53f7",
+"euro-currency sign": "\u6b27\u5143\u7b26\u53f7",
+"colon sign": "\u5192\u53f7",
+"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7",
+"french franc sign": "\u6cd5\u90ce\u7b26\u53f7",
+"lira sign": "\u91cc\u62c9\u7b26\u53f7",
+"mill sign": "\u5bc6\u5c14\u7b26\u53f7",
+"naira sign": "\u5948\u62c9\u7b26\u53f7",
+"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7",
+"rupee sign": "\u5362\u6bd4\u7b26\u53f7",
+"won sign": "\u97e9\u5143\u7b26\u53f7",
+"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7",
+"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7",
+"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7",
+"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7",
+"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7",
+"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7",
+"peso sign": "\u6bd4\u7d22\u7b26\u53f7",
+"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7",
+"austral sign": "\u6fb3\u5143\u7b26\u53f7",
+"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7",
+"cedi sign": "\u585e\u5730\u7b26\u53f7",
+"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7",
+"spesmilo sign": "spesmilo\u7b26\u53f7",
+"tenge sign": "\u575a\u6208\u7b26\u53f7",
+"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4",
+"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9",
+"nordic mark sign": "\u5317\u6b27\u9a6c\u514b",
+"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7",
+"ruble sign": "\u5362\u5e03\u7b26\u53f7",
+"yen character": "\u65e5\u5143\u5b57\u6837",
+"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837",
+"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09",
+"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09",
+"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...",
+"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7",
+"People": "\u4eba\u7c7b",
+"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136",
+"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1",
+"Activity": "\u6d3b\u52a8",
+"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9",
+"Objects": "\u7269\u4ef6",
+"Flags": "\u65d7\u5e1c",
+"Characters": "\u5b57\u7b26",
+"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)",
+"{0} characters": "{0} \u4e2a\u5b57\u7b26",
+"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002",
+"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002",
+"Update": "\u66f4\u65b0",
+"Color swatch": "\u989c\u8272\u6837\u672c",
+"Turquoise": "\u9752\u7eff\u8272",
+"Green": "\u7eff\u8272",
+"Blue": "\u84dd\u8272",
+"Purple": "\u7d2b\u8272",
+"Navy Blue": "\u6d77\u519b\u84dd",
+"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272",
+"Dark Green": "\u6df1\u7eff\u8272",
+"Medium Blue": "\u4e2d\u84dd\u8272",
+"Medium Purple": "\u4e2d\u7d2b\u8272",
+"Midnight Blue": "\u6df1\u84dd\u8272",
+"Yellow": "\u9ec4\u8272",
+"Orange": "\u6a59\u8272",
+"Red": "\u7ea2\u8272",
+"Light Gray": "\u6d45\u7070\u8272",
+"Gray": "\u7070\u8272",
+"Dark Yellow": "\u6697\u9ec4\u8272",
+"Dark Orange": "\u6df1\u6a59\u8272",
+"Dark Red": "\u6df1\u7ea2\u8272",
+"Medium Gray": "\u4e2d\u7070\u8272",
+"Dark Gray": "\u6df1\u7070\u8272",
+"Light Green": "\u6d45\u7eff\u8272",
+"Light Yellow": "\u6d45\u9ec4\u8272",
+"Light Red": "\u6d45\u7ea2\u8272",
+"Light Purple": "\u6d45\u7d2b\u8272",
+"Light Blue": "\u6d45\u84dd\u8272",
+"Dark Purple": "\u6df1\u7d2b\u8272",
+"Dark Blue": "\u6df1\u84dd\u8272",
+"Black": "\u9ed1\u8272",
+"White": "\u767d\u8272",
+"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f",
+"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846",
+"history": "\u5386\u53f2",
+"styles": "\u6837\u5f0f",
+"formatting": "\u683c\u5f0f\u5316",
+"alignment": "\u5bf9\u9f50",
+"indentation": "\u7f29\u8fdb",
+"permanent pen": "\u8bb0\u53f7\u7b14",
+"comments": "\u5907\u6ce8",
+"Format Painter": "\u683c\u5f0f\u5237",
+"Insert\/edit iframe": "\u63d2\u5165\/\u7f16\u8f91\u6846\u67b6",
+"Capitalization": "\u5927\u5199",
+"lowercase": "\u5c0f\u5199",
+"UPPERCASE": "\u5927\u5199",
+"Title Case": "\u9996\u5b57\u6bcd\u5927\u5199",
+"Permanent Pen Properties": "\u6c38\u4e45\u7b14\u5c5e\u6027",
+"Permanent pen properties...": "\u6c38\u4e45\u7b14\u5c5e\u6027...",
+"Font": "\u5b57\u4f53",
+"Size": "\u5b57\u53f7",
+"More...": "\u66f4\u591a...",
+"Spellcheck Language": "\u62fc\u5199\u68c0\u67e5\u8bed\u8a00",
+"Select...": "\u9009\u62e9...",
+"Preferences": "\u9996\u9009\u9879",
+"Yes": "\u662f",
+"No": "\u5426",
+"Keyboard Navigation": "\u952e\u76d8\u6307\u5f15",
+"Version": "\u7248\u672c",
+"Anchor": "\u951a\u70b9",
+"Special character": "\u7279\u6b8a\u7b26\u53f7",
+"Code sample": "\u4ee3\u7801\u793a\u4f8b",
+"Color": "\u989c\u8272",
+"Emoticons": "\u8868\u60c5",
+"Document properties": "\u6587\u6863\u5c5e\u6027",
+"Image": "\u56fe\u7247",
+"Insert link": "\u63d2\u5165\u94fe\u63a5",
+"Target": "\u6253\u5f00\u65b9\u5f0f",
+"Link": "\u94fe\u63a5",
+"Poster": "\u5c01\u9762",
+"Media": "\u5a92\u4f53",
+"Print": "\u6253\u5370",
+"Prev": "\u4e0a\u4e00\u4e2a",
+"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
+"Whole words": "\u5168\u5b57\u5339\u914d",
+"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
+"Caption": "\u6807\u9898",
+"Insert template": "\u63d2\u5165\u6a21\u677f"
+});
\ No newline at end of file
diff --git a/public/tinymce/skins/content/dark/content.css b/public/tinymce/skins/content/dark/content.css
new file mode 100644
index 00000000..bae7923f
--- /dev/null
+++ b/public/tinymce/skins/content/dark/content.css
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body {
+ background-color: #2f3742;
+ color: #dfe0e4;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ line-height: 1.4;
+ margin: 1rem;
+}
+a {
+ color: #4099ff;
+}
+table {
+ border-collapse: collapse;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #6d737b;
+}
+figure {
+ display: table;
+ margin: 1rem auto;
+}
+figure figcaption {
+ color: #8a8f97;
+ display: block;
+ margin-top: 0.25rem;
+ text-align: center;
+}
+hr {
+ border-color: #6d737b;
+ border-style: solid;
+ border-width: 1px 0 0 0;
+}
+code {
+ background-color: #6d737b;
+ border-radius: 3px;
+ padding: 0.1rem 0.2rem;
+}
+.mce-content-body:not([dir=rtl]) blockquote {
+ border-left: 2px solid #6d737b;
+ margin-left: 1.5rem;
+ padding-left: 1rem;
+}
+.mce-content-body[dir=rtl] blockquote {
+ border-right: 2px solid #6d737b;
+ margin-right: 1.5rem;
+ padding-right: 1rem;
+}
diff --git a/public/tinymce/skins/content/dark/content.min.css b/public/tinymce/skins/content/dark/content.min.css
new file mode 100644
index 00000000..07d40c26
--- /dev/null
+++ b/public/tinymce/skins/content/dark/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{background-color:#2f3742;color:#dfe0e4;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}a{color:#4099ff}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#6d737b}figure{display:table;margin:1rem auto}figure figcaption{color:#8a8f97;display:block;margin-top:.25rem;text-align:center}hr{border-color:#6d737b;border-style:solid;border-width:1px 0 0 0}code{background-color:#6d737b;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #6d737b;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #6d737b;margin-right:1.5rem;padding-right:1rem}
diff --git a/public/tinymce/skins/content/default/content.css b/public/tinymce/skins/content/default/content.css
new file mode 100644
index 00000000..dd6a5c1c
--- /dev/null
+++ b/public/tinymce/skins/content/default/content.css
@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ line-height: 1.4;
+ margin: 1rem;
+}
+table {
+ border-collapse: collapse;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #ccc;
+}
+figure {
+ display: table;
+ margin: 1rem auto;
+}
+figure figcaption {
+ color: #999;
+ display: block;
+ margin-top: 0.25rem;
+ text-align: center;
+}
+hr {
+ border-color: #ccc;
+ border-style: solid;
+ border-width: 1px 0 0 0;
+}
+code {
+ background-color: #e8e8e8;
+ border-radius: 3px;
+ padding: 0.1rem 0.2rem;
+}
+.mce-content-body:not([dir=rtl]) blockquote {
+ border-left: 2px solid #ccc;
+ margin-left: 1.5rem;
+ padding-left: 1rem;
+}
+.mce-content-body[dir=rtl] blockquote {
+ border-right: 2px solid #ccc;
+ margin-right: 1.5rem;
+ padding-right: 1rem;
+}
diff --git a/public/tinymce/skins/content/default/content.min.css b/public/tinymce/skins/content/default/content.min.css
new file mode 100644
index 00000000..29cd987e
--- /dev/null
+++ b/public/tinymce/skins/content/default/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/public/tinymce/skins/content/document/content.css b/public/tinymce/skins/content/document/content.css
new file mode 100644
index 00000000..75f637a1
--- /dev/null
+++ b/public/tinymce/skins/content/document/content.css
@@ -0,0 +1,72 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+@media screen {
+ html {
+ background: #f4f4f4;
+ min-height: 100%;
+ }
+}
+body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+}
+@media screen {
+ body {
+ background-color: #fff;
+ box-shadow: 0 0 4px rgba(0, 0, 0, 0.15);
+ box-sizing: border-box;
+ margin: 1rem auto 0;
+ max-width: 820px;
+ min-height: calc(100vh - 1rem);
+ padding: 4rem 6rem 6rem 6rem;
+ }
+}
+table {
+ border-collapse: collapse;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #ccc;
+}
+figure figcaption {
+ color: #999;
+ margin-top: 0.25rem;
+ text-align: center;
+}
+hr {
+ border-color: #ccc;
+ border-style: solid;
+ border-width: 1px 0 0 0;
+}
+.mce-content-body:not([dir=rtl]) blockquote {
+ border-left: 2px solid #ccc;
+ margin-left: 1.5rem;
+ padding-left: 1rem;
+}
+.mce-content-body[dir=rtl] blockquote {
+ border-right: 2px solid #ccc;
+ margin-right: 1.5rem;
+ padding-right: 1rem;
+}
diff --git a/public/tinymce/skins/content/document/content.min.css b/public/tinymce/skins/content/document/content.min.css
new file mode 100644
index 00000000..a1feef4c
--- /dev/null
+++ b/public/tinymce/skins/content/document/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+@media screen{html{background:#f4f4f4;min-height:100%}}body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif}@media screen{body{background-color:#fff;box-shadow:0 0 4px rgba(0,0,0,.15);box-sizing:border-box;margin:1rem auto 0;max-width:820px;min-height:calc(100vh - 1rem);padding:4rem 6rem 6rem 6rem}}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure figcaption{color:#999;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/public/tinymce/skins/content/writer/content.css b/public/tinymce/skins/content/writer/content.css
new file mode 100644
index 00000000..ceee3599
--- /dev/null
+++ b/public/tinymce/skins/content/writer/content.css
@@ -0,0 +1,68 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ line-height: 1.4;
+ margin: 1rem auto;
+ max-width: 900px;
+}
+table {
+ border-collapse: collapse;
+}
+/* Apply a default padding if legacy cellpadding attribute is missing */
+table:not([cellpadding]) th,
+table:not([cellpadding]) td {
+ padding: 0.4rem;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-width"]) th,
+table[border]:not([border="0"]):not([style*="border-width"]) td {
+ border-width: 1px;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-style"]) th,
+table[border]:not([border="0"]):not([style*="border-style"]) td {
+ border-style: solid;
+}
+/* Set default table styles if a table has a positive border attribute
+ and no inline css */
+table[border]:not([border="0"]):not([style*="border-color"]) th,
+table[border]:not([border="0"]):not([style*="border-color"]) td {
+ border-color: #ccc;
+}
+figure {
+ display: table;
+ margin: 1rem auto;
+}
+figure figcaption {
+ color: #999;
+ display: block;
+ margin-top: 0.25rem;
+ text-align: center;
+}
+hr {
+ border-color: #ccc;
+ border-style: solid;
+ border-width: 1px 0 0 0;
+}
+code {
+ background-color: #e8e8e8;
+ border-radius: 3px;
+ padding: 0.1rem 0.2rem;
+}
+.mce-content-body:not([dir=rtl]) blockquote {
+ border-left: 2px solid #ccc;
+ margin-left: 1.5rem;
+ padding-left: 1rem;
+}
+.mce-content-body[dir=rtl] blockquote {
+ border-right: 2px solid #ccc;
+ margin-right: 1.5rem;
+ padding-right: 1rem;
+}
diff --git a/public/tinymce/skins/content/writer/content.min.css b/public/tinymce/skins/content/writer/content.min.css
new file mode 100644
index 00000000..0d8f5d34
--- /dev/null
+++ b/public/tinymce/skins/content/writer/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif;line-height:1.4;margin:1rem auto;max-width:900px}table{border-collapse:collapse}table:not([cellpadding]) td,table:not([cellpadding]) th{padding:.4rem}table[border]:not([border="0"]):not([style*=border-width]) td,table[border]:not([border="0"]):not([style*=border-width]) th{border-width:1px}table[border]:not([border="0"]):not([style*=border-style]) td,table[border]:not([border="0"]):not([style*=border-style]) th{border-style:solid}table[border]:not([border="0"]):not([style*=border-color]) td,table[border]:not([border="0"]):not([style*=border-color]) th{border-color:#ccc}figure{display:table;margin:1rem auto}figure figcaption{color:#999;display:block;margin-top:.25rem;text-align:center}hr{border-color:#ccc;border-style:solid;border-width:1px 0 0 0}code{background-color:#e8e8e8;border-radius:3px;padding:.1rem .2rem}.mce-content-body:not([dir=rtl]) blockquote{border-left:2px solid #ccc;margin-left:1.5rem;padding-left:1rem}.mce-content-body[dir=rtl] blockquote{border-right:2px solid #ccc;margin-right:1.5rem;padding-right:1rem}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.css b/public/tinymce/skins/ui/oxide-dark/content.css
new file mode 100644
index 00000000..a6871c8c
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.css
@@ -0,0 +1,714 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ cursor: default;
+ display: inline-block;
+ height: 12px !important;
+ padding: 0 2px;
+ -webkit-user-modify: read-only;
+ -moz-user-modify: read-only;
+ -webkit-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: all;
+ user-select: all;
+ width: 8px !important;
+}
+.mce-content-body .mce-item-anchor[data-mce-selected] {
+ outline-offset: 1px;
+}
+.tox-comments-visible .tox-comment {
+ background-color: #fff0b7;
+}
+.tox-comments-visible .tox-comment--active {
+ background-color: #ffe168;
+}
+.tox-checklist > li:not(.tox-checklist--hidden) {
+ list-style: none;
+ margin: 0.25em 0;
+}
+.tox-checklist > li:not(.tox-checklist--hidden)::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+ cursor: pointer;
+ height: 1em;
+ margin-left: -1.5em;
+ margin-top: 0.125em;
+ position: absolute;
+ width: 1em;
+}
+.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+}
+[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
+ margin-left: 0;
+ margin-right: -1.5em;
+}
+/* stylelint-disable */
+/* http://prismjs.com/ */
+/**
+ * Dracula Theme originally by Zeno Rocha [@zenorocha]
+ * https://draculatheme.com/
+ *
+ * Ported for PrismJS by Albert Vallverdu [@byverdu]
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+ color: #f8f8f2;
+ background: none;
+ text-shadow: 0 1px rgba(0, 0, 0, 0.3);
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+ -moz-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+ border-radius: 0.3em;
+}
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+ background: #282a36;
+}
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ padding: 0.1em;
+ border-radius: 0.3em;
+ white-space: normal;
+}
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: #6272a4;
+}
+.token.punctuation {
+ color: #f8f8f2;
+}
+.namespace {
+ opacity: 0.7;
+}
+.token.property,
+.token.tag,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #ff79c6;
+}
+.token.boolean,
+.token.number {
+ color: #bd93f9;
+}
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #50fa7b;
+}
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string,
+.token.variable {
+ color: #f8f8f2;
+}
+.token.atrule,
+.token.attr-value,
+.token.function,
+.token.class-name {
+ color: #f1fa8c;
+}
+.token.keyword {
+ color: #8be9fd;
+}
+.token.regex,
+.token.important {
+ color: #ffb86c;
+}
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+.token.italic {
+ font-style: italic;
+}
+.token.entity {
+ cursor: help;
+}
+/* stylelint-enable */
+.mce-content-body {
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+}
+.mce-content-body .mce-visual-caret {
+ background-color: black;
+ background-color: currentColor;
+ position: absolute;
+}
+.mce-content-body .mce-visual-caret-hidden {
+ display: none;
+}
+.mce-content-body *[data-mce-caret] {
+ left: -1000px;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ right: auto;
+ top: 0;
+}
+.mce-content-body .mce-offscreen-selection {
+ left: -2000000px;
+ max-width: 1000000px;
+ position: absolute;
+}
+.mce-content-body *[contentEditable=false] {
+ cursor: default;
+}
+.mce-content-body *[contentEditable=true] {
+ cursor: text;
+}
+.tox-cursor-format-painter {
+ cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
+}
+.mce-content-body figure.align-left {
+ float: left;
+}
+.mce-content-body figure.align-right {
+ float: right;
+}
+.mce-content-body figure.image.align-center {
+ display: table;
+ margin-left: auto;
+ margin-right: auto;
+}
+.mce-preview-object {
+ border: 1px solid gray;
+ display: inline-block;
+ line-height: 0;
+ margin: 0 2px 0 2px;
+ position: relative;
+}
+.mce-preview-object .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-preview-object[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.mce-object {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ border: 1px dashed #aaa;
+}
+.mce-pagebreak {
+ border: 1px dashed #aaa;
+ cursor: default;
+ display: block;
+ height: 5px;
+ margin-top: 15px;
+ page-break-before: always;
+ width: 100%;
+}
+@media print {
+ .mce-pagebreak {
+ border: 0;
+ }
+}
+.tiny-pageembed .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tiny-pageembed[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.tiny-pageembed {
+ display: inline-block;
+ position: relative;
+}
+.tiny-pageembed--21by9,
+.tiny-pageembed--16by9,
+.tiny-pageembed--4by3,
+.tiny-pageembed--1by1 {
+ display: block;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+ width: 100%;
+}
+.tiny-pageembed--21by9 {
+ padding-top: 42.857143%;
+}
+.tiny-pageembed--16by9 {
+ padding-top: 56.25%;
+}
+.tiny-pageembed--4by3 {
+ padding-top: 75%;
+}
+.tiny-pageembed--1by1 {
+ padding-top: 100%;
+}
+.tiny-pageembed--21by9 iframe,
+.tiny-pageembed--16by9 iframe,
+.tiny-pageembed--4by3 iframe,
+.tiny-pageembed--1by1 iframe {
+ border: 0;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-content-body[data-mce-placeholder] {
+ position: relative;
+}
+.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ color: rgba(34, 47, 62, 0.7);
+ content: attr(data-mce-placeholder);
+ position: absolute;
+}
+.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ left: 1px;
+}
+.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
+ right: 1px;
+}
+.mce-content-body div.mce-resizehandle {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+ z-index: 10000;
+}
+.mce-content-body div.mce-resizehandle:hover {
+ background-color: #4099ff;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(1) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(2) {
+ cursor: nesw-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(3) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(4) {
+ cursor: nesw-resize;
+}
+.mce-content-body .mce-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.mce-content-body .mce-resize-helper {
+ background: #555;
+ background: rgba(0, 0, 0, 0.75);
+ border: 1px;
+ border-radius: 3px;
+ color: white;
+ display: none;
+ font-family: sans-serif;
+ font-size: 12px;
+ line-height: 14px;
+ margin: 5px 10px;
+ padding: 5px;
+ position: absolute;
+ white-space: nowrap;
+ z-index: 10002;
+}
+.tox-rtc-user-selection {
+ position: relative;
+}
+.tox-rtc-user-cursor {
+ bottom: 0;
+ cursor: default;
+ position: absolute;
+ top: 0;
+ width: 2px;
+}
+.tox-rtc-user-cursor::before {
+ background-color: inherit;
+ border-radius: 50%;
+ content: '';
+ display: block;
+ height: 8px;
+ position: absolute;
+ right: -3px;
+ top: -3px;
+ width: 8px;
+}
+.tox-rtc-user-cursor:hover::after {
+ background-color: inherit;
+ border-radius: 100px;
+ box-sizing: border-box;
+ color: #fff;
+ content: attr(data-user);
+ display: block;
+ font-size: 12px;
+ font-weight: bold;
+ left: -5px;
+ min-height: 8px;
+ min-width: 8px;
+ padding: 0 12px;
+ position: absolute;
+ top: -11px;
+ white-space: nowrap;
+ z-index: 1000;
+}
+.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
+ background-color: #2dc26b;
+}
+.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
+ background-color: #e03e2d;
+}
+.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
+ background-color: #f1c40f;
+}
+.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
+ background-color: #3598db;
+}
+.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
+ background-color: #b96ad9;
+}
+.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
+ background-color: #e67e23;
+}
+.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
+ background-color: #aaa69d;
+}
+.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
+ background-color: #f368e0;
+}
+.tox-rtc-remote-image {
+ background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
+ border: 1px solid #ccc;
+ min-height: 240px;
+ min-width: 320px;
+}
+.mce-match-marker {
+ background: #aaa;
+ color: #fff;
+}
+.mce-match-marker-selected {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::-moz-selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-content-body img[data-mce-selected],
+.mce-content-body video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[data-mce-selected],
+.mce-content-body table[data-mce-selected] {
+ outline: 3px solid #4099ff;
+}
+.mce-content-body hr[data-mce-selected] {
+ outline: 3px solid #4099ff;
+ outline-offset: 1px;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
+ outline: 3px solid #4099ff;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
+ outline: 3px solid #4099ff;
+}
+.mce-content-body *[contentEditable=false][data-mce-selected] {
+ cursor: not-allowed;
+ outline: 3px solid #4099ff;
+}
+.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
+.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
+ outline: none;
+}
+.mce-content-body *[data-mce-selected="inline-boundary"] {
+ background-color: #4099ff;
+}
+.mce-content-body .mce-edit-focus {
+ outline: 3px solid #4099ff;
+}
+.mce-content-body td[data-mce-selected],
+.mce-content-body th[data-mce-selected] {
+ position: relative;
+}
+.mce-content-body td[data-mce-selected]::-moz-selection,
+.mce-content-body th[data-mce-selected]::-moz-selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected]::selection,
+.mce-content-body th[data-mce-selected]::selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected] *,
+.mce-content-body th[data-mce-selected] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid transparent;
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: lighten;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.mce-content-body img::-moz-selection {
+ background: none;
+}
+.mce-content-body img::selection {
+ background: none;
+}
+.ephox-snooker-resizer-bar {
+ background-color: #4099ff;
+ opacity: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.ephox-snooker-resizer-cols {
+ cursor: col-resize;
+}
+.ephox-snooker-resizer-rows {
+ cursor: row-resize;
+}
+.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
+ opacity: 1;
+}
+.mce-spellchecker-word {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+ height: 2rem;
+}
+.mce-spellchecker-grammar {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+}
+.mce-toc {
+ border: 1px solid gray;
+}
+.mce-toc h2 {
+ margin: 4px;
+}
+.mce-toc li {
+ list-style-type: none;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] caption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks p,
+.mce-visualblocks h1,
+.mce-visualblocks h2,
+.mce-visualblocks h3,
+.mce-visualblocks h4,
+.mce-visualblocks h5,
+.mce-visualblocks h6,
+.mce-visualblocks div:not([data-mce-bogus]),
+.mce-visualblocks section,
+.mce-visualblocks article,
+.mce-visualblocks blockquote,
+.mce-visualblocks address,
+.mce-visualblocks pre,
+.mce-visualblocks figure,
+.mce-visualblocks figcaption,
+.mce-visualblocks hgroup,
+.mce-visualblocks aside,
+.mce-visualblocks ul,
+.mce-visualblocks ol,
+.mce-visualblocks dl {
+ background-repeat: no-repeat;
+ border: 1px dashed #bbb;
+ margin-left: 3px;
+ padding-top: 10px;
+}
+.mce-visualblocks p {
+ background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+.mce-visualblocks h1 {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+.mce-visualblocks h2 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+.mce-visualblocks h3 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+.mce-visualblocks h4 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+.mce-visualblocks h5 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+.mce-visualblocks h6 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+.mce-visualblocks div:not([data-mce-bogus]) {
+ background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+.mce-visualblocks section {
+ background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+.mce-visualblocks article {
+ background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+.mce-visualblocks blockquote {
+ background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+.mce-visualblocks address {
+ background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+.mce-visualblocks pre {
+ background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+.mce-visualblocks figure {
+ background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+.mce-visualblocks figcaption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks hgroup {
+ background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+.mce-visualblocks aside {
+ background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+.mce-visualblocks ul {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
+}
+.mce-visualblocks ol {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+}
+.mce-visualblocks dl {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+}
+.mce-visualblocks:not([dir=rtl]) p,
+.mce-visualblocks:not([dir=rtl]) h1,
+.mce-visualblocks:not([dir=rtl]) h2,
+.mce-visualblocks:not([dir=rtl]) h3,
+.mce-visualblocks:not([dir=rtl]) h4,
+.mce-visualblocks:not([dir=rtl]) h5,
+.mce-visualblocks:not([dir=rtl]) h6,
+.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
+.mce-visualblocks:not([dir=rtl]) section,
+.mce-visualblocks:not([dir=rtl]) article,
+.mce-visualblocks:not([dir=rtl]) blockquote,
+.mce-visualblocks:not([dir=rtl]) address,
+.mce-visualblocks:not([dir=rtl]) pre,
+.mce-visualblocks:not([dir=rtl]) figure,
+.mce-visualblocks:not([dir=rtl]) figcaption,
+.mce-visualblocks:not([dir=rtl]) hgroup,
+.mce-visualblocks:not([dir=rtl]) aside,
+.mce-visualblocks:not([dir=rtl]) ul,
+.mce-visualblocks:not([dir=rtl]) ol,
+.mce-visualblocks:not([dir=rtl]) dl {
+ margin-left: 3px;
+}
+.mce-visualblocks[dir=rtl] p,
+.mce-visualblocks[dir=rtl] h1,
+.mce-visualblocks[dir=rtl] h2,
+.mce-visualblocks[dir=rtl] h3,
+.mce-visualblocks[dir=rtl] h4,
+.mce-visualblocks[dir=rtl] h5,
+.mce-visualblocks[dir=rtl] h6,
+.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
+.mce-visualblocks[dir=rtl] section,
+.mce-visualblocks[dir=rtl] article,
+.mce-visualblocks[dir=rtl] blockquote,
+.mce-visualblocks[dir=rtl] address,
+.mce-visualblocks[dir=rtl] pre,
+.mce-visualblocks[dir=rtl] figure,
+.mce-visualblocks[dir=rtl] figcaption,
+.mce-visualblocks[dir=rtl] hgroup,
+.mce-visualblocks[dir=rtl] aside,
+.mce-visualblocks[dir=rtl] ul,
+.mce-visualblocks[dir=rtl] ol,
+.mce-visualblocks[dir=rtl] dl {
+ background-position-x: right;
+ margin-right: 3px;
+}
+.mce-nbsp,
+.mce-shy {
+ background: #aaa;
+}
+.mce-shy::after {
+ content: '-';
+}
+body {
+ font-family: sans-serif;
+}
+table {
+ border-collapse: collapse;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.css b/public/tinymce/skins/ui/oxide-dark/content.inline.css
new file mode 100644
index 00000000..df6ed08b
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.inline.css
@@ -0,0 +1,726 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ cursor: default;
+ display: inline-block;
+ height: 12px !important;
+ padding: 0 2px;
+ -webkit-user-modify: read-only;
+ -moz-user-modify: read-only;
+ -webkit-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: all;
+ user-select: all;
+ width: 8px !important;
+}
+.mce-content-body .mce-item-anchor[data-mce-selected] {
+ outline-offset: 1px;
+}
+.tox-comments-visible .tox-comment {
+ background-color: #fff0b7;
+}
+.tox-comments-visible .tox-comment--active {
+ background-color: #ffe168;
+}
+.tox-checklist > li:not(.tox-checklist--hidden) {
+ list-style: none;
+ margin: 0.25em 0;
+}
+.tox-checklist > li:not(.tox-checklist--hidden)::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+ cursor: pointer;
+ height: 1em;
+ margin-left: -1.5em;
+ margin-top: 0.125em;
+ position: absolute;
+ width: 1em;
+}
+.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+}
+[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
+ margin-left: 0;
+ margin-right: -1.5em;
+}
+/* stylelint-disable */
+/* http://prismjs.com/ */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ background: none;
+ text-shadow: 0 1px white;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ font-size: 1em;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+ -moz-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+@media print {
+ code[class*="language-"],
+ pre[class*="language-"] {
+ text-shadow: none;
+ }
+}
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+}
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+ background: #f5f2f0;
+}
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ padding: 0.1em;
+ border-radius: 0.3em;
+ white-space: normal;
+}
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray;
+}
+.token.punctuation {
+ color: #999;
+}
+.namespace {
+ opacity: 0.7;
+}
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905;
+}
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690;
+}
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #9a6e3a;
+ background: hsla(0, 0%, 100%, 0.5);
+}
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a;
+}
+.token.function,
+.token.class-name {
+ color: #DD4A68;
+}
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90;
+}
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+.token.italic {
+ font-style: italic;
+}
+.token.entity {
+ cursor: help;
+}
+/* stylelint-enable */
+.mce-content-body {
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+}
+.mce-content-body .mce-visual-caret {
+ background-color: black;
+ background-color: currentColor;
+ position: absolute;
+}
+.mce-content-body .mce-visual-caret-hidden {
+ display: none;
+}
+.mce-content-body *[data-mce-caret] {
+ left: -1000px;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ right: auto;
+ top: 0;
+}
+.mce-content-body .mce-offscreen-selection {
+ left: -2000000px;
+ max-width: 1000000px;
+ position: absolute;
+}
+.mce-content-body *[contentEditable=false] {
+ cursor: default;
+}
+.mce-content-body *[contentEditable=true] {
+ cursor: text;
+}
+.tox-cursor-format-painter {
+ cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
+}
+.mce-content-body figure.align-left {
+ float: left;
+}
+.mce-content-body figure.align-right {
+ float: right;
+}
+.mce-content-body figure.image.align-center {
+ display: table;
+ margin-left: auto;
+ margin-right: auto;
+}
+.mce-preview-object {
+ border: 1px solid gray;
+ display: inline-block;
+ line-height: 0;
+ margin: 0 2px 0 2px;
+ position: relative;
+}
+.mce-preview-object .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-preview-object[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.mce-object {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ border: 1px dashed #aaa;
+}
+.mce-pagebreak {
+ border: 1px dashed #aaa;
+ cursor: default;
+ display: block;
+ height: 5px;
+ margin-top: 15px;
+ page-break-before: always;
+ width: 100%;
+}
+@media print {
+ .mce-pagebreak {
+ border: 0;
+ }
+}
+.tiny-pageembed .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tiny-pageembed[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.tiny-pageembed {
+ display: inline-block;
+ position: relative;
+}
+.tiny-pageembed--21by9,
+.tiny-pageembed--16by9,
+.tiny-pageembed--4by3,
+.tiny-pageembed--1by1 {
+ display: block;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+ width: 100%;
+}
+.tiny-pageembed--21by9 {
+ padding-top: 42.857143%;
+}
+.tiny-pageembed--16by9 {
+ padding-top: 56.25%;
+}
+.tiny-pageembed--4by3 {
+ padding-top: 75%;
+}
+.tiny-pageembed--1by1 {
+ padding-top: 100%;
+}
+.tiny-pageembed--21by9 iframe,
+.tiny-pageembed--16by9 iframe,
+.tiny-pageembed--4by3 iframe,
+.tiny-pageembed--1by1 iframe {
+ border: 0;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-content-body[data-mce-placeholder] {
+ position: relative;
+}
+.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ color: rgba(34, 47, 62, 0.7);
+ content: attr(data-mce-placeholder);
+ position: absolute;
+}
+.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ left: 1px;
+}
+.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
+ right: 1px;
+}
+.mce-content-body div.mce-resizehandle {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+ z-index: 10000;
+}
+.mce-content-body div.mce-resizehandle:hover {
+ background-color: #4099ff;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(1) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(2) {
+ cursor: nesw-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(3) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(4) {
+ cursor: nesw-resize;
+}
+.mce-content-body .mce-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.mce-content-body .mce-resize-helper {
+ background: #555;
+ background: rgba(0, 0, 0, 0.75);
+ border: 1px;
+ border-radius: 3px;
+ color: white;
+ display: none;
+ font-family: sans-serif;
+ font-size: 12px;
+ line-height: 14px;
+ margin: 5px 10px;
+ padding: 5px;
+ position: absolute;
+ white-space: nowrap;
+ z-index: 10002;
+}
+.tox-rtc-user-selection {
+ position: relative;
+}
+.tox-rtc-user-cursor {
+ bottom: 0;
+ cursor: default;
+ position: absolute;
+ top: 0;
+ width: 2px;
+}
+.tox-rtc-user-cursor::before {
+ background-color: inherit;
+ border-radius: 50%;
+ content: '';
+ display: block;
+ height: 8px;
+ position: absolute;
+ right: -3px;
+ top: -3px;
+ width: 8px;
+}
+.tox-rtc-user-cursor:hover::after {
+ background-color: inherit;
+ border-radius: 100px;
+ box-sizing: border-box;
+ color: #fff;
+ content: attr(data-user);
+ display: block;
+ font-size: 12px;
+ font-weight: bold;
+ left: -5px;
+ min-height: 8px;
+ min-width: 8px;
+ padding: 0 12px;
+ position: absolute;
+ top: -11px;
+ white-space: nowrap;
+ z-index: 1000;
+}
+.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
+ background-color: #2dc26b;
+}
+.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
+ background-color: #e03e2d;
+}
+.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
+ background-color: #f1c40f;
+}
+.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
+ background-color: #3598db;
+}
+.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
+ background-color: #b96ad9;
+}
+.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
+ background-color: #e67e23;
+}
+.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
+ background-color: #aaa69d;
+}
+.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
+ background-color: #f368e0;
+}
+.tox-rtc-remote-image {
+ background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
+ border: 1px solid #ccc;
+ min-height: 240px;
+ min-width: 320px;
+}
+.mce-match-marker {
+ background: #aaa;
+ color: #fff;
+}
+.mce-match-marker-selected {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::-moz-selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-content-body img[data-mce-selected],
+.mce-content-body video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[data-mce-selected],
+.mce-content-body table[data-mce-selected] {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body hr[data-mce-selected] {
+ outline: 3px solid #b4d7ff;
+ outline-offset: 1px;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body *[contentEditable=false][data-mce-selected] {
+ cursor: not-allowed;
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
+.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
+ outline: none;
+}
+.mce-content-body *[data-mce-selected="inline-boundary"] {
+ background-color: #b4d7ff;
+}
+.mce-content-body .mce-edit-focus {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body td[data-mce-selected],
+.mce-content-body th[data-mce-selected] {
+ position: relative;
+}
+.mce-content-body td[data-mce-selected]::-moz-selection,
+.mce-content-body th[data-mce-selected]::-moz-selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected]::selection,
+.mce-content-body th[data-mce-selected]::selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected] *,
+.mce-content-body th[data-mce-selected] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid rgba(180, 215, 255, 0.7);
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: multiply;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.mce-content-body img::-moz-selection {
+ background: none;
+}
+.mce-content-body img::selection {
+ background: none;
+}
+.ephox-snooker-resizer-bar {
+ background-color: #b4d7ff;
+ opacity: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.ephox-snooker-resizer-cols {
+ cursor: col-resize;
+}
+.ephox-snooker-resizer-rows {
+ cursor: row-resize;
+}
+.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
+ opacity: 1;
+}
+.mce-spellchecker-word {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+ height: 2rem;
+}
+.mce-spellchecker-grammar {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+}
+.mce-toc {
+ border: 1px solid gray;
+}
+.mce-toc h2 {
+ margin: 4px;
+}
+.mce-toc li {
+ list-style-type: none;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] caption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks p,
+.mce-visualblocks h1,
+.mce-visualblocks h2,
+.mce-visualblocks h3,
+.mce-visualblocks h4,
+.mce-visualblocks h5,
+.mce-visualblocks h6,
+.mce-visualblocks div:not([data-mce-bogus]),
+.mce-visualblocks section,
+.mce-visualblocks article,
+.mce-visualblocks blockquote,
+.mce-visualblocks address,
+.mce-visualblocks pre,
+.mce-visualblocks figure,
+.mce-visualblocks figcaption,
+.mce-visualblocks hgroup,
+.mce-visualblocks aside,
+.mce-visualblocks ul,
+.mce-visualblocks ol,
+.mce-visualblocks dl {
+ background-repeat: no-repeat;
+ border: 1px dashed #bbb;
+ margin-left: 3px;
+ padding-top: 10px;
+}
+.mce-visualblocks p {
+ background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+.mce-visualblocks h1 {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+.mce-visualblocks h2 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+.mce-visualblocks h3 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+.mce-visualblocks h4 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+.mce-visualblocks h5 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+.mce-visualblocks h6 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+.mce-visualblocks div:not([data-mce-bogus]) {
+ background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+.mce-visualblocks section {
+ background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+.mce-visualblocks article {
+ background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+.mce-visualblocks blockquote {
+ background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+.mce-visualblocks address {
+ background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+.mce-visualblocks pre {
+ background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+.mce-visualblocks figure {
+ background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+.mce-visualblocks figcaption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks hgroup {
+ background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+.mce-visualblocks aside {
+ background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+.mce-visualblocks ul {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
+}
+.mce-visualblocks ol {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+}
+.mce-visualblocks dl {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+}
+.mce-visualblocks:not([dir=rtl]) p,
+.mce-visualblocks:not([dir=rtl]) h1,
+.mce-visualblocks:not([dir=rtl]) h2,
+.mce-visualblocks:not([dir=rtl]) h3,
+.mce-visualblocks:not([dir=rtl]) h4,
+.mce-visualblocks:not([dir=rtl]) h5,
+.mce-visualblocks:not([dir=rtl]) h6,
+.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
+.mce-visualblocks:not([dir=rtl]) section,
+.mce-visualblocks:not([dir=rtl]) article,
+.mce-visualblocks:not([dir=rtl]) blockquote,
+.mce-visualblocks:not([dir=rtl]) address,
+.mce-visualblocks:not([dir=rtl]) pre,
+.mce-visualblocks:not([dir=rtl]) figure,
+.mce-visualblocks:not([dir=rtl]) figcaption,
+.mce-visualblocks:not([dir=rtl]) hgroup,
+.mce-visualblocks:not([dir=rtl]) aside,
+.mce-visualblocks:not([dir=rtl]) ul,
+.mce-visualblocks:not([dir=rtl]) ol,
+.mce-visualblocks:not([dir=rtl]) dl {
+ margin-left: 3px;
+}
+.mce-visualblocks[dir=rtl] p,
+.mce-visualblocks[dir=rtl] h1,
+.mce-visualblocks[dir=rtl] h2,
+.mce-visualblocks[dir=rtl] h3,
+.mce-visualblocks[dir=rtl] h4,
+.mce-visualblocks[dir=rtl] h5,
+.mce-visualblocks[dir=rtl] h6,
+.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
+.mce-visualblocks[dir=rtl] section,
+.mce-visualblocks[dir=rtl] article,
+.mce-visualblocks[dir=rtl] blockquote,
+.mce-visualblocks[dir=rtl] address,
+.mce-visualblocks[dir=rtl] pre,
+.mce-visualblocks[dir=rtl] figure,
+.mce-visualblocks[dir=rtl] figcaption,
+.mce-visualblocks[dir=rtl] hgroup,
+.mce-visualblocks[dir=rtl] aside,
+.mce-visualblocks[dir=rtl] ul,
+.mce-visualblocks[dir=rtl] ol,
+.mce-visualblocks[dir=rtl] dl {
+ background-position-x: right;
+ margin-right: 3px;
+}
+.mce-nbsp,
+.mce-shy {
+ background: #aaa;
+}
+.mce-shy::after {
+ content: '-';
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.inline.min.css b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css
new file mode 100644
index 00000000..0a3d965c
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.inline.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.min.css b/public/tinymce/skins/ui/oxide-dark/content.min.css
new file mode 100644
index 00000000..07067404
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%236d737b%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#282a36}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6272a4}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#ff79c6}.token.boolean,.token.number{color:#bd93f9}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#50fa7b}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#f1fa8c}.token.keyword{color:#8be9fd}.token.important,.token.regex{color:#ffb86c}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%20fill%3D%22%23cccccc%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #4099ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #4099ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #4099ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #4099ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #4099ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#4099ff}.mce-content-body .mce-edit-focus{outline:3px solid #4099ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid transparent;bottom:-1px;content:'';left:-1px;mix-blend-mode:lighten;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#4099ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.css
new file mode 100644
index 00000000..4bdb8bab
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.css
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
+ /* Note: this file is used inside the content, so isn't part of theming */
+ background-color: green;
+ display: inline-block;
+ opacity: 0.5;
+ position: absolute;
+}
+body {
+ -webkit-text-size-adjust: none;
+}
+body img {
+ /* this is related to the content margin */
+ max-width: 96vw;
+}
+body table img {
+ max-width: 95%;
+}
+body {
+ font-family: sans-serif;
+}
+table {
+ border-collapse: collapse;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css
new file mode 100644
index 00000000..35f7dc08
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/content.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff
new file mode 100644
index 00000000..1e3be038
Binary files /dev/null and b/public/tinymce/skins/ui/oxide-dark/fonts/tinymce-mobile.woff differ
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.css b/public/tinymce/skins/ui/oxide-dark/skin.css
new file mode 100644
index 00000000..769655f3
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.css
@@ -0,0 +1,3034 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox {
+ box-shadow: none;
+ box-sizing: content-box;
+ color: #2A3746;
+ cursor: auto;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: normal;
+ -webkit-tap-highlight-color: transparent;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ vertical-align: initial;
+ white-space: normal;
+}
+.tox *:not(svg):not(rect) {
+ box-sizing: inherit;
+ color: inherit;
+ cursor: inherit;
+ direction: inherit;
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ line-height: inherit;
+ -webkit-tap-highlight-color: inherit;
+ text-align: inherit;
+ text-decoration: inherit;
+ text-shadow: inherit;
+ text-transform: inherit;
+ vertical-align: inherit;
+ white-space: inherit;
+}
+.tox *:not(svg):not(rect) {
+ /* stylelint-disable-line no-duplicate-selectors */
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ float: none;
+ height: auto;
+ margin: 0;
+ max-width: none;
+ outline: 0;
+ padding: 0;
+ position: static;
+ width: auto;
+}
+.tox:not([dir=rtl]) {
+ direction: ltr;
+ text-align: left;
+}
+.tox[dir=rtl] {
+ direction: rtl;
+ text-align: right;
+}
+.tox-tinymce {
+ border: 1px solid #000000;
+ border-radius: 0;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ overflow: hidden;
+ position: relative;
+ visibility: inherit !important;
+}
+.tox-tinymce-inline {
+ border: none;
+ box-shadow: none;
+}
+.tox-tinymce-inline .tox-editor-header {
+ background-color: transparent;
+ border: 1px solid #000000;
+ border-radius: 0;
+ box-shadow: none;
+}
+.tox-tinymce-aux {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ z-index: 1300;
+}
+.tox-tinymce *:focus,
+.tox-tinymce-aux *:focus {
+ outline: none;
+}
+button::-moz-focus-inner {
+ border: 0;
+}
+.tox .accessibility-issue__header {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description {
+ align-items: stretch;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .accessibility-issue__description > div {
+ padding-bottom: 4px;
+}
+.tox .accessibility-issue__description > div > div {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description > *:last-child:not(:only-child) {
+ border-color: #000000;
+ border-style: solid;
+}
+.tox .accessibility-issue__repair {
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {
+ background-color: rgba(32, 122, 183, 0.5);
+ border-color: #207ab7;
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {
+ border-color: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {
+ background-color: rgba(255, 165, 0, 0.5);
+ border-color: rgba(255, 165, 0, 0.8);
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {
+ border-color: rgba(255, 165, 0, 0.8);
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {
+ background-color: rgba(204, 0, 0, 0.5);
+ border-color: rgba(204, 0, 0, 0.8);
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {
+ border-color: rgba(204, 0, 0, 0.8);
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {
+ background-color: rgba(120, 171, 70, 0.5);
+ border-color: rgba(120, 171, 70, 0.8);
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {
+ border-color: rgba(120, 171, 70, 0.8);
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {
+ color: #fff;
+}
+.tox .tox-dialog__body-content .accessibility-issue__header h1,
+.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {
+ margin-top: 0;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-left: auto;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 4px 4px 8px;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-left-width: 1px;
+ padding-left: 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-right: auto;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 8px 4px 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-right-width: 1px;
+ padding-right: 4px;
+}
+.tox .tox-anchorbar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-bar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-button {
+ background-color: #207ab7;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #207ab7;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ line-height: 24px;
+ margin: 0;
+ outline: none;
+ padding: 4px 16px;
+ text-align: center;
+ text-decoration: none;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-button[disabled] {
+ background-color: #207ab7;
+ background-image: none;
+ border-color: #207ab7;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-button:focus:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:hover:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:active:not(:disabled) {
+ background-color: #185d8c;
+ background-image: none;
+ border-color: #185d8c;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary {
+ background-color: #3d546f;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #3d546f;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ color: #fff;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ outline: none;
+ padding: 4px 16px;
+ text-decoration: none;
+ text-transform: none;
+}
+.tox .tox-button--secondary[disabled] {
+ background-color: #3d546f;
+ background-image: none;
+ border-color: #3d546f;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-button--secondary:focus:not(:disabled) {
+ background-color: #34485f;
+ background-image: none;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary:hover:not(:disabled) {
+ background-color: #34485f;
+ background-image: none;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary:active:not(:disabled) {
+ background-color: #2b3b4e;
+ background-image: none;
+ border-color: #2b3b4e;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--icon,
+.tox .tox-button.tox-button--icon,
+.tox .tox-button.tox-button--secondary.tox-button--icon {
+ padding: 4px;
+}
+.tox .tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {
+ display: block;
+ fill: currentColor;
+}
+.tox .tox-button-link {
+ background: 0;
+ border: none;
+ box-sizing: border-box;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+.tox .tox-button-link--sm {
+ font-size: 14px;
+}
+.tox .tox-button--naked {
+ background-color: transparent;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #fff;
+}
+.tox .tox-button--naked[disabled] {
+ background-color: #3d546f;
+ border-color: #3d546f;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-button--naked:hover:not(:disabled) {
+ background-color: #34485f;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--naked:focus:not(:disabled) {
+ background-color: #34485f;
+ border-color: #34485f;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--naked:active:not(:disabled) {
+ background-color: #2b3b4e;
+ border-color: #2b3b4e;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--naked .tox-icon svg {
+ fill: currentColor;
+}
+.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
+ color: #fff;
+}
+.tox .tox-checkbox {
+ align-items: center;
+ border-radius: 3px;
+ cursor: pointer;
+ display: flex;
+ height: 36px;
+ min-width: 36px;
+}
+.tox .tox-checkbox__input {
+ /* Hide from view but visible to screen readers */
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ top: auto;
+ width: 1px;
+}
+.tox .tox-checkbox__icons {
+ align-items: center;
+ border-radius: 3px;
+ box-shadow: 0 0 0 2px transparent;
+ box-sizing: content-box;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ padding: calc(4px - 1px);
+ width: 24px;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: block;
+ fill: rgba(255, 255, 255, 0.2);
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox--disabled {
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
+ border-radius: 3px;
+ box-shadow: inset 0 0 0 1px #207ab7;
+ padding: calc(4px - 1px);
+}
+.tox:not([dir=rtl]) .tox-checkbox__label {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-checkbox__input {
+ left: -10000px;
+}
+.tox:not([dir=rtl]) .tox-bar .tox-checkbox {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-checkbox__label {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-checkbox__input {
+ right: -10000px;
+}
+.tox[dir=rtl] .tox-bar .tox-checkbox {
+ margin-right: 4px;
+}
+.tox {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox .tox-collection--toolbar .tox-collection__group {
+ display: flex;
+ padding: 0;
+}
+.tox .tox-collection--grid .tox-collection__group {
+ display: flex;
+ flex-wrap: wrap;
+ max-height: 208px;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+}
+.tox .tox-collection--list .tox-collection__group {
+ border-bottom-width: 0;
+ border-color: #1a1a1a;
+ border-left-width: 0;
+ border-right-width: 0;
+ border-style: solid;
+ border-top-width: 1px;
+ padding: 4px 0;
+}
+.tox .tox-collection--list .tox-collection__group:first-child {
+ border-top-width: 0;
+}
+.tox .tox-collection__group-heading {
+ background-color: #333333;
+ color: #fff;
+ cursor: default;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: normal;
+ margin-bottom: 4px;
+ margin-top: -4px;
+ padding: 4px 8px;
+ text-transform: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection__item {
+ align-items: center;
+ color: #fff;
+ cursor: pointer;
+ display: flex;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection--list .tox-collection__item {
+ padding: 4px 8px;
+}
+.tox .tox-collection--toolbar .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--grid .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--list .tox-collection__item--enabled {
+ background-color: #2b3b4e;
+ color: #fff;
+}
+.tox .tox-collection--list .tox-collection__item--active {
+ background-color: #4a5562;
+}
+.tox .tox-collection--toolbar .tox-collection__item--enabled {
+ background-color: #757d87;
+ color: #fff;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active {
+ background-color: #4a5562;
+}
+.tox .tox-collection--grid .tox-collection__item--enabled {
+ background-color: #757d87;
+ color: #fff;
+}
+.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ background-color: #4a5562;
+ color: #fff;
+}
+.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #fff;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #fff;
+}
+.tox .tox-collection__item--state-disabled {
+ background-color: transparent;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-collection__item-icon,
+.tox .tox-collection__item-checkmark {
+ align-items: center;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ width: 24px;
+}
+.tox .tox-collection__item-icon svg,
+.tox .tox-collection__item-checkmark svg {
+ fill: currentColor;
+}
+.tox .tox-collection--toolbar-lg .tox-collection__item-icon {
+ height: 48px;
+ width: 48px;
+}
+.tox .tox-collection__item-label {
+ color: currentColor;
+ display: inline-block;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 24px;
+ text-transform: none;
+ word-break: break-all;
+}
+.tox .tox-collection__item-accessory {
+ color: rgba(255, 255, 255, 0.5);
+ display: inline-block;
+ font-size: 14px;
+ height: 24px;
+ line-height: 24px;
+ text-transform: none;
+}
+.tox .tox-collection__item-caret {
+ align-items: center;
+ display: flex;
+ min-height: 24px;
+}
+.tox .tox-collection__item-caret::after {
+ content: '';
+ font-size: 0;
+ min-height: inherit;
+}
+.tox .tox-collection__item-caret svg {
+ fill: #fff;
+}
+.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {
+ display: none;
+}
+.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {
+ display: none;
+}
+.tox .tox-collection--horizontal {
+ background-color: #2b3b4e;
+ border: 1px solid #1a1a1a;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+ margin-bottom: 0;
+ overflow-x: auto;
+ padding: 0;
+}
+.tox .tox-collection--horizontal .tox-collection__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: nowrap;
+ margin: 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item {
+ height: 34px;
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item-label {
+ white-space: nowrap;
+}
+.tox .tox-collection--horizontal .tox-collection__item-caret {
+ margin-left: 4px;
+}
+.tox .tox-collection__item-container {
+ display: flex;
+}
+.tox .tox-collection__item-container--row {
+ align-items: center;
+ flex: 1 1 auto;
+ flex-direction: row;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {
+ margin-right: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {
+ justify-content: flex-end;
+ margin-left: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {
+ align-items: flex-start;
+ margin-bottom: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {
+ align-items: center;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {
+ align-items: flex-end;
+ margin-top: auto;
+}
+.tox .tox-collection__item-container--column {
+ -ms-grid-row-align: center;
+ align-self: center;
+ flex: 1 1 auto;
+ flex-direction: column;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {
+ align-items: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {
+ align-items: flex-end;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {
+ align-self: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {
+ -ms-grid-row-align: center;
+ align-self: center;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {
+ align-self: flex-end;
+}
+.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-right: 1px solid #000000;
+}
+.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-collection__item-accessory {
+ margin-left: 16px;
+ text-align: right;
+}
+.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {
+ margin-left: 16px;
+}
+.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-left: 1px solid #000000;
+}
+.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-collection__item-icon-rtl {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {
+ transform: rotateY(180deg);
+}
+.tox[dir=rtl] .tox-collection__item-accessory {
+ margin-right: 16px;
+ text-align: left;
+}
+.tox[dir=rtl] .tox-collection .tox-collection__item-caret {
+ margin-right: 16px;
+ transform: rotateY(180deg);
+}
+.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {
+ margin-right: 4px;
+}
+.tox .tox-color-picker-container {
+ display: flex;
+ flex-direction: row;
+ height: 225px;
+ margin: 0;
+}
+.tox .tox-sv-palette {
+ box-sizing: border-box;
+ display: flex;
+ height: 100%;
+}
+.tox .tox-sv-palette-spectrum {
+ height: 100%;
+}
+.tox .tox-sv-palette,
+.tox .tox-sv-palette-spectrum {
+ width: 225px;
+}
+.tox .tox-sv-palette-thumb {
+ background: none;
+ border: 1px solid black;
+ border-radius: 50%;
+ box-sizing: content-box;
+ height: 12px;
+ position: absolute;
+ width: 12px;
+}
+.tox .tox-sv-palette-inner-thumb {
+ border: 1px solid white;
+ border-radius: 50%;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox .tox-hue-slider {
+ box-sizing: border-box;
+ height: 100%;
+ width: 25px;
+}
+.tox .tox-hue-slider-spectrum {
+ background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);
+ height: 100%;
+ width: 100%;
+}
+.tox .tox-hue-slider,
+.tox .tox-hue-slider-spectrum {
+ width: 20px;
+}
+.tox .tox-hue-slider-thumb {
+ background: white;
+ border: 1px solid black;
+ box-sizing: content-box;
+ height: 4px;
+ width: 100%;
+}
+.tox .tox-rgb-form {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+.tox .tox-rgb-form div {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 5px;
+ width: inherit;
+}
+.tox .tox-rgb-form input {
+ width: 6em;
+}
+.tox .tox-rgb-form input.tox-invalid {
+ /* Need !important to override Chrome's focus styling unfortunately */
+ border: 1px solid red !important;
+}
+.tox .tox-rgb-form .tox-rgba-preview {
+ border: 1px solid black;
+ flex-grow: 2;
+ margin-bottom: 0;
+}
+.tox:not([dir=rtl]) .tox-sv-palette {
+ margin-right: 15px;
+}
+.tox:not([dir=rtl]) .tox-hue-slider {
+ margin-right: 15px;
+}
+.tox:not([dir=rtl]) .tox-hue-slider-thumb {
+ margin-left: -1px;
+}
+.tox:not([dir=rtl]) .tox-rgb-form label {
+ margin-right: 0.5em;
+}
+.tox[dir=rtl] .tox-sv-palette {
+ margin-left: 15px;
+}
+.tox[dir=rtl] .tox-hue-slider {
+ margin-left: 15px;
+}
+.tox[dir=rtl] .tox-hue-slider-thumb {
+ margin-right: -1px;
+}
+.tox[dir=rtl] .tox-rgb-form label {
+ margin-left: 0.5em;
+}
+.tox .tox-toolbar .tox-swatches,
+.tox .tox-toolbar__primary .tox-swatches,
+.tox .tox-toolbar__overflow .tox-swatches {
+ margin: 2px 0 3px 4px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {
+ border: 0;
+ margin: -4px 0;
+}
+.tox .tox-swatches__row {
+ display: flex;
+}
+.tox .tox-swatch {
+ height: 30px;
+ transition: transform 0.15s, box-shadow 0.15s;
+ width: 30px;
+}
+.tox .tox-swatch:hover,
+.tox .tox-swatch:focus {
+ box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;
+ transform: scale(0.8);
+}
+.tox .tox-swatch--remove {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-swatch--remove svg path {
+ stroke: #e74c3c;
+}
+.tox .tox-swatches__picker-btn {
+ align-items: center;
+ background-color: transparent;
+ border: 0;
+ cursor: pointer;
+ display: flex;
+ height: 30px;
+ justify-content: center;
+ outline: none;
+ padding: 0;
+ width: 30px;
+}
+.tox .tox-swatches__picker-btn svg {
+ height: 24px;
+ width: 24px;
+}
+.tox .tox-swatches__picker-btn:hover {
+ background: #4a5562;
+}
+.tox:not([dir=rtl]) .tox-swatches__picker-btn {
+ margin-left: auto;
+}
+.tox[dir=rtl] .tox-swatches__picker-btn {
+ margin-right: auto;
+}
+.tox .tox-comment-thread {
+ background: #2b3b4e;
+ position: relative;
+}
+.tox .tox-comment-thread > *:not(:first-child) {
+ margin-top: 8px;
+}
+.tox .tox-comment {
+ background: #2b3b4e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);
+ padding: 8px 8px 16px 8px;
+ position: relative;
+}
+.tox .tox-comment__header {
+ align-items: center;
+ color: #fff;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .tox-comment__date {
+ color: rgba(255, 255, 255, 0.5);
+ font-size: 12px;
+}
+.tox .tox-comment__body {
+ color: #fff;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin-top: 8px;
+ position: relative;
+ text-transform: initial;
+}
+.tox .tox-comment__body textarea {
+ resize: none;
+ white-space: normal;
+ width: 100%;
+}
+.tox .tox-comment__expander {
+ padding-top: 8px;
+}
+.tox .tox-comment__expander p {
+ color: rgba(255, 255, 255, 0.5);
+ font-size: 14px;
+ font-style: normal;
+}
+.tox .tox-comment__body p {
+ margin: 0;
+}
+.tox .tox-comment__buttonspacing {
+ padding-top: 16px;
+ text-align: center;
+}
+.tox .tox-comment-thread__overlay::after {
+ background: #2b3b4e;
+ bottom: 0;
+ content: "";
+ display: flex;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__reply {
+ display: flex;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 8px;
+}
+.tox .tox-comment__reply > *:first-child {
+ margin-bottom: 8px;
+ width: 100%;
+}
+.tox .tox-comment__edit {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 16px;
+}
+.tox .tox-comment__gradient::after {
+ background: linear-gradient(rgba(43, 59, 78, 0), #2b3b4e);
+ bottom: 0;
+ content: "";
+ display: block;
+ height: 5em;
+ margin-top: -40px;
+ position: absolute;
+ width: 100%;
+}
+.tox .tox-comment__overlay {
+ background: #2b3b4e;
+ bottom: 0;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ text-align: center;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__loading-text {
+ align-items: center;
+ color: #fff;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+}
+.tox .tox-comment__loading-text > div {
+ padding-bottom: 16px;
+}
+.tox .tox-comment__overlaytext {
+ bottom: 0;
+ flex-direction: column;
+ font-size: 14px;
+ left: 0;
+ padding: 1em;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 10;
+}
+.tox .tox-comment__overlaytext p {
+ background-color: #2b3b4e;
+ box-shadow: 0 0 8px 8px #2b3b4e;
+ color: #fff;
+ text-align: center;
+}
+.tox .tox-comment__overlaytext div:nth-of-type(2) {
+ font-size: 0.8em;
+}
+.tox .tox-comment__busy-spinner {
+ align-items: center;
+ background-color: #2b3b4e;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 20;
+}
+.tox .tox-comment__scroll {
+ display: flex;
+ flex-direction: column;
+ flex-shrink: 1;
+ overflow: auto;
+}
+.tox .tox-conversations {
+ margin: 8px;
+}
+.tox:not([dir=rtl]) .tox-comment__edit {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,
+.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,
+.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-comment__edit {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,
+.tox[dir=rtl] .tox-comment__edit > *:last-child,
+.tox[dir=rtl] .tox-comment__reply > *:last-child {
+ margin-right: 8px;
+}
+.tox .tox-user {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-user__avatar svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-user__name {
+ color: rgba(255, 255, 255, 0.5);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+.tox:not([dir=rtl]) .tox-user__avatar svg {
+ margin-right: 8px;
+}
+.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-user__avatar svg {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-user__avatar + .tox-user__name {
+ margin-right: 8px;
+}
+.tox .tox-dialog-wrap {
+ align-items: center;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 1100;
+}
+.tox .tox-dialog-wrap__backdrop {
+ background-color: rgba(34, 47, 62, 0.75);
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1;
+}
+.tox .tox-dialog-wrap__backdrop--opaque {
+ background-color: #222f3e;
+}
+.tox .tox-dialog {
+ background-color: #2b3b4e;
+ border-color: #000000;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: 0 16px 16px -10px rgba(42, 55, 70, 0.15), 0 0 40px 1px rgba(42, 55, 70, 0.15);
+ display: flex;
+ flex-direction: column;
+ max-height: 100%;
+ max-width: 480px;
+ overflow: hidden;
+ position: relative;
+ width: 95vw;
+ z-index: 2;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog {
+ align-self: flex-start;
+ margin: 8px auto;
+ width: calc(100vw - 16px);
+ }
+}
+.tox .tox-dialog-inline {
+ z-index: 1100;
+}
+.tox .tox-dialog__header {
+ align-items: center;
+ background-color: #2b3b4e;
+ border-bottom: none;
+ color: #fff;
+ display: flex;
+ font-size: 16px;
+ justify-content: space-between;
+ padding: 8px 16px 0 16px;
+ position: relative;
+}
+.tox .tox-dialog__header .tox-button {
+ z-index: 1;
+}
+.tox .tox-dialog__draghandle {
+ cursor: grab;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tox .tox-dialog__draghandle:active {
+ cursor: grabbing;
+}
+.tox .tox-dialog__dismiss {
+ margin-left: auto;
+}
+.tox .tox-dialog__title {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ text-transform: none;
+}
+.tox .tox-dialog__body {
+ color: #fff;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ min-width: 0;
+ text-align: left;
+ text-transform: none;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body {
+ flex-direction: column;
+ }
+}
+.tox .tox-dialog__body-nav {
+ align-items: flex-start;
+ display: flex;
+ flex-direction: column;
+ padding: 16px 16px;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {
+ flex-direction: row;
+ -webkit-overflow-scrolling: touch;
+ overflow-x: auto;
+ padding-bottom: 0;
+ }
+}
+.tox .tox-dialog__body-nav-item {
+ border-bottom: 2px solid transparent;
+ color: rgba(255, 255, 255, 0.5);
+ display: inline-block;
+ font-size: 14px;
+ line-height: 1.3;
+ margin-bottom: 8px;
+ text-decoration: none;
+ white-space: nowrap;
+}
+.tox .tox-dialog__body-nav-item:focus {
+ background-color: rgba(32, 122, 183, 0.1);
+}
+.tox .tox-dialog__body-nav-item--active {
+ border-bottom: 2px solid #207ab7;
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content {
+ box-sizing: border-box;
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+ max-height: 650px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ padding: 16px 16px;
+}
+.tox .tox-dialog__body-content > * {
+ margin-bottom: 0;
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content > *:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content a {
+ color: #207ab7;
+ cursor: pointer;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:hover,
+.tox .tox-dialog__body-content a:focus {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:active {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content svg {
+ fill: #fff;
+}
+.tox .tox-dialog__body-content ul {
+ display: block;
+ list-style-type: disc;
+ margin-bottom: 16px;
+ -webkit-margin-end: 0;
+ margin-inline-end: 0;
+ -webkit-margin-start: 0;
+ margin-inline-start: 0;
+ -webkit-padding-start: 2.5rem;
+ padding-inline-start: 2.5rem;
+}
+.tox .tox-dialog__body-content .tox-form__group h1 {
+ color: #fff;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group h2 {
+ color: #fff;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group p {
+ margin-bottom: 16px;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:first-child,
+.tox .tox-dialog__body-content .tox-form__group h2:first-child,
+.tox .tox-dialog__body-content .tox-form__group p:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:last-child,
+.tox .tox-dialog__body-content .tox-form__group h2:last-child,
+.tox .tox-dialog__body-content .tox-form__group p:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:only-child,
+.tox .tox-dialog__body-content .tox-form__group h2:only-child,
+.tox .tox-dialog__body-content .tox-form__group p:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog--width-lg {
+ height: 650px;
+ max-width: 1200px;
+}
+.tox .tox-dialog--width-md {
+ max-width: 800px;
+}
+.tox .tox-dialog--width-md .tox-dialog__body-content {
+ overflow: auto;
+}
+.tox .tox-dialog__body-content--centered {
+ text-align: center;
+}
+.tox .tox-dialog__footer {
+ align-items: center;
+ background-color: #2b3b4e;
+ border-top: 1px solid #000000;
+ display: flex;
+ justify-content: space-between;
+ padding: 8px 16px;
+}
+.tox .tox-dialog__footer-start,
+.tox .tox-dialog__footer-end {
+ display: flex;
+}
+.tox .tox-dialog__busy-spinner {
+ align-items: center;
+ background-color: rgba(34, 47, 62, 0.75);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 3;
+}
+.tox .tox-dialog__table {
+ border-collapse: collapse;
+ width: 100%;
+}
+.tox .tox-dialog__table thead th {
+ font-weight: bold;
+ padding-bottom: 8px;
+}
+.tox .tox-dialog__table tbody tr {
+ border-bottom: 1px solid #000000;
+}
+.tox .tox-dialog__table tbody tr:last-child {
+ border-bottom: none;
+}
+.tox .tox-dialog__table td {
+ padding-bottom: 8px;
+ padding-top: 8px;
+}
+.tox .tox-dialog__popups {
+ position: absolute;
+ width: 100%;
+ z-index: 1100;
+}
+.tox .tox-dialog__body-iframe {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox .tox-dialog-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox .tox-dialog-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox .tox-dialog-dock-transition {
+ transition: visibility 0s linear 0.3s, opacity 0.3s ease;
+}
+.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {
+ transition-delay: 0s;
+}
+.tox.tox-platform-ie {
+ /* IE11 CSS styles go here */
+}
+.tox.tox-platform-ie .tox-dialog-wrap {
+ position: -ms-device-fixed;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {
+ margin-right: 0;
+ }
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {
+ margin-left: 8px;
+ }
+}
+.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-dialog__body {
+ text-align: right;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {
+ margin-left: 0;
+ }
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {
+ margin-right: 8px;
+ }
+}
+.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-right: 8px;
+}
+body.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox .tox-dropzone-container {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dropzone {
+ align-items: center;
+ background: #fff;
+ border: 2px dashed #000000;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ justify-content: center;
+ min-height: 100px;
+ padding: 10px;
+}
+.tox .tox-dropzone p {
+ color: rgba(255, 255, 255, 0.5);
+ margin: 0 0 16px 0;
+}
+.tox .tox-edit-area {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ overflow: hidden;
+ position: relative;
+}
+.tox .tox-edit-area__iframe {
+ background-color: #fff;
+ border: 0;
+ box-sizing: border-box;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+}
+.tox.tox-inline-edit-area {
+ border: 1px dotted #000000;
+}
+.tox .tox-editor-container {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ overflow: hidden;
+}
+.tox .tox-editor-header {
+ z-index: 1;
+}
+.tox:not(.tox-tinymce-inline) .tox-editor-header {
+ box-shadow: none;
+ transition: box-shadow 0.5s;
+}
+.tox.tox-tinymce--toolbar-bottom .tox-editor-header,
+.tox.tox-tinymce-inline .tox-editor-header {
+ margin-bottom: -1px;
+}
+.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
+ background-color: transparent;
+ box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);
+}
+.tox-editor-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox-editor-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox-editor-dock-transition {
+ transition: visibility 0s linear 0.25s, opacity 0.25s ease;
+}
+.tox-editor-dock-transition.tox-editor-dock-fadein {
+ transition-delay: 0s;
+}
+.tox .tox-control-wrap {
+ flex: 1;
+ position: relative;
+}
+.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {
+ display: none;
+}
+.tox .tox-control-wrap svg {
+ display: block;
+}
+.tox .tox-control-wrap__status-icon-wrap {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-control-wrap__status-icon-invalid svg {
+ fill: #c00;
+}
+.tox .tox-control-wrap__status-icon-unknown svg {
+ fill: orange;
+}
+.tox .tox-control-wrap__status-icon-valid svg {
+ fill: green;
+}
+.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,
+.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,
+.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {
+ padding-right: 32px;
+}
+.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {
+ right: 4px;
+}
+.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,
+.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,
+.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {
+ padding-left: 32px;
+}
+.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {
+ left: 4px;
+}
+.tox .tox-autocompleter {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-menu {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-autocompleter-highlight {
+ font-weight: bold;
+}
+.tox .tox-color-input {
+ display: flex;
+ position: relative;
+ z-index: 1;
+}
+.tox .tox-color-input .tox-textfield {
+ z-index: -1;
+}
+.tox .tox-color-input span {
+ border-color: rgba(42, 55, 70, 0.2);
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ height: 24px;
+ position: absolute;
+ top: 6px;
+ width: 24px;
+}
+.tox .tox-color-input span:hover:not([aria-disabled=true]),
+.tox .tox-color-input span:focus:not([aria-disabled=true]) {
+ border-color: #207ab7;
+ cursor: pointer;
+}
+.tox .tox-color-input span::before {
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(255, 255, 255, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.25) 75%);
+ background-position: 0 0, 0 6px, 6px -6px, -6px 0;
+ background-size: 12px 12px;
+ border: 1px solid #2b3b4e;
+ border-radius: 3px;
+ box-sizing: border-box;
+ content: '';
+ height: 24px;
+ left: -1px;
+ position: absolute;
+ top: -1px;
+ width: 24px;
+ z-index: -1;
+}
+.tox .tox-color-input span[aria-disabled=true] {
+ cursor: not-allowed;
+}
+.tox:not([dir=rtl]) .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir=rtl]) .tox-color-input .tox-textfield {
+ padding-left: 36px;
+}
+.tox:not([dir=rtl]) .tox-color-input span {
+ left: 6px;
+}
+.tox[dir="rtl"] .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir="rtl"] .tox-color-input .tox-textfield {
+ padding-right: 36px;
+}
+.tox[dir="rtl"] .tox-color-input span {
+ right: 6px;
+}
+.tox .tox-label,
+.tox .tox-toolbar-label {
+ color: rgba(255, 255, 255, 0.5);
+ display: block;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ padding: 0 8px 0 0;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-toolbar-label {
+ padding: 0 8px;
+}
+.tox[dir=rtl] .tox-label {
+ padding: 0 0 0 8px;
+}
+.tox .tox-form {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group {
+ box-sizing: border-box;
+ margin-bottom: 4px;
+}
+.tox .tox-form-group--maximize {
+ flex: 1;
+}
+.tox .tox-form__group--error {
+ color: #c00;
+}
+.tox .tox-form__group--collection {
+ display: flex;
+}
+.tox .tox-form__grid {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+.tox .tox-form__grid--2col > .tox-form__group {
+ width: calc(50% - (8px / 2));
+}
+.tox .tox-form__grid--3col > .tox-form__group {
+ width: calc(100% / 3 - (8px / 2));
+}
+.tox .tox-form__grid--4col > .tox-form__group {
+ width: calc(25% - (8px / 2));
+}
+.tox .tox-form__controls-h-stack {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--inline {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--stretched {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-textarea {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-lock.tox-locked .tox-lock-icon__unlock,
+.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {
+ display: none;
+}
+.tox .tox-textfield,
+.tox .tox-toolbar-textfield,
+.tox .tox-listboxfield .tox-listbox--select,
+.tox .tox-textarea {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #2b3b4e;
+ border-color: #000000;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-textfield[disabled],
+.tox .tox-textarea[disabled] {
+ background-color: #222f3e;
+ color: rgba(255, 255, 255, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-textfield:focus,
+.tox .tox-listboxfield .tox-listbox--select:focus,
+.tox .tox-textarea:focus {
+ background-color: #2b3b4e;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-toolbar-textfield {
+ border-width: 0;
+ margin-bottom: 3px;
+ margin-top: 2px;
+ max-width: 250px;
+}
+.tox .tox-naked-btn {
+ background-color: transparent;
+ border: 0;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #207ab7;
+ cursor: pointer;
+ display: block;
+ margin: 0;
+ padding: 0;
+}
+.tox .tox-naked-btn svg {
+ display: block;
+ fill: #fff;
+}
+.tox:not([dir=rtl]) .tox-toolbar-textfield + * {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-toolbar-textfield + * {
+ margin-right: 4px;
+}
+.tox .tox-listboxfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-listboxfield .tox-listbox--select[disabled] {
+ background-color: #19232e;
+ color: rgba(255, 255, 255, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-listbox__select-label {
+ cursor: default;
+ flex: 1;
+ margin: 0 4px;
+}
+.tox .tox-listbox__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-listbox__select-chevron svg {
+ fill: #fff;
+}
+.tox .tox-listboxfield .tox-listbox--select {
+ align-items: center;
+ display: flex;
+}
+.tox:not([dir=rtl]) .tox-listboxfield svg {
+ right: 8px;
+}
+.tox[dir=rtl] .tox-listboxfield svg {
+ left: 8px;
+}
+.tox .tox-selectfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-selectfield select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #2b3b4e;
+ border-color: #000000;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-selectfield select[disabled] {
+ background-color: #19232e;
+ color: rgba(255, 255, 255, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-selectfield select::-ms-expand {
+ display: none;
+}
+.tox .tox-selectfield select:focus {
+ background-color: #2b3b4e;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-selectfield svg {
+ pointer-events: none;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox:not([dir=rtl]) .tox-selectfield select[size="0"],
+.tox:not([dir=rtl]) .tox-selectfield select[size="1"] {
+ padding-right: 24px;
+}
+.tox:not([dir=rtl]) .tox-selectfield svg {
+ right: 8px;
+}
+.tox[dir=rtl] .tox-selectfield select[size="0"],
+.tox[dir=rtl] .tox-selectfield select[size="1"] {
+ padding-left: 24px;
+}
+.tox[dir=rtl] .tox-selectfield svg {
+ left: 8px;
+}
+.tox .tox-textarea {
+ -webkit-appearance: textarea;
+ -moz-appearance: textarea;
+ appearance: textarea;
+ white-space: pre-wrap;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ left: 0;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ position: fixed;
+ top: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+ z-index: 1200;
+}
+.tox-shadowhost.tox-fullscreen {
+ z-index: 1200;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
+.tox .tox-help__more-link {
+ list-style: none;
+ margin-top: 1em;
+}
+.tox .tox-image-tools {
+ width: 100%;
+}
+.tox .tox-image-tools__toolbar {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-image-tools__image {
+ background-color: #666;
+ height: 380px;
+ overflow: auto;
+ position: relative;
+ width: 100%;
+}
+.tox .tox-image-tools__image,
+.tox .tox-image-tools__image + .tox-image-tools__toolbar {
+ margin-top: 8px;
+}
+.tox .tox-image-tools__image-bg {
+ background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);
+}
+.tox .tox-image-tools__toolbar > .tox-spacer {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-croprect-block {
+ background: black;
+ filter: alpha(opacity=50);
+ opacity: 0.5;
+ position: absolute;
+ zoom: 1;
+}
+.tox .tox-croprect-handle {
+ border: 2px solid white;
+ height: 20px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 20px;
+}
+.tox .tox-croprect-handle-move {
+ border: 0;
+ cursor: move;
+ position: absolute;
+}
+.tox .tox-croprect-handle-nw {
+ border-width: 2px 0 0 2px;
+ cursor: nw-resize;
+ left: 100px;
+ margin: -2px 0 0 -2px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-ne {
+ border-width: 2px 2px 0 0;
+ cursor: ne-resize;
+ left: 200px;
+ margin: -2px 0 0 -20px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-sw {
+ border-width: 0 0 2px 2px;
+ cursor: sw-resize;
+ left: 100px;
+ margin: -20px 2px 0 -2px;
+ top: 200px;
+}
+.tox .tox-croprect-handle-se {
+ border-width: 0 2px 2px 0;
+ cursor: se-resize;
+ left: 200px;
+ margin: -20px 0 0 -20px;
+ top: 200px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-left: 32px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-left: 32px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-right: 32px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-right: 32px;
+}
+.tox .tox-insert-table-picker {
+ display: flex;
+ flex-wrap: wrap;
+ width: 170px;
+}
+.tox .tox-insert-table-picker > div {
+ border-color: #000000;
+ border-style: solid;
+ border-width: 0 1px 1px 0;
+ box-sizing: border-box;
+ height: 17px;
+ width: 17px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {
+ margin: -4px 0;
+}
+.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
+ background-color: rgba(32, 122, 183, 0.5);
+ border-color: rgba(32, 122, 183, 0.5);
+}
+.tox .tox-insert-table-picker__label {
+ color: #fff;
+ display: block;
+ font-size: 14px;
+ padding: 4px;
+ text-align: center;
+ width: 100%;
+}
+.tox:not([dir=rtl]) {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {
+ border-right: 0;
+}
+.tox[dir=rtl] {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {
+ border-right: 0;
+}
+.tox {
+ /* stylelint-disable */
+ /* stylelint-enable */
+}
+.tox .tox-menu {
+ background-color: #2b3b4e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(42, 55, 70, 0.1);
+ display: inline-block;
+ overflow: hidden;
+ vertical-align: top;
+ z-index: 1150;
+}
+.tox .tox-menu.tox-collection.tox-collection--list {
+ padding: 0;
+}
+.tox .tox-menu.tox-collection.tox-collection--toolbar {
+ padding: 4px;
+}
+.tox .tox-menu.tox-collection.tox-collection--grid {
+ padding: 4px;
+}
+.tox .tox-menu__label h1,
+.tox .tox-menu__label h2,
+.tox .tox-menu__label h3,
+.tox .tox-menu__label h4,
+.tox .tox-menu__label h5,
+.tox .tox-menu__label h6,
+.tox .tox-menu__label p,
+.tox .tox-menu__label blockquote,
+.tox .tox-menu__label code {
+ margin: 0;
+}
+.tox .tox-menubar {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;
+ background-color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 4px 0 4px;
+}
+.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {
+ border-top: 1px solid #000000;
+}
+/* Deprecated. Remove in next major release */
+.tox .tox-mbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0 4px;
+ text-transform: none;
+ width: auto;
+}
+.tox .tox-mbtn[disabled] {
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-mbtn:focus:not(:disabled) {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-mbtn--active {
+ background: #757d87;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-mbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-mbtn[disabled] .tox-mbtn__select-label {
+ cursor: not-allowed;
+}
+.tox .tox-mbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+ display: none;
+}
+.tox .tox-notification {
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: -ms-grid;
+ display: grid;
+ font-size: 14px;
+ font-weight: normal;
+ -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ margin-top: 4px;
+ opacity: 0;
+ padding: 4px;
+ transition: transform 100ms ease-in, opacity 150ms ease-in;
+}
+.tox .tox-notification p {
+ font-size: 14px;
+ font-weight: normal;
+}
+.tox .tox-notification a {
+ text-decoration: underline;
+}
+.tox .tox-notification--in {
+ opacity: 1;
+}
+.tox .tox-notification--success {
+ background-color: #e4eeda;
+ border-color: #d7e6c8;
+ color: #fff;
+}
+.tox .tox-notification--success p {
+ color: #fff;
+}
+.tox .tox-notification--success a {
+ color: #547831;
+}
+.tox .tox-notification--success svg {
+ fill: #fff;
+}
+.tox .tox-notification--error {
+ background-color: #f8dede;
+ border-color: #f2bfbf;
+ color: #fff;
+}
+.tox .tox-notification--error p {
+ color: #fff;
+}
+.tox .tox-notification--error a {
+ color: #c00;
+}
+.tox .tox-notification--error svg {
+ fill: #fff;
+}
+.tox .tox-notification--warn,
+.tox .tox-notification--warning {
+ background-color: #fffaea;
+ border-color: #ffe89d;
+ color: #fff;
+}
+.tox .tox-notification--warn p,
+.tox .tox-notification--warning p {
+ color: #fff;
+}
+.tox .tox-notification--warn a,
+.tox .tox-notification--warning a {
+ color: #fff;
+}
+.tox .tox-notification--warn svg,
+.tox .tox-notification--warning svg {
+ fill: #fff;
+}
+.tox .tox-notification--info {
+ background-color: #d9edf7;
+ border-color: #779ecb;
+ color: #fff;
+}
+.tox .tox-notification--info p {
+ color: #fff;
+}
+.tox .tox-notification--info a {
+ color: #fff;
+}
+.tox .tox-notification--info svg {
+ fill: #fff;
+}
+.tox .tox-notification__body {
+ -ms-grid-row-align: center;
+ align-self: center;
+ color: #fff;
+ font-size: 14px;
+ -ms-grid-column-span: 1;
+ grid-column-end: 3;
+ -ms-grid-column: 2;
+ grid-column-start: 2;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ text-align: center;
+ white-space: normal;
+ word-break: break-all;
+ word-break: break-word;
+}
+.tox .tox-notification__body > * {
+ margin: 0;
+}
+.tox .tox-notification__body > * + * {
+ margin-top: 1rem;
+}
+.tox .tox-notification__icon {
+ -ms-grid-row-align: center;
+ align-self: center;
+ -ms-grid-column-span: 1;
+ grid-column-end: 2;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification__icon svg {
+ display: block;
+}
+.tox .tox-notification__dismiss {
+ -ms-grid-row-align: start;
+ align-self: start;
+ -ms-grid-column-span: 1;
+ grid-column-end: 4;
+ -ms-grid-column: 3;
+ grid-column-start: 3;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification .tox-progress-bar {
+ -ms-grid-column-span: 3;
+ grid-column-end: 4;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 3;
+ -ms-grid-row: 2;
+ grid-row-start: 2;
+ -ms-grid-column-align: center;
+ justify-self: center;
+}
+.tox .tox-pop {
+ display: inline-block;
+ position: relative;
+}
+.tox .tox-pop--resizing {
+ transition: width 0.1s ease;
+}
+.tox .tox-pop--resizing .tox-toolbar {
+ flex-wrap: nowrap;
+}
+.tox .tox-pop__dialog {
+ background-color: #222f3e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ min-width: 0;
+ overflow: hidden;
+}
+.tox .tox-pop__dialog > *:not(.tox-toolbar) {
+ margin: 4px 4px 4px 8px;
+}
+.tox .tox-pop__dialog .tox-toolbar {
+ background-color: transparent;
+ margin-bottom: -1px;
+}
+.tox .tox-pop::before,
+.tox .tox-pop::after {
+ border-style: solid;
+ content: '';
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+.tox .tox-pop.tox-pop--bottom::before,
+.tox .tox-pop.tox-pop--bottom::after {
+ left: 50%;
+ top: 100%;
+}
+.tox .tox-pop.tox-pop--bottom::after {
+ border-color: #222f3e transparent transparent transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: -1px;
+}
+.tox .tox-pop.tox-pop--bottom::before {
+ border-color: #000000 transparent transparent transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--top::before,
+.tox .tox-pop.tox-pop--top::after {
+ left: 50%;
+ top: 0;
+ transform: translateY(-100%);
+}
+.tox .tox-pop.tox-pop--top::after {
+ border-color: transparent transparent #222f3e transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: 1px;
+}
+.tox .tox-pop.tox-pop--top::before {
+ border-color: transparent transparent #000000 transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--left::before,
+.tox .tox-pop.tox-pop--left::after {
+ left: 0;
+ top: calc(50% - 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--left::after {
+ border-color: transparent #222f3e transparent transparent;
+ border-width: 8px;
+ margin-left: -15px;
+}
+.tox .tox-pop.tox-pop--left::before {
+ border-color: transparent #000000 transparent transparent;
+ border-width: 10px;
+ margin-left: -19px;
+}
+.tox .tox-pop.tox-pop--right::before,
+.tox .tox-pop.tox-pop--right::after {
+ left: 100%;
+ top: calc(50% + 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--right::after {
+ border-color: transparent transparent transparent #222f3e;
+ border-width: 8px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--right::before {
+ border-color: transparent transparent transparent #000000;
+ border-width: 10px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--align-left::before,
+.tox .tox-pop.tox-pop--align-left::after {
+ left: 20px;
+}
+.tox .tox-pop.tox-pop--align-right::before,
+.tox .tox-pop.tox-pop--align-right::after {
+ left: calc(100% - 20px);
+}
+.tox .tox-sidebar-wrap {
+ display: flex;
+ flex-direction: row;
+ flex-grow: 1;
+ -ms-flex-preferred-size: 0;
+ min-height: 0;
+}
+.tox .tox-sidebar {
+ background-color: #222f3e;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+}
+.tox .tox-sidebar__slider {
+ display: flex;
+ overflow: hidden;
+}
+.tox .tox-sidebar__pane-container {
+ display: flex;
+}
+.tox .tox-sidebar__pane {
+ display: flex;
+}
+.tox .tox-sidebar--sliding-closed {
+ opacity: 0;
+}
+.tox .tox-sidebar--sliding-open {
+ opacity: 1;
+}
+.tox .tox-sidebar--sliding-growing,
+.tox .tox-sidebar--sliding-shrinking {
+ transition: width 0.5s ease, opacity 0.5s ease;
+}
+.tox .tox-selector {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ display: inline-block;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox.tox-platform-touch .tox-selector {
+ height: 12px;
+ width: 12px;
+}
+.tox .tox-slider {
+ align-items: center;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 24px;
+ justify-content: center;
+ position: relative;
+}
+.tox .tox-slider__rail {
+ background-color: transparent;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ height: 10px;
+ min-width: 120px;
+ width: 100%;
+}
+.tox .tox-slider__handle {
+ background-color: #207ab7;
+ border: 2px solid #185d8c;
+ border-radius: 3px;
+ box-shadow: none;
+ height: 24px;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%);
+ width: 14px;
+}
+.tox .tox-source-code {
+ overflow: auto;
+}
+.tox .tox-spinner {
+ display: flex;
+}
+.tox .tox-spinner > div {
+ animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;
+ background-color: rgba(255, 255, 255, 0.5);
+ border-radius: 100%;
+ height: 8px;
+ width: 8px;
+}
+.tox .tox-spinner > div:nth-child(1) {
+ animation-delay: -0.32s;
+}
+.tox .tox-spinner > div:nth-child(2) {
+ animation-delay: -0.16s;
+}
+@keyframes tam-bouncing-dots {
+ 0%,
+ 80%,
+ 100% {
+ transform: scale(0);
+ }
+ 40% {
+ transform: scale(1);
+ }
+}
+.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-spinner > div:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-statusbar {
+ align-items: center;
+ background-color: #222f3e;
+ border-top: 1px solid #000000;
+ color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 12px;
+ font-weight: normal;
+ height: 18px;
+ overflow: hidden;
+ padding: 0 8px;
+ position: relative;
+ text-transform: uppercase;
+}
+.tox .tox-statusbar__text-container {
+ display: flex;
+ flex: 1 1 auto;
+ justify-content: flex-end;
+ overflow: hidden;
+}
+.tox .tox-statusbar__path {
+ display: flex;
+ flex: 1 1 auto;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__path > * {
+ display: inline;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__wordcount {
+ flex: 0 0 auto;
+ margin-left: 1ch;
+}
+.tox .tox-statusbar a,
+.tox .tox-statusbar__path-item,
+.tox .tox-statusbar__wordcount {
+ color: #fff;
+ text-decoration: none;
+}
+.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {
+ cursor: pointer;
+ text-decoration: underline;
+}
+.tox .tox-statusbar__resize-handle {
+ align-items: flex-end;
+ align-self: stretch;
+ cursor: nwse-resize;
+ display: flex;
+ flex: 0 0 auto;
+ justify-content: flex-end;
+ margin-left: auto;
+ margin-right: -8px;
+ padding-left: 1ch;
+}
+.tox .tox-statusbar__resize-handle svg {
+ display: block;
+ fill: #fff;
+}
+.tox .tox-statusbar__resize-handle:focus svg {
+ background-color: #4a5562;
+ border-radius: 1px;
+ box-shadow: 0 0 0 2px #4a5562;
+}
+.tox:not([dir=rtl]) .tox-statusbar__path > * {
+ margin-right: 4px;
+}
+.tox:not([dir=rtl]) .tox-statusbar__branding {
+ margin-left: 1ch;
+}
+.tox[dir=rtl] .tox-statusbar {
+ flex-direction: row-reverse;
+}
+.tox[dir=rtl] .tox-statusbar__path > * {
+ margin-left: 4px;
+}
+.tox .tox-throbber {
+ z-index: 1299;
+}
+.tox .tox-throbber__busy-spinner {
+ align-items: center;
+ background-color: rgba(34, 47, 62, 0.6);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.tox .tox-tbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0;
+ text-transform: none;
+ width: 34px;
+}
+.tox .tox-tbtn svg {
+ display: block;
+ fill: #fff;
+}
+.tox .tox-tbtn.tox-tbtn-more {
+ padding-left: 5px;
+ padding-right: 5px;
+ width: inherit;
+}
+.tox .tox-tbtn:focus {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+}
+.tox .tox-tbtn:hover {
+ background: #4a5562;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-tbtn:hover svg {
+ fill: #fff;
+}
+.tox .tox-tbtn:active {
+ background: #757d87;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-tbtn:active svg {
+ fill: #fff;
+}
+.tox .tox-tbtn--disabled,
+.tox .tox-tbtn--disabled:hover,
+.tox .tox-tbtn:disabled,
+.tox .tox-tbtn:disabled:hover {
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-tbtn--disabled svg,
+.tox .tox-tbtn--disabled:hover svg,
+.tox .tox-tbtn:disabled svg,
+.tox .tox-tbtn:disabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-tbtn--enabled,
+.tox .tox-tbtn--enabled:hover {
+ background: #757d87;
+ border: 0;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-tbtn--enabled > *,
+.tox .tox-tbtn--enabled:hover > * {
+ transform: none;
+}
+.tox .tox-tbtn--enabled svg,
+.tox .tox-tbtn--enabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: #fff;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {
+ color: #fff;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {
+ fill: #fff;
+}
+.tox .tox-tbtn:active > * {
+ transform: none;
+}
+.tox .tox-tbtn--md {
+ height: 51px;
+ width: 51px;
+}
+.tox .tox-tbtn--lg {
+ flex-direction: column;
+ height: 68px;
+ width: 68px;
+}
+.tox .tox-tbtn--return {
+ -ms-grid-row-align: stretch;
+ align-self: stretch;
+ height: unset;
+ width: 16px;
+}
+.tox .tox-tbtn--labeled {
+ padding: 0 4px;
+ width: unset;
+}
+.tox .tox-tbtn__vlabel {
+ display: block;
+ font-size: 10px;
+ font-weight: normal;
+ letter-spacing: -0.025em;
+ margin-bottom: 4px;
+ white-space: nowrap;
+}
+.tox .tox-tbtn--select {
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+ width: auto;
+}
+.tox .tox-tbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-tbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-tbtn__select-chevron svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-tbtn--bespoke .tox-tbtn__select-label {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ width: 7em;
+}
+.tox .tox-split-button {
+ border: 0;
+ border-radius: 3px;
+ box-sizing: border-box;
+ display: flex;
+ margin: 2px 0 3px 0;
+ overflow: hidden;
+}
+.tox .tox-split-button:hover {
+ box-shadow: 0 0 0 1px #4a5562 inset;
+}
+.tox .tox-split-button:focus {
+ background: #4a5562;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-split-button > * {
+ border-radius: 0;
+}
+.tox .tox-split-button__chevron {
+ width: 16px;
+}
+.tox .tox-split-button__chevron svg {
+ fill: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-split-button .tox-tbtn {
+ margin: 0;
+}
+.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {
+ width: 30px;
+}
+.tox.tox-platform-touch .tox-split-button__chevron {
+ width: 20px;
+}
+.tox .tox-split-button.tox-tbtn--disabled:hover,
+.tox .tox-split-button.tox-tbtn--disabled:focus,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {
+ background: transparent;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+}
+.tox .tox-toolbar-overlord {
+ background-color: #222f3e;
+}
+.tox .tox-toolbar,
+.tox .tox-toolbar__primary,
+.tox .tox-toolbar__overflow {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;
+ background-color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 0;
+}
+.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {
+ height: 0;
+ opacity: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ visibility: hidden;
+}
+.tox .tox-toolbar__overflow--growing {
+ transition: height 0.3s ease, opacity 0.2s linear 0.1s;
+}
+.tox .tox-toolbar__overflow--shrinking {
+ transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;
+}
+.tox .tox-menubar + .tox-toolbar,
+.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {
+ border-top: 1px solid #000000;
+ margin-top: -1px;
+}
+.tox .tox-toolbar--scrolling {
+ flex-wrap: nowrap;
+ overflow-x: auto;
+}
+.tox .tox-pop .tox-toolbar {
+ border-width: 0;
+}
+.tox .tox-toolbar--no-divider {
+ background-image: none;
+}
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {
+ border-top: 1px solid #000000;
+}
+.tox.tox-tinymce-aux .tox-toolbar__overflow {
+ background-color: #222f3e;
+ border: 1px solid #000000;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+}
+.tox[dir=rtl] .tox-tbtn__icon-rtl svg {
+ transform: rotateY(180deg);
+}
+.tox .tox-toolbar__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 0;
+ padding: 0 4px 0 4px;
+}
+.tox .tox-toolbar__group--pull-right {
+ margin-left: auto;
+}
+.tox .tox-toolbar--scrolling .tox-toolbar__group {
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+}
+.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {
+ border-right: 1px solid #000000;
+}
+.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {
+ border-left: 1px solid #000000;
+}
+.tox .tox-tooltip {
+ display: inline-block;
+ padding: 8px;
+ position: relative;
+}
+.tox .tox-tooltip__body {
+ background-color: #3d546f;
+ border-radius: 3px;
+ box-shadow: 0 2px 4px rgba(42, 55, 70, 0.3);
+ color: rgba(255, 255, 255, 0.75);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ padding: 4px 8px;
+ text-transform: none;
+}
+.tox .tox-tooltip__arrow {
+ position: absolute;
+}
+.tox .tox-tooltip--down .tox-tooltip__arrow {
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 8px solid #3d546f;
+ bottom: 0;
+ left: 50%;
+ position: absolute;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--up .tox-tooltip__arrow {
+ border-bottom: 8px solid #3d546f;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ left: 50%;
+ position: absolute;
+ top: 0;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--right .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-left: 8px solid #3d546f;
+ border-top: 8px solid transparent;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-tooltip--left .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-right: 8px solid #3d546f;
+ border-top: 8px solid transparent;
+ left: 0;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-well {
+ border: 1px solid #000000;
+ border-radius: 3px;
+ padding: 8px;
+ width: 100%;
+}
+.tox .tox-well > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-well > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-well > *:only-child {
+ margin: 0;
+}
+.tox .tox-custom-editor {
+ border: 1px solid #000000;
+ border-radius: 3px;
+ display: flex;
+ flex: 1;
+ position: relative;
+}
+/* stylelint-disable */
+.tox {
+ /* stylelint-enable */
+}
+.tox .tox-dialog-loading::before {
+ background-color: rgba(0, 0, 0, 0.5);
+ content: "";
+ height: 100%;
+ position: absolute;
+ width: 100%;
+ z-index: 1000;
+}
+.tox .tox-tab {
+ cursor: pointer;
+}
+.tox .tox-dialog__content-js {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-content .tox-collection {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-image-tools-edit-panel {
+ height: 60px;
+}
+.tox .tox-image-tools__sidebar {
+ height: 60px;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.min.css b/public/tinymce/skins/ui/oxide-dark/skin.min.css
new file mode 100644
index 00000000..8d4e9ec9
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox{box-shadow:none;box-sizing:content-box;color:#2a3746;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #000;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #000;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #000;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#000;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.5);border-color:#207ab7;color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.5);border-color:rgba(255,165,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.5);border-color:rgba(204,0,0,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.8)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.5);border-color:rgba(120,171,70,.8);color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.8)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#fff}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#fff}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#fff}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#3d546f;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#3d546f;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#fff;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#3d546f;background-image:none;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:hover:not(:disabled){background-color:#34485f;background-image:none;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--secondary:active:not(:disabled){background-color:#2b3b4e;background-image:none;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#fff}.tox .tox-button--naked[disabled]{background-color:#3d546f;border-color:#3d546f;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:focus:not(:disabled){background-color:#34485f;border-color:#34485f;box-shadow:none;color:#fff}.tox .tox-button--naked:active:not(:disabled){background-color:#2b3b4e;border-color:#2b3b4e;box-shadow:none;color:#fff}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#fff}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(255,255,255,.2)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(255,255,255,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(255,255,255,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#1a1a1a;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#333;color:#fff;cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#fff;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#2b3b4e;color:#fff}.tox .tox-collection--list .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#4a5562}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#757d87;color:#fff}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#4a5562;color:#fff}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#fff}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(255,255,255,.5);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#fff}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#2b3b4e;border:1px solid #1a1a1a;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #000}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #000}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#4a5562}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#2b3b4e;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#fff;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(255,255,255,.5);font-size:12px}.tox .tox-comment__body{color:#fff;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(255,255,255,.5);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#2b3b4e;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(43,59,78,0),#2b3b4e);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#2b3b4e;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#fff;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#2b3b4e;box-shadow:0 0 8px 8px #2b3b4e;color:#fff;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#2b3b4e;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(255,255,255,.5)}.tox .tox-user__name{color:rgba(255,255,255,.5);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(34,47,62,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#222f3e}.tox .tox-dialog{background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(42,55,70,.15),0 0 40px 1px rgba(42,55,70,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#2b3b4e;border-bottom:none;color:#fff;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#fff;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(255,255,255,.5);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#fff}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#fff;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#fff;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#2b3b4e;border-top:1px solid #000;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(34,47,62,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #000}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #000;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(255,255,255,.5);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #000}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(42,55,70,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #2b3b4e;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(255,255,255,.5);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#222f3e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#fff}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#fff}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#2b3b4e;border-color:#000;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#19232e;color:rgba(255,255,255,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#2b3b4e;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#000;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:#fff;display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#2b3b4e;border:1px solid #000;border-radius:3px;box-shadow:0 4px 8px 0 rgba(42,55,70,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #000}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn--active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#fff}.tox .tox-notification--success p{color:#fff}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#fff}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#fff}.tox .tox-notification--error p{color:#fff}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#fff}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#fff}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#fff}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#fff}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#fff}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#fff}.tox .tox-notification--info p{color:#fff}.tox .tox-notification--info a{color:#fff}.tox .tox-notification--info svg{fill:#fff}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#fff;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#222f3e transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#000 transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #222f3e transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #000 transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #222f3e transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #000 transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #222f3e;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #000;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#222f3e;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #000;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(255,255,255,.5);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#222f3e;border-top:1px solid #000;color:#fff;display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:#fff;text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:#fff}.tox .tox-statusbar__resize-handle:focus svg{background-color:#4a5562;border-radius:1px;box-shadow:0 0 0 2px #4a5562}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(34,47,62,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#fff;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#fff}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#4a5562;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#4a5562;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:hover svg{fill:#fff}.tox .tox-tbtn:active{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn:active svg{fill:#fff}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#757d87;border:0;box-shadow:none;color:#fff}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#fff}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#fff}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #4a5562 inset}.tox .tox-split-button:focus{background:#4a5562;box-shadow:none;color:#fff}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(255,255,255,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(255,255,255,.5)}.tox .tox-toolbar-overlord{background-color:#222f3e}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23000000'/%3E%3C/svg%3E") left 0 top 0 #222f3e;background-color:#222f3e;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #000;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #000}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#222f3e;border:1px solid #000;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #000}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #000}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#3d546f;border-radius:3px;box-shadow:0 2px 4px rgba(42,55,70,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #3d546f;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #3d546f;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #3d546f;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #3d546f;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #000;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #000;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css
new file mode 100644
index 00000000..875721a2
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.css
@@ -0,0 +1,673 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+/* RESET all the things! */
+.tinymce-mobile-outer-container {
+ all: initial;
+ display: block;
+}
+.tinymce-mobile-outer-container * {
+ border: 0;
+ box-sizing: initial;
+ cursor: inherit;
+ float: none;
+ line-height: 1;
+ margin: 0;
+ outline: 0;
+ padding: 0;
+ -webkit-tap-highlight-color: transparent;
+ /* TBIO-3691, stop the gray flicker on touch. */
+ text-shadow: none;
+ white-space: nowrap;
+}
+.tinymce-mobile-icon-arrow-back::before {
+ content: "\e5cd";
+}
+.tinymce-mobile-icon-image::before {
+ content: "\e412";
+}
+.tinymce-mobile-icon-cancel-circle::before {
+ content: "\e5c9";
+}
+.tinymce-mobile-icon-full-dot::before {
+ content: "\e061";
+}
+.tinymce-mobile-icon-align-center::before {
+ content: "\e234";
+}
+.tinymce-mobile-icon-align-left::before {
+ content: "\e236";
+}
+.tinymce-mobile-icon-align-right::before {
+ content: "\e237";
+}
+.tinymce-mobile-icon-bold::before {
+ content: "\e238";
+}
+.tinymce-mobile-icon-italic::before {
+ content: "\e23f";
+}
+.tinymce-mobile-icon-unordered-list::before {
+ content: "\e241";
+}
+.tinymce-mobile-icon-ordered-list::before {
+ content: "\e242";
+}
+.tinymce-mobile-icon-font-size::before {
+ content: "\e245";
+}
+.tinymce-mobile-icon-underline::before {
+ content: "\e249";
+}
+.tinymce-mobile-icon-link::before {
+ content: "\e157";
+}
+.tinymce-mobile-icon-unlink::before {
+ content: "\eca2";
+}
+.tinymce-mobile-icon-color::before {
+ content: "\e891";
+}
+.tinymce-mobile-icon-previous::before {
+ content: "\e314";
+}
+.tinymce-mobile-icon-next::before {
+ content: "\e315";
+}
+.tinymce-mobile-icon-large-font::before,
+.tinymce-mobile-icon-style-formats::before {
+ content: "\e264";
+}
+.tinymce-mobile-icon-undo::before {
+ content: "\e166";
+}
+.tinymce-mobile-icon-redo::before {
+ content: "\e15a";
+}
+.tinymce-mobile-icon-removeformat::before {
+ content: "\e239";
+}
+.tinymce-mobile-icon-small-font::before {
+ content: "\e906";
+}
+.tinymce-mobile-icon-readonly-back::before,
+.tinymce-mobile-format-matches::after {
+ content: "\e5ca";
+}
+.tinymce-mobile-icon-small-heading::before {
+ content: "small";
+}
+.tinymce-mobile-icon-large-heading::before {
+ content: "large";
+}
+.tinymce-mobile-icon-small-heading::before,
+.tinymce-mobile-icon-large-heading::before {
+ font-family: sans-serif;
+ font-size: 80%;
+}
+.tinymce-mobile-mask-edit-icon::before {
+ content: "\e254";
+}
+.tinymce-mobile-icon-back::before {
+ content: "\e5c4";
+}
+.tinymce-mobile-icon-heading::before {
+ /* TODO: Translate */
+ content: "Headings";
+ font-family: sans-serif;
+ font-size: 80%;
+ font-weight: bold;
+}
+.tinymce-mobile-icon-h1::before {
+ content: "H1";
+ font-weight: bold;
+}
+.tinymce-mobile-icon-h2::before {
+ content: "H2";
+ font-weight: bold;
+}
+.tinymce-mobile-icon-h3::before {
+ content: "H3";
+ font-weight: bold;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ background: rgba(51, 51, 51, 0.5);
+ height: 100%;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
+ align-items: center;
+ border-radius: 50%;
+ display: flex;
+ flex-direction: column;
+ font-family: sans-serif;
+ font-size: 1em;
+ justify-content: space-between;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ border-radius: 50%;
+ height: 2.1em;
+ width: 2.1em;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ font-size: 1em;
+}
+@media only screen and (min-device-width:700px) {
+ .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
+ font-size: 1.2em;
+ }
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ border-radius: 50%;
+ height: 2.1em;
+ width: 2.1em;
+ background-color: white;
+ color: #207ab7;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
+ content: "\e900";
+ font-family: 'tinymce-mobile', sans-serif;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
+ z-index: 2;
+}
+.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
+ background: #ffffff;
+ border: none;
+ bottom: 0;
+ display: flex;
+ flex-direction: column;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+}
+.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
+ position: relative;
+}
+.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
+ display: flex;
+ flex-grow: 1;
+}
+.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
+ display: flex !important;
+ flex-grow: 1;
+ height: auto !important;
+}
+.tinymce-mobile-android-scroll-reload {
+ overflow: hidden;
+}
+:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
+ margin-top: 23px;
+}
+.tinymce-mobile-toolstrip {
+ background: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ z-index: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
+ align-items: center;
+ background-color: #fff;
+ border-bottom: 1px solid #cccccc;
+ display: flex;
+ flex: 1;
+ height: 2.5em;
+ width: 100%;
+ /* Make it no larger than the toolstrip, so that it needs to scroll */
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex-shrink: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
+ background: #f44336;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
+ flex-grow: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
+ align-items: center;
+ display: flex;
+ height: 80%;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
+ background: #c8cbcf;
+ color: #cccccc;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
+ background: #207ab7;
+ color: #eceff1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
+ /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex: 1;
+ padding-bottom: 0.4em;
+ padding-top: 0.4em;
+ /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
+ /* For widgets like the colour picker, use the whole height */
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
+ display: flex;
+ min-height: 1.5em;
+ overflow: hidden;
+ padding-left: 0;
+ padding-right: 0;
+ position: relative;
+ width: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
+ display: flex;
+ height: 100%;
+ transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
+ width: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
+ display: flex;
+ flex: 0 0 auto;
+ justify-content: space-between;
+ width: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
+ font-family: Sans-serif;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
+ display: flex;
+ flex-grow: 1;
+ position: relative;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
+ -ms-grid-row-align: center;
+ align-self: center;
+ background: inherit;
+ border: none;
+ border-radius: 50%;
+ color: #888;
+ font-size: 0.6em;
+ font-weight: bold;
+ height: 100%;
+ padding-right: 2px;
+ position: absolute;
+ right: 0;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
+ display: none;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
+ align-items: center;
+ display: flex;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
+ align-items: center;
+ display: flex;
+ font-weight: bold;
+ height: 100%;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
+ visibility: hidden;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
+ color: #cccccc;
+ font-size: 10px;
+ line-height: 10px;
+ margin: 0 2px;
+ padding-top: 3px;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
+ color: #c8cbcf;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
+ margin-left: 0.5em;
+ margin-right: 0.9em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
+ margin-left: 0.9em;
+ margin-right: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
+ display: flex;
+ flex: 1;
+ margin-left: 0;
+ margin-right: 0;
+ padding: 0.28em 0;
+ position: relative;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
+ align-items: center;
+ display: flex;
+ flex-grow: 1;
+ height: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
+ background: #cccccc;
+ display: flex;
+ flex: 1;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
+ padding-left: 2em;
+ padding-right: 2em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
+ align-items: center;
+ display: flex;
+ flex-grow: 1;
+ height: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
+ background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
+ display: flex;
+ flex: 1;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
+ /* Not part of theming */
+ background: black;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+ width: 1.2em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
+ /* Not part of theming */
+ background: white;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+ width: 1.2em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
+ /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
+ * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
+ * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
+ * this approach.
+ */
+ align-items: center;
+ background-clip: padding-box;
+ background-color: #455a64;
+ border: 0.5em solid rgba(136, 136, 136, 0);
+ border-radius: 3em;
+ bottom: 0;
+ color: #fff;
+ display: flex;
+ height: 0.5em;
+ justify-content: center;
+ left: -10px;
+ margin: auto;
+ position: absolute;
+ top: 0;
+ transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
+ width: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
+ border: 0.5em solid rgba(136, 136, 136, 0.39);
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
+ flex-direction: column;
+ justify-content: center;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
+ align-items: center;
+ display: flex;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
+ height: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
+ display: flex;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
+ background: #ffffff;
+ border: none;
+ border-radius: 0;
+ color: #455a64;
+ flex-grow: 1;
+ font-size: 0.85em;
+ padding-bottom: 0.1em;
+ padding-left: 5px;
+ padding-top: 0.1em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
+ /* WebKit, Blink, Edge */
+ color: #888;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
+ /* WebKit, Blink, Edge */
+ color: #888;
+}
+/* dropup */
+.tinymce-mobile-dropup {
+ background: white;
+ display: flex;
+ overflow: hidden;
+ width: 100%;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
+ transition: height 0.3s ease-out;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
+ transition: height 0.3s ease-in;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
+ flex-grow: 0;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
+ flex-grow: 1;
+}
+/* TODO min-height for device size and orientation */
+.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
+ min-height: 200px;
+}
+@media only screen and (orientation: landscape) {
+ .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
+ min-height: 200px;
+ }
+}
+@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
+ .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
+ min-height: 150px;
+ }
+}
+/* styles menu */
+.tinymce-mobile-styles-menu {
+ font-family: sans-serif;
+ outline: 4px solid black;
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+}
+.tinymce-mobile-styles-menu [role="menu"] {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+}
+.tinymce-mobile-styles-menu [role="menu"].transitioning {
+ transition: transform 0.5s ease-in-out;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
+ border-bottom: 1px solid #ddd;
+ color: #455a64;
+ cursor: pointer;
+ display: flex;
+ padding: 1em 1em;
+ position: relative;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
+ color: #455a64;
+ content: "\e314";
+ font-family: 'tinymce-mobile', sans-serif;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
+ color: #455a64;
+ content: "\e315";
+ font-family: 'tinymce-mobile', sans-serif;
+ padding-left: 1em;
+ padding-right: 1em;
+ position: absolute;
+ right: 0;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
+ font-family: 'tinymce-mobile', sans-serif;
+ padding-left: 1em;
+ padding-right: 1em;
+ position: absolute;
+ right: 0;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
+ align-items: center;
+ background: #fff;
+ border-top: #455a64;
+ color: #455a64;
+ display: flex;
+ min-height: 2.5em;
+ padding-left: 1em;
+ padding-right: 1em;
+}
+.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
+.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
+ transform: translate(-100%);
+}
+.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
+.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
+ transform: translate(0%);
+}
+.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
+.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
+ transform: translate(100%);
+}
+@font-face {
+ font-family: 'tinymce-mobile';
+ font-style: normal;
+ font-weight: normal;
+ src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
+}
+@media (min-device-width: 700px) {
+ .tinymce-mobile-outer-container,
+ .tinymce-mobile-outer-container input {
+ font-size: 25px;
+ }
+}
+@media (max-device-width: 700px) {
+ .tinymce-mobile-outer-container,
+ .tinymce-mobile-outer-container input {
+ font-size: 18px;
+ }
+}
+.tinymce-mobile-icon {
+ font-family: 'tinymce-mobile', sans-serif;
+}
+.mixin-flex-and-centre {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.mixin-flex-bar {
+ align-items: center;
+ display: flex;
+ height: 100%;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
+ background-color: #fff;
+ width: 100%;
+}
+.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
+ /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
+ background-color: #207ab7;
+ border-radius: 50%;
+ bottom: 1em;
+ color: white;
+ font-size: 1em;
+ height: 2.1em;
+ position: fixed;
+ right: 2em;
+ width: 2.1em;
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+@media only screen and (min-device-width:700px) {
+ .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
+ font-size: 1.2em;
+ }
+}
+.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
+ height: 300px;
+ overflow: hidden;
+}
+.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
+ height: 100%;
+}
+.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
+ display: none;
+}
+/*
+ Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
+ increased and the whole body becomes scrollable. It's important!
+ */
+input[type="file"]::-webkit-file-upload-button {
+ display: none;
+}
+@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
+ .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
+ bottom: 50%;
+ }
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
new file mode 100644
index 00000000..3a45cacf
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css
new file mode 100644
index 00000000..715978b5
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ left: 0;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ position: fixed;
+ top: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+ z-index: 1200;
+}
+.tox-shadowhost.tox-fullscreen {
+ z-index: 1200;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
diff --git a/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css
new file mode 100644
index 00000000..9ba6e02c
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
diff --git a/public/tinymce/skins/ui/oxide/content.css b/public/tinymce/skins/ui/oxide/content.css
new file mode 100644
index 00000000..efae400b
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.css
@@ -0,0 +1,732 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ cursor: default;
+ display: inline-block;
+ height: 12px !important;
+ padding: 0 2px;
+ -webkit-user-modify: read-only;
+ -moz-user-modify: read-only;
+ -webkit-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: all;
+ user-select: all;
+ width: 8px !important;
+}
+.mce-content-body .mce-item-anchor[data-mce-selected] {
+ outline-offset: 1px;
+}
+.tox-comments-visible .tox-comment {
+ background-color: #fff0b7;
+}
+.tox-comments-visible .tox-comment--active {
+ background-color: #ffe168;
+}
+.tox-checklist > li:not(.tox-checklist--hidden) {
+ list-style: none;
+ margin: 0.25em 0;
+}
+.tox-checklist > li:not(.tox-checklist--hidden)::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+ cursor: pointer;
+ height: 1em;
+ margin-left: -1.5em;
+ margin-top: 0.125em;
+ position: absolute;
+ width: 1em;
+}
+.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+}
+[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
+ margin-left: 0;
+ margin-right: -1.5em;
+}
+/* stylelint-disable */
+/* http://prismjs.com/ */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ background: none;
+ text-shadow: 0 1px white;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ font-size: 1em;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+ -moz-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+@media print {
+ code[class*="language-"],
+ pre[class*="language-"] {
+ text-shadow: none;
+ }
+}
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+}
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+ background: #f5f2f0;
+}
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ padding: 0.1em;
+ border-radius: 0.3em;
+ white-space: normal;
+}
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray;
+}
+.token.punctuation {
+ color: #999;
+}
+.namespace {
+ opacity: 0.7;
+}
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905;
+}
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690;
+}
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #9a6e3a;
+ background: hsla(0, 0%, 100%, 0.5);
+}
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a;
+}
+.token.function,
+.token.class-name {
+ color: #DD4A68;
+}
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90;
+}
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+.token.italic {
+ font-style: italic;
+}
+.token.entity {
+ cursor: help;
+}
+/* stylelint-enable */
+.mce-content-body {
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+}
+.mce-content-body .mce-visual-caret {
+ background-color: black;
+ background-color: currentColor;
+ position: absolute;
+}
+.mce-content-body .mce-visual-caret-hidden {
+ display: none;
+}
+.mce-content-body *[data-mce-caret] {
+ left: -1000px;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ right: auto;
+ top: 0;
+}
+.mce-content-body .mce-offscreen-selection {
+ left: -2000000px;
+ max-width: 1000000px;
+ position: absolute;
+}
+.mce-content-body *[contentEditable=false] {
+ cursor: default;
+}
+.mce-content-body *[contentEditable=true] {
+ cursor: text;
+}
+.tox-cursor-format-painter {
+ cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
+}
+.mce-content-body figure.align-left {
+ float: left;
+}
+.mce-content-body figure.align-right {
+ float: right;
+}
+.mce-content-body figure.image.align-center {
+ display: table;
+ margin-left: auto;
+ margin-right: auto;
+}
+.mce-preview-object {
+ border: 1px solid gray;
+ display: inline-block;
+ line-height: 0;
+ margin: 0 2px 0 2px;
+ position: relative;
+}
+.mce-preview-object .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-preview-object[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.mce-object {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ border: 1px dashed #aaa;
+}
+.mce-pagebreak {
+ border: 1px dashed #aaa;
+ cursor: default;
+ display: block;
+ height: 5px;
+ margin-top: 15px;
+ page-break-before: always;
+ width: 100%;
+}
+@media print {
+ .mce-pagebreak {
+ border: 0;
+ }
+}
+.tiny-pageembed .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tiny-pageembed[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.tiny-pageembed {
+ display: inline-block;
+ position: relative;
+}
+.tiny-pageembed--21by9,
+.tiny-pageembed--16by9,
+.tiny-pageembed--4by3,
+.tiny-pageembed--1by1 {
+ display: block;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+ width: 100%;
+}
+.tiny-pageembed--21by9 {
+ padding-top: 42.857143%;
+}
+.tiny-pageembed--16by9 {
+ padding-top: 56.25%;
+}
+.tiny-pageembed--4by3 {
+ padding-top: 75%;
+}
+.tiny-pageembed--1by1 {
+ padding-top: 100%;
+}
+.tiny-pageembed--21by9 iframe,
+.tiny-pageembed--16by9 iframe,
+.tiny-pageembed--4by3 iframe,
+.tiny-pageembed--1by1 iframe {
+ border: 0;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-content-body[data-mce-placeholder] {
+ position: relative;
+}
+.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ color: rgba(34, 47, 62, 0.7);
+ content: attr(data-mce-placeholder);
+ position: absolute;
+}
+.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ left: 1px;
+}
+.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
+ right: 1px;
+}
+.mce-content-body div.mce-resizehandle {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+ z-index: 10000;
+}
+.mce-content-body div.mce-resizehandle:hover {
+ background-color: #4099ff;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(1) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(2) {
+ cursor: nesw-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(3) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(4) {
+ cursor: nesw-resize;
+}
+.mce-content-body .mce-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.mce-content-body .mce-resize-helper {
+ background: #555;
+ background: rgba(0, 0, 0, 0.75);
+ border: 1px;
+ border-radius: 3px;
+ color: white;
+ display: none;
+ font-family: sans-serif;
+ font-size: 12px;
+ line-height: 14px;
+ margin: 5px 10px;
+ padding: 5px;
+ position: absolute;
+ white-space: nowrap;
+ z-index: 10002;
+}
+.tox-rtc-user-selection {
+ position: relative;
+}
+.tox-rtc-user-cursor {
+ bottom: 0;
+ cursor: default;
+ position: absolute;
+ top: 0;
+ width: 2px;
+}
+.tox-rtc-user-cursor::before {
+ background-color: inherit;
+ border-radius: 50%;
+ content: '';
+ display: block;
+ height: 8px;
+ position: absolute;
+ right: -3px;
+ top: -3px;
+ width: 8px;
+}
+.tox-rtc-user-cursor:hover::after {
+ background-color: inherit;
+ border-radius: 100px;
+ box-sizing: border-box;
+ color: #fff;
+ content: attr(data-user);
+ display: block;
+ font-size: 12px;
+ font-weight: bold;
+ left: -5px;
+ min-height: 8px;
+ min-width: 8px;
+ padding: 0 12px;
+ position: absolute;
+ top: -11px;
+ white-space: nowrap;
+ z-index: 1000;
+}
+.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
+ background-color: #2dc26b;
+}
+.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
+ background-color: #e03e2d;
+}
+.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
+ background-color: #f1c40f;
+}
+.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
+ background-color: #3598db;
+}
+.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
+ background-color: #b96ad9;
+}
+.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
+ background-color: #e67e23;
+}
+.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
+ background-color: #aaa69d;
+}
+.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
+ background-color: #f368e0;
+}
+.tox-rtc-remote-image {
+ background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
+ border: 1px solid #ccc;
+ min-height: 240px;
+ min-width: 320px;
+}
+.mce-match-marker {
+ background: #aaa;
+ color: #fff;
+}
+.mce-match-marker-selected {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::-moz-selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-content-body img[data-mce-selected],
+.mce-content-body video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[data-mce-selected],
+.mce-content-body table[data-mce-selected] {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body hr[data-mce-selected] {
+ outline: 3px solid #b4d7ff;
+ outline-offset: 1px;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body *[contentEditable=false][data-mce-selected] {
+ cursor: not-allowed;
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
+.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
+ outline: none;
+}
+.mce-content-body *[data-mce-selected="inline-boundary"] {
+ background-color: #b4d7ff;
+}
+.mce-content-body .mce-edit-focus {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body td[data-mce-selected],
+.mce-content-body th[data-mce-selected] {
+ position: relative;
+}
+.mce-content-body td[data-mce-selected]::-moz-selection,
+.mce-content-body th[data-mce-selected]::-moz-selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected]::selection,
+.mce-content-body th[data-mce-selected]::selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected] *,
+.mce-content-body th[data-mce-selected] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid rgba(180, 215, 255, 0.7);
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: multiply;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.mce-content-body img::-moz-selection {
+ background: none;
+}
+.mce-content-body img::selection {
+ background: none;
+}
+.ephox-snooker-resizer-bar {
+ background-color: #b4d7ff;
+ opacity: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.ephox-snooker-resizer-cols {
+ cursor: col-resize;
+}
+.ephox-snooker-resizer-rows {
+ cursor: row-resize;
+}
+.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
+ opacity: 1;
+}
+.mce-spellchecker-word {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+ height: 2rem;
+}
+.mce-spellchecker-grammar {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+}
+.mce-toc {
+ border: 1px solid gray;
+}
+.mce-toc h2 {
+ margin: 4px;
+}
+.mce-toc li {
+ list-style-type: none;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] caption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks p,
+.mce-visualblocks h1,
+.mce-visualblocks h2,
+.mce-visualblocks h3,
+.mce-visualblocks h4,
+.mce-visualblocks h5,
+.mce-visualblocks h6,
+.mce-visualblocks div:not([data-mce-bogus]),
+.mce-visualblocks section,
+.mce-visualblocks article,
+.mce-visualblocks blockquote,
+.mce-visualblocks address,
+.mce-visualblocks pre,
+.mce-visualblocks figure,
+.mce-visualblocks figcaption,
+.mce-visualblocks hgroup,
+.mce-visualblocks aside,
+.mce-visualblocks ul,
+.mce-visualblocks ol,
+.mce-visualblocks dl {
+ background-repeat: no-repeat;
+ border: 1px dashed #bbb;
+ margin-left: 3px;
+ padding-top: 10px;
+}
+.mce-visualblocks p {
+ background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+.mce-visualblocks h1 {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+.mce-visualblocks h2 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+.mce-visualblocks h3 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+.mce-visualblocks h4 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+.mce-visualblocks h5 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+.mce-visualblocks h6 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+.mce-visualblocks div:not([data-mce-bogus]) {
+ background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+.mce-visualblocks section {
+ background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+.mce-visualblocks article {
+ background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+.mce-visualblocks blockquote {
+ background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+.mce-visualblocks address {
+ background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+.mce-visualblocks pre {
+ background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+.mce-visualblocks figure {
+ background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+.mce-visualblocks figcaption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks hgroup {
+ background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+.mce-visualblocks aside {
+ background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+.mce-visualblocks ul {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
+}
+.mce-visualblocks ol {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+}
+.mce-visualblocks dl {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+}
+.mce-visualblocks:not([dir=rtl]) p,
+.mce-visualblocks:not([dir=rtl]) h1,
+.mce-visualblocks:not([dir=rtl]) h2,
+.mce-visualblocks:not([dir=rtl]) h3,
+.mce-visualblocks:not([dir=rtl]) h4,
+.mce-visualblocks:not([dir=rtl]) h5,
+.mce-visualblocks:not([dir=rtl]) h6,
+.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
+.mce-visualblocks:not([dir=rtl]) section,
+.mce-visualblocks:not([dir=rtl]) article,
+.mce-visualblocks:not([dir=rtl]) blockquote,
+.mce-visualblocks:not([dir=rtl]) address,
+.mce-visualblocks:not([dir=rtl]) pre,
+.mce-visualblocks:not([dir=rtl]) figure,
+.mce-visualblocks:not([dir=rtl]) figcaption,
+.mce-visualblocks:not([dir=rtl]) hgroup,
+.mce-visualblocks:not([dir=rtl]) aside,
+.mce-visualblocks:not([dir=rtl]) ul,
+.mce-visualblocks:not([dir=rtl]) ol,
+.mce-visualblocks:not([dir=rtl]) dl {
+ margin-left: 3px;
+}
+.mce-visualblocks[dir=rtl] p,
+.mce-visualblocks[dir=rtl] h1,
+.mce-visualblocks[dir=rtl] h2,
+.mce-visualblocks[dir=rtl] h3,
+.mce-visualblocks[dir=rtl] h4,
+.mce-visualblocks[dir=rtl] h5,
+.mce-visualblocks[dir=rtl] h6,
+.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
+.mce-visualblocks[dir=rtl] section,
+.mce-visualblocks[dir=rtl] article,
+.mce-visualblocks[dir=rtl] blockquote,
+.mce-visualblocks[dir=rtl] address,
+.mce-visualblocks[dir=rtl] pre,
+.mce-visualblocks[dir=rtl] figure,
+.mce-visualblocks[dir=rtl] figcaption,
+.mce-visualblocks[dir=rtl] hgroup,
+.mce-visualblocks[dir=rtl] aside,
+.mce-visualblocks[dir=rtl] ul,
+.mce-visualblocks[dir=rtl] ol,
+.mce-visualblocks[dir=rtl] dl {
+ background-position-x: right;
+ margin-right: 3px;
+}
+.mce-nbsp,
+.mce-shy {
+ background: #aaa;
+}
+.mce-shy::after {
+ content: '-';
+}
+body {
+ font-family: sans-serif;
+}
+table {
+ border-collapse: collapse;
+}
diff --git a/public/tinymce/skins/ui/oxide/content.inline.css b/public/tinymce/skins/ui/oxide/content.inline.css
new file mode 100644
index 00000000..df6ed08b
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.inline.css
@@ -0,0 +1,726 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ cursor: default;
+ display: inline-block;
+ height: 12px !important;
+ padding: 0 2px;
+ -webkit-user-modify: read-only;
+ -moz-user-modify: read-only;
+ -webkit-user-select: all;
+ -moz-user-select: all;
+ -ms-user-select: all;
+ user-select: all;
+ width: 8px !important;
+}
+.mce-content-body .mce-item-anchor[data-mce-selected] {
+ outline-offset: 1px;
+}
+.tox-comments-visible .tox-comment {
+ background-color: #fff0b7;
+}
+.tox-comments-visible .tox-comment--active {
+ background-color: #ffe168;
+}
+.tox-checklist > li:not(.tox-checklist--hidden) {
+ list-style: none;
+ margin: 0.25em 0;
+}
+.tox-checklist > li:not(.tox-checklist--hidden)::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+ cursor: pointer;
+ height: 1em;
+ margin-left: -1.5em;
+ margin-top: 0.125em;
+ position: absolute;
+ width: 1em;
+}
+.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before {
+ content: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");
+}
+[dir=rtl] .tox-checklist > li:not(.tox-checklist--hidden)::before {
+ margin-left: 0;
+ margin-right: -1.5em;
+}
+/* stylelint-disable */
+/* http://prismjs.com/ */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+ color: black;
+ background: none;
+ text-shadow: 0 1px white;
+ font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ font-size: 1em;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+ -moz-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+ text-shadow: none;
+ background: #b3d4fc;
+}
+@media print {
+ code[class*="language-"],
+ pre[class*="language-"] {
+ text-shadow: none;
+ }
+}
+/* Code blocks */
+pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+}
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+ background: #f5f2f0;
+}
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+ padding: 0.1em;
+ border-radius: 0.3em;
+ white-space: normal;
+}
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+ color: slategray;
+}
+.token.punctuation {
+ color: #999;
+}
+.namespace {
+ opacity: 0.7;
+}
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+ color: #905;
+}
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+ color: #690;
+}
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+ color: #9a6e3a;
+ background: hsla(0, 0%, 100%, 0.5);
+}
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+ color: #07a;
+}
+.token.function,
+.token.class-name {
+ color: #DD4A68;
+}
+.token.regex,
+.token.important,
+.token.variable {
+ color: #e90;
+}
+.token.important,
+.token.bold {
+ font-weight: bold;
+}
+.token.italic {
+ font-style: italic;
+}
+.token.entity {
+ cursor: help;
+}
+/* stylelint-enable */
+.mce-content-body {
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+}
+.mce-content-body .mce-visual-caret {
+ background-color: black;
+ background-color: currentColor;
+ position: absolute;
+}
+.mce-content-body .mce-visual-caret-hidden {
+ display: none;
+}
+.mce-content-body *[data-mce-caret] {
+ left: -1000px;
+ margin: 0;
+ padding: 0;
+ position: absolute;
+ right: auto;
+ top: 0;
+}
+.mce-content-body .mce-offscreen-selection {
+ left: -2000000px;
+ max-width: 1000000px;
+ position: absolute;
+}
+.mce-content-body *[contentEditable=false] {
+ cursor: default;
+}
+.mce-content-body *[contentEditable=true] {
+ cursor: text;
+}
+.tox-cursor-format-painter {
+ cursor: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"), default;
+}
+.mce-content-body figure.align-left {
+ float: left;
+}
+.mce-content-body figure.align-right {
+ float: right;
+}
+.mce-content-body figure.image.align-center {
+ display: table;
+ margin-left: auto;
+ margin-right: auto;
+}
+.mce-preview-object {
+ border: 1px solid gray;
+ display: inline-block;
+ line-height: 0;
+ margin: 0 2px 0 2px;
+ position: relative;
+}
+.mce-preview-object .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-preview-object[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.mce-object {
+ background: transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;
+ border: 1px dashed #aaa;
+}
+.mce-pagebreak {
+ border: 1px dashed #aaa;
+ cursor: default;
+ display: block;
+ height: 5px;
+ margin-top: 15px;
+ page-break-before: always;
+ width: 100%;
+}
+@media print {
+ .mce-pagebreak {
+ border: 0;
+ }
+}
+.tiny-pageembed .mce-shim {
+ background: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tiny-pageembed[data-mce-selected="2"] .mce-shim {
+ display: none;
+}
+.tiny-pageembed {
+ display: inline-block;
+ position: relative;
+}
+.tiny-pageembed--21by9,
+.tiny-pageembed--16by9,
+.tiny-pageembed--4by3,
+.tiny-pageembed--1by1 {
+ display: block;
+ overflow: hidden;
+ padding: 0;
+ position: relative;
+ width: 100%;
+}
+.tiny-pageembed--21by9 {
+ padding-top: 42.857143%;
+}
+.tiny-pageembed--16by9 {
+ padding-top: 56.25%;
+}
+.tiny-pageembed--4by3 {
+ padding-top: 75%;
+}
+.tiny-pageembed--1by1 {
+ padding-top: 100%;
+}
+.tiny-pageembed--21by9 iframe,
+.tiny-pageembed--16by9 iframe,
+.tiny-pageembed--4by3 iframe,
+.tiny-pageembed--1by1 iframe {
+ border: 0;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.mce-content-body[data-mce-placeholder] {
+ position: relative;
+}
+.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ color: rgba(34, 47, 62, 0.7);
+ content: attr(data-mce-placeholder);
+ position: absolute;
+}
+.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before {
+ left: 1px;
+}
+.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before {
+ right: 1px;
+}
+.mce-content-body div.mce-resizehandle {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+ z-index: 10000;
+}
+.mce-content-body div.mce-resizehandle:hover {
+ background-color: #4099ff;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(1) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(2) {
+ cursor: nesw-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(3) {
+ cursor: nwse-resize;
+}
+.mce-content-body div.mce-resizehandle:nth-of-type(4) {
+ cursor: nesw-resize;
+}
+.mce-content-body .mce-resize-backdrop {
+ z-index: 10000;
+}
+.mce-content-body .mce-clonedresizable {
+ cursor: default;
+ opacity: 0.5;
+ outline: 1px dashed black;
+ position: absolute;
+ z-index: 10001;
+}
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns th,
+.mce-content-body .mce-clonedresizable.mce-resizetable-columns td {
+ border: 0;
+}
+.mce-content-body .mce-resize-helper {
+ background: #555;
+ background: rgba(0, 0, 0, 0.75);
+ border: 1px;
+ border-radius: 3px;
+ color: white;
+ display: none;
+ font-family: sans-serif;
+ font-size: 12px;
+ line-height: 14px;
+ margin: 5px 10px;
+ padding: 5px;
+ position: absolute;
+ white-space: nowrap;
+ z-index: 10002;
+}
+.tox-rtc-user-selection {
+ position: relative;
+}
+.tox-rtc-user-cursor {
+ bottom: 0;
+ cursor: default;
+ position: absolute;
+ top: 0;
+ width: 2px;
+}
+.tox-rtc-user-cursor::before {
+ background-color: inherit;
+ border-radius: 50%;
+ content: '';
+ display: block;
+ height: 8px;
+ position: absolute;
+ right: -3px;
+ top: -3px;
+ width: 8px;
+}
+.tox-rtc-user-cursor:hover::after {
+ background-color: inherit;
+ border-radius: 100px;
+ box-sizing: border-box;
+ color: #fff;
+ content: attr(data-user);
+ display: block;
+ font-size: 12px;
+ font-weight: bold;
+ left: -5px;
+ min-height: 8px;
+ min-width: 8px;
+ padding: 0 12px;
+ position: absolute;
+ top: -11px;
+ white-space: nowrap;
+ z-index: 1000;
+}
+.tox-rtc-user-selection--1 .tox-rtc-user-cursor {
+ background-color: #2dc26b;
+}
+.tox-rtc-user-selection--2 .tox-rtc-user-cursor {
+ background-color: #e03e2d;
+}
+.tox-rtc-user-selection--3 .tox-rtc-user-cursor {
+ background-color: #f1c40f;
+}
+.tox-rtc-user-selection--4 .tox-rtc-user-cursor {
+ background-color: #3598db;
+}
+.tox-rtc-user-selection--5 .tox-rtc-user-cursor {
+ background-color: #b96ad9;
+}
+.tox-rtc-user-selection--6 .tox-rtc-user-cursor {
+ background-color: #e67e23;
+}
+.tox-rtc-user-selection--7 .tox-rtc-user-cursor {
+ background-color: #aaa69d;
+}
+.tox-rtc-user-selection--8 .tox-rtc-user-cursor {
+ background-color: #f368e0;
+}
+.tox-rtc-remote-image {
+ background: #eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;
+ border: 1px solid #ccc;
+ min-height: 240px;
+ min-width: 320px;
+}
+.mce-match-marker {
+ background: #aaa;
+ color: #fff;
+}
+.mce-match-marker-selected {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::-moz-selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-match-marker-selected::selection {
+ background: #39f;
+ color: #fff;
+}
+.mce-content-body img[data-mce-selected],
+.mce-content-body video[data-mce-selected],
+.mce-content-body audio[data-mce-selected],
+.mce-content-body object[data-mce-selected],
+.mce-content-body embed[data-mce-selected],
+.mce-content-body table[data-mce-selected] {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body hr[data-mce-selected] {
+ outline: 3px solid #b4d7ff;
+ outline-offset: 1px;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:focus {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body *[contentEditable=false] *[contentEditable=true]:hover {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body *[contentEditable=false][data-mce-selected] {
+ cursor: not-allowed;
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body.mce-content-readonly *[contentEditable=true]:focus,
+.mce-content-body.mce-content-readonly *[contentEditable=true]:hover {
+ outline: none;
+}
+.mce-content-body *[data-mce-selected="inline-boundary"] {
+ background-color: #b4d7ff;
+}
+.mce-content-body .mce-edit-focus {
+ outline: 3px solid #b4d7ff;
+}
+.mce-content-body td[data-mce-selected],
+.mce-content-body th[data-mce-selected] {
+ position: relative;
+}
+.mce-content-body td[data-mce-selected]::-moz-selection,
+.mce-content-body th[data-mce-selected]::-moz-selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected]::selection,
+.mce-content-body th[data-mce-selected]::selection {
+ background: none;
+}
+.mce-content-body td[data-mce-selected] *,
+.mce-content-body th[data-mce-selected] * {
+ outline: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.mce-content-body td[data-mce-selected]::after,
+.mce-content-body th[data-mce-selected]::after {
+ background-color: rgba(180, 215, 255, 0.7);
+ border: 1px solid rgba(180, 215, 255, 0.7);
+ bottom: -1px;
+ content: '';
+ left: -1px;
+ mix-blend-mode: multiply;
+ position: absolute;
+ right: -1px;
+ top: -1px;
+}
+@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
+ .mce-content-body td[data-mce-selected]::after,
+ .mce-content-body th[data-mce-selected]::after {
+ border-color: rgba(0, 84, 180, 0.7);
+ }
+}
+.mce-content-body img::-moz-selection {
+ background: none;
+}
+.mce-content-body img::selection {
+ background: none;
+}
+.ephox-snooker-resizer-bar {
+ background-color: #b4d7ff;
+ opacity: 0;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.ephox-snooker-resizer-cols {
+ cursor: col-resize;
+}
+.ephox-snooker-resizer-rows {
+ cursor: row-resize;
+}
+.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging {
+ opacity: 1;
+}
+.mce-spellchecker-word {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+ height: 2rem;
+}
+.mce-spellchecker-grammar {
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");
+ background-position: 0 calc(100% + 1px);
+ background-repeat: repeat-x;
+ background-size: auto 6px;
+ cursor: default;
+}
+.mce-toc {
+ border: 1px solid gray;
+}
+.mce-toc h2 {
+ margin: 4px;
+}
+.mce-toc li {
+ list-style-type: none;
+}
+table[style*="border-width: 0px"],
+.mce-item-table:not([border]),
+.mce-item-table[border="0"],
+table[style*="border-width: 0px"] td,
+.mce-item-table:not([border]) td,
+.mce-item-table[border="0"] td,
+table[style*="border-width: 0px"] th,
+.mce-item-table:not([border]) th,
+.mce-item-table[border="0"] th,
+table[style*="border-width: 0px"] caption,
+.mce-item-table:not([border]) caption,
+.mce-item-table[border="0"] caption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks p,
+.mce-visualblocks h1,
+.mce-visualblocks h2,
+.mce-visualblocks h3,
+.mce-visualblocks h4,
+.mce-visualblocks h5,
+.mce-visualblocks h6,
+.mce-visualblocks div:not([data-mce-bogus]),
+.mce-visualblocks section,
+.mce-visualblocks article,
+.mce-visualblocks blockquote,
+.mce-visualblocks address,
+.mce-visualblocks pre,
+.mce-visualblocks figure,
+.mce-visualblocks figcaption,
+.mce-visualblocks hgroup,
+.mce-visualblocks aside,
+.mce-visualblocks ul,
+.mce-visualblocks ol,
+.mce-visualblocks dl {
+ background-repeat: no-repeat;
+ border: 1px dashed #bbb;
+ margin-left: 3px;
+ padding-top: 10px;
+}
+.mce-visualblocks p {
+ background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);
+}
+.mce-visualblocks h1 {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);
+}
+.mce-visualblocks h2 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);
+}
+.mce-visualblocks h3 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);
+}
+.mce-visualblocks h4 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);
+}
+.mce-visualblocks h5 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);
+}
+.mce-visualblocks h6 {
+ background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);
+}
+.mce-visualblocks div:not([data-mce-bogus]) {
+ background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);
+}
+.mce-visualblocks section {
+ background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);
+}
+.mce-visualblocks article {
+ background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);
+}
+.mce-visualblocks blockquote {
+ background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);
+}
+.mce-visualblocks address {
+ background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);
+}
+.mce-visualblocks pre {
+ background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);
+}
+.mce-visualblocks figure {
+ background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);
+}
+.mce-visualblocks figcaption {
+ border: 1px dashed #bbb;
+}
+.mce-visualblocks hgroup {
+ background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);
+}
+.mce-visualblocks aside {
+ background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);
+}
+.mce-visualblocks ul {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);
+}
+.mce-visualblocks ol {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);
+}
+.mce-visualblocks dl {
+ background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);
+}
+.mce-visualblocks:not([dir=rtl]) p,
+.mce-visualblocks:not([dir=rtl]) h1,
+.mce-visualblocks:not([dir=rtl]) h2,
+.mce-visualblocks:not([dir=rtl]) h3,
+.mce-visualblocks:not([dir=rtl]) h4,
+.mce-visualblocks:not([dir=rtl]) h5,
+.mce-visualblocks:not([dir=rtl]) h6,
+.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),
+.mce-visualblocks:not([dir=rtl]) section,
+.mce-visualblocks:not([dir=rtl]) article,
+.mce-visualblocks:not([dir=rtl]) blockquote,
+.mce-visualblocks:not([dir=rtl]) address,
+.mce-visualblocks:not([dir=rtl]) pre,
+.mce-visualblocks:not([dir=rtl]) figure,
+.mce-visualblocks:not([dir=rtl]) figcaption,
+.mce-visualblocks:not([dir=rtl]) hgroup,
+.mce-visualblocks:not([dir=rtl]) aside,
+.mce-visualblocks:not([dir=rtl]) ul,
+.mce-visualblocks:not([dir=rtl]) ol,
+.mce-visualblocks:not([dir=rtl]) dl {
+ margin-left: 3px;
+}
+.mce-visualblocks[dir=rtl] p,
+.mce-visualblocks[dir=rtl] h1,
+.mce-visualblocks[dir=rtl] h2,
+.mce-visualblocks[dir=rtl] h3,
+.mce-visualblocks[dir=rtl] h4,
+.mce-visualblocks[dir=rtl] h5,
+.mce-visualblocks[dir=rtl] h6,
+.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),
+.mce-visualblocks[dir=rtl] section,
+.mce-visualblocks[dir=rtl] article,
+.mce-visualblocks[dir=rtl] blockquote,
+.mce-visualblocks[dir=rtl] address,
+.mce-visualblocks[dir=rtl] pre,
+.mce-visualblocks[dir=rtl] figure,
+.mce-visualblocks[dir=rtl] figcaption,
+.mce-visualblocks[dir=rtl] hgroup,
+.mce-visualblocks[dir=rtl] aside,
+.mce-visualblocks[dir=rtl] ul,
+.mce-visualblocks[dir=rtl] ol,
+.mce-visualblocks[dir=rtl] dl {
+ background-position-x: right;
+ margin-right: 3px;
+}
+.mce-nbsp,
+.mce-shy {
+ background: #aaa;
+}
+.mce-shy::after {
+ content: '-';
+}
diff --git a/public/tinymce/skins/ui/oxide/content.inline.min.css b/public/tinymce/skins/ui/oxide/content.inline.min.css
new file mode 100644
index 00000000..0a3d965c
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.inline.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}
diff --git a/public/tinymce/skins/ui/oxide/content.min.css b/public/tinymce/skins/ui/oxide/content.min.css
new file mode 100644
index 00000000..40b3378d
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.mce-content-body .mce-item-anchor{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'8'%20height%3D'12'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20d%3D'M0%200L8%200%208%2012%204.09117821%209%200%2012z'%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;cursor:default;display:inline-block;height:12px!important;padding:0 2px;-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all;width:8px!important}.mce-content-body .mce-item-anchor[data-mce-selected]{outline-offset:1px}.tox-comments-visible .tox-comment{background-color:#fff0b7}.tox-comments-visible .tox-comment--active{background-color:#ffe168}.tox-checklist>li:not(.tox-checklist--hidden){list-style:none;margin:.25em 0}.tox-checklist>li:not(.tox-checklist--hidden)::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-unchecked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2215%22%20height%3D%2215%22%20x%3D%22.5%22%20y%3D%22.5%22%20fill-rule%3D%22nonzero%22%20stroke%3D%22%234C4C4C%22%20rx%3D%222%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A");cursor:pointer;height:1em;margin-left:-1.5em;margin-top:.125em;position:absolute;width:1em}.tox-checklist li:not(.tox-checklist--hidden).tox-checklist--checked::before{content:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2216%22%20height%3D%2216%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cg%20id%3D%22checklist-checked%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%3Crect%20id%3D%22Rectangle%22%20width%3D%2216%22%20height%3D%2216%22%20fill%3D%22%234099FF%22%20fill-rule%3D%22nonzero%22%20rx%3D%222%22%2F%3E%3Cpath%20id%3D%22Path%22%20fill%3D%22%23FFF%22%20fill-rule%3D%22nonzero%22%20d%3D%22M11.5703186%2C3.14417309%20C11.8516238%2C2.73724603%2012.4164781%2C2.62829933%2012.83558%2C2.89774797%20C13.260121%2C3.17069355%2013.3759736%2C3.72932262%2013.0909105%2C4.14168582%20L7.7580587%2C11.8560195%20C7.43776896%2C12.3193404%206.76483983%2C12.3852142%206.35607322%2C11.9948725%20L3.02491697%2C8.8138662%20C2.66090143%2C8.46625845%202.65798871%2C7.89594698%203.01850234%2C7.54483354%20C3.373942%2C7.19866177%203.94940006%2C7.19592841%204.30829608%2C7.5386474%20L6.85276923%2C9.9684299%20L11.5703186%2C3.14417309%20Z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E%0A")}[dir=rtl] .tox-checklist>li:not(.tox-checklist--hidden)::before{margin-left:0;margin-right:-1.5em}code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;tab-size:4;-webkit-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.mce-content-body{overflow-wrap:break-word;word-wrap:break-word}.mce-content-body .mce-visual-caret{background-color:#000;background-color:currentColor;position:absolute}.mce-content-body .mce-visual-caret-hidden{display:none}.mce-content-body [data-mce-caret]{left:-1000px;margin:0;padding:0;position:absolute;right:auto;top:0}.mce-content-body .mce-offscreen-selection{left:-2000000px;max-width:1000000px;position:absolute}.mce-content-body [contentEditable=false]{cursor:default}.mce-content-body [contentEditable=true]{cursor:text}.tox-cursor-format-painter{cursor:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%20viewBox%3D%220%200%2024%2024%22%3E%0A%20%20%3Cg%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M15%2C6%20C15%2C5.45%2014.55%2C5%2014%2C5%20L6%2C5%20C5.45%2C5%205%2C5.45%205%2C6%20L5%2C10%20C5%2C10.55%205.45%2C11%206%2C11%20L14%2C11%20C14.55%2C11%2015%2C10.55%2015%2C10%20L15%2C9%20L16%2C9%20L16%2C12%20L9%2C12%20L9%2C19%20C9%2C19.55%209.45%2C20%2010%2C20%20L11%2C20%20C11.55%2C20%2012%2C19.55%2012%2C19%20L12%2C14%20L18%2C14%20L18%2C7%20L15%2C7%20L15%2C6%20Z%22%2F%3E%0A%20%20%20%20%3Cpath%20fill%3D%22%23000%22%20fill-rule%3D%22nonzero%22%20d%3D%22M1%2C1%20L8.25%2C1%20C8.66421356%2C1%209%2C1.33578644%209%2C1.75%20L9%2C1.75%20C9%2C2.16421356%208.66421356%2C2.5%208.25%2C2.5%20L2.5%2C2.5%20L2.5%2C8.25%20C2.5%2C8.66421356%202.16421356%2C9%201.75%2C9%20L1.75%2C9%20C1.33578644%2C9%201%2C8.66421356%201%2C8.25%20L1%2C1%20Z%22%2F%3E%0A%20%20%3C%2Fg%3E%0A%3C%2Fsvg%3E%0A"),default}.mce-content-body figure.align-left{float:left}.mce-content-body figure.align-right{float:right}.mce-content-body figure.image.align-center{display:table;margin-left:auto;margin-right:auto}.mce-preview-object{border:1px solid gray;display:inline-block;line-height:0;margin:0 2px 0 2px;position:relative}.mce-preview-object .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.mce-preview-object[data-mce-selected="2"] .mce-shim{display:none}.mce-object{background:transparent url("data:image/svg+xml;charset=UTF-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%203h16a1%201%200%200%201%201%201v16a1%201%200%200%201-1%201H4a1%201%200%200%201-1-1V4a1%201%200%200%201%201-1zm1%202v14h14V5H5zm4.79%202.565l5.64%204.028a.5.5%200%200%201%200%20.814l-5.64%204.028a.5.5%200%200%201-.79-.407V7.972a.5.5%200%200%201%20.79-.407z%22%2F%3E%3C%2Fsvg%3E%0A") no-repeat center;border:1px dashed #aaa}.mce-pagebreak{border:1px dashed #aaa;cursor:default;display:block;height:5px;margin-top:15px;page-break-before:always;width:100%}@media print{.mce-pagebreak{border:0}}.tiny-pageembed .mce-shim{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);height:100%;left:0;position:absolute;top:0;width:100%}.tiny-pageembed[data-mce-selected="2"] .mce-shim{display:none}.tiny-pageembed{display:inline-block;position:relative}.tiny-pageembed--16by9,.tiny-pageembed--1by1,.tiny-pageembed--21by9,.tiny-pageembed--4by3{display:block;overflow:hidden;padding:0;position:relative;width:100%}.tiny-pageembed--21by9{padding-top:42.857143%}.tiny-pageembed--16by9{padding-top:56.25%}.tiny-pageembed--4by3{padding-top:75%}.tiny-pageembed--1by1{padding-top:100%}.tiny-pageembed--16by9 iframe,.tiny-pageembed--1by1 iframe,.tiny-pageembed--21by9 iframe,.tiny-pageembed--4by3 iframe{border:0;height:100%;left:0;position:absolute;top:0;width:100%}.mce-content-body[data-mce-placeholder]{position:relative}.mce-content-body[data-mce-placeholder]:not(.mce-visualblocks)::before{color:rgba(34,47,62,.7);content:attr(data-mce-placeholder);position:absolute}.mce-content-body:not([dir=rtl])[data-mce-placeholder]:not(.mce-visualblocks)::before{left:1px}.mce-content-body[dir=rtl][data-mce-placeholder]:not(.mce-visualblocks)::before{right:1px}.mce-content-body div.mce-resizehandle{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;height:10px;position:absolute;width:10px;z-index:10000}.mce-content-body div.mce-resizehandle:hover{background-color:#4099ff}.mce-content-body div.mce-resizehandle:nth-of-type(1){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(2){cursor:nesw-resize}.mce-content-body div.mce-resizehandle:nth-of-type(3){cursor:nwse-resize}.mce-content-body div.mce-resizehandle:nth-of-type(4){cursor:nesw-resize}.mce-content-body .mce-resize-backdrop{z-index:10000}.mce-content-body .mce-clonedresizable{cursor:default;opacity:.5;outline:1px dashed #000;position:absolute;z-index:10001}.mce-content-body .mce-clonedresizable.mce-resizetable-columns td,.mce-content-body .mce-clonedresizable.mce-resizetable-columns th{border:0}.mce-content-body .mce-resize-helper{background:#555;background:rgba(0,0,0,.75);border:1px;border-radius:3px;color:#fff;display:none;font-family:sans-serif;font-size:12px;line-height:14px;margin:5px 10px;padding:5px;position:absolute;white-space:nowrap;z-index:10002}.tox-rtc-user-selection{position:relative}.tox-rtc-user-cursor{bottom:0;cursor:default;position:absolute;top:0;width:2px}.tox-rtc-user-cursor::before{background-color:inherit;border-radius:50%;content:'';display:block;height:8px;position:absolute;right:-3px;top:-3px;width:8px}.tox-rtc-user-cursor:hover::after{background-color:inherit;border-radius:100px;box-sizing:border-box;color:#fff;content:attr(data-user);display:block;font-size:12px;font-weight:700;left:-5px;min-height:8px;min-width:8px;padding:0 12px;position:absolute;top:-11px;white-space:nowrap;z-index:1000}.tox-rtc-user-selection--1 .tox-rtc-user-cursor{background-color:#2dc26b}.tox-rtc-user-selection--2 .tox-rtc-user-cursor{background-color:#e03e2d}.tox-rtc-user-selection--3 .tox-rtc-user-cursor{background-color:#f1c40f}.tox-rtc-user-selection--4 .tox-rtc-user-cursor{background-color:#3598db}.tox-rtc-user-selection--5 .tox-rtc-user-cursor{background-color:#b96ad9}.tox-rtc-user-selection--6 .tox-rtc-user-cursor{background-color:#e67e23}.tox-rtc-user-selection--7 .tox-rtc-user-cursor{background-color:#aaa69d}.tox-rtc-user-selection--8 .tox-rtc-user-cursor{background-color:#f368e0}.tox-rtc-remote-image{background:#eaeaea url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2236%22%20height%3D%2212%22%20viewBox%3D%220%200%2036%2012%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%3Ccircle%20cx%3D%226%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2218%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.33s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%20%20%3Ccircle%20cx%3D%2230%22%20cy%3D%226%22%20r%3D%223%22%20fill%3D%22rgba(0%2C%200%2C%200%2C%20.2)%22%3E%0A%20%20%20%20%3Canimate%20attributeName%3D%22r%22%20values%3D%223%3B5%3B3%22%20calcMode%3D%22linear%22%20begin%3D%22.66s%22%20dur%3D%221s%22%20repeatCount%3D%22indefinite%22%20%2F%3E%0A%20%20%3C%2Fcircle%3E%0A%3C%2Fsvg%3E%0A") no-repeat center center;border:1px solid #ccc;min-height:240px;min-width:320px}.mce-match-marker{background:#aaa;color:#fff}.mce-match-marker-selected{background:#39f;color:#fff}.mce-match-marker-selected::-moz-selection{background:#39f;color:#fff}.mce-match-marker-selected::selection{background:#39f;color:#fff}.mce-content-body audio[data-mce-selected],.mce-content-body embed[data-mce-selected],.mce-content-body img[data-mce-selected],.mce-content-body object[data-mce-selected],.mce-content-body table[data-mce-selected],.mce-content-body video[data-mce-selected]{outline:3px solid #b4d7ff}.mce-content-body hr[data-mce-selected]{outline:3px solid #b4d7ff;outline-offset:1px}.mce-content-body [contentEditable=false] [contentEditable=true]:focus{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false] [contentEditable=true]:hover{outline:3px solid #b4d7ff}.mce-content-body [contentEditable=false][data-mce-selected]{cursor:not-allowed;outline:3px solid #b4d7ff}.mce-content-body.mce-content-readonly [contentEditable=true]:focus,.mce-content-body.mce-content-readonly [contentEditable=true]:hover{outline:0}.mce-content-body [data-mce-selected=inline-boundary]{background-color:#b4d7ff}.mce-content-body .mce-edit-focus{outline:3px solid #b4d7ff}.mce-content-body td[data-mce-selected],.mce-content-body th[data-mce-selected]{position:relative}.mce-content-body td[data-mce-selected]::-moz-selection,.mce-content-body th[data-mce-selected]::-moz-selection{background:0 0}.mce-content-body td[data-mce-selected]::selection,.mce-content-body th[data-mce-selected]::selection{background:0 0}.mce-content-body td[data-mce-selected] *,.mce-content-body th[data-mce-selected] *{outline:0;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{background-color:rgba(180,215,255,.7);border:1px solid rgba(180,215,255,.7);bottom:-1px;content:'';left:-1px;mix-blend-mode:multiply;position:absolute;right:-1px;top:-1px}@media screen and (-ms-high-contrast:active),(-ms-high-contrast:none){.mce-content-body td[data-mce-selected]::after,.mce-content-body th[data-mce-selected]::after{border-color:rgba(0,84,180,.7)}}.mce-content-body img::-moz-selection{background:0 0}.mce-content-body img::selection{background:0 0}.ephox-snooker-resizer-bar{background-color:#b4d7ff;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ephox-snooker-resizer-cols{cursor:col-resize}.ephox-snooker-resizer-rows{cursor:row-resize}.ephox-snooker-resizer-bar.ephox-snooker-resizer-bar-dragging{opacity:1}.mce-spellchecker-word{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%23ff0000'%20fill%3D'none'%20stroke-linecap%3D'round'%20stroke-opacity%3D'.75'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default;height:2rem}.mce-spellchecker-grammar{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D'4'%20height%3D'4'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%3E%3Cpath%20stroke%3D'%2300A835'%20fill%3D'none'%20stroke-linecap%3D'round'%20d%3D'M0%203L2%201%204%203'%2F%3E%3C%2Fsvg%3E%0A");background-position:0 calc(100% + 1px);background-repeat:repeat-x;background-size:auto 6px;cursor:default}.mce-toc{border:1px solid gray}.mce-toc h2{margin:4px}.mce-toc li{list-style-type:none}.mce-item-table:not([border]),.mce-item-table:not([border]) caption,.mce-item-table:not([border]) td,.mce-item-table:not([border]) th,.mce-item-table[border="0"],.mce-item-table[border="0"] caption,.mce-item-table[border="0"] td,.mce-item-table[border="0"] th,table[style*="border-width: 0px"],table[style*="border-width: 0px"] caption,table[style*="border-width: 0px"] td,table[style*="border-width: 0px"] th{border:1px dashed #bbb}.mce-visualblocks address,.mce-visualblocks article,.mce-visualblocks aside,.mce-visualblocks blockquote,.mce-visualblocks div:not([data-mce-bogus]),.mce-visualblocks dl,.mce-visualblocks figcaption,.mce-visualblocks figure,.mce-visualblocks h1,.mce-visualblocks h2,.mce-visualblocks h3,.mce-visualblocks h4,.mce-visualblocks h5,.mce-visualblocks h6,.mce-visualblocks hgroup,.mce-visualblocks ol,.mce-visualblocks p,.mce-visualblocks pre,.mce-visualblocks section,.mce-visualblocks ul{background-repeat:no-repeat;border:1px dashed #bbb;margin-left:3px;padding-top:10px}.mce-visualblocks p{background-image:url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)}.mce-visualblocks h1{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)}.mce-visualblocks h2{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)}.mce-visualblocks h3{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)}.mce-visualblocks h4{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)}.mce-visualblocks h5{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)}.mce-visualblocks h6{background-image:url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)}.mce-visualblocks div:not([data-mce-bogus]){background-image:url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)}.mce-visualblocks section{background-image:url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)}.mce-visualblocks article{background-image:url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)}.mce-visualblocks blockquote{background-image:url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)}.mce-visualblocks address{background-image:url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)}.mce-visualblocks pre{background-image:url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)}.mce-visualblocks figure{background-image:url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)}.mce-visualblocks figcaption{border:1px dashed #bbb}.mce-visualblocks hgroup{background-image:url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)}.mce-visualblocks aside{background-image:url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)}.mce-visualblocks ul{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==)}.mce-visualblocks ol{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==)}.mce-visualblocks dl{background-image:url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==)}.mce-visualblocks:not([dir=rtl]) address,.mce-visualblocks:not([dir=rtl]) article,.mce-visualblocks:not([dir=rtl]) aside,.mce-visualblocks:not([dir=rtl]) blockquote,.mce-visualblocks:not([dir=rtl]) div:not([data-mce-bogus]),.mce-visualblocks:not([dir=rtl]) dl,.mce-visualblocks:not([dir=rtl]) figcaption,.mce-visualblocks:not([dir=rtl]) figure,.mce-visualblocks:not([dir=rtl]) h1,.mce-visualblocks:not([dir=rtl]) h2,.mce-visualblocks:not([dir=rtl]) h3,.mce-visualblocks:not([dir=rtl]) h4,.mce-visualblocks:not([dir=rtl]) h5,.mce-visualblocks:not([dir=rtl]) h6,.mce-visualblocks:not([dir=rtl]) hgroup,.mce-visualblocks:not([dir=rtl]) ol,.mce-visualblocks:not([dir=rtl]) p,.mce-visualblocks:not([dir=rtl]) pre,.mce-visualblocks:not([dir=rtl]) section,.mce-visualblocks:not([dir=rtl]) ul{margin-left:3px}.mce-visualblocks[dir=rtl] address,.mce-visualblocks[dir=rtl] article,.mce-visualblocks[dir=rtl] aside,.mce-visualblocks[dir=rtl] blockquote,.mce-visualblocks[dir=rtl] div:not([data-mce-bogus]),.mce-visualblocks[dir=rtl] dl,.mce-visualblocks[dir=rtl] figcaption,.mce-visualblocks[dir=rtl] figure,.mce-visualblocks[dir=rtl] h1,.mce-visualblocks[dir=rtl] h2,.mce-visualblocks[dir=rtl] h3,.mce-visualblocks[dir=rtl] h4,.mce-visualblocks[dir=rtl] h5,.mce-visualblocks[dir=rtl] h6,.mce-visualblocks[dir=rtl] hgroup,.mce-visualblocks[dir=rtl] ol,.mce-visualblocks[dir=rtl] p,.mce-visualblocks[dir=rtl] pre,.mce-visualblocks[dir=rtl] section,.mce-visualblocks[dir=rtl] ul{background-position-x:right;margin-right:3px}.mce-nbsp,.mce-shy{background:#aaa}.mce-shy::after{content:'-'}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/public/tinymce/skins/ui/oxide/content.mobile.css b/public/tinymce/skins/ui/oxide/content.mobile.css
new file mode 100644
index 00000000..4bdb8bab
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.mobile.css
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection {
+ /* Note: this file is used inside the content, so isn't part of theming */
+ background-color: green;
+ display: inline-block;
+ opacity: 0.5;
+ position: absolute;
+}
+body {
+ -webkit-text-size-adjust: none;
+}
+body img {
+ /* this is related to the content margin */
+ max-width: 96vw;
+}
+body table img {
+ max-width: 95%;
+}
+body {
+ font-family: sans-serif;
+}
+table {
+ border-collapse: collapse;
+}
diff --git a/public/tinymce/skins/ui/oxide/content.mobile.min.css b/public/tinymce/skins/ui/oxide/content.mobile.min.css
new file mode 100644
index 00000000..35f7dc08
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/content.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
diff --git a/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff b/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff
new file mode 100644
index 00000000..1e3be038
Binary files /dev/null and b/public/tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff differ
diff --git a/public/tinymce/skins/ui/oxide/skin.css b/public/tinymce/skins/ui/oxide/skin.css
new file mode 100644
index 00000000..4b47a758
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.css
@@ -0,0 +1,3034 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox {
+ box-shadow: none;
+ box-sizing: content-box;
+ color: #222f3e;
+ cursor: auto;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: normal;
+ -webkit-tap-highlight-color: transparent;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ vertical-align: initial;
+ white-space: normal;
+}
+.tox *:not(svg):not(rect) {
+ box-sizing: inherit;
+ color: inherit;
+ cursor: inherit;
+ direction: inherit;
+ font-family: inherit;
+ font-size: inherit;
+ font-style: inherit;
+ font-weight: inherit;
+ line-height: inherit;
+ -webkit-tap-highlight-color: inherit;
+ text-align: inherit;
+ text-decoration: inherit;
+ text-shadow: inherit;
+ text-transform: inherit;
+ vertical-align: inherit;
+ white-space: inherit;
+}
+.tox *:not(svg):not(rect) {
+ /* stylelint-disable-line no-duplicate-selectors */
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ float: none;
+ height: auto;
+ margin: 0;
+ max-width: none;
+ outline: 0;
+ padding: 0;
+ position: static;
+ width: auto;
+}
+.tox:not([dir=rtl]) {
+ direction: ltr;
+ text-align: left;
+}
+.tox[dir=rtl] {
+ direction: rtl;
+ text-align: right;
+}
+.tox-tinymce {
+ border: 1px solid #cccccc;
+ border-radius: 0;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ overflow: hidden;
+ position: relative;
+ visibility: inherit !important;
+}
+.tox-tinymce-inline {
+ border: none;
+ box-shadow: none;
+}
+.tox-tinymce-inline .tox-editor-header {
+ background-color: transparent;
+ border: 1px solid #cccccc;
+ border-radius: 0;
+ box-shadow: none;
+}
+.tox-tinymce-aux {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ z-index: 1300;
+}
+.tox-tinymce *:focus,
+.tox-tinymce-aux *:focus {
+ outline: none;
+}
+button::-moz-focus-inner {
+ border: 0;
+}
+.tox .accessibility-issue__header {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description {
+ align-items: stretch;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .accessibility-issue__description > div {
+ padding-bottom: 4px;
+}
+.tox .accessibility-issue__description > div > div {
+ align-items: center;
+ display: flex;
+ margin-bottom: 4px;
+}
+.tox .accessibility-issue__description > *:last-child:not(:only-child) {
+ border-color: #cccccc;
+ border-style: solid;
+}
+.tox .accessibility-issue__repair {
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description {
+ background-color: rgba(32, 122, 183, 0.1);
+ border-color: rgba(32, 122, 183, 0.4);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description > *:last-child {
+ border-color: rgba(32, 122, 183, 0.4);
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2 {
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg {
+ fill: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon {
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description {
+ background-color: rgba(255, 165, 0, 0.1);
+ border-color: rgba(255, 165, 0, 0.5);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description > *:last-child {
+ border-color: rgba(255, 165, 0, 0.5);
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2 {
+ color: #cc8500;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg {
+ fill: #cc8500;
+}
+.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon {
+ color: #cc8500;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description {
+ background-color: rgba(204, 0, 0, 0.1);
+ border-color: rgba(204, 0, 0, 0.4);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description > *:last-child {
+ border-color: rgba(204, 0, 0, 0.4);
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2 {
+ color: #c00;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg {
+ fill: #c00;
+}
+.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon {
+ color: #c00;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description {
+ background-color: rgba(120, 171, 70, 0.1);
+ border-color: rgba(120, 171, 70, 0.4);
+ color: #222f3e;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description > *:last-child {
+ border-color: rgba(120, 171, 70, 0.4);
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2 {
+ color: #78AB46;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg {
+ fill: #78AB46;
+}
+.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon {
+ color: #78AB46;
+}
+.tox .tox-dialog__body-content .accessibility-issue__header h1,
+.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2 {
+ margin-top: 0;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-left: auto;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 4px 4px 8px;
+}
+.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-left-width: 1px;
+ padding-left: 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header > *:nth-last-child(2) {
+ margin-right: auto;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description {
+ padding: 4px 8px 4px 4px;
+}
+.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description > *:last-child {
+ border-right-width: 1px;
+ padding-right: 4px;
+}
+.tox .tox-anchorbar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-bar {
+ display: flex;
+ flex: 0 0 auto;
+}
+.tox .tox-button {
+ background-color: #207ab7;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #207ab7;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #fff;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ line-height: 24px;
+ margin: 0;
+ outline: none;
+ padding: 4px 16px;
+ text-align: center;
+ text-decoration: none;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-button[disabled] {
+ background-color: #207ab7;
+ background-image: none;
+ border-color: #207ab7;
+ box-shadow: none;
+ color: rgba(255, 255, 255, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-button:focus:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:hover:not(:disabled) {
+ background-color: #1c6ca1;
+ background-image: none;
+ border-color: #1c6ca1;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button:active:not(:disabled) {
+ background-color: #185d8c;
+ background-image: none;
+ border-color: #185d8c;
+ box-shadow: none;
+ color: #fff;
+}
+.tox .tox-button--secondary {
+ background-color: #f0f0f0;
+ background-image: none;
+ background-position: 0 0;
+ background-repeat: repeat;
+ border-color: #f0f0f0;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ color: #222f3e;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ outline: none;
+ padding: 4px 16px;
+ text-decoration: none;
+ text-transform: none;
+}
+.tox .tox-button--secondary[disabled] {
+ background-color: #f0f0f0;
+ background-image: none;
+ border-color: #f0f0f0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-button--secondary:focus:not(:disabled) {
+ background-color: #e3e3e3;
+ background-image: none;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--secondary:hover:not(:disabled) {
+ background-color: #e3e3e3;
+ background-image: none;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--secondary:active:not(:disabled) {
+ background-color: #d6d6d6;
+ background-image: none;
+ border-color: #d6d6d6;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--icon,
+.tox .tox-button.tox-button--icon,
+.tox .tox-button.tox-button--secondary.tox-button--icon {
+ padding: 4px;
+}
+.tox .tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--icon .tox-icon svg,
+.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg {
+ display: block;
+ fill: currentColor;
+}
+.tox .tox-button-link {
+ background: 0;
+ border: none;
+ box-sizing: border-box;
+ cursor: pointer;
+ display: inline-block;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+.tox .tox-button-link--sm {
+ font-size: 14px;
+}
+.tox .tox-button--naked {
+ background-color: transparent;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #222f3e;
+}
+.tox .tox-button--naked[disabled] {
+ background-color: #f0f0f0;
+ border-color: #f0f0f0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-button--naked:hover:not(:disabled) {
+ background-color: #e3e3e3;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--naked:focus:not(:disabled) {
+ background-color: #e3e3e3;
+ border-color: #e3e3e3;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--naked:active:not(:disabled) {
+ background-color: #d6d6d6;
+ border-color: #d6d6d6;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-button--naked .tox-icon svg {
+ fill: currentColor;
+}
+.tox .tox-button--naked.tox-button--icon:hover:not(:disabled) {
+ color: #222f3e;
+}
+.tox .tox-checkbox {
+ align-items: center;
+ border-radius: 3px;
+ cursor: pointer;
+ display: flex;
+ height: 36px;
+ min-width: 36px;
+}
+.tox .tox-checkbox__input {
+ /* Hide from view but visible to screen readers */
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ top: auto;
+ width: 1px;
+}
+.tox .tox-checkbox__icons {
+ align-items: center;
+ border-radius: 3px;
+ box-shadow: 0 0 0 2px transparent;
+ box-sizing: content-box;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ padding: calc(4px - 1px);
+ width: 24px;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: block;
+ fill: rgba(34, 47, 62, 0.3);
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: none;
+ fill: #207ab7;
+}
+.tox .tox-checkbox--disabled {
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:checked + .tox-checkbox__icons .tox-checkbox-icon__checked svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__unchecked svg {
+ display: none;
+}
+.tox input.tox-checkbox__input:indeterminate + .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg {
+ display: block;
+}
+.tox input.tox-checkbox__input:focus + .tox-checkbox__icons {
+ border-radius: 3px;
+ box-shadow: inset 0 0 0 1px #207ab7;
+ padding: calc(4px - 1px);
+}
+.tox:not([dir=rtl]) .tox-checkbox__label {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-checkbox__input {
+ left: -10000px;
+}
+.tox:not([dir=rtl]) .tox-bar .tox-checkbox {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-checkbox__label {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-checkbox__input {
+ right: -10000px;
+}
+.tox[dir=rtl] .tox-bar .tox-checkbox {
+ margin-right: 4px;
+}
+.tox {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox .tox-collection--toolbar .tox-collection__group {
+ display: flex;
+ padding: 0;
+}
+.tox .tox-collection--grid .tox-collection__group {
+ display: flex;
+ flex-wrap: wrap;
+ max-height: 208px;
+ overflow-x: hidden;
+ overflow-y: auto;
+ padding: 0;
+}
+.tox .tox-collection--list .tox-collection__group {
+ border-bottom-width: 0;
+ border-color: #cccccc;
+ border-left-width: 0;
+ border-right-width: 0;
+ border-style: solid;
+ border-top-width: 1px;
+ padding: 4px 0;
+}
+.tox .tox-collection--list .tox-collection__group:first-child {
+ border-top-width: 0;
+}
+.tox .tox-collection__group-heading {
+ background-color: #e6e6e6;
+ color: rgba(34, 47, 62, 0.7);
+ cursor: default;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: normal;
+ margin-bottom: 4px;
+ margin-top: -4px;
+ padding: 4px 8px;
+ text-transform: none;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection__item {
+ align-items: center;
+ color: #222f3e;
+ cursor: pointer;
+ display: flex;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+.tox .tox-collection--list .tox-collection__item {
+ padding: 4px 8px;
+}
+.tox .tox-collection--toolbar .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--grid .tox-collection__item {
+ border-radius: 3px;
+ padding: 4px;
+}
+.tox .tox-collection--list .tox-collection__item--enabled {
+ background-color: #fff;
+ color: #222f3e;
+}
+.tox .tox-collection--list .tox-collection__item--active {
+ background-color: #dee0e2;
+}
+.tox .tox-collection--toolbar .tox-collection__item--enabled {
+ background-color: #c8cbcf;
+ color: #222f3e;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active {
+ background-color: #dee0e2;
+}
+.tox .tox-collection--grid .tox-collection__item--enabled {
+ background-color: #c8cbcf;
+ color: #222f3e;
+}
+.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ background-color: #dee0e2;
+ color: #222f3e;
+}
+.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #222f3e;
+}
+.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled) {
+ color: #222f3e;
+}
+.tox .tox-collection__item--state-disabled {
+ background-color: transparent;
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-collection__item-icon,
+.tox .tox-collection__item-checkmark {
+ align-items: center;
+ display: flex;
+ height: 24px;
+ justify-content: center;
+ width: 24px;
+}
+.tox .tox-collection__item-icon svg,
+.tox .tox-collection__item-checkmark svg {
+ fill: currentColor;
+}
+.tox .tox-collection--toolbar-lg .tox-collection__item-icon {
+ height: 48px;
+ width: 48px;
+}
+.tox .tox-collection__item-label {
+ color: currentColor;
+ display: inline-block;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 24px;
+ text-transform: none;
+ word-break: break-all;
+}
+.tox .tox-collection__item-accessory {
+ color: rgba(34, 47, 62, 0.7);
+ display: inline-block;
+ font-size: 14px;
+ height: 24px;
+ line-height: 24px;
+ text-transform: none;
+}
+.tox .tox-collection__item-caret {
+ align-items: center;
+ display: flex;
+ min-height: 24px;
+}
+.tox .tox-collection__item-caret::after {
+ content: '';
+ font-size: 0;
+ min-height: inherit;
+}
+.tox .tox-collection__item-caret svg {
+ fill: #222f3e;
+}
+.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg {
+ display: none;
+}
+.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory + .tox-collection__item-checkmark {
+ display: none;
+}
+.tox .tox-collection--horizontal {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+ margin-bottom: 0;
+ overflow-x: auto;
+ padding: 0;
+}
+.tox .tox-collection--horizontal .tox-collection__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: nowrap;
+ margin: 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item {
+ height: 34px;
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+}
+.tox .tox-collection--horizontal .tox-collection__item-label {
+ white-space: nowrap;
+}
+.tox .tox-collection--horizontal .tox-collection__item-caret {
+ margin-left: 4px;
+}
+.tox .tox-collection__item-container {
+ display: flex;
+}
+.tox .tox-collection__item-container--row {
+ align-items: center;
+ flex: 1 1 auto;
+ flex-direction: row;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-left {
+ margin-right: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--align-right {
+ justify-content: flex-end;
+ margin-left: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top {
+ align-items: flex-start;
+ margin-bottom: auto;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle {
+ align-items: center;
+}
+.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom {
+ align-items: flex-end;
+ margin-top: auto;
+}
+.tox .tox-collection__item-container--column {
+ -ms-grid-row-align: center;
+ align-self: center;
+ flex: 1 1 auto;
+ flex-direction: column;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-left {
+ align-items: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--align-right {
+ align-items: flex-end;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top {
+ align-self: flex-start;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle {
+ -ms-grid-row-align: center;
+ align-self: center;
+}
+.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom {
+ align-self: flex-end;
+}
+.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-right: 1px solid #cccccc;
+}
+.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-left: 4px;
+}
+.tox:not([dir=rtl]) .tox-collection__item-accessory {
+ margin-left: 16px;
+ text-align: right;
+}
+.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret {
+ margin-left: 16px;
+}
+.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type) {
+ border-left: 1px solid #cccccc;
+}
+.tox[dir=rtl] .tox-collection--list .tox-collection__item > *:not(:first-child) {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-collection--list .tox-collection__item > .tox-collection__item-label:first-child {
+ margin-right: 4px;
+}
+.tox[dir=rtl] .tox-collection__item-icon-rtl {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg {
+ transform: rotateY(180deg);
+}
+.tox[dir=rtl] .tox-collection__item-accessory {
+ margin-right: 16px;
+ text-align: left;
+}
+.tox[dir=rtl] .tox-collection .tox-collection__item-caret {
+ margin-right: 16px;
+ transform: rotateY(180deg);
+}
+.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret {
+ margin-right: 4px;
+}
+.tox .tox-color-picker-container {
+ display: flex;
+ flex-direction: row;
+ height: 225px;
+ margin: 0;
+}
+.tox .tox-sv-palette {
+ box-sizing: border-box;
+ display: flex;
+ height: 100%;
+}
+.tox .tox-sv-palette-spectrum {
+ height: 100%;
+}
+.tox .tox-sv-palette,
+.tox .tox-sv-palette-spectrum {
+ width: 225px;
+}
+.tox .tox-sv-palette-thumb {
+ background: none;
+ border: 1px solid black;
+ border-radius: 50%;
+ box-sizing: content-box;
+ height: 12px;
+ position: absolute;
+ width: 12px;
+}
+.tox .tox-sv-palette-inner-thumb {
+ border: 1px solid white;
+ border-radius: 50%;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox .tox-hue-slider {
+ box-sizing: border-box;
+ height: 100%;
+ width: 25px;
+}
+.tox .tox-hue-slider-spectrum {
+ background: linear-gradient(to bottom, #f00, #ff0080, #f0f, #8000ff, #00f, #0080ff, #0ff, #00ff80, #0f0, #80ff00, #ff0, #ff8000, #f00);
+ height: 100%;
+ width: 100%;
+}
+.tox .tox-hue-slider,
+.tox .tox-hue-slider-spectrum {
+ width: 20px;
+}
+.tox .tox-hue-slider-thumb {
+ background: white;
+ border: 1px solid black;
+ box-sizing: content-box;
+ height: 4px;
+ width: 100%;
+}
+.tox .tox-rgb-form {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+}
+.tox .tox-rgb-form div {
+ align-items: center;
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 5px;
+ width: inherit;
+}
+.tox .tox-rgb-form input {
+ width: 6em;
+}
+.tox .tox-rgb-form input.tox-invalid {
+ /* Need !important to override Chrome's focus styling unfortunately */
+ border: 1px solid red !important;
+}
+.tox .tox-rgb-form .tox-rgba-preview {
+ border: 1px solid black;
+ flex-grow: 2;
+ margin-bottom: 0;
+}
+.tox:not([dir=rtl]) .tox-sv-palette {
+ margin-right: 15px;
+}
+.tox:not([dir=rtl]) .tox-hue-slider {
+ margin-right: 15px;
+}
+.tox:not([dir=rtl]) .tox-hue-slider-thumb {
+ margin-left: -1px;
+}
+.tox:not([dir=rtl]) .tox-rgb-form label {
+ margin-right: 0.5em;
+}
+.tox[dir=rtl] .tox-sv-palette {
+ margin-left: 15px;
+}
+.tox[dir=rtl] .tox-hue-slider {
+ margin-left: 15px;
+}
+.tox[dir=rtl] .tox-hue-slider-thumb {
+ margin-right: -1px;
+}
+.tox[dir=rtl] .tox-rgb-form label {
+ margin-left: 0.5em;
+}
+.tox .tox-toolbar .tox-swatches,
+.tox .tox-toolbar__primary .tox-swatches,
+.tox .tox-toolbar__overflow .tox-swatches {
+ margin: 2px 0 3px 4px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-swatches-menu {
+ border: 0;
+ margin: -4px 0;
+}
+.tox .tox-swatches__row {
+ display: flex;
+}
+.tox .tox-swatch {
+ height: 30px;
+ transition: transform 0.15s, box-shadow 0.15s;
+ width: 30px;
+}
+.tox .tox-swatch:hover,
+.tox .tox-swatch:focus {
+ box-shadow: 0 0 0 1px rgba(127, 127, 127, 0.3) inset;
+ transform: scale(0.8);
+}
+.tox .tox-swatch--remove {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-swatch--remove svg path {
+ stroke: #e74c3c;
+}
+.tox .tox-swatches__picker-btn {
+ align-items: center;
+ background-color: transparent;
+ border: 0;
+ cursor: pointer;
+ display: flex;
+ height: 30px;
+ justify-content: center;
+ outline: none;
+ padding: 0;
+ width: 30px;
+}
+.tox .tox-swatches__picker-btn svg {
+ height: 24px;
+ width: 24px;
+}
+.tox .tox-swatches__picker-btn:hover {
+ background: #dee0e2;
+}
+.tox:not([dir=rtl]) .tox-swatches__picker-btn {
+ margin-left: auto;
+}
+.tox[dir=rtl] .tox-swatches__picker-btn {
+ margin-right: auto;
+}
+.tox .tox-comment-thread {
+ background: #fff;
+ position: relative;
+}
+.tox .tox-comment-thread > *:not(:first-child) {
+ margin-top: 8px;
+}
+.tox .tox-comment {
+ background: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
+ padding: 8px 8px 16px 8px;
+ position: relative;
+}
+.tox .tox-comment__header {
+ align-items: center;
+ color: #222f3e;
+ display: flex;
+ justify-content: space-between;
+}
+.tox .tox-comment__date {
+ color: rgba(34, 47, 62, 0.7);
+ font-size: 12px;
+}
+.tox .tox-comment__body {
+ color: #222f3e;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin-top: 8px;
+ position: relative;
+ text-transform: initial;
+}
+.tox .tox-comment__body textarea {
+ resize: none;
+ white-space: normal;
+ width: 100%;
+}
+.tox .tox-comment__expander {
+ padding-top: 8px;
+}
+.tox .tox-comment__expander p {
+ color: rgba(34, 47, 62, 0.7);
+ font-size: 14px;
+ font-style: normal;
+}
+.tox .tox-comment__body p {
+ margin: 0;
+}
+.tox .tox-comment__buttonspacing {
+ padding-top: 16px;
+ text-align: center;
+}
+.tox .tox-comment-thread__overlay::after {
+ background: #fff;
+ bottom: 0;
+ content: "";
+ display: flex;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__reply {
+ display: flex;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 8px;
+}
+.tox .tox-comment__reply > *:first-child {
+ margin-bottom: 8px;
+ width: 100%;
+}
+.tox .tox-comment__edit {
+ display: flex;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ margin-top: 16px;
+}
+.tox .tox-comment__gradient::after {
+ background: linear-gradient(rgba(255, 255, 255, 0), #fff);
+ bottom: 0;
+ content: "";
+ display: block;
+ height: 5em;
+ margin-top: -40px;
+ position: absolute;
+ width: 100%;
+}
+.tox .tox-comment__overlay {
+ background: #fff;
+ bottom: 0;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ left: 0;
+ opacity: 0.9;
+ position: absolute;
+ right: 0;
+ text-align: center;
+ top: 0;
+ z-index: 5;
+}
+.tox .tox-comment__loading-text {
+ align-items: center;
+ color: #222f3e;
+ display: flex;
+ flex-direction: column;
+ position: relative;
+}
+.tox .tox-comment__loading-text > div {
+ padding-bottom: 16px;
+}
+.tox .tox-comment__overlaytext {
+ bottom: 0;
+ flex-direction: column;
+ font-size: 14px;
+ left: 0;
+ padding: 1em;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 10;
+}
+.tox .tox-comment__overlaytext p {
+ background-color: #fff;
+ box-shadow: 0 0 8px 8px #fff;
+ color: #222f3e;
+ text-align: center;
+}
+.tox .tox-comment__overlaytext div:nth-of-type(2) {
+ font-size: 0.8em;
+}
+.tox .tox-comment__busy-spinner {
+ align-items: center;
+ background-color: #fff;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 20;
+}
+.tox .tox-comment__scroll {
+ display: flex;
+ flex-direction: column;
+ flex-shrink: 1;
+ overflow: auto;
+}
+.tox .tox-conversations {
+ margin: 8px;
+}
+.tox:not([dir=rtl]) .tox-comment__edit {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-comment__buttonspacing > *:last-child,
+.tox:not([dir=rtl]) .tox-comment__edit > *:last-child,
+.tox:not([dir=rtl]) .tox-comment__reply > *:last-child {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-comment__edit {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-comment__buttonspacing > *:last-child,
+.tox[dir=rtl] .tox-comment__edit > *:last-child,
+.tox[dir=rtl] .tox-comment__reply > *:last-child {
+ margin-right: 8px;
+}
+.tox .tox-user {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-user__avatar svg {
+ fill: rgba(34, 47, 62, 0.7);
+}
+.tox .tox-user__name {
+ color: rgba(34, 47, 62, 0.7);
+ font-size: 12px;
+ font-style: normal;
+ font-weight: bold;
+ text-transform: uppercase;
+}
+.tox:not([dir=rtl]) .tox-user__avatar svg {
+ margin-right: 8px;
+}
+.tox:not([dir=rtl]) .tox-user__avatar + .tox-user__name {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-user__avatar svg {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-user__avatar + .tox-user__name {
+ margin-right: 8px;
+}
+.tox .tox-dialog-wrap {
+ align-items: center;
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+ z-index: 1100;
+}
+.tox .tox-dialog-wrap__backdrop {
+ background-color: rgba(255, 255, 255, 0.75);
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 1;
+}
+.tox .tox-dialog-wrap__backdrop--opaque {
+ background-color: #fff;
+}
+.tox .tox-dialog {
+ background-color: #fff;
+ border-color: #cccccc;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: 0 16px 16px -10px rgba(34, 47, 62, 0.15), 0 0 40px 1px rgba(34, 47, 62, 0.15);
+ display: flex;
+ flex-direction: column;
+ max-height: 100%;
+ max-width: 480px;
+ overflow: hidden;
+ position: relative;
+ width: 95vw;
+ z-index: 2;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog {
+ align-self: flex-start;
+ margin: 8px auto;
+ width: calc(100vw - 16px);
+ }
+}
+.tox .tox-dialog-inline {
+ z-index: 1100;
+}
+.tox .tox-dialog__header {
+ align-items: center;
+ background-color: #fff;
+ border-bottom: none;
+ color: #222f3e;
+ display: flex;
+ font-size: 16px;
+ justify-content: space-between;
+ padding: 8px 16px 0 16px;
+ position: relative;
+}
+.tox .tox-dialog__header .tox-button {
+ z-index: 1;
+}
+.tox .tox-dialog__draghandle {
+ cursor: grab;
+ height: 100%;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tox .tox-dialog__draghandle:active {
+ cursor: grabbing;
+}
+.tox .tox-dialog__dismiss {
+ margin-left: auto;
+}
+.tox .tox-dialog__title {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ margin: 0;
+ text-transform: none;
+}
+.tox .tox-dialog__body {
+ color: #222f3e;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ min-width: 0;
+ text-align: left;
+ text-transform: none;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body {
+ flex-direction: column;
+ }
+}
+.tox .tox-dialog__body-nav {
+ align-items: flex-start;
+ display: flex;
+ flex-direction: column;
+ padding: 16px 16px;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox .tox-dialog__body-nav {
+ flex-direction: row;
+ -webkit-overflow-scrolling: touch;
+ overflow-x: auto;
+ padding-bottom: 0;
+ }
+}
+.tox .tox-dialog__body-nav-item {
+ border-bottom: 2px solid transparent;
+ color: rgba(34, 47, 62, 0.7);
+ display: inline-block;
+ font-size: 14px;
+ line-height: 1.3;
+ margin-bottom: 8px;
+ text-decoration: none;
+ white-space: nowrap;
+}
+.tox .tox-dialog__body-nav-item:focus {
+ background-color: rgba(32, 122, 183, 0.1);
+}
+.tox .tox-dialog__body-nav-item--active {
+ border-bottom: 2px solid #207ab7;
+ color: #207ab7;
+}
+.tox .tox-dialog__body-content {
+ box-sizing: border-box;
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+ max-height: 650px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ padding: 16px 16px;
+}
+.tox .tox-dialog__body-content > * {
+ margin-bottom: 0;
+ margin-top: 16px;
+}
+.tox .tox-dialog__body-content > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content > *:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content a {
+ color: #207ab7;
+ cursor: pointer;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:hover,
+.tox .tox-dialog__body-content a:focus {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content a:active {
+ color: #185d8c;
+ text-decoration: none;
+}
+.tox .tox-dialog__body-content svg {
+ fill: #222f3e;
+}
+.tox .tox-dialog__body-content ul {
+ display: block;
+ list-style-type: disc;
+ margin-bottom: 16px;
+ -webkit-margin-end: 0;
+ margin-inline-end: 0;
+ -webkit-margin-start: 0;
+ margin-inline-start: 0;
+ -webkit-padding-start: 2.5rem;
+ padding-inline-start: 2.5rem;
+}
+.tox .tox-dialog__body-content .tox-form__group h1 {
+ color: #222f3e;
+ font-size: 20px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group h2 {
+ color: #222f3e;
+ font-size: 16px;
+ font-style: normal;
+ font-weight: bold;
+ letter-spacing: normal;
+ margin-bottom: 16px;
+ margin-top: 2rem;
+ text-transform: none;
+}
+.tox .tox-dialog__body-content .tox-form__group p {
+ margin-bottom: 16px;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:first-child,
+.tox .tox-dialog__body-content .tox-form__group h2:first-child,
+.tox .tox-dialog__body-content .tox-form__group p:first-child {
+ margin-top: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:last-child,
+.tox .tox-dialog__body-content .tox-form__group h2:last-child,
+.tox .tox-dialog__body-content .tox-form__group p:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-dialog__body-content .tox-form__group h1:only-child,
+.tox .tox-dialog__body-content .tox-form__group h2:only-child,
+.tox .tox-dialog__body-content .tox-form__group p:only-child {
+ margin-bottom: 0;
+ margin-top: 0;
+}
+.tox .tox-dialog--width-lg {
+ height: 650px;
+ max-width: 1200px;
+}
+.tox .tox-dialog--width-md {
+ max-width: 800px;
+}
+.tox .tox-dialog--width-md .tox-dialog__body-content {
+ overflow: auto;
+}
+.tox .tox-dialog__body-content--centered {
+ text-align: center;
+}
+.tox .tox-dialog__footer {
+ align-items: center;
+ background-color: #fff;
+ border-top: 1px solid #cccccc;
+ display: flex;
+ justify-content: space-between;
+ padding: 8px 16px;
+}
+.tox .tox-dialog__footer-start,
+.tox .tox-dialog__footer-end {
+ display: flex;
+}
+.tox .tox-dialog__busy-spinner {
+ align-items: center;
+ background-color: rgba(255, 255, 255, 0.75);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ z-index: 3;
+}
+.tox .tox-dialog__table {
+ border-collapse: collapse;
+ width: 100%;
+}
+.tox .tox-dialog__table thead th {
+ font-weight: bold;
+ padding-bottom: 8px;
+}
+.tox .tox-dialog__table tbody tr {
+ border-bottom: 1px solid #cccccc;
+}
+.tox .tox-dialog__table tbody tr:last-child {
+ border-bottom: none;
+}
+.tox .tox-dialog__table td {
+ padding-bottom: 8px;
+ padding-top: 8px;
+}
+.tox .tox-dialog__popups {
+ position: absolute;
+ width: 100%;
+ z-index: 1100;
+}
+.tox .tox-dialog__body-iframe {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox .tox-dialog-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox .tox-dialog-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox .tox-dialog-dock-transition {
+ transition: visibility 0s linear 0.3s, opacity 0.3s ease;
+}
+.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein {
+ transition-delay: 0s;
+}
+.tox.tox-platform-ie {
+ /* IE11 CSS styles go here */
+}
+.tox.tox-platform-ie .tox-dialog-wrap {
+ position: -ms-device-fixed;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav {
+ margin-right: 0;
+ }
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child) {
+ margin-left: 8px;
+ }
+}
+.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-left: 8px;
+}
+.tox[dir=rtl] .tox-dialog__body {
+ text-align: right;
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav {
+ margin-left: 0;
+ }
+}
+@media only screen and (max-width:767px) {
+ body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child) {
+ margin-right: 8px;
+ }
+}
+.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start > *,
+.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end > * {
+ margin-right: 8px;
+}
+body.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox .tox-dropzone-container {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dropzone {
+ align-items: center;
+ background: #fff;
+ border: 2px dashed #cccccc;
+ box-sizing: border-box;
+ display: flex;
+ flex-direction: column;
+ flex-grow: 1;
+ justify-content: center;
+ min-height: 100px;
+ padding: 10px;
+}
+.tox .tox-dropzone p {
+ color: rgba(34, 47, 62, 0.7);
+ margin: 0 0 16px 0;
+}
+.tox .tox-edit-area {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ overflow: hidden;
+ position: relative;
+}
+.tox .tox-edit-area__iframe {
+ background-color: #fff;
+ border: 0;
+ box-sizing: border-box;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+}
+.tox.tox-inline-edit-area {
+ border: 1px dotted #cccccc;
+}
+.tox .tox-editor-container {
+ display: flex;
+ flex: 1 1 auto;
+ flex-direction: column;
+ overflow: hidden;
+}
+.tox .tox-editor-header {
+ z-index: 1;
+}
+.tox:not(.tox-tinymce-inline) .tox-editor-header {
+ box-shadow: none;
+ transition: box-shadow 0.5s;
+}
+.tox.tox-tinymce--toolbar-bottom .tox-editor-header,
+.tox.tox-tinymce-inline .tox-editor-header {
+ margin-bottom: -1px;
+}
+.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header {
+ background-color: transparent;
+ box-shadow: 0 4px 4px -3px rgba(0, 0, 0, 0.25);
+}
+.tox-editor-dock-fadeout {
+ opacity: 0;
+ visibility: hidden;
+}
+.tox-editor-dock-fadein {
+ opacity: 1;
+ visibility: visible;
+}
+.tox-editor-dock-transition {
+ transition: visibility 0s linear 0.25s, opacity 0.25s ease;
+}
+.tox-editor-dock-transition.tox-editor-dock-fadein {
+ transition-delay: 0s;
+}
+.tox .tox-control-wrap {
+ flex: 1;
+ position: relative;
+}
+.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,
+.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid {
+ display: none;
+}
+.tox .tox-control-wrap svg {
+ display: block;
+}
+.tox .tox-control-wrap__status-icon-wrap {
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-control-wrap__status-icon-invalid svg {
+ fill: #c00;
+}
+.tox .tox-control-wrap__status-icon-unknown svg {
+ fill: orange;
+}
+.tox .tox-control-wrap__status-icon-valid svg {
+ fill: green;
+}
+.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,
+.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,
+.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield {
+ padding-right: 32px;
+}
+.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap {
+ right: 4px;
+}
+.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,
+.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,
+.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield {
+ padding-left: 32px;
+}
+.tox[dir=rtl] .tox-control-wrap__status-icon-wrap {
+ left: 4px;
+}
+.tox .tox-autocompleter {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-menu {
+ max-width: 25em;
+}
+.tox .tox-autocompleter .tox-autocompleter-highlight {
+ font-weight: bold;
+}
+.tox .tox-color-input {
+ display: flex;
+ position: relative;
+ z-index: 1;
+}
+.tox .tox-color-input .tox-textfield {
+ z-index: -1;
+}
+.tox .tox-color-input span {
+ border-color: rgba(34, 47, 62, 0.2);
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ height: 24px;
+ position: absolute;
+ top: 6px;
+ width: 24px;
+}
+.tox .tox-color-input span:hover:not([aria-disabled=true]),
+.tox .tox-color-input span:focus:not([aria-disabled=true]) {
+ border-color: #207ab7;
+ cursor: pointer;
+}
+.tox .tox-color-input span::before {
+ background-image: linear-gradient(45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(-45deg, rgba(0, 0, 0, 0.25) 25%, transparent 25%), linear-gradient(45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%), linear-gradient(-45deg, transparent 75%, rgba(0, 0, 0, 0.25) 75%);
+ background-position: 0 0, 0 6px, 6px -6px, -6px 0;
+ background-size: 12px 12px;
+ border: 1px solid #fff;
+ border-radius: 3px;
+ box-sizing: border-box;
+ content: '';
+ height: 24px;
+ left: -1px;
+ position: absolute;
+ top: -1px;
+ width: 24px;
+ z-index: -1;
+}
+.tox .tox-color-input span[aria-disabled=true] {
+ cursor: not-allowed;
+}
+.tox:not([dir=rtl]) .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir=rtl]) .tox-color-input .tox-textfield {
+ padding-left: 36px;
+}
+.tox:not([dir=rtl]) .tox-color-input span {
+ left: 6px;
+}
+.tox[dir="rtl"] .tox-color-input {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir="rtl"] .tox-color-input .tox-textfield {
+ padding-right: 36px;
+}
+.tox[dir="rtl"] .tox-color-input span {
+ right: 6px;
+}
+.tox .tox-label,
+.tox .tox-toolbar-label {
+ color: rgba(34, 47, 62, 0.7);
+ display: block;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.3;
+ padding: 0 8px 0 0;
+ text-transform: none;
+ white-space: nowrap;
+}
+.tox .tox-toolbar-label {
+ padding: 0 8px;
+}
+.tox[dir=rtl] .tox-label {
+ padding: 0 0 0 8px;
+}
+.tox .tox-form {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group {
+ box-sizing: border-box;
+ margin-bottom: 4px;
+}
+.tox .tox-form-group--maximize {
+ flex: 1;
+}
+.tox .tox-form__group--error {
+ color: #c00;
+}
+.tox .tox-form__group--collection {
+ display: flex;
+}
+.tox .tox-form__grid {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap;
+ justify-content: space-between;
+}
+.tox .tox-form__grid--2col > .tox-form__group {
+ width: calc(50% - (8px / 2));
+}
+.tox .tox-form__grid--3col > .tox-form__group {
+ width: calc(100% / 3 - (8px / 2));
+}
+.tox .tox-form__grid--4col > .tox-form__group {
+ width: calc(25% - (8px / 2));
+}
+.tox .tox-form__controls-h-stack {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--inline {
+ align-items: center;
+ display: flex;
+}
+.tox .tox-form__group--stretched {
+ display: flex;
+ flex: 1;
+ flex-direction: column;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-textarea {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-form__group--stretched .tox-navobj :nth-child(2) {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 100%;
+}
+.tox:not([dir=rtl]) .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-form__controls-h-stack > *:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-lock.tox-locked .tox-lock-icon__unlock,
+.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock {
+ display: none;
+}
+.tox .tox-textfield,
+.tox .tox-toolbar-textfield,
+.tox .tox-listboxfield .tox-listbox--select,
+.tox .tox-textarea {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #fff;
+ border-color: #cccccc;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #222f3e;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-textfield[disabled],
+.tox .tox-textarea[disabled] {
+ background-color: #f2f2f2;
+ color: rgba(34, 47, 62, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-textfield:focus,
+.tox .tox-listboxfield .tox-listbox--select:focus,
+.tox .tox-textarea:focus {
+ background-color: #fff;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-toolbar-textfield {
+ border-width: 0;
+ margin-bottom: 3px;
+ margin-top: 2px;
+ max-width: 250px;
+}
+.tox .tox-naked-btn {
+ background-color: transparent;
+ border: 0;
+ border-color: transparent;
+ box-shadow: unset;
+ color: #207ab7;
+ cursor: pointer;
+ display: block;
+ margin: 0;
+ padding: 0;
+}
+.tox .tox-naked-btn svg {
+ display: block;
+ fill: #222f3e;
+}
+.tox:not([dir=rtl]) .tox-toolbar-textfield + * {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-toolbar-textfield + * {
+ margin-right: 4px;
+}
+.tox .tox-listboxfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-listboxfield .tox-listbox--select[disabled] {
+ background-color: #f2f2f2;
+ color: rgba(34, 47, 62, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-listbox__select-label {
+ cursor: default;
+ flex: 1;
+ margin: 0 4px;
+}
+.tox .tox-listbox__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-listbox__select-chevron svg {
+ fill: #222f3e;
+}
+.tox .tox-listboxfield .tox-listbox--select {
+ align-items: center;
+ display: flex;
+}
+.tox:not([dir=rtl]) .tox-listboxfield svg {
+ right: 8px;
+}
+.tox[dir=rtl] .tox-listboxfield svg {
+ left: 8px;
+}
+.tox .tox-selectfield {
+ cursor: pointer;
+ position: relative;
+}
+.tox .tox-selectfield select {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ background-color: #fff;
+ border-color: #cccccc;
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ color: #222f3e;
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
+ font-size: 16px;
+ line-height: 24px;
+ margin: 0;
+ min-height: 34px;
+ outline: none;
+ padding: 5px 4.75px;
+ resize: none;
+ width: 100%;
+}
+.tox .tox-selectfield select[disabled] {
+ background-color: #f2f2f2;
+ color: rgba(34, 47, 62, 0.85);
+ cursor: not-allowed;
+}
+.tox .tox-selectfield select::-ms-expand {
+ display: none;
+}
+.tox .tox-selectfield select:focus {
+ background-color: #fff;
+ border-color: #207ab7;
+ box-shadow: none;
+ outline: none;
+}
+.tox .tox-selectfield svg {
+ pointer-events: none;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox:not([dir=rtl]) .tox-selectfield select[size="0"],
+.tox:not([dir=rtl]) .tox-selectfield select[size="1"] {
+ padding-right: 24px;
+}
+.tox:not([dir=rtl]) .tox-selectfield svg {
+ right: 8px;
+}
+.tox[dir=rtl] .tox-selectfield select[size="0"],
+.tox[dir=rtl] .tox-selectfield select[size="1"] {
+ padding-left: 24px;
+}
+.tox[dir=rtl] .tox-selectfield svg {
+ left: 8px;
+}
+.tox .tox-textarea {
+ -webkit-appearance: textarea;
+ -moz-appearance: textarea;
+ appearance: textarea;
+ white-space: pre-wrap;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ left: 0;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ position: fixed;
+ top: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+ z-index: 1200;
+}
+.tox-shadowhost.tox-fullscreen {
+ z-index: 1200;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
+.tox .tox-help__more-link {
+ list-style: none;
+ margin-top: 1em;
+}
+.tox .tox-image-tools {
+ width: 100%;
+}
+.tox .tox-image-tools__toolbar {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.tox .tox-image-tools__image {
+ background-color: #666;
+ height: 380px;
+ overflow: auto;
+ position: relative;
+ width: 100%;
+}
+.tox .tox-image-tools__image,
+.tox .tox-image-tools__image + .tox-image-tools__toolbar {
+ margin-top: 8px;
+}
+.tox .tox-image-tools__image-bg {
+ background: url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==);
+}
+.tox .tox-image-tools__toolbar > .tox-spacer {
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-croprect-block {
+ background: black;
+ filter: alpha(opacity=50);
+ opacity: 0.5;
+ position: absolute;
+ zoom: 1;
+}
+.tox .tox-croprect-handle {
+ border: 2px solid white;
+ height: 20px;
+ left: 0;
+ position: absolute;
+ top: 0;
+ width: 20px;
+}
+.tox .tox-croprect-handle-move {
+ border: 0;
+ cursor: move;
+ position: absolute;
+}
+.tox .tox-croprect-handle-nw {
+ border-width: 2px 0 0 2px;
+ cursor: nw-resize;
+ left: 100px;
+ margin: -2px 0 0 -2px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-ne {
+ border-width: 2px 2px 0 0;
+ cursor: ne-resize;
+ left: 200px;
+ margin: -2px 0 0 -20px;
+ top: 100px;
+}
+.tox .tox-croprect-handle-sw {
+ border-width: 0 0 2px 2px;
+ cursor: sw-resize;
+ left: 100px;
+ margin: -20px 2px 0 -2px;
+ top: 200px;
+}
+.tox .tox-croprect-handle-se {
+ border-width: 0 2px 2px 0;
+ cursor: se-resize;
+ left: 200px;
+ margin: -20px 0 0 -20px;
+ top: 200px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-left: 8px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-left: 32px;
+}
+.tox:not([dir=rtl]) .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-left: 32px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider:not(:first-of-type) {
+ margin-right: 8px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-button + .tox-slider {
+ margin-right: 32px;
+}
+.tox[dir=rtl] .tox-image-tools__toolbar > .tox-slider + .tox-button {
+ margin-right: 32px;
+}
+.tox .tox-insert-table-picker {
+ display: flex;
+ flex-wrap: wrap;
+ width: 170px;
+}
+.tox .tox-insert-table-picker > div {
+ border-color: #cccccc;
+ border-style: solid;
+ border-width: 0 1px 1px 0;
+ box-sizing: border-box;
+ height: 17px;
+ width: 17px;
+}
+.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker {
+ margin: -4px 0;
+}
+.tox .tox-insert-table-picker .tox-insert-table-picker__selected {
+ background-color: rgba(32, 122, 183, 0.5);
+ border-color: rgba(32, 122, 183, 0.5);
+}
+.tox .tox-insert-table-picker__label {
+ color: rgba(34, 47, 62, 0.7);
+ display: block;
+ font-size: 14px;
+ padding: 4px;
+ text-align: center;
+ width: 100%;
+}
+.tox:not([dir=rtl]) {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox:not([dir=rtl]) .tox-insert-table-picker > div:nth-child(10n) {
+ border-right: 0;
+}
+.tox[dir=rtl] {
+ /* stylelint-disable-next-line no-descending-specificity */
+}
+.tox[dir=rtl] .tox-insert-table-picker > div:nth-child(10n+1) {
+ border-right: 0;
+}
+.tox {
+ /* stylelint-disable */
+ /* stylelint-enable */
+}
+.tox .tox-menu {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 4px 8px 0 rgba(34, 47, 62, 0.1);
+ display: inline-block;
+ overflow: hidden;
+ vertical-align: top;
+ z-index: 1150;
+}
+.tox .tox-menu.tox-collection.tox-collection--list {
+ padding: 0;
+}
+.tox .tox-menu.tox-collection.tox-collection--toolbar {
+ padding: 4px;
+}
+.tox .tox-menu.tox-collection.tox-collection--grid {
+ padding: 4px;
+}
+.tox .tox-menu__label h1,
+.tox .tox-menu__label h2,
+.tox .tox-menu__label h3,
+.tox .tox-menu__label h4,
+.tox .tox-menu__label h5,
+.tox .tox-menu__label h6,
+.tox .tox-menu__label p,
+.tox .tox-menu__label blockquote,
+.tox .tox-menu__label code {
+ margin: 0;
+}
+.tox .tox-menubar {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;
+ background-color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 4px 0 4px;
+}
+.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar {
+ border-top: 1px solid #cccccc;
+}
+/* Deprecated. Remove in next major release */
+.tox .tox-mbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0 4px;
+ text-transform: none;
+ width: auto;
+}
+.tox .tox-mbtn[disabled] {
+ background-color: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-mbtn:focus:not(:disabled) {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-mbtn--active {
+ background: #c8cbcf;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active) {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-mbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-mbtn[disabled] .tox-mbtn__select-label {
+ cursor: not-allowed;
+}
+.tox .tox-mbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+ display: none;
+}
+.tox .tox-notification {
+ border-radius: 3px;
+ border-style: solid;
+ border-width: 1px;
+ box-shadow: none;
+ box-sizing: border-box;
+ display: -ms-grid;
+ display: grid;
+ font-size: 14px;
+ font-weight: normal;
+ -ms-grid-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ grid-template-columns: minmax(40px, 1fr) auto minmax(40px, 1fr);
+ margin-top: 4px;
+ opacity: 0;
+ padding: 4px;
+ transition: transform 100ms ease-in, opacity 150ms ease-in;
+}
+.tox .tox-notification p {
+ font-size: 14px;
+ font-weight: normal;
+}
+.tox .tox-notification a {
+ text-decoration: underline;
+}
+.tox .tox-notification--in {
+ opacity: 1;
+}
+.tox .tox-notification--success {
+ background-color: #e4eeda;
+ border-color: #d7e6c8;
+ color: #222f3e;
+}
+.tox .tox-notification--success p {
+ color: #222f3e;
+}
+.tox .tox-notification--success a {
+ color: #547831;
+}
+.tox .tox-notification--success svg {
+ fill: #222f3e;
+}
+.tox .tox-notification--error {
+ background-color: #f8dede;
+ border-color: #f2bfbf;
+ color: #222f3e;
+}
+.tox .tox-notification--error p {
+ color: #222f3e;
+}
+.tox .tox-notification--error a {
+ color: #c00;
+}
+.tox .tox-notification--error svg {
+ fill: #222f3e;
+}
+.tox .tox-notification--warn,
+.tox .tox-notification--warning {
+ background-color: #fffaea;
+ border-color: #ffe89d;
+ color: #222f3e;
+}
+.tox .tox-notification--warn p,
+.tox .tox-notification--warning p {
+ color: #222f3e;
+}
+.tox .tox-notification--warn a,
+.tox .tox-notification--warning a {
+ color: #222f3e;
+}
+.tox .tox-notification--warn svg,
+.tox .tox-notification--warning svg {
+ fill: #222f3e;
+}
+.tox .tox-notification--info {
+ background-color: #d9edf7;
+ border-color: #779ecb;
+ color: #222f3e;
+}
+.tox .tox-notification--info p {
+ color: #222f3e;
+}
+.tox .tox-notification--info a {
+ color: #222f3e;
+}
+.tox .tox-notification--info svg {
+ fill: #222f3e;
+}
+.tox .tox-notification__body {
+ -ms-grid-row-align: center;
+ align-self: center;
+ color: #222f3e;
+ font-size: 14px;
+ -ms-grid-column-span: 1;
+ grid-column-end: 3;
+ -ms-grid-column: 2;
+ grid-column-start: 2;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ text-align: center;
+ white-space: normal;
+ word-break: break-all;
+ word-break: break-word;
+}
+.tox .tox-notification__body > * {
+ margin: 0;
+}
+.tox .tox-notification__body > * + * {
+ margin-top: 1rem;
+}
+.tox .tox-notification__icon {
+ -ms-grid-row-align: center;
+ align-self: center;
+ -ms-grid-column-span: 1;
+ grid-column-end: 2;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification__icon svg {
+ display: block;
+}
+.tox .tox-notification__dismiss {
+ -ms-grid-row-align: start;
+ align-self: start;
+ -ms-grid-column-span: 1;
+ grid-column-end: 4;
+ -ms-grid-column: 3;
+ grid-column-start: 3;
+ -ms-grid-row-span: 1;
+ grid-row-end: 2;
+ -ms-grid-row: 1;
+ grid-row-start: 1;
+ -ms-grid-column-align: end;
+ justify-self: end;
+}
+.tox .tox-notification .tox-progress-bar {
+ -ms-grid-column-span: 3;
+ grid-column-end: 4;
+ -ms-grid-column: 1;
+ grid-column-start: 1;
+ -ms-grid-row-span: 1;
+ grid-row-end: 3;
+ -ms-grid-row: 2;
+ grid-row-start: 2;
+ -ms-grid-column-align: center;
+ justify-self: center;
+}
+.tox .tox-pop {
+ display: inline-block;
+ position: relative;
+}
+.tox .tox-pop--resizing {
+ transition: width 0.1s ease;
+}
+.tox .tox-pop--resizing .tox-toolbar {
+ flex-wrap: nowrap;
+}
+.tox .tox-pop__dialog {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+ min-width: 0;
+ overflow: hidden;
+}
+.tox .tox-pop__dialog > *:not(.tox-toolbar) {
+ margin: 4px 4px 4px 8px;
+}
+.tox .tox-pop__dialog .tox-toolbar {
+ background-color: transparent;
+ margin-bottom: -1px;
+}
+.tox .tox-pop::before,
+.tox .tox-pop::after {
+ border-style: solid;
+ content: '';
+ display: block;
+ height: 0;
+ position: absolute;
+ width: 0;
+}
+.tox .tox-pop.tox-pop--bottom::before,
+.tox .tox-pop.tox-pop--bottom::after {
+ left: 50%;
+ top: 100%;
+}
+.tox .tox-pop.tox-pop--bottom::after {
+ border-color: #fff transparent transparent transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: -1px;
+}
+.tox .tox-pop.tox-pop--bottom::before {
+ border-color: #cccccc transparent transparent transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--top::before,
+.tox .tox-pop.tox-pop--top::after {
+ left: 50%;
+ top: 0;
+ transform: translateY(-100%);
+}
+.tox .tox-pop.tox-pop--top::after {
+ border-color: transparent transparent #fff transparent;
+ border-width: 8px;
+ margin-left: -8px;
+ margin-top: 1px;
+}
+.tox .tox-pop.tox-pop--top::before {
+ border-color: transparent transparent #cccccc transparent;
+ border-width: 9px;
+ margin-left: -9px;
+}
+.tox .tox-pop.tox-pop--left::before,
+.tox .tox-pop.tox-pop--left::after {
+ left: 0;
+ top: calc(50% - 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--left::after {
+ border-color: transparent #fff transparent transparent;
+ border-width: 8px;
+ margin-left: -15px;
+}
+.tox .tox-pop.tox-pop--left::before {
+ border-color: transparent #cccccc transparent transparent;
+ border-width: 10px;
+ margin-left: -19px;
+}
+.tox .tox-pop.tox-pop--right::before,
+.tox .tox-pop.tox-pop--right::after {
+ left: 100%;
+ top: calc(50% + 1px);
+ transform: translateY(-50%);
+}
+.tox .tox-pop.tox-pop--right::after {
+ border-color: transparent transparent transparent #fff;
+ border-width: 8px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--right::before {
+ border-color: transparent transparent transparent #cccccc;
+ border-width: 10px;
+ margin-left: -1px;
+}
+.tox .tox-pop.tox-pop--align-left::before,
+.tox .tox-pop.tox-pop--align-left::after {
+ left: 20px;
+}
+.tox .tox-pop.tox-pop--align-right::before,
+.tox .tox-pop.tox-pop--align-right::after {
+ left: calc(100% - 20px);
+}
+.tox .tox-sidebar-wrap {
+ display: flex;
+ flex-direction: row;
+ flex-grow: 1;
+ -ms-flex-preferred-size: 0;
+ min-height: 0;
+}
+.tox .tox-sidebar {
+ background-color: #fff;
+ display: flex;
+ flex-direction: row;
+ justify-content: flex-end;
+}
+.tox .tox-sidebar__slider {
+ display: flex;
+ overflow: hidden;
+}
+.tox .tox-sidebar__pane-container {
+ display: flex;
+}
+.tox .tox-sidebar__pane {
+ display: flex;
+}
+.tox .tox-sidebar--sliding-closed {
+ opacity: 0;
+}
+.tox .tox-sidebar--sliding-open {
+ opacity: 1;
+}
+.tox .tox-sidebar--sliding-growing,
+.tox .tox-sidebar--sliding-shrinking {
+ transition: width 0.5s ease, opacity 0.5s ease;
+}
+.tox .tox-selector {
+ background-color: #4099ff;
+ border-color: #4099ff;
+ border-style: solid;
+ border-width: 1px;
+ box-sizing: border-box;
+ display: inline-block;
+ height: 10px;
+ position: absolute;
+ width: 10px;
+}
+.tox.tox-platform-touch .tox-selector {
+ height: 12px;
+ width: 12px;
+}
+.tox .tox-slider {
+ align-items: center;
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+ height: 24px;
+ justify-content: center;
+ position: relative;
+}
+.tox .tox-slider__rail {
+ background-color: transparent;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ height: 10px;
+ min-width: 120px;
+ width: 100%;
+}
+.tox .tox-slider__handle {
+ background-color: #207ab7;
+ border: 2px solid #185d8c;
+ border-radius: 3px;
+ box-shadow: none;
+ height: 24px;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%);
+ width: 14px;
+}
+.tox .tox-source-code {
+ overflow: auto;
+}
+.tox .tox-spinner {
+ display: flex;
+}
+.tox .tox-spinner > div {
+ animation: tam-bouncing-dots 1.5s ease-in-out 0s infinite both;
+ background-color: rgba(34, 47, 62, 0.7);
+ border-radius: 100%;
+ height: 8px;
+ width: 8px;
+}
+.tox .tox-spinner > div:nth-child(1) {
+ animation-delay: -0.32s;
+}
+.tox .tox-spinner > div:nth-child(2) {
+ animation-delay: -0.16s;
+}
+@keyframes tam-bouncing-dots {
+ 0%,
+ 80%,
+ 100% {
+ transform: scale(0);
+ }
+ 40% {
+ transform: scale(1);
+ }
+}
+.tox:not([dir=rtl]) .tox-spinner > div:not(:first-child) {
+ margin-left: 4px;
+}
+.tox[dir=rtl] .tox-spinner > div:not(:first-child) {
+ margin-right: 4px;
+}
+.tox .tox-statusbar {
+ align-items: center;
+ background-color: #fff;
+ border-top: 1px solid #cccccc;
+ color: rgba(34, 47, 62, 0.7);
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 12px;
+ font-weight: normal;
+ height: 18px;
+ overflow: hidden;
+ padding: 0 8px;
+ position: relative;
+ text-transform: uppercase;
+}
+.tox .tox-statusbar__text-container {
+ display: flex;
+ flex: 1 1 auto;
+ justify-content: flex-end;
+ overflow: hidden;
+}
+.tox .tox-statusbar__path {
+ display: flex;
+ flex: 1 1 auto;
+ margin-right: auto;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__path > * {
+ display: inline;
+ white-space: nowrap;
+}
+.tox .tox-statusbar__wordcount {
+ flex: 0 0 auto;
+ margin-left: 1ch;
+}
+.tox .tox-statusbar a,
+.tox .tox-statusbar__path-item,
+.tox .tox-statusbar__wordcount {
+ color: rgba(34, 47, 62, 0.7);
+ text-decoration: none;
+}
+.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),
+.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]) {
+ cursor: pointer;
+ text-decoration: underline;
+}
+.tox .tox-statusbar__resize-handle {
+ align-items: flex-end;
+ align-self: stretch;
+ cursor: nwse-resize;
+ display: flex;
+ flex: 0 0 auto;
+ justify-content: flex-end;
+ margin-left: auto;
+ margin-right: -8px;
+ padding-left: 1ch;
+}
+.tox .tox-statusbar__resize-handle svg {
+ display: block;
+ fill: rgba(34, 47, 62, 0.7);
+}
+.tox .tox-statusbar__resize-handle:focus svg {
+ background-color: #dee0e2;
+ border-radius: 1px;
+ box-shadow: 0 0 0 2px #dee0e2;
+}
+.tox:not([dir=rtl]) .tox-statusbar__path > * {
+ margin-right: 4px;
+}
+.tox:not([dir=rtl]) .tox-statusbar__branding {
+ margin-left: 1ch;
+}
+.tox[dir=rtl] .tox-statusbar {
+ flex-direction: row-reverse;
+}
+.tox[dir=rtl] .tox-statusbar__path > * {
+ margin-left: 4px;
+}
+.tox .tox-throbber {
+ z-index: 1299;
+}
+.tox .tox-throbber__busy-spinner {
+ align-items: center;
+ background-color: rgba(255, 255, 255, 0.6);
+ bottom: 0;
+ display: flex;
+ justify-content: center;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+.tox .tox-tbtn {
+ align-items: center;
+ background: transparent;
+ border: 0;
+ border-radius: 3px;
+ box-shadow: none;
+ color: #222f3e;
+ display: flex;
+ flex: 0 0 auto;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ height: 34px;
+ justify-content: center;
+ margin: 2px 0 3px 0;
+ outline: none;
+ overflow: hidden;
+ padding: 0;
+ text-transform: none;
+ width: 34px;
+}
+.tox .tox-tbtn svg {
+ display: block;
+ fill: #222f3e;
+}
+.tox .tox-tbtn.tox-tbtn-more {
+ padding-left: 5px;
+ padding-right: 5px;
+ width: inherit;
+}
+.tox .tox-tbtn:focus {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+}
+.tox .tox-tbtn:hover {
+ background: #dee0e2;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-tbtn:hover svg {
+ fill: #222f3e;
+}
+.tox .tox-tbtn:active {
+ background: #c8cbcf;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-tbtn:active svg {
+ fill: #222f3e;
+}
+.tox .tox-tbtn--disabled,
+.tox .tox-tbtn--disabled:hover,
+.tox .tox-tbtn:disabled,
+.tox .tox-tbtn:disabled:hover {
+ background: transparent;
+ border: 0;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+ cursor: not-allowed;
+}
+.tox .tox-tbtn--disabled svg,
+.tox .tox-tbtn--disabled:hover svg,
+.tox .tox-tbtn:disabled svg,
+.tox .tox-tbtn:disabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-tbtn--enabled,
+.tox .tox-tbtn--enabled:hover {
+ background: #c8cbcf;
+ border: 0;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-tbtn--enabled > *,
+.tox .tox-tbtn--enabled:hover > * {
+ transform: none;
+}
+.tox .tox-tbtn--enabled svg,
+.tox .tox-tbtn--enabled:hover svg {
+ /* stylelint-disable-line no-descending-specificity */
+ fill: #222f3e;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) {
+ color: #222f3e;
+}
+.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg {
+ fill: #222f3e;
+}
+.tox .tox-tbtn:active > * {
+ transform: none;
+}
+.tox .tox-tbtn--md {
+ height: 51px;
+ width: 51px;
+}
+.tox .tox-tbtn--lg {
+ flex-direction: column;
+ height: 68px;
+ width: 68px;
+}
+.tox .tox-tbtn--return {
+ -ms-grid-row-align: stretch;
+ align-self: stretch;
+ height: unset;
+ width: 16px;
+}
+.tox .tox-tbtn--labeled {
+ padding: 0 4px;
+ width: unset;
+}
+.tox .tox-tbtn__vlabel {
+ display: block;
+ font-size: 10px;
+ font-weight: normal;
+ letter-spacing: -0.025em;
+ margin-bottom: 4px;
+ white-space: nowrap;
+}
+.tox .tox-tbtn--select {
+ margin: 2px 0 3px 0;
+ padding: 0 4px;
+ width: auto;
+}
+.tox .tox-tbtn__select-label {
+ cursor: default;
+ font-weight: normal;
+ margin: 0 4px;
+}
+.tox .tox-tbtn__select-chevron {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ width: 16px;
+}
+.tox .tox-tbtn__select-chevron svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-tbtn--bespoke .tox-tbtn__select-label {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ width: 7em;
+}
+.tox .tox-split-button {
+ border: 0;
+ border-radius: 3px;
+ box-sizing: border-box;
+ display: flex;
+ margin: 2px 0 3px 0;
+ overflow: hidden;
+}
+.tox .tox-split-button:hover {
+ box-shadow: 0 0 0 1px #dee0e2 inset;
+}
+.tox .tox-split-button:focus {
+ background: #dee0e2;
+ box-shadow: none;
+ color: #222f3e;
+}
+.tox .tox-split-button > * {
+ border-radius: 0;
+}
+.tox .tox-split-button__chevron {
+ width: 16px;
+}
+.tox .tox-split-button__chevron svg {
+ fill: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-split-button .tox-tbtn {
+ margin: 0;
+}
+.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child {
+ width: 30px;
+}
+.tox.tox-platform-touch .tox-split-button__chevron {
+ width: 20px;
+}
+.tox .tox-split-button.tox-tbtn--disabled:hover,
+.tox .tox-split-button.tox-tbtn--disabled:focus,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,
+.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus {
+ background: transparent;
+ box-shadow: none;
+ color: rgba(34, 47, 62, 0.5);
+}
+.tox .tox-toolbar-overlord {
+ background-color: #fff;
+}
+.tox .tox-toolbar,
+.tox .tox-toolbar__primary,
+.tox .tox-toolbar__overflow {
+ background: url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;
+ background-color: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ flex-shrink: 0;
+ flex-wrap: wrap;
+ padding: 0 0;
+}
+.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed {
+ height: 0;
+ opacity: 0;
+ padding-bottom: 0;
+ padding-top: 0;
+ visibility: hidden;
+}
+.tox .tox-toolbar__overflow--growing {
+ transition: height 0.3s ease, opacity 0.2s linear 0.1s;
+}
+.tox .tox-toolbar__overflow--shrinking {
+ transition: opacity 0.3s ease, height 0.2s linear 0.1s, visibility 0s linear 0.3s;
+}
+.tox .tox-menubar + .tox-toolbar,
+.tox .tox-menubar + .tox-toolbar-overlord .tox-toolbar__primary {
+ border-top: 1px solid #cccccc;
+ margin-top: -1px;
+}
+.tox .tox-toolbar--scrolling {
+ flex-wrap: nowrap;
+ overflow-x: auto;
+}
+.tox .tox-pop .tox-toolbar {
+ border-width: 0;
+}
+.tox .tox-toolbar--no-divider {
+ background-image: none;
+}
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child,
+.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary {
+ border-top: 1px solid #cccccc;
+}
+.tox.tox-tinymce-aux .tox-toolbar__overflow {
+ background-color: #fff;
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
+}
+.tox[dir=rtl] .tox-tbtn__icon-rtl svg {
+ transform: rotateY(180deg);
+}
+.tox .tox-toolbar__group {
+ align-items: center;
+ display: flex;
+ flex-wrap: wrap;
+ margin: 0 0;
+ padding: 0 4px 0 4px;
+}
+.tox .tox-toolbar__group--pull-right {
+ margin-left: auto;
+}
+.tox .tox-toolbar--scrolling .tox-toolbar__group {
+ flex-shrink: 0;
+ flex-wrap: nowrap;
+}
+.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type) {
+ border-right: 1px solid #cccccc;
+}
+.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type) {
+ border-left: 1px solid #cccccc;
+}
+.tox .tox-tooltip {
+ display: inline-block;
+ padding: 8px;
+ position: relative;
+}
+.tox .tox-tooltip__body {
+ background-color: #222f3e;
+ border-radius: 3px;
+ box-shadow: 0 2px 4px rgba(34, 47, 62, 0.3);
+ color: rgba(255, 255, 255, 0.75);
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ padding: 4px 8px;
+ text-transform: none;
+}
+.tox .tox-tooltip__arrow {
+ position: absolute;
+}
+.tox .tox-tooltip--down .tox-tooltip__arrow {
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ border-top: 8px solid #222f3e;
+ bottom: 0;
+ left: 50%;
+ position: absolute;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--up .tox-tooltip__arrow {
+ border-bottom: 8px solid #222f3e;
+ border-left: 8px solid transparent;
+ border-right: 8px solid transparent;
+ left: 50%;
+ position: absolute;
+ top: 0;
+ transform: translateX(-50%);
+}
+.tox .tox-tooltip--right .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-left: 8px solid #222f3e;
+ border-top: 8px solid transparent;
+ position: absolute;
+ right: 0;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-tooltip--left .tox-tooltip__arrow {
+ border-bottom: 8px solid transparent;
+ border-right: 8px solid #222f3e;
+ border-top: 8px solid transparent;
+ left: 0;
+ position: absolute;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.tox .tox-well {
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ padding: 8px;
+ width: 100%;
+}
+.tox .tox-well > *:first-child {
+ margin-top: 0;
+}
+.tox .tox-well > *:last-child {
+ margin-bottom: 0;
+}
+.tox .tox-well > *:only-child {
+ margin: 0;
+}
+.tox .tox-custom-editor {
+ border: 1px solid #cccccc;
+ border-radius: 3px;
+ display: flex;
+ flex: 1;
+ position: relative;
+}
+/* stylelint-disable */
+.tox {
+ /* stylelint-enable */
+}
+.tox .tox-dialog-loading::before {
+ background-color: rgba(0, 0, 0, 0.5);
+ content: "";
+ height: 100%;
+ position: absolute;
+ width: 100%;
+ z-index: 1000;
+}
+.tox .tox-tab {
+ cursor: pointer;
+}
+.tox .tox-dialog__content-js {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-dialog__body-content .tox-collection {
+ display: flex;
+ flex: 1;
+ -ms-flex-preferred-size: auto;
+}
+.tox .tox-image-tools-edit-panel {
+ height: 60px;
+}
+.tox .tox-image-tools__sidebar {
+ height: 60px;
+}
diff --git a/public/tinymce/skins/ui/oxide/skin.min.css b/public/tinymce/skins/ui/oxide/skin.min.css
new file mode 100644
index 00000000..2a00fac8
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tox{box-shadow:none;box-sizing:content-box;color:#222f3e;cursor:auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-style:normal;font-weight:400;line-height:normal;-webkit-tap-highlight-color:transparent;text-decoration:none;text-shadow:none;text-transform:none;vertical-align:initial;white-space:normal}.tox :not(svg):not(rect){box-sizing:inherit;color:inherit;cursor:inherit;direction:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;line-height:inherit;-webkit-tap-highlight-color:inherit;text-align:inherit;text-decoration:inherit;text-shadow:inherit;text-transform:inherit;vertical-align:inherit;white-space:inherit}.tox :not(svg):not(rect){background:0 0;border:0;box-shadow:none;float:none;height:auto;margin:0;max-width:none;outline:0;padding:0;position:static;width:auto}.tox:not([dir=rtl]){direction:ltr;text-align:left}.tox[dir=rtl]{direction:rtl;text-align:right}.tox-tinymce{border:1px solid #ccc;border-radius:0;box-shadow:none;box-sizing:border-box;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;overflow:hidden;position:relative;visibility:inherit!important}.tox-tinymce-inline{border:none;box-shadow:none}.tox-tinymce-inline .tox-editor-header{background-color:transparent;border:1px solid #ccc;border-radius:0;box-shadow:none}.tox-tinymce-aux{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;z-index:1300}.tox-tinymce :focus,.tox-tinymce-aux :focus{outline:0}button::-moz-focus-inner{border:0}.tox .accessibility-issue__header{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description{align-items:stretch;border:1px solid #ccc;border-radius:3px;display:flex;justify-content:space-between}.tox .accessibility-issue__description>div{padding-bottom:4px}.tox .accessibility-issue__description>div>div{align-items:center;display:flex;margin-bottom:4px}.tox .accessibility-issue__description>:last-child:not(:only-child){border-color:#ccc;border-style:solid}.tox .accessibility-issue__repair{margin-top:16px}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description{background-color:rgba(32,122,183,.1);border-color:rgba(32,122,183,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--info .accessibility-issue__description>:last-child{border-color:rgba(32,122,183,.4)}.tox .tox-dialog__body-content .accessibility-issue--info .tox-form__group h2{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info .tox-icon svg{fill:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--info a .tox-icon{color:#207ab7}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description{background-color:rgba(255,165,0,.1);border-color:rgba(255,165,0,.5);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--warn .accessibility-issue__description>:last-child{border-color:rgba(255,165,0,.5)}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-form__group h2{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn .tox-icon svg{fill:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--warn a .tox-icon{color:#cc8500}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description{background-color:rgba(204,0,0,.1);border-color:rgba(204,0,0,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--error .accessibility-issue__description>:last-child{border-color:rgba(204,0,0,.4)}.tox .tox-dialog__body-content .accessibility-issue--error .tox-form__group h2{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--error .tox-icon svg{fill:#c00}.tox .tox-dialog__body-content .accessibility-issue--error a .tox-icon{color:#c00}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description{background-color:rgba(120,171,70,.1);border-color:rgba(120,171,70,.4);color:#222f3e}.tox .tox-dialog__body-content .accessibility-issue--success .accessibility-issue__description>:last-child{border-color:rgba(120,171,70,.4)}.tox .tox-dialog__body-content .accessibility-issue--success .tox-form__group h2{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success .tox-icon svg{fill:#78ab46}.tox .tox-dialog__body-content .accessibility-issue--success a .tox-icon{color:#78ab46}.tox .tox-dialog__body-content .accessibility-issue__header h1,.tox .tox-dialog__body-content .tox-form__group .accessibility-issue__description h2{margin-top:0}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-left:4px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-left:auto}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description{padding:4px 4px 4px 8px}.tox:not([dir=rtl]) .tox-dialog__body-content .accessibility-issue__description>:last-child{border-left-width:1px;padding-left:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header .tox-button{margin-right:4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__header>:nth-last-child(2){margin-right:auto}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description{padding:4px 8px 4px 4px}.tox[dir=rtl] .tox-dialog__body-content .accessibility-issue__description>:last-child{border-right-width:1px;padding-right:4px}.tox .tox-anchorbar{display:flex;flex:0 0 auto}.tox .tox-bar{display:flex;flex:0 0 auto}.tox .tox-button{background-color:#207ab7;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#207ab7;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;line-height:24px;margin:0;outline:0;padding:4px 16px;text-align:center;text-decoration:none;text-transform:none;white-space:nowrap}.tox .tox-button[disabled]{background-color:#207ab7;background-image:none;border-color:#207ab7;box-shadow:none;color:rgba(255,255,255,.5);cursor:not-allowed}.tox .tox-button:focus:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:hover:not(:disabled){background-color:#1c6ca1;background-image:none;border-color:#1c6ca1;box-shadow:none;color:#fff}.tox .tox-button:active:not(:disabled){background-color:#185d8c;background-image:none;border-color:#185d8c;box-shadow:none;color:#fff}.tox .tox-button--secondary{background-color:#f0f0f0;background-image:none;background-position:0 0;background-repeat:repeat;border-color:#f0f0f0;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;color:#222f3e;font-size:14px;font-style:normal;font-weight:700;letter-spacing:normal;outline:0;padding:4px 16px;text-decoration:none;text-transform:none}.tox .tox-button--secondary[disabled]{background-color:#f0f0f0;background-image:none;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--secondary:focus:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:hover:not(:disabled){background-color:#e3e3e3;background-image:none;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--secondary:active:not(:disabled){background-color:#d6d6d6;background-image:none;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--icon,.tox .tox-button.tox-button--icon,.tox .tox-button.tox-button--secondary.tox-button--icon{padding:4px}.tox .tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--icon .tox-icon svg,.tox .tox-button.tox-button--secondary.tox-button--icon .tox-icon svg{display:block;fill:currentColor}.tox .tox-button-link{background:0;border:none;box-sizing:border-box;cursor:pointer;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;font-weight:400;line-height:1.3;margin:0;padding:0;white-space:nowrap}.tox .tox-button-link--sm{font-size:14px}.tox .tox-button--naked{background-color:transparent;border-color:transparent;box-shadow:unset;color:#222f3e}.tox .tox-button--naked[disabled]{background-color:#f0f0f0;border-color:#f0f0f0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-button--naked:hover:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:focus:not(:disabled){background-color:#e3e3e3;border-color:#e3e3e3;box-shadow:none;color:#222f3e}.tox .tox-button--naked:active:not(:disabled){background-color:#d6d6d6;border-color:#d6d6d6;box-shadow:none;color:#222f3e}.tox .tox-button--naked .tox-icon svg{fill:currentColor}.tox .tox-button--naked.tox-button--icon:hover:not(:disabled){color:#222f3e}.tox .tox-checkbox{align-items:center;border-radius:3px;cursor:pointer;display:flex;height:36px;min-width:36px}.tox .tox-checkbox__input{height:1px;overflow:hidden;position:absolute;top:auto;width:1px}.tox .tox-checkbox__icons{align-items:center;border-radius:3px;box-shadow:0 0 0 2px transparent;box-sizing:content-box;display:flex;height:24px;justify-content:center;padding:calc(4px - 1px);width:24px}.tox .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:block;fill:rgba(34,47,62,.3)}.tox .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:none;fill:#207ab7}.tox .tox-checkbox__icons .tox-checkbox-icon__checked svg{display:none;fill:#207ab7}.tox .tox-checkbox--disabled{color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__checked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__unchecked svg{fill:rgba(34,47,62,.5)}.tox .tox-checkbox--disabled .tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{fill:rgba(34,47,62,.5)}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:checked+.tox-checkbox__icons .tox-checkbox-icon__checked svg{display:block}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__unchecked svg{display:none}.tox input.tox-checkbox__input:indeterminate+.tox-checkbox__icons .tox-checkbox-icon__indeterminate svg{display:block}.tox input.tox-checkbox__input:focus+.tox-checkbox__icons{border-radius:3px;box-shadow:inset 0 0 0 1px #207ab7;padding:calc(4px - 1px)}.tox:not([dir=rtl]) .tox-checkbox__label{margin-left:4px}.tox:not([dir=rtl]) .tox-checkbox__input{left:-10000px}.tox:not([dir=rtl]) .tox-bar .tox-checkbox{margin-left:4px}.tox[dir=rtl] .tox-checkbox__label{margin-right:4px}.tox[dir=rtl] .tox-checkbox__input{right:-10000px}.tox[dir=rtl] .tox-bar .tox-checkbox{margin-right:4px}.tox .tox-collection--toolbar .tox-collection__group{display:flex;padding:0}.tox .tox-collection--grid .tox-collection__group{display:flex;flex-wrap:wrap;max-height:208px;overflow-x:hidden;overflow-y:auto;padding:0}.tox .tox-collection--list .tox-collection__group{border-bottom-width:0;border-color:#ccc;border-left-width:0;border-right-width:0;border-style:solid;border-top-width:1px;padding:4px 0}.tox .tox-collection--list .tox-collection__group:first-child{border-top-width:0}.tox .tox-collection__group-heading{background-color:#e6e6e6;color:rgba(34,47,62,.7);cursor:default;font-size:12px;font-style:normal;font-weight:400;margin-bottom:4px;margin-top:-4px;padding:4px 8px;text-transform:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection__item{align-items:center;color:#222f3e;cursor:pointer;display:flex;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tox .tox-collection--list .tox-collection__item{padding:4px 8px}.tox .tox-collection--toolbar .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--grid .tox-collection__item{border-radius:3px;padding:4px}.tox .tox-collection--list .tox-collection__item--enabled{background-color:#fff;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--toolbar .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active{background-color:#dee0e2}.tox .tox-collection--grid .tox-collection__item--enabled{background-color:#c8cbcf;color:#222f3e}.tox .tox-collection--grid .tox-collection__item--active:not(.tox-collection__item--state-disabled){background-color:#dee0e2;color:#222f3e}.tox .tox-collection--list .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection--toolbar .tox-collection__item--active:not(.tox-collection__item--state-disabled){color:#222f3e}.tox .tox-collection__item--state-disabled{background-color:transparent;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-collection__item-checkmark,.tox .tox-collection__item-icon{align-items:center;display:flex;height:24px;justify-content:center;width:24px}.tox .tox-collection__item-checkmark svg,.tox .tox-collection__item-icon svg{fill:currentColor}.tox .tox-collection--toolbar-lg .tox-collection__item-icon{height:48px;width:48px}.tox .tox-collection__item-label{color:currentColor;display:inline-block;flex:1;-ms-flex-preferred-size:auto;font-size:14px;font-style:normal;font-weight:400;line-height:24px;text-transform:none;word-break:break-all}.tox .tox-collection__item-accessory{color:rgba(34,47,62,.7);display:inline-block;font-size:14px;height:24px;line-height:24px;text-transform:none}.tox .tox-collection__item-caret{align-items:center;display:flex;min-height:24px}.tox .tox-collection__item-caret::after{content:'';font-size:0;min-height:inherit}.tox .tox-collection__item-caret svg{fill:#222f3e}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-checkmark svg{display:none}.tox .tox-collection--list .tox-collection__item:not(.tox-collection__item--enabled) .tox-collection__item-accessory+.tox-collection__item-checkmark{display:none}.tox .tox-collection--horizontal{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:nowrap;margin-bottom:0;overflow-x:auto;padding:0}.tox .tox-collection--horizontal .tox-collection__group{align-items:center;display:flex;flex-wrap:nowrap;margin:0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item{height:34px;margin:2px 0 3px 0;padding:0 4px}.tox .tox-collection--horizontal .tox-collection__item-label{white-space:nowrap}.tox .tox-collection--horizontal .tox-collection__item-caret{margin-left:4px}.tox .tox-collection__item-container{display:flex}.tox .tox-collection__item-container--row{align-items:center;flex:1 1 auto;flex-direction:row}.tox .tox-collection__item-container--row.tox-collection__item-container--align-left{margin-right:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--align-right{justify-content:flex-end;margin-left:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-top{align-items:flex-start;margin-bottom:auto}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-middle{align-items:center}.tox .tox-collection__item-container--row.tox-collection__item-container--valign-bottom{align-items:flex-end;margin-top:auto}.tox .tox-collection__item-container--column{-ms-grid-row-align:center;align-self:center;flex:1 1 auto;flex-direction:column}.tox .tox-collection__item-container--column.tox-collection__item-container--align-left{align-items:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--align-right{align-items:flex-end}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-top{align-self:flex-start}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-middle{-ms-grid-row-align:center;align-self:center}.tox .tox-collection__item-container--column.tox-collection__item-container--valign-bottom{align-self:flex-end}.tox:not([dir=rtl]) .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-right:1px solid #ccc}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>:not(:first-child){margin-left:8px}.tox:not([dir=rtl]) .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-left:4px}.tox:not([dir=rtl]) .tox-collection__item-accessory{margin-left:16px;text-align:right}.tox:not([dir=rtl]) .tox-collection .tox-collection__item-caret{margin-left:16px}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__group:not(:last-of-type){border-left:1px solid #ccc}.tox[dir=rtl] .tox-collection--list .tox-collection__item>:not(:first-child){margin-right:8px}.tox[dir=rtl] .tox-collection--list .tox-collection__item>.tox-collection__item-label:first-child{margin-right:4px}.tox[dir=rtl] .tox-collection__item-icon-rtl .tox-collection__item-icon svg{transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection__item-accessory{margin-right:16px;text-align:left}.tox[dir=rtl] .tox-collection .tox-collection__item-caret{margin-right:16px;transform:rotateY(180deg)}.tox[dir=rtl] .tox-collection--horizontal .tox-collection__item-caret{margin-right:4px}.tox .tox-color-picker-container{display:flex;flex-direction:row;height:225px;margin:0}.tox .tox-sv-palette{box-sizing:border-box;display:flex;height:100%}.tox .tox-sv-palette-spectrum{height:100%}.tox .tox-sv-palette,.tox .tox-sv-palette-spectrum{width:225px}.tox .tox-sv-palette-thumb{background:0 0;border:1px solid #000;border-radius:50%;box-sizing:content-box;height:12px;position:absolute;width:12px}.tox .tox-sv-palette-inner-thumb{border:1px solid #fff;border-radius:50%;height:10px;position:absolute;width:10px}.tox .tox-hue-slider{box-sizing:border-box;height:100%;width:25px}.tox .tox-hue-slider-spectrum{background:linear-gradient(to bottom,red,#ff0080,#f0f,#8000ff,#00f,#0080ff,#0ff,#00ff80,#0f0,#80ff00,#ff0,#ff8000,red);height:100%;width:100%}.tox .tox-hue-slider,.tox .tox-hue-slider-spectrum{width:20px}.tox .tox-hue-slider-thumb{background:#fff;border:1px solid #000;box-sizing:content-box;height:4px;width:100%}.tox .tox-rgb-form{display:flex;flex-direction:column;justify-content:space-between}.tox .tox-rgb-form div{align-items:center;display:flex;justify-content:space-between;margin-bottom:5px;width:inherit}.tox .tox-rgb-form input{width:6em}.tox .tox-rgb-form input.tox-invalid{border:1px solid red!important}.tox .tox-rgb-form .tox-rgba-preview{border:1px solid #000;flex-grow:2;margin-bottom:0}.tox:not([dir=rtl]) .tox-sv-palette{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider{margin-right:15px}.tox:not([dir=rtl]) .tox-hue-slider-thumb{margin-left:-1px}.tox:not([dir=rtl]) .tox-rgb-form label{margin-right:.5em}.tox[dir=rtl] .tox-sv-palette{margin-left:15px}.tox[dir=rtl] .tox-hue-slider{margin-left:15px}.tox[dir=rtl] .tox-hue-slider-thumb{margin-right:-1px}.tox[dir=rtl] .tox-rgb-form label{margin-left:.5em}.tox .tox-toolbar .tox-swatches,.tox .tox-toolbar__overflow .tox-swatches,.tox .tox-toolbar__primary .tox-swatches{margin:2px 0 3px 4px}.tox .tox-collection--list .tox-collection__group .tox-swatches-menu{border:0;margin:-4px 0}.tox .tox-swatches__row{display:flex}.tox .tox-swatch{height:30px;transition:transform .15s,box-shadow .15s;width:30px}.tox .tox-swatch:focus,.tox .tox-swatch:hover{box-shadow:0 0 0 1px rgba(127,127,127,.3) inset;transform:scale(.8)}.tox .tox-swatch--remove{align-items:center;display:flex;justify-content:center}.tox .tox-swatch--remove svg path{stroke:#e74c3c}.tox .tox-swatches__picker-btn{align-items:center;background-color:transparent;border:0;cursor:pointer;display:flex;height:30px;justify-content:center;outline:0;padding:0;width:30px}.tox .tox-swatches__picker-btn svg{height:24px;width:24px}.tox .tox-swatches__picker-btn:hover{background:#dee0e2}.tox:not([dir=rtl]) .tox-swatches__picker-btn{margin-left:auto}.tox[dir=rtl] .tox-swatches__picker-btn{margin-right:auto}.tox .tox-comment-thread{background:#fff;position:relative}.tox .tox-comment-thread>:not(:first-child){margin-top:8px}.tox .tox-comment{background:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);padding:8px 8px 16px 8px;position:relative}.tox .tox-comment__header{align-items:center;color:#222f3e;display:flex;justify-content:space-between}.tox .tox-comment__date{color:rgba(34,47,62,.7);font-size:12px}.tox .tox-comment__body{color:#222f3e;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;margin-top:8px;position:relative;text-transform:initial}.tox .tox-comment__body textarea{resize:none;white-space:normal;width:100%}.tox .tox-comment__expander{padding-top:8px}.tox .tox-comment__expander p{color:rgba(34,47,62,.7);font-size:14px;font-style:normal}.tox .tox-comment__body p{margin:0}.tox .tox-comment__buttonspacing{padding-top:16px;text-align:center}.tox .tox-comment-thread__overlay::after{background:#fff;bottom:0;content:"";display:flex;left:0;opacity:.9;position:absolute;right:0;top:0;z-index:5}.tox .tox-comment__reply{display:flex;flex-shrink:0;flex-wrap:wrap;justify-content:flex-end;margin-top:8px}.tox .tox-comment__reply>:first-child{margin-bottom:8px;width:100%}.tox .tox-comment__edit{display:flex;flex-wrap:wrap;justify-content:flex-end;margin-top:16px}.tox .tox-comment__gradient::after{background:linear-gradient(rgba(255,255,255,0),#fff);bottom:0;content:"";display:block;height:5em;margin-top:-40px;position:absolute;width:100%}.tox .tox-comment__overlay{background:#fff;bottom:0;display:flex;flex-direction:column;flex-grow:1;left:0;opacity:.9;position:absolute;right:0;text-align:center;top:0;z-index:5}.tox .tox-comment__loading-text{align-items:center;color:#222f3e;display:flex;flex-direction:column;position:relative}.tox .tox-comment__loading-text>div{padding-bottom:16px}.tox .tox-comment__overlaytext{bottom:0;flex-direction:column;font-size:14px;left:0;padding:1em;position:absolute;right:0;top:0;z-index:10}.tox .tox-comment__overlaytext p{background-color:#fff;box-shadow:0 0 8px 8px #fff;color:#222f3e;text-align:center}.tox .tox-comment__overlaytext div:nth-of-type(2){font-size:.8em}.tox .tox-comment__busy-spinner{align-items:center;background-color:#fff;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:20}.tox .tox-comment__scroll{display:flex;flex-direction:column;flex-shrink:1;overflow:auto}.tox .tox-conversations{margin:8px}.tox:not([dir=rtl]) .tox-comment__edit{margin-left:8px}.tox:not([dir=rtl]) .tox-comment__buttonspacing>:last-child,.tox:not([dir=rtl]) .tox-comment__edit>:last-child,.tox:not([dir=rtl]) .tox-comment__reply>:last-child{margin-left:8px}.tox[dir=rtl] .tox-comment__edit{margin-right:8px}.tox[dir=rtl] .tox-comment__buttonspacing>:last-child,.tox[dir=rtl] .tox-comment__edit>:last-child,.tox[dir=rtl] .tox-comment__reply>:last-child{margin-right:8px}.tox .tox-user{align-items:center;display:flex}.tox .tox-user__avatar svg{fill:rgba(34,47,62,.7)}.tox .tox-user__name{color:rgba(34,47,62,.7);font-size:12px;font-style:normal;font-weight:700;text-transform:uppercase}.tox:not([dir=rtl]) .tox-user__avatar svg{margin-right:8px}.tox:not([dir=rtl]) .tox-user__avatar+.tox-user__name{margin-left:8px}.tox[dir=rtl] .tox-user__avatar svg{margin-left:8px}.tox[dir=rtl] .tox-user__avatar+.tox-user__name{margin-right:8px}.tox .tox-dialog-wrap{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1100}.tox .tox-dialog-wrap__backdrop{background-color:rgba(255,255,255,.75);bottom:0;left:0;position:absolute;right:0;top:0;z-index:1}.tox .tox-dialog-wrap__backdrop--opaque{background-color:#fff}.tox .tox-dialog{background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:0 16px 16px -10px rgba(34,47,62,.15),0 0 40px 1px rgba(34,47,62,.15);display:flex;flex-direction:column;max-height:100%;max-width:480px;overflow:hidden;position:relative;width:95vw;z-index:2}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog{align-self:flex-start;margin:8px auto;width:calc(100vw - 16px)}}.tox .tox-dialog-inline{z-index:1100}.tox .tox-dialog__header{align-items:center;background-color:#fff;border-bottom:none;color:#222f3e;display:flex;font-size:16px;justify-content:space-between;padding:8px 16px 0 16px;position:relative}.tox .tox-dialog__header .tox-button{z-index:1}.tox .tox-dialog__draghandle{cursor:grab;height:100%;left:0;position:absolute;top:0;width:100%}.tox .tox-dialog__draghandle:active{cursor:grabbing}.tox .tox-dialog__dismiss{margin-left:auto}.tox .tox-dialog__title{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:20px;font-style:normal;font-weight:400;line-height:1.3;margin:0;text-transform:none}.tox .tox-dialog__body{color:#222f3e;display:flex;flex:1;-ms-flex-preferred-size:auto;font-size:16px;font-style:normal;font-weight:400;line-height:1.3;min-width:0;text-align:left;text-transform:none}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body{flex-direction:column}}.tox .tox-dialog__body-nav{align-items:flex-start;display:flex;flex-direction:column;padding:16px 16px}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox .tox-dialog__body-nav{flex-direction:row;-webkit-overflow-scrolling:touch;overflow-x:auto;padding-bottom:0}}.tox .tox-dialog__body-nav-item{border-bottom:2px solid transparent;color:rgba(34,47,62,.7);display:inline-block;font-size:14px;line-height:1.3;margin-bottom:8px;text-decoration:none;white-space:nowrap}.tox .tox-dialog__body-nav-item:focus{background-color:rgba(32,122,183,.1)}.tox .tox-dialog__body-nav-item--active{border-bottom:2px solid #207ab7;color:#207ab7}.tox .tox-dialog__body-content{box-sizing:border-box;display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto;max-height:650px;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px 16px}.tox .tox-dialog__body-content>*{margin-bottom:0;margin-top:16px}.tox .tox-dialog__body-content>:first-child{margin-top:0}.tox .tox-dialog__body-content>:last-child{margin-bottom:0}.tox .tox-dialog__body-content>:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog__body-content a{color:#207ab7;cursor:pointer;text-decoration:none}.tox .tox-dialog__body-content a:focus,.tox .tox-dialog__body-content a:hover{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content a:active{color:#185d8c;text-decoration:none}.tox .tox-dialog__body-content svg{fill:#222f3e}.tox .tox-dialog__body-content ul{display:block;list-style-type:disc;margin-bottom:16px;-webkit-margin-end:0;margin-inline-end:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-padding-start:2.5rem;padding-inline-start:2.5rem}.tox .tox-dialog__body-content .tox-form__group h1{color:#222f3e;font-size:20px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group h2{color:#222f3e;font-size:16px;font-style:normal;font-weight:700;letter-spacing:normal;margin-bottom:16px;margin-top:2rem;text-transform:none}.tox .tox-dialog__body-content .tox-form__group p{margin-bottom:16px}.tox .tox-dialog__body-content .tox-form__group h1:first-child,.tox .tox-dialog__body-content .tox-form__group h2:first-child,.tox .tox-dialog__body-content .tox-form__group p:first-child{margin-top:0}.tox .tox-dialog__body-content .tox-form__group h1:last-child,.tox .tox-dialog__body-content .tox-form__group h2:last-child,.tox .tox-dialog__body-content .tox-form__group p:last-child{margin-bottom:0}.tox .tox-dialog__body-content .tox-form__group h1:only-child,.tox .tox-dialog__body-content .tox-form__group h2:only-child,.tox .tox-dialog__body-content .tox-form__group p:only-child{margin-bottom:0;margin-top:0}.tox .tox-dialog--width-lg{height:650px;max-width:1200px}.tox .tox-dialog--width-md{max-width:800px}.tox .tox-dialog--width-md .tox-dialog__body-content{overflow:auto}.tox .tox-dialog__body-content--centered{text-align:center}.tox .tox-dialog__footer{align-items:center;background-color:#fff;border-top:1px solid #ccc;display:flex;justify-content:space-between;padding:8px 16px}.tox .tox-dialog__footer-end,.tox .tox-dialog__footer-start{display:flex}.tox .tox-dialog__busy-spinner{align-items:center;background-color:rgba(255,255,255,.75);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:3}.tox .tox-dialog__table{border-collapse:collapse;width:100%}.tox .tox-dialog__table thead th{font-weight:700;padding-bottom:8px}.tox .tox-dialog__table tbody tr{border-bottom:1px solid #ccc}.tox .tox-dialog__table tbody tr:last-child{border-bottom:none}.tox .tox-dialog__table td{padding-bottom:8px;padding-top:8px}.tox .tox-dialog__popups{position:absolute;width:100%;z-index:1100}.tox .tox-dialog__body-iframe{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-iframe .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox .tox-dialog-dock-fadeout{opacity:0;visibility:hidden}.tox .tox-dialog-dock-fadein{opacity:1;visibility:visible}.tox .tox-dialog-dock-transition{transition:visibility 0s linear .3s,opacity .3s ease}.tox .tox-dialog-dock-transition.tox-dialog-dock-fadein{transition-delay:0s}.tox.tox-platform-ie .tox-dialog-wrap{position:-ms-device-fixed}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav{margin-right:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox:not([dir=rtl]) .tox-dialog__body-nav-item:not(:first-child){margin-left:8px}}.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-end>*,.tox:not([dir=rtl]) .tox-dialog__footer .tox-dialog__footer-start>*{margin-left:8px}.tox[dir=rtl] .tox-dialog__body{text-align:right}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav{margin-left:0}}@media only screen and (max-width:767px){body:not(.tox-force-desktop) .tox[dir=rtl] .tox-dialog__body-nav-item:not(:first-child){margin-right:8px}}.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-end>*,.tox[dir=rtl] .tox-dialog__footer .tox-dialog__footer-start>*{margin-right:8px}body.tox-dialog__disable-scroll{overflow:hidden}.tox .tox-dropzone-container{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dropzone{align-items:center;background:#fff;border:2px dashed #ccc;box-sizing:border-box;display:flex;flex-direction:column;flex-grow:1;justify-content:center;min-height:100px;padding:10px}.tox .tox-dropzone p{color:rgba(34,47,62,.7);margin:0 0 16px 0}.tox .tox-edit-area{display:flex;flex:1;-ms-flex-preferred-size:auto;overflow:hidden;position:relative}.tox .tox-edit-area__iframe{background-color:#fff;border:0;box-sizing:border-box;flex:1;-ms-flex-preferred-size:auto;height:100%;position:absolute;width:100%}.tox.tox-inline-edit-area{border:1px dotted #ccc}.tox .tox-editor-container{display:flex;flex:1 1 auto;flex-direction:column;overflow:hidden}.tox .tox-editor-header{z-index:1}.tox:not(.tox-tinymce-inline) .tox-editor-header{box-shadow:none;transition:box-shadow .5s}.tox.tox-tinymce--toolbar-bottom .tox-editor-header,.tox.tox-tinymce-inline .tox-editor-header{margin-bottom:-1px}.tox.tox-tinymce--toolbar-sticky-on .tox-editor-header{background-color:transparent;box-shadow:0 4px 4px -3px rgba(0,0,0,.25)}.tox-editor-dock-fadeout{opacity:0;visibility:hidden}.tox-editor-dock-fadein{opacity:1;visibility:visible}.tox-editor-dock-transition{transition:visibility 0s linear .25s,opacity .25s ease}.tox-editor-dock-transition.tox-editor-dock-fadein{transition-delay:0s}.tox .tox-control-wrap{flex:1;position:relative}.tox .tox-control-wrap:not(.tox-control-wrap--status-invalid) .tox-control-wrap__status-icon-invalid,.tox .tox-control-wrap:not(.tox-control-wrap--status-unknown) .tox-control-wrap__status-icon-unknown,.tox .tox-control-wrap:not(.tox-control-wrap--status-valid) .tox-control-wrap__status-icon-valid{display:none}.tox .tox-control-wrap svg{display:block}.tox .tox-control-wrap__status-icon-wrap{position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-control-wrap__status-icon-invalid svg{fill:#c00}.tox .tox-control-wrap__status-icon-unknown svg{fill:orange}.tox .tox-control-wrap__status-icon-valid svg{fill:green}.tox:not([dir=rtl]) .tox-control-wrap--status-invalid .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-unknown .tox-textfield,.tox:not([dir=rtl]) .tox-control-wrap--status-valid .tox-textfield{padding-right:32px}.tox:not([dir=rtl]) .tox-control-wrap__status-icon-wrap{right:4px}.tox[dir=rtl] .tox-control-wrap--status-invalid .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-unknown .tox-textfield,.tox[dir=rtl] .tox-control-wrap--status-valid .tox-textfield{padding-left:32px}.tox[dir=rtl] .tox-control-wrap__status-icon-wrap{left:4px}.tox .tox-autocompleter{max-width:25em}.tox .tox-autocompleter .tox-menu{max-width:25em}.tox .tox-autocompleter .tox-autocompleter-highlight{font-weight:700}.tox .tox-color-input{display:flex;position:relative;z-index:1}.tox .tox-color-input .tox-textfield{z-index:-1}.tox .tox-color-input span{border-color:rgba(34,47,62,.2);border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;height:24px;position:absolute;top:6px;width:24px}.tox .tox-color-input span:focus:not([aria-disabled=true]),.tox .tox-color-input span:hover:not([aria-disabled=true]){border-color:#207ab7;cursor:pointer}.tox .tox-color-input span::before{background-image:linear-gradient(45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(-45deg,rgba(0,0,0,.25) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(0,0,0,.25) 75%),linear-gradient(-45deg,transparent 75%,rgba(0,0,0,.25) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px;border:1px solid #fff;border-radius:3px;box-sizing:border-box;content:'';height:24px;left:-1px;position:absolute;top:-1px;width:24px;z-index:-1}.tox .tox-color-input span[aria-disabled=true]{cursor:not-allowed}.tox:not([dir=rtl]) .tox-color-input .tox-textfield{padding-left:36px}.tox:not([dir=rtl]) .tox-color-input span{left:6px}.tox[dir=rtl] .tox-color-input .tox-textfield{padding-right:36px}.tox[dir=rtl] .tox-color-input span{right:6px}.tox .tox-label,.tox .tox-toolbar-label{color:rgba(34,47,62,.7);display:block;font-size:14px;font-style:normal;font-weight:400;line-height:1.3;padding:0 8px 0 0;text-transform:none;white-space:nowrap}.tox .tox-toolbar-label{padding:0 8px}.tox[dir=rtl] .tox-label{padding:0 0 0 8px}.tox .tox-form{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group{box-sizing:border-box;margin-bottom:4px}.tox .tox-form-group--maximize{flex:1}.tox .tox-form__group--error{color:#c00}.tox .tox-form__group--collection{display:flex}.tox .tox-form__grid{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}.tox .tox-form__grid--2col>.tox-form__group{width:calc(50% - (8px / 2))}.tox .tox-form__grid--3col>.tox-form__group{width:calc(100% / 3 - (8px / 2))}.tox .tox-form__grid--4col>.tox-form__group{width:calc(25% - (8px / 2))}.tox .tox-form__controls-h-stack{align-items:center;display:flex}.tox .tox-form__group--inline{align-items:center;display:flex}.tox .tox-form__group--stretched{display:flex;flex:1;flex-direction:column;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-textarea{flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-form__group--stretched .tox-navobj :nth-child(2){flex:1;-ms-flex-preferred-size:auto;height:100%}.tox:not([dir=rtl]) .tox-form__controls-h-stack>:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-form__controls-h-stack>:not(:first-child){margin-right:4px}.tox .tox-lock.tox-locked .tox-lock-icon__unlock,.tox .tox-lock:not(.tox-locked) .tox-lock-icon__lock{display:none}.tox .tox-listboxfield .tox-listbox--select,.tox .tox-textarea,.tox .tox-textfield,.tox .tox-toolbar-textfield{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-textarea[disabled],.tox .tox-textfield[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listboxfield .tox-listbox--select:focus,.tox .tox-textarea:focus,.tox .tox-textfield:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-toolbar-textfield{border-width:0;margin-bottom:3px;margin-top:2px;max-width:250px}.tox .tox-naked-btn{background-color:transparent;border:0;border-color:transparent;box-shadow:unset;color:#207ab7;cursor:pointer;display:block;margin:0;padding:0}.tox .tox-naked-btn svg{display:block;fill:#222f3e}.tox:not([dir=rtl]) .tox-toolbar-textfield+*{margin-left:4px}.tox[dir=rtl] .tox-toolbar-textfield+*{margin-right:4px}.tox .tox-listboxfield{cursor:pointer;position:relative}.tox .tox-listboxfield .tox-listbox--select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-listbox__select-label{cursor:default;flex:1;margin:0 4px}.tox .tox-listbox__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-listbox__select-chevron svg{fill:#222f3e}.tox .tox-listboxfield .tox-listbox--select{align-items:center;display:flex}.tox:not([dir=rtl]) .tox-listboxfield svg{right:8px}.tox[dir=rtl] .tox-listboxfield svg{left:8px}.tox .tox-selectfield{cursor:pointer;position:relative}.tox .tox-selectfield select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#ccc;border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;color:#222f3e;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;font-size:16px;line-height:24px;margin:0;min-height:34px;outline:0;padding:5px 4.75px;resize:none;width:100%}.tox .tox-selectfield select[disabled]{background-color:#f2f2f2;color:rgba(34,47,62,.85);cursor:not-allowed}.tox .tox-selectfield select::-ms-expand{display:none}.tox .tox-selectfield select:focus{background-color:#fff;border-color:#207ab7;box-shadow:none;outline:0}.tox .tox-selectfield svg{pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.tox:not([dir=rtl]) .tox-selectfield select[size="0"],.tox:not([dir=rtl]) .tox-selectfield select[size="1"]{padding-right:24px}.tox:not([dir=rtl]) .tox-selectfield svg{right:8px}.tox[dir=rtl] .tox-selectfield select[size="0"],.tox[dir=rtl] .tox-selectfield select[size="1"]{padding-left:24px}.tox[dir=rtl] .tox-selectfield svg{left:8px}.tox .tox-textarea{-webkit-appearance:textarea;-moz-appearance:textarea;appearance:textarea;white-space:pre-wrap}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}.tox .tox-help__more-link{list-style:none;margin-top:1em}.tox .tox-image-tools{width:100%}.tox .tox-image-tools__toolbar{align-items:center;display:flex;justify-content:center}.tox .tox-image-tools__image{background-color:#666;height:380px;overflow:auto;position:relative;width:100%}.tox .tox-image-tools__image,.tox .tox-image-tools__image+.tox-image-tools__toolbar{margin-top:8px}.tox .tox-image-tools__image-bg{background:url(data:image/gif;base64,R0lGODdhDAAMAIABAMzMzP///ywAAAAADAAMAAACFoQfqYeabNyDMkBQb81Uat85nxguUAEAOw==)}.tox .tox-image-tools__toolbar>.tox-spacer{flex:1;-ms-flex-preferred-size:auto}.tox .tox-croprect-block{background:#000;opacity:.5;position:absolute;zoom:1}.tox .tox-croprect-handle{border:2px solid #fff;height:20px;left:0;position:absolute;top:0;width:20px}.tox .tox-croprect-handle-move{border:0;cursor:move;position:absolute}.tox .tox-croprect-handle-nw{border-width:2px 0 0 2px;cursor:nw-resize;left:100px;margin:-2px 0 0 -2px;top:100px}.tox .tox-croprect-handle-ne{border-width:2px 2px 0 0;cursor:ne-resize;left:200px;margin:-2px 0 0 -20px;top:100px}.tox .tox-croprect-handle-sw{border-width:0 0 2px 2px;cursor:sw-resize;left:100px;margin:-20px 2px 0 -2px;top:200px}.tox .tox-croprect-handle-se{border-width:0 2px 2px 0;cursor:se-resize;left:200px;margin:-20px 0 0 -20px;top:200px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-left:8px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-left:32px}.tox:not([dir=rtl]) .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-left:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider:not(:first-of-type){margin-right:8px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-button+.tox-slider{margin-right:32px}.tox[dir=rtl] .tox-image-tools__toolbar>.tox-slider+.tox-button{margin-right:32px}.tox .tox-insert-table-picker{display:flex;flex-wrap:wrap;width:170px}.tox .tox-insert-table-picker>div{border-color:#ccc;border-style:solid;border-width:0 1px 1px 0;box-sizing:border-box;height:17px;width:17px}.tox .tox-collection--list .tox-collection__group .tox-insert-table-picker{margin:-4px 0}.tox .tox-insert-table-picker .tox-insert-table-picker__selected{background-color:rgba(32,122,183,.5);border-color:rgba(32,122,183,.5)}.tox .tox-insert-table-picker__label{color:rgba(34,47,62,.7);display:block;font-size:14px;padding:4px;text-align:center;width:100%}.tox:not([dir=rtl]) .tox-insert-table-picker>div:nth-child(10n){border-right:0}.tox[dir=rtl] .tox-insert-table-picker>div:nth-child(10n+1){border-right:0}.tox .tox-menu{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 4px 8px 0 rgba(34,47,62,.1);display:inline-block;overflow:hidden;vertical-align:top;z-index:1150}.tox .tox-menu.tox-collection.tox-collection--list{padding:0}.tox .tox-menu.tox-collection.tox-collection--toolbar{padding:4px}.tox .tox-menu.tox-collection.tox-collection--grid{padding:4px}.tox .tox-menu__label blockquote,.tox .tox-menu__label code,.tox .tox-menu__label h1,.tox .tox-menu__label h2,.tox .tox-menu__label h3,.tox .tox-menu__label h4,.tox .tox-menu__label h5,.tox .tox-menu__label h6,.tox .tox-menu__label p{margin:0}.tox .tox-menubar{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 4px 0 4px}.tox.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-menubar{border-top:1px solid #ccc}.tox .tox-mbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0 4px;text-transform:none;width:auto}.tox .tox-mbtn[disabled]{background-color:transparent;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-mbtn:focus:not(:disabled){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn--active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn:hover:not(:disabled):not(.tox-mbtn--active){background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-mbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-mbtn[disabled] .tox-mbtn__select-label{cursor:not-allowed}.tox .tox-mbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px;display:none}.tox .tox-notification{border-radius:3px;border-style:solid;border-width:1px;box-shadow:none;box-sizing:border-box;display:-ms-grid;display:grid;font-size:14px;font-weight:400;-ms-grid-columns:minmax(40px,1fr) auto minmax(40px,1fr);grid-template-columns:minmax(40px,1fr) auto minmax(40px,1fr);margin-top:4px;opacity:0;padding:4px;transition:transform .1s ease-in,opacity 150ms ease-in}.tox .tox-notification p{font-size:14px;font-weight:400}.tox .tox-notification a{text-decoration:underline}.tox .tox-notification--in{opacity:1}.tox .tox-notification--success{background-color:#e4eeda;border-color:#d7e6c8;color:#222f3e}.tox .tox-notification--success p{color:#222f3e}.tox .tox-notification--success a{color:#547831}.tox .tox-notification--success svg{fill:#222f3e}.tox .tox-notification--error{background-color:#f8dede;border-color:#f2bfbf;color:#222f3e}.tox .tox-notification--error p{color:#222f3e}.tox .tox-notification--error a{color:#c00}.tox .tox-notification--error svg{fill:#222f3e}.tox .tox-notification--warn,.tox .tox-notification--warning{background-color:#fffaea;border-color:#ffe89d;color:#222f3e}.tox .tox-notification--warn p,.tox .tox-notification--warning p{color:#222f3e}.tox .tox-notification--warn a,.tox .tox-notification--warning a{color:#222f3e}.tox .tox-notification--warn svg,.tox .tox-notification--warning svg{fill:#222f3e}.tox .tox-notification--info{background-color:#d9edf7;border-color:#779ecb;color:#222f3e}.tox .tox-notification--info p{color:#222f3e}.tox .tox-notification--info a{color:#222f3e}.tox .tox-notification--info svg{fill:#222f3e}.tox .tox-notification__body{-ms-grid-row-align:center;align-self:center;color:#222f3e;font-size:14px;-ms-grid-column-span:1;grid-column-end:3;-ms-grid-column:2;grid-column-start:2;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;text-align:center;white-space:normal;word-break:break-all;word-break:break-word}.tox .tox-notification__body>*{margin:0}.tox .tox-notification__body>*+*{margin-top:1rem}.tox .tox-notification__icon{-ms-grid-row-align:center;align-self:center;-ms-grid-column-span:1;grid-column-end:2;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification__icon svg{display:block}.tox .tox-notification__dismiss{-ms-grid-row-align:start;align-self:start;-ms-grid-column-span:1;grid-column-end:4;-ms-grid-column:3;grid-column-start:3;-ms-grid-row-span:1;grid-row-end:2;-ms-grid-row:1;grid-row-start:1;-ms-grid-column-align:end;justify-self:end}.tox .tox-notification .tox-progress-bar{-ms-grid-column-span:3;grid-column-end:4;-ms-grid-column:1;grid-column-start:1;-ms-grid-row-span:1;grid-row-end:3;-ms-grid-row:2;grid-row-start:2;-ms-grid-column-align:center;justify-self:center}.tox .tox-pop{display:inline-block;position:relative}.tox .tox-pop--resizing{transition:width .1s ease}.tox .tox-pop--resizing .tox-toolbar{flex-wrap:nowrap}.tox .tox-pop__dialog{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15);min-width:0;overflow:hidden}.tox .tox-pop__dialog>:not(.tox-toolbar){margin:4px 4px 4px 8px}.tox .tox-pop__dialog .tox-toolbar{background-color:transparent;margin-bottom:-1px}.tox .tox-pop::after,.tox .tox-pop::before{border-style:solid;content:'';display:block;height:0;position:absolute;width:0}.tox .tox-pop.tox-pop--bottom::after,.tox .tox-pop.tox-pop--bottom::before{left:50%;top:100%}.tox .tox-pop.tox-pop--bottom::after{border-color:#fff transparent transparent transparent;border-width:8px;margin-left:-8px;margin-top:-1px}.tox .tox-pop.tox-pop--bottom::before{border-color:#ccc transparent transparent transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--top::after,.tox .tox-pop.tox-pop--top::before{left:50%;top:0;transform:translateY(-100%)}.tox .tox-pop.tox-pop--top::after{border-color:transparent transparent #fff transparent;border-width:8px;margin-left:-8px;margin-top:1px}.tox .tox-pop.tox-pop--top::before{border-color:transparent transparent #ccc transparent;border-width:9px;margin-left:-9px}.tox .tox-pop.tox-pop--left::after,.tox .tox-pop.tox-pop--left::before{left:0;top:calc(50% - 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--left::after{border-color:transparent #fff transparent transparent;border-width:8px;margin-left:-15px}.tox .tox-pop.tox-pop--left::before{border-color:transparent #ccc transparent transparent;border-width:10px;margin-left:-19px}.tox .tox-pop.tox-pop--right::after,.tox .tox-pop.tox-pop--right::before{left:100%;top:calc(50% + 1px);transform:translateY(-50%)}.tox .tox-pop.tox-pop--right::after{border-color:transparent transparent transparent #fff;border-width:8px;margin-left:-1px}.tox .tox-pop.tox-pop--right::before{border-color:transparent transparent transparent #ccc;border-width:10px;margin-left:-1px}.tox .tox-pop.tox-pop--align-left::after,.tox .tox-pop.tox-pop--align-left::before{left:20px}.tox .tox-pop.tox-pop--align-right::after,.tox .tox-pop.tox-pop--align-right::before{left:calc(100% - 20px)}.tox .tox-sidebar-wrap{display:flex;flex-direction:row;flex-grow:1;-ms-flex-preferred-size:0;min-height:0}.tox .tox-sidebar{background-color:#fff;display:flex;flex-direction:row;justify-content:flex-end}.tox .tox-sidebar__slider{display:flex;overflow:hidden}.tox .tox-sidebar__pane-container{display:flex}.tox .tox-sidebar__pane{display:flex}.tox .tox-sidebar--sliding-closed{opacity:0}.tox .tox-sidebar--sliding-open{opacity:1}.tox .tox-sidebar--sliding-growing,.tox .tox-sidebar--sliding-shrinking{transition:width .5s ease,opacity .5s ease}.tox .tox-selector{background-color:#4099ff;border-color:#4099ff;border-style:solid;border-width:1px;box-sizing:border-box;display:inline-block;height:10px;position:absolute;width:10px}.tox.tox-platform-touch .tox-selector{height:12px;width:12px}.tox .tox-slider{align-items:center;display:flex;flex:1;-ms-flex-preferred-size:auto;height:24px;justify-content:center;position:relative}.tox .tox-slider__rail{background-color:transparent;border:1px solid #ccc;border-radius:3px;height:10px;min-width:120px;width:100%}.tox .tox-slider__handle{background-color:#207ab7;border:2px solid #185d8c;border-radius:3px;box-shadow:none;height:24px;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%);width:14px}.tox .tox-source-code{overflow:auto}.tox .tox-spinner{display:flex}.tox .tox-spinner>div{animation:tam-bouncing-dots 1.5s ease-in-out 0s infinite both;background-color:rgba(34,47,62,.7);border-radius:100%;height:8px;width:8px}.tox .tox-spinner>div:nth-child(1){animation-delay:-.32s}.tox .tox-spinner>div:nth-child(2){animation-delay:-.16s}@keyframes tam-bouncing-dots{0%,100%,80%{transform:scale(0)}40%{transform:scale(1)}}.tox:not([dir=rtl]) .tox-spinner>div:not(:first-child){margin-left:4px}.tox[dir=rtl] .tox-spinner>div:not(:first-child){margin-right:4px}.tox .tox-statusbar{align-items:center;background-color:#fff;border-top:1px solid #ccc;color:rgba(34,47,62,.7);display:flex;flex:0 0 auto;font-size:12px;font-weight:400;height:18px;overflow:hidden;padding:0 8px;position:relative;text-transform:uppercase}.tox .tox-statusbar__text-container{display:flex;flex:1 1 auto;justify-content:flex-end;overflow:hidden}.tox .tox-statusbar__path{display:flex;flex:1 1 auto;margin-right:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tox .tox-statusbar__path>*{display:inline;white-space:nowrap}.tox .tox-statusbar__wordcount{flex:0 0 auto;margin-left:1ch}.tox .tox-statusbar a,.tox .tox-statusbar__path-item,.tox .tox-statusbar__wordcount{color:rgba(34,47,62,.7);text-decoration:none}.tox .tox-statusbar a:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar a:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__path-item:hover:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:focus:not(:disabled):not([aria-disabled=true]),.tox .tox-statusbar__wordcount:hover:not(:disabled):not([aria-disabled=true]){cursor:pointer;text-decoration:underline}.tox .tox-statusbar__resize-handle{align-items:flex-end;align-self:stretch;cursor:nwse-resize;display:flex;flex:0 0 auto;justify-content:flex-end;margin-left:auto;margin-right:-8px;padding-left:1ch}.tox .tox-statusbar__resize-handle svg{display:block;fill:rgba(34,47,62,.7)}.tox .tox-statusbar__resize-handle:focus svg{background-color:#dee0e2;border-radius:1px;box-shadow:0 0 0 2px #dee0e2}.tox:not([dir=rtl]) .tox-statusbar__path>*{margin-right:4px}.tox:not([dir=rtl]) .tox-statusbar__branding{margin-left:1ch}.tox[dir=rtl] .tox-statusbar{flex-direction:row-reverse}.tox[dir=rtl] .tox-statusbar__path>*{margin-left:4px}.tox .tox-throbber{z-index:1299}.tox .tox-throbber__busy-spinner{align-items:center;background-color:rgba(255,255,255,.6);bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.tox .tox-tbtn{align-items:center;background:0 0;border:0;border-radius:3px;box-shadow:none;color:#222f3e;display:flex;flex:0 0 auto;font-size:14px;font-style:normal;font-weight:400;height:34px;justify-content:center;margin:2px 0 3px 0;outline:0;overflow:hidden;padding:0;text-transform:none;width:34px}.tox .tox-tbtn svg{display:block;fill:#222f3e}.tox .tox-tbtn.tox-tbtn-more{padding-left:5px;padding-right:5px;width:inherit}.tox .tox-tbtn:focus{background:#dee0e2;border:0;box-shadow:none}.tox .tox-tbtn:hover{background:#dee0e2;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:hover svg{fill:#222f3e}.tox .tox-tbtn:active{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn:active svg{fill:#222f3e}.tox .tox-tbtn--disabled,.tox .tox-tbtn--disabled:hover,.tox .tox-tbtn:disabled,.tox .tox-tbtn:disabled:hover{background:0 0;border:0;box-shadow:none;color:rgba(34,47,62,.5);cursor:not-allowed}.tox .tox-tbtn--disabled svg,.tox .tox-tbtn--disabled:hover svg,.tox .tox-tbtn:disabled svg,.tox .tox-tbtn:disabled:hover svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--enabled,.tox .tox-tbtn--enabled:hover{background:#c8cbcf;border:0;box-shadow:none;color:#222f3e}.tox .tox-tbtn--enabled:hover>*,.tox .tox-tbtn--enabled>*{transform:none}.tox .tox-tbtn--enabled svg,.tox .tox-tbtn--enabled:hover svg{fill:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled){color:#222f3e}.tox .tox-tbtn:focus:not(.tox-tbtn--disabled) svg{fill:#222f3e}.tox .tox-tbtn:active>*{transform:none}.tox .tox-tbtn--md{height:51px;width:51px}.tox .tox-tbtn--lg{flex-direction:column;height:68px;width:68px}.tox .tox-tbtn--return{-ms-grid-row-align:stretch;align-self:stretch;height:unset;width:16px}.tox .tox-tbtn--labeled{padding:0 4px;width:unset}.tox .tox-tbtn__vlabel{display:block;font-size:10px;font-weight:400;letter-spacing:-.025em;margin-bottom:4px;white-space:nowrap}.tox .tox-tbtn--select{margin:2px 0 3px 0;padding:0 4px;width:auto}.tox .tox-tbtn__select-label{cursor:default;font-weight:400;margin:0 4px}.tox .tox-tbtn__select-chevron{align-items:center;display:flex;justify-content:center;width:16px}.tox .tox-tbtn__select-chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-tbtn--bespoke .tox-tbtn__select-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:7em}.tox .tox-split-button{border:0;border-radius:3px;box-sizing:border-box;display:flex;margin:2px 0 3px 0;overflow:hidden}.tox .tox-split-button:hover{box-shadow:0 0 0 1px #dee0e2 inset}.tox .tox-split-button:focus{background:#dee0e2;box-shadow:none;color:#222f3e}.tox .tox-split-button>*{border-radius:0}.tox .tox-split-button__chevron{width:16px}.tox .tox-split-button__chevron svg{fill:rgba(34,47,62,.5)}.tox .tox-split-button .tox-tbtn{margin:0}.tox.tox-platform-touch .tox-split-button .tox-tbtn:first-child{width:30px}.tox.tox-platform-touch .tox-split-button__chevron{width:20px}.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:focus,.tox .tox-split-button.tox-tbtn--disabled .tox-tbtn:hover,.tox .tox-split-button.tox-tbtn--disabled:focus,.tox .tox-split-button.tox-tbtn--disabled:hover{background:0 0;box-shadow:none;color:rgba(34,47,62,.5)}.tox .tox-toolbar-overlord{background-color:#fff}.tox .tox-toolbar,.tox .tox-toolbar__overflow,.tox .tox-toolbar__primary{background:url("data:image/svg+xml;charset=utf8,%3Csvg height='39px' viewBox='0 0 40 39px' width='40' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='0' y='38px' width='100' height='1' fill='%23cccccc'/%3E%3C/svg%3E") left 0 top 0 #fff;background-color:#fff;display:flex;flex:0 0 auto;flex-shrink:0;flex-wrap:wrap;padding:0 0}.tox .tox-toolbar__overflow.tox-toolbar__overflow--closed{height:0;opacity:0;padding-bottom:0;padding-top:0;visibility:hidden}.tox .tox-toolbar__overflow--growing{transition:height .3s ease,opacity .2s linear .1s}.tox .tox-toolbar__overflow--shrinking{transition:opacity .3s ease,height .2s linear .1s,visibility 0s linear .3s}.tox .tox-menubar+.tox-toolbar,.tox .tox-menubar+.tox-toolbar-overlord .tox-toolbar__primary{border-top:1px solid #ccc;margin-top:-1px}.tox .tox-toolbar--scrolling{flex-wrap:nowrap;overflow-x:auto}.tox .tox-pop .tox-toolbar{border-width:0}.tox .tox-toolbar--no-divider{background-image:none}.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar-overlord:first-child .tox-toolbar__primary,.tox-tinymce:not(.tox-tinymce-inline) .tox-editor-header:not(:first-child) .tox-toolbar:first-child{border-top:1px solid #ccc}.tox.tox-tinymce-aux .tox-toolbar__overflow{background-color:#fff;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.15)}.tox[dir=rtl] .tox-tbtn__icon-rtl svg{transform:rotateY(180deg)}.tox .tox-toolbar__group{align-items:center;display:flex;flex-wrap:wrap;margin:0 0;padding:0 4px 0 4px}.tox .tox-toolbar__group--pull-right{margin-left:auto}.tox .tox-toolbar--scrolling .tox-toolbar__group{flex-shrink:0;flex-wrap:nowrap}.tox:not([dir=rtl]) .tox-toolbar__group:not(:last-of-type){border-right:1px solid #ccc}.tox[dir=rtl] .tox-toolbar__group:not(:last-of-type){border-left:1px solid #ccc}.tox .tox-tooltip{display:inline-block;padding:8px;position:relative}.tox .tox-tooltip__body{background-color:#222f3e;border-radius:3px;box-shadow:0 2px 4px rgba(34,47,62,.3);color:rgba(255,255,255,.75);font-size:14px;font-style:normal;font-weight:400;padding:4px 8px;text-transform:none}.tox .tox-tooltip__arrow{position:absolute}.tox .tox-tooltip--down .tox-tooltip__arrow{border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #222f3e;bottom:0;left:50%;position:absolute;transform:translateX(-50%)}.tox .tox-tooltip--up .tox-tooltip__arrow{border-bottom:8px solid #222f3e;border-left:8px solid transparent;border-right:8px solid transparent;left:50%;position:absolute;top:0;transform:translateX(-50%)}.tox .tox-tooltip--right .tox-tooltip__arrow{border-bottom:8px solid transparent;border-left:8px solid #222f3e;border-top:8px solid transparent;position:absolute;right:0;top:50%;transform:translateY(-50%)}.tox .tox-tooltip--left .tox-tooltip__arrow{border-bottom:8px solid transparent;border-right:8px solid #222f3e;border-top:8px solid transparent;left:0;position:absolute;top:50%;transform:translateY(-50%)}.tox .tox-well{border:1px solid #ccc;border-radius:3px;padding:8px;width:100%}.tox .tox-well>:first-child{margin-top:0}.tox .tox-well>:last-child{margin-bottom:0}.tox .tox-well>:only-child{margin:0}.tox .tox-custom-editor{border:1px solid #ccc;border-radius:3px;display:flex;flex:1;position:relative}.tox .tox-dialog-loading::before{background-color:rgba(0,0,0,.5);content:"";height:100%;position:absolute;width:100%;z-index:1000}.tox .tox-tab{cursor:pointer}.tox .tox-dialog__content-js{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-dialog__body-content .tox-collection{display:flex;flex:1;-ms-flex-preferred-size:auto}.tox .tox-image-tools-edit-panel{height:60px}.tox .tox-image-tools__sidebar{height:60px}
diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.css b/public/tinymce/skins/ui/oxide/skin.mobile.css
new file mode 100644
index 00000000..875721a2
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.mobile.css
@@ -0,0 +1,673 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+/* RESET all the things! */
+.tinymce-mobile-outer-container {
+ all: initial;
+ display: block;
+}
+.tinymce-mobile-outer-container * {
+ border: 0;
+ box-sizing: initial;
+ cursor: inherit;
+ float: none;
+ line-height: 1;
+ margin: 0;
+ outline: 0;
+ padding: 0;
+ -webkit-tap-highlight-color: transparent;
+ /* TBIO-3691, stop the gray flicker on touch. */
+ text-shadow: none;
+ white-space: nowrap;
+}
+.tinymce-mobile-icon-arrow-back::before {
+ content: "\e5cd";
+}
+.tinymce-mobile-icon-image::before {
+ content: "\e412";
+}
+.tinymce-mobile-icon-cancel-circle::before {
+ content: "\e5c9";
+}
+.tinymce-mobile-icon-full-dot::before {
+ content: "\e061";
+}
+.tinymce-mobile-icon-align-center::before {
+ content: "\e234";
+}
+.tinymce-mobile-icon-align-left::before {
+ content: "\e236";
+}
+.tinymce-mobile-icon-align-right::before {
+ content: "\e237";
+}
+.tinymce-mobile-icon-bold::before {
+ content: "\e238";
+}
+.tinymce-mobile-icon-italic::before {
+ content: "\e23f";
+}
+.tinymce-mobile-icon-unordered-list::before {
+ content: "\e241";
+}
+.tinymce-mobile-icon-ordered-list::before {
+ content: "\e242";
+}
+.tinymce-mobile-icon-font-size::before {
+ content: "\e245";
+}
+.tinymce-mobile-icon-underline::before {
+ content: "\e249";
+}
+.tinymce-mobile-icon-link::before {
+ content: "\e157";
+}
+.tinymce-mobile-icon-unlink::before {
+ content: "\eca2";
+}
+.tinymce-mobile-icon-color::before {
+ content: "\e891";
+}
+.tinymce-mobile-icon-previous::before {
+ content: "\e314";
+}
+.tinymce-mobile-icon-next::before {
+ content: "\e315";
+}
+.tinymce-mobile-icon-large-font::before,
+.tinymce-mobile-icon-style-formats::before {
+ content: "\e264";
+}
+.tinymce-mobile-icon-undo::before {
+ content: "\e166";
+}
+.tinymce-mobile-icon-redo::before {
+ content: "\e15a";
+}
+.tinymce-mobile-icon-removeformat::before {
+ content: "\e239";
+}
+.tinymce-mobile-icon-small-font::before {
+ content: "\e906";
+}
+.tinymce-mobile-icon-readonly-back::before,
+.tinymce-mobile-format-matches::after {
+ content: "\e5ca";
+}
+.tinymce-mobile-icon-small-heading::before {
+ content: "small";
+}
+.tinymce-mobile-icon-large-heading::before {
+ content: "large";
+}
+.tinymce-mobile-icon-small-heading::before,
+.tinymce-mobile-icon-large-heading::before {
+ font-family: sans-serif;
+ font-size: 80%;
+}
+.tinymce-mobile-mask-edit-icon::before {
+ content: "\e254";
+}
+.tinymce-mobile-icon-back::before {
+ content: "\e5c4";
+}
+.tinymce-mobile-icon-heading::before {
+ /* TODO: Translate */
+ content: "Headings";
+ font-family: sans-serif;
+ font-size: 80%;
+ font-weight: bold;
+}
+.tinymce-mobile-icon-h1::before {
+ content: "H1";
+ font-weight: bold;
+}
+.tinymce-mobile-icon-h2::before {
+ content: "H2";
+ font-weight: bold;
+}
+.tinymce-mobile-icon-h3::before {
+ content: "H3";
+ font-weight: bold;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ background: rgba(51, 51, 51, 0.5);
+ height: 100%;
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container {
+ align-items: center;
+ border-radius: 50%;
+ display: flex;
+ flex-direction: column;
+ font-family: sans-serif;
+ font-size: 1em;
+ justify-content: space-between;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ border-radius: 50%;
+ height: 2.1em;
+ width: 2.1em;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ flex-direction: column;
+ font-size: 1em;
+}
+@media only screen and (min-device-width:700px) {
+ .tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section {
+ font-size: 1.2em;
+ }
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+ border-radius: 50%;
+ height: 2.1em;
+ width: 2.1em;
+ background-color: white;
+ color: #207ab7;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before {
+ content: "\e900";
+ font-family: 'tinymce-mobile', sans-serif;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon {
+ z-index: 2;
+}
+.tinymce-mobile-android-container.tinymce-mobile-android-maximized {
+ background: #ffffff;
+ border: none;
+ bottom: 0;
+ display: flex;
+ flex-direction: column;
+ left: 0;
+ position: fixed;
+ right: 0;
+ top: 0;
+}
+.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized) {
+ position: relative;
+}
+.tinymce-mobile-android-container .tinymce-mobile-editor-socket {
+ display: flex;
+ flex-grow: 1;
+}
+.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe {
+ display: flex !important;
+ flex-grow: 1;
+ height: auto !important;
+}
+.tinymce-mobile-android-scroll-reload {
+ overflow: hidden;
+}
+:not(.tinymce-mobile-readonly-mode) > .tinymce-mobile-android-selection-context-toolbar {
+ margin-top: 23px;
+}
+.tinymce-mobile-toolstrip {
+ background: #fff;
+ display: flex;
+ flex: 0 0 auto;
+ z-index: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar {
+ align-items: center;
+ background-color: #fff;
+ border-bottom: 1px solid #cccccc;
+ display: flex;
+ flex: 1;
+ height: 2.5em;
+ width: 100%;
+ /* Make it no larger than the toolstrip, so that it needs to scroll */
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex-shrink: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group > div {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container {
+ background: #f44336;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group {
+ flex-grow: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button {
+ align-items: center;
+ display: flex;
+ height: 80%;
+ margin-left: 2px;
+ margin-right: 2px;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected {
+ background: #c8cbcf;
+ color: #cccccc;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type {
+ background: #207ab7;
+ color: #eceff1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar {
+ /* Note, this file is imported inside .tinymce-mobile-context-toolbar, so that prefix is on everything here. */
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex: 1;
+ padding-bottom: 0.4em;
+ padding-top: 0.4em;
+ /* Make any buttons appearing on the left and right display in the centre (e.g. color edges) */
+ /* For widgets like the colour picker, use the whole height */
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog {
+ display: flex;
+ min-height: 1.5em;
+ overflow: hidden;
+ padding-left: 0;
+ padding-right: 0;
+ position: relative;
+ width: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain {
+ display: flex;
+ height: 100%;
+ transition: left cubic-bezier(0.4, 0, 1, 1) 0.15s;
+ width: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen {
+ display: flex;
+ flex: 0 0 auto;
+ justify-content: space-between;
+ width: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input {
+ font-family: Sans-serif;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container {
+ display: flex;
+ flex-grow: 1;
+ position: relative;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x {
+ -ms-grid-row-align: center;
+ align-self: center;
+ background: inherit;
+ border: none;
+ border-radius: 50%;
+ color: #888;
+ font-size: 0.6em;
+ font-weight: bold;
+ height: 100%;
+ padding-right: 2px;
+ position: absolute;
+ right: 0;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x {
+ display: none;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next {
+ align-items: center;
+ display: flex;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before {
+ align-items: center;
+ display: flex;
+ font-weight: bold;
+ height: 100%;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before {
+ visibility: hidden;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item {
+ color: #cccccc;
+ font-size: 10px;
+ line-height: 10px;
+ margin: 0 2px;
+ padding-top: 3px;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active {
+ color: #c8cbcf;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before {
+ margin-left: 0.5em;
+ margin-right: 0.9em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before {
+ margin-left: 0.9em;
+ margin-right: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider {
+ display: flex;
+ flex: 1;
+ margin-left: 0;
+ margin-right: 0;
+ padding: 0.28em 0;
+ position: relative;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container {
+ align-items: center;
+ display: flex;
+ flex-grow: 1;
+ height: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line {
+ background: #cccccc;
+ display: flex;
+ flex: 1;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container {
+ padding-left: 2em;
+ padding-right: 2em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container {
+ align-items: center;
+ display: flex;
+ flex-grow: 1;
+ height: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient {
+ background: linear-gradient(to right, hsl(0, 100%, 50%) 0%, hsl(60, 100%, 50%) 17%, hsl(120, 100%, 50%) 33%, hsl(180, 100%, 50%) 50%, hsl(240, 100%, 50%) 67%, hsl(300, 100%, 50%) 83%, hsl(0, 100%, 50%) 100%);
+ display: flex;
+ flex: 1;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black {
+ /* Not part of theming */
+ background: black;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+ width: 1.2em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white {
+ /* Not part of theming */
+ background: white;
+ height: 0.2em;
+ margin-bottom: 0.3em;
+ margin-top: 0.3em;
+ width: 1.2em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb {
+ /* vertically centering trick (margin: auto, top: 0, bottom: 0). On iOS and Safari, if you leave
+ * out these values, then it shows the thumb at the top of the spectrum. This is probably because it is
+ * absolutely positioned with only a left value, and not a top. Note, on Chrome it seems to be fine without
+ * this approach.
+ */
+ align-items: center;
+ background-clip: padding-box;
+ background-color: #455a64;
+ border: 0.5em solid rgba(136, 136, 136, 0);
+ border-radius: 3em;
+ bottom: 0;
+ color: #fff;
+ display: flex;
+ height: 0.5em;
+ justify-content: center;
+ left: -10px;
+ margin: auto;
+ position: absolute;
+ top: 0;
+ transition: border 120ms cubic-bezier(0.39, 0.58, 0.57, 1);
+ width: 0.5em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active {
+ border: 0.5em solid rgba(136, 136, 136, 0.39);
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group > div {
+ align-items: center;
+ display: flex;
+ height: 100%;
+ flex: 1;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper {
+ flex-direction: column;
+ justify-content: center;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item {
+ align-items: center;
+ display: flex;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog) {
+ height: 100%;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container {
+ display: flex;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input {
+ background: #ffffff;
+ border: none;
+ border-radius: 0;
+ color: #455a64;
+ flex-grow: 1;
+ font-size: 0.85em;
+ padding-bottom: 0.1em;
+ padding-left: 5px;
+ padding-top: 0.1em;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder {
+ /* WebKit, Blink, Edge */
+ color: #888;
+}
+.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder {
+ /* WebKit, Blink, Edge */
+ color: #888;
+}
+/* dropup */
+.tinymce-mobile-dropup {
+ background: white;
+ display: flex;
+ overflow: hidden;
+ width: 100%;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking {
+ transition: height 0.3s ease-out;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-growing {
+ transition: height 0.3s ease-in;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-closed {
+ flex-grow: 0;
+}
+.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing) {
+ flex-grow: 1;
+}
+/* TODO min-height for device size and orientation */
+.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
+ min-height: 200px;
+}
+@media only screen and (orientation: landscape) {
+ .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
+ min-height: 200px;
+ }
+}
+@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
+ .tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed) {
+ min-height: 150px;
+ }
+}
+/* styles menu */
+.tinymce-mobile-styles-menu {
+ font-family: sans-serif;
+ outline: 4px solid black;
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+}
+.tinymce-mobile-styles-menu [role="menu"] {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ position: absolute;
+ width: 100%;
+}
+.tinymce-mobile-styles-menu [role="menu"].transitioning {
+ transition: transform 0.5s ease-in-out;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-item {
+ border-bottom: 1px solid #ddd;
+ color: #455a64;
+ cursor: pointer;
+ display: flex;
+ padding: 1em 1em;
+ position: relative;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before {
+ color: #455a64;
+ content: "\e314";
+ font-family: 'tinymce-mobile', sans-serif;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after {
+ color: #455a64;
+ content: "\e315";
+ font-family: 'tinymce-mobile', sans-serif;
+ padding-left: 1em;
+ padding-right: 1em;
+ position: absolute;
+ right: 0;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after {
+ font-family: 'tinymce-mobile', sans-serif;
+ padding-left: 1em;
+ padding-right: 1em;
+ position: absolute;
+ right: 0;
+}
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator,
+.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser {
+ align-items: center;
+ background: #fff;
+ border-top: #455a64;
+ color: #455a64;
+ display: flex;
+ min-height: 2.5em;
+ padding-left: 1em;
+ padding-right: 1em;
+}
+.tinymce-mobile-styles-menu [data-transitioning-destination="before"][data-transitioning-state],
+.tinymce-mobile-styles-menu [data-transitioning-state="before"] {
+ transform: translate(-100%);
+}
+.tinymce-mobile-styles-menu [data-transitioning-destination="current"][data-transitioning-state],
+.tinymce-mobile-styles-menu [data-transitioning-state="current"] {
+ transform: translate(0%);
+}
+.tinymce-mobile-styles-menu [data-transitioning-destination="after"][data-transitioning-state],
+.tinymce-mobile-styles-menu [data-transitioning-state="after"] {
+ transform: translate(100%);
+}
+@font-face {
+ font-family: 'tinymce-mobile';
+ font-style: normal;
+ font-weight: normal;
+ src: url('fonts/tinymce-mobile.woff?8x92w3') format('woff');
+}
+@media (min-device-width: 700px) {
+ .tinymce-mobile-outer-container,
+ .tinymce-mobile-outer-container input {
+ font-size: 25px;
+ }
+}
+@media (max-device-width: 700px) {
+ .tinymce-mobile-outer-container,
+ .tinymce-mobile-outer-container input {
+ font-size: 18px;
+ }
+}
+.tinymce-mobile-icon {
+ font-family: 'tinymce-mobile', sans-serif;
+}
+.mixin-flex-and-centre {
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+.mixin-flex-bar {
+ align-items: center;
+ display: flex;
+ height: 100%;
+}
+.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe {
+ background-color: #fff;
+ width: 100%;
+}
+.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
+ /* Note, on the iPod touch in landscape, this isn't visible when the navbar appears */
+ background-color: #207ab7;
+ border-radius: 50%;
+ bottom: 1em;
+ color: white;
+ font-size: 1em;
+ height: 2.1em;
+ position: fixed;
+ right: 2em;
+ width: 2.1em;
+ align-items: center;
+ display: flex;
+ justify-content: center;
+}
+@media only screen and (min-device-width:700px) {
+ .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
+ font-size: 1.2em;
+ }
+}
+.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket {
+ height: 300px;
+ overflow: hidden;
+}
+.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe {
+ height: 100%;
+}
+.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip {
+ display: none;
+}
+/*
+ Note, that if you don't include this (::-webkit-file-upload-button), the toolbar width gets
+ increased and the whole body becomes scrollable. It's important!
+ */
+input[type="file"]::-webkit-file-upload-button {
+ display: none;
+}
+@media only screen and (min-device-width : 320px) and (max-device-width : 568px) and (orientation : landscape) {
+ .tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon {
+ bottom: 50%;
+ }
+}
diff --git a/public/tinymce/skins/ui/oxide/skin.mobile.min.css b/public/tinymce/skins/ui/oxide/skin.mobile.min.css
new file mode 100644
index 00000000..3a45cacf
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.mobile.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+.tinymce-mobile-outer-container{all:initial;display:block}.tinymce-mobile-outer-container *{border:0;box-sizing:initial;cursor:inherit;float:none;line-height:1;margin:0;outline:0;padding:0;-webkit-tap-highlight-color:transparent;text-shadow:none;white-space:nowrap}.tinymce-mobile-icon-arrow-back::before{content:"\e5cd"}.tinymce-mobile-icon-image::before{content:"\e412"}.tinymce-mobile-icon-cancel-circle::before{content:"\e5c9"}.tinymce-mobile-icon-full-dot::before{content:"\e061"}.tinymce-mobile-icon-align-center::before{content:"\e234"}.tinymce-mobile-icon-align-left::before{content:"\e236"}.tinymce-mobile-icon-align-right::before{content:"\e237"}.tinymce-mobile-icon-bold::before{content:"\e238"}.tinymce-mobile-icon-italic::before{content:"\e23f"}.tinymce-mobile-icon-unordered-list::before{content:"\e241"}.tinymce-mobile-icon-ordered-list::before{content:"\e242"}.tinymce-mobile-icon-font-size::before{content:"\e245"}.tinymce-mobile-icon-underline::before{content:"\e249"}.tinymce-mobile-icon-link::before{content:"\e157"}.tinymce-mobile-icon-unlink::before{content:"\eca2"}.tinymce-mobile-icon-color::before{content:"\e891"}.tinymce-mobile-icon-previous::before{content:"\e314"}.tinymce-mobile-icon-next::before{content:"\e315"}.tinymce-mobile-icon-large-font::before,.tinymce-mobile-icon-style-formats::before{content:"\e264"}.tinymce-mobile-icon-undo::before{content:"\e166"}.tinymce-mobile-icon-redo::before{content:"\e15a"}.tinymce-mobile-icon-removeformat::before{content:"\e239"}.tinymce-mobile-icon-small-font::before{content:"\e906"}.tinymce-mobile-format-matches::after,.tinymce-mobile-icon-readonly-back::before{content:"\e5ca"}.tinymce-mobile-icon-small-heading::before{content:"small"}.tinymce-mobile-icon-large-heading::before{content:"large"}.tinymce-mobile-icon-large-heading::before,.tinymce-mobile-icon-small-heading::before{font-family:sans-serif;font-size:80%}.tinymce-mobile-mask-edit-icon::before{content:"\e254"}.tinymce-mobile-icon-back::before{content:"\e5c4"}.tinymce-mobile-icon-heading::before{content:"Headings";font-family:sans-serif;font-size:80%;font-weight:700}.tinymce-mobile-icon-h1::before{content:"H1";font-weight:700}.tinymce-mobile-icon-h2::before{content:"H2";font-weight:700}.tinymce-mobile-icon-h3::before{content:"H3";font-weight:700}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask{align-items:center;display:flex;justify-content:center;background:rgba(51,51,51,.5);height:100%;position:absolute;top:0;width:100%}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container{align-items:center;border-radius:50%;display:flex;flex-direction:column;font-family:sans-serif;font-size:1em;justify-content:space-between}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .mixin-menu-item{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{align-items:center;display:flex;justify-content:center;flex-direction:column;font-size:1em}@media only screen and (min-device-width:700px){.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section{font-size:1.2em}}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon{align-items:center;display:flex;justify-content:center;border-radius:50%;height:2.1em;width:2.1em;background-color:#fff;color:#207ab7}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section .tinymce-mobile-mask-tap-icon::before{content:"\e900";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-outer-container .tinymce-mobile-disabled-mask .tinymce-mobile-content-container .tinymce-mobile-content-tap-section:not(.tinymce-mobile-mask-tap-icon-selected) .tinymce-mobile-mask-tap-icon{z-index:2}.tinymce-mobile-android-container.tinymce-mobile-android-maximized{background:#fff;border:none;bottom:0;display:flex;flex-direction:column;left:0;position:fixed;right:0;top:0}.tinymce-mobile-android-container:not(.tinymce-mobile-android-maximized){position:relative}.tinymce-mobile-android-container .tinymce-mobile-editor-socket{display:flex;flex-grow:1}.tinymce-mobile-android-container .tinymce-mobile-editor-socket iframe{display:flex!important;flex-grow:1;height:auto!important}.tinymce-mobile-android-scroll-reload{overflow:hidden}:not(.tinymce-mobile-readonly-mode)>.tinymce-mobile-android-selection-context-toolbar{margin-top:23px}.tinymce-mobile-toolstrip{background:#fff;display:flex;flex:0 0 auto;z-index:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar{align-items:center;background-color:#fff;border-bottom:1px solid #ccc;display:flex;flex:1;height:2.5em;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex-shrink:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-exit-container{background:#f44336}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group.tinymce-mobile-toolbar-scrollable-group{flex-grow:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button{align-items:center;display:flex;height:80%;margin-left:2px;margin-right:2px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item.tinymce-mobile-toolbar-button.tinymce-mobile-toolbar-button-selected{background:#c8cbcf;color:#ccc}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:first-of-type,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar:not(.tinymce-mobile-context-toolbar) .tinymce-mobile-toolbar-group:last-of-type{background:#207ab7;color:#eceff1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group{align-items:center;display:flex;height:100%;flex:1;padding-bottom:.4em;padding-top:.4em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog{display:flex;min-height:1.5em;overflow:hidden;padding-left:0;padding-right:0;position:relative;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain{display:flex;height:100%;transition:left cubic-bezier(.4,0,1,1) .15s;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen{display:flex;flex:0 0 auto;justify-content:space-between;width:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen input{font-family:Sans-serif}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container{display:flex;flex-grow:1;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container .tinymce-mobile-input-container-x{-ms-grid-row-align:center;align-self:center;background:inherit;border:none;border-radius:50%;color:#888;font-size:.6em;font-weight:700;height:100%;padding-right:2px;position:absolute;right:0}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-input-container.tinymce-mobile-input-container-empty .tinymce-mobile-input-container-x{display:none}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous::before{align-items:center;display:flex;font-weight:700;height:100%;padding-left:.5em;padding-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-next.tinymce-mobile-toolbar-navigation-disabled::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serialised-dialog .tinymce-mobile-serialised-dialog-chain .tinymce-mobile-serialised-dialog-screen .tinymce-mobile-icon-previous.tinymce-mobile-toolbar-navigation-disabled::before{visibility:hidden}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item{color:#ccc;font-size:10px;line-height:10px;margin:0 2px;padding-top:3px}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-item.tinymce-mobile-dot-active{color:#c8cbcf}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-large-heading::before{margin-left:.5em;margin-right:.9em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-font::before,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-icon-small-heading::before{margin-left:.9em;margin-right:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider{display:flex;flex:1;margin-left:0;margin-right:0;padding:.28em 0;position:relative}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-size-container .tinymce-mobile-slider-size-line{background:#ccc;display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container{padding-left:2em;padding-right:2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container{align-items:center;display:flex;flex-grow:1;height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-slider-gradient-container .tinymce-mobile-slider-gradient{background:linear-gradient(to right,red 0,#feff00 17%,#0f0 33%,#00feff 50%,#00f 67%,#ff00fe 83%,red 100%);display:flex;flex:1;height:.2em;margin-bottom:.3em;margin-top:.3em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-black{background:#000;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider.tinymce-mobile-hue-slider-container .tinymce-mobile-hue-slider-white{background:#fff;height:.2em;margin-bottom:.3em;margin-top:.3em;width:1.2em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb{align-items:center;background-clip:padding-box;background-color:#455a64;border:.5em solid rgba(136,136,136,0);border-radius:3em;bottom:0;color:#fff;display:flex;height:.5em;justify-content:center;left:-10px;margin:auto;position:absolute;top:0;transition:border 120ms cubic-bezier(.39,.58,.57,1);width:.5em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-slider .tinymce-mobile-slider-thumb.tinymce-mobile-thumb-active{border:.5em solid rgba(136,136,136,.39)}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper,.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group>div{align-items:center;display:flex;height:100%;flex:1}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-serializer-wrapper{flex-direction:column;justify-content:center}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item{align-items:center;display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-toolbar-group-item:not(.tinymce-mobile-serialised-dialog){height:100%}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group .tinymce-mobile-dot-container{display:flex}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input{background:#fff;border:none;border-radius:0;color:#455a64;flex-grow:1;font-size:.85em;padding-bottom:.1em;padding-left:5px;padding-top:.1em}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::-webkit-input-placeholder{color:#888}.tinymce-mobile-toolstrip .tinymce-mobile-toolbar.tinymce-mobile-context-toolbar .tinymce-mobile-toolbar-group input::placeholder{color:#888}.tinymce-mobile-dropup{background:#fff;display:flex;overflow:hidden;width:100%}.tinymce-mobile-dropup.tinymce-mobile-dropup-shrinking{transition:height .3s ease-out}.tinymce-mobile-dropup.tinymce-mobile-dropup-growing{transition:height .3s ease-in}.tinymce-mobile-dropup.tinymce-mobile-dropup-closed{flex-grow:0}.tinymce-mobile-dropup.tinymce-mobile-dropup-open:not(.tinymce-mobile-dropup-growing){flex-grow:1}.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}@media only screen and (orientation:landscape){.tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:200px}}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-dropup:not(.tinymce-mobile-dropup-closed){min-height:150px}}.tinymce-mobile-styles-menu{font-family:sans-serif;outline:4px solid #000;overflow:hidden;position:relative;width:100%}.tinymce-mobile-styles-menu [role=menu]{display:flex;flex-direction:column;height:100%;position:absolute;width:100%}.tinymce-mobile-styles-menu [role=menu].transitioning{transition:transform .5s ease-in-out}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item{border-bottom:1px solid #ddd;color:#455a64;cursor:pointer;display:flex;padding:1em 1em;position:relative}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser .tinymce-mobile-styles-collapse-icon::before{color:#455a64;content:"\e314";font-family:tinymce-mobile,sans-serif}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-styles-item-is-menu::after{color:#455a64;content:"\e315";font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-item.tinymce-mobile-format-matches::after{font-family:tinymce-mobile,sans-serif;padding-left:1em;padding-right:1em;position:absolute;right:0}.tinymce-mobile-styles-menu .tinymce-mobile-styles-collapser,.tinymce-mobile-styles-menu .tinymce-mobile-styles-separator{align-items:center;background:#fff;border-top:#455a64;color:#455a64;display:flex;min-height:2.5em;padding-left:1em;padding-right:1em}.tinymce-mobile-styles-menu [data-transitioning-destination=before][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=before]{transform:translate(-100%)}.tinymce-mobile-styles-menu [data-transitioning-destination=current][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=current]{transform:translate(0)}.tinymce-mobile-styles-menu [data-transitioning-destination=after][data-transitioning-state],.tinymce-mobile-styles-menu [data-transitioning-state=after]{transform:translate(100%)}@font-face{font-family:tinymce-mobile;font-style:normal;font-weight:400;src:url(fonts/tinymce-mobile.woff?8x92w3) format('woff')}@media (min-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:25px}}@media (max-device-width:700px){.tinymce-mobile-outer-container,.tinymce-mobile-outer-container input{font-size:18px}}.tinymce-mobile-icon{font-family:tinymce-mobile,sans-serif}.mixin-flex-and-centre{align-items:center;display:flex;justify-content:center}.mixin-flex-bar{align-items:center;display:flex;height:100%}.tinymce-mobile-outer-container .tinymce-mobile-editor-socket iframe{background-color:#fff;width:100%}.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{background-color:#207ab7;border-radius:50%;bottom:1em;color:#fff;font-size:1em;height:2.1em;position:fixed;right:2em;width:2.1em;align-items:center;display:flex;justify-content:center}@media only screen and (min-device-width:700px){.tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{font-size:1.2em}}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket{height:300px;overflow:hidden}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-editor-socket iframe{height:100%}.tinymce-mobile-outer-container:not(.tinymce-mobile-fullscreen-maximized) .tinymce-mobile-toolstrip{display:none}input[type=file]::-webkit-file-upload-button{display:none}@media only screen and (min-device-width :320px) and (max-device-width :568px) and (orientation :landscape){.tinymce-mobile-ios-container .tinymce-mobile-editor-socket .tinymce-mobile-mask-edit-icon{bottom:50%}}
diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.css
new file mode 100644
index 00000000..715978b5
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.css
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body.tox-dialog__disable-scroll {
+ overflow: hidden;
+}
+.tox-fullscreen {
+ border: 0;
+ height: 100%;
+ left: 0;
+ margin: 0;
+ overflow: hidden;
+ -ms-scroll-chaining: none;
+ overscroll-behavior: none;
+ padding: 0;
+ position: fixed;
+ top: 0;
+ touch-action: pinch-zoom;
+ width: 100%;
+}
+.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle {
+ display: none;
+}
+.tox.tox-tinymce.tox-fullscreen {
+ background-color: transparent;
+ z-index: 1200;
+}
+.tox-shadowhost.tox-fullscreen {
+ z-index: 1200;
+}
+.tox-fullscreen .tox.tox-tinymce-aux,
+.tox-fullscreen ~ .tox.tox-tinymce-aux {
+ z-index: 1201;
+}
diff --git a/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css
new file mode 100644
index 00000000..9ba6e02c
--- /dev/null
+++ b/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css
@@ -0,0 +1,7 @@
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;left:0;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;position:fixed;top:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox.tox-tinymce.tox-fullscreen{background-color:transparent;z-index:1200}.tox-shadowhost.tox-fullscreen{z-index:1200}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
diff --git a/scss.template.hbs b/scss.template.hbs
new file mode 100644
index 00000000..7821aed7
--- /dev/null
+++ b/scss.template.hbs
@@ -0,0 +1,66 @@
+{
+ // Default options
+ 'functions': true,
+ 'variableNameTransforms': ['dasherize']
+}
+
+{{#block "sprites"}}
+{{#each sprites}}
+${{../spritesheet_info.strings.name}}-sprite-{{strings.name}}: ({{px.x}}, {{px.y}}, {{px.offset_x}}, {{px.offset_y}}, {{px.width}}, {{px.height}}, {{px.total_width}}, {{px.total_height}}, '{{{escaped_image}}}', '{{name}}');
+{{/each}}
+
+${{spritesheet_info.strings.name}}-sprites: (
+{{#each sprites}}
+ {{strings.name}}: ${{../spritesheet_info.strings.name}}-sprite-{{strings.name}},
+{{/each}}
+);
+{{/block}}
+
+{{#block "sprite-functions"}}
+{{#if options.functions}}
+@mixin {{spritesheet_info.strings.name}}-sprite-width($sprite) {
+ width: nth($sprite, 5);
+}
+
+@mixin {{spritesheet_info.strings.name}}-sprite-height($sprite) {
+ height: nth($sprite, 6);
+}
+
+@mixin {{spritesheet_info.strings.name}}-sprite-position($sprite) {
+ $sprite-offset-x: nth($sprite, 3);
+ $sprite-offset-y: nth($sprite, 4);
+ background-position: $sprite-offset-x $sprite-offset-y;
+}
+
+@mixin {{spritesheet_info.strings.name}}-sprite-size($sprite) {
+ background-size: nth($sprite, 7) nth($sprite, 8);
+}
+
+@mixin {{spritesheet_info.strings.name}}-sprite-image($sprite) {
+ $sprite-image: nth($sprite, 9);
+ background-image: url(#{$sprite-image});
+}
+
+@mixin {{spritesheet_info.strings.name}}-sprite($name) {
+ @include {{spritesheet_info.strings.name}}-sprite-image(map-get(${{spritesheet_info.strings.name}}-sprites, #{$name}));
+ @include {{spritesheet_info.strings.name}}-sprite-position(map-get(${{spritesheet_info.strings.name}}-sprites, #{$name}));
+ @include {{spritesheet_info.strings.name}}-sprite-size(map-get(${{spritesheet_info.strings.name}}-sprites, #{$name}));
+ @include {{spritesheet_info.strings.name}}-sprite-width(map-get(${{spritesheet_info.strings.name}}-sprites, #{$name}));
+ @include {{spritesheet_info.strings.name}}-sprite-height(map-get(${{spritesheet_info.strings.name}}-sprites, #{$name}));
+ background-repeat: no-repeat;
+}
+{{/if}}
+{{/block}}
+
+{{#block "spritesheet-functions"}}
+{{#if options.functions}}
+@mixin all-{{spritesheet_info.strings.name}}-sprites() {
+ @each $key, $val in ${{spritesheet_info.strings.name}}-sprites {
+ $sprite-name: nth($val, 10);
+ .{{spritesheet_info.strings.name}}-#{$sprite-name}-sprites {
+ @include {{spritesheet_info.strings.name}}-sprite($key);
+ }
+ }
+}
+{{/if}}
+{{/block}}
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 00000000..581c620c
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
diff --git a/src/api/index.js b/src/api/index.js
new file mode 100644
index 00000000..65bcbfb0
--- /dev/null
+++ b/src/api/index.js
@@ -0,0 +1,95 @@
+import axios from 'axios'
+// import Qs from 'qs'
+import router from '@/router/index'
+import store from '@/store/index'
+import { ElMessage } from 'element-plus'
+
+const toLogin = () => {
+ router.push({
+ path: '/login',
+ query: {
+ redirect: router.currentRoute.fullPath
+ }
+ })
+}
+
+const api = axios.create({
+ baseURL: import.meta.env.DEV ? '/proxy/' : import.meta.env.VITE_APP_API_BASEURL,
+ timeout: 10000,
+ responseType: 'json'
+})
+
+api.interceptors.request.use(
+ request => {
+ /**
+ * 全局拦截请求发送前提交的参数
+ * 以下代码为示例,在登录状态下,分别对 post 和 get 请求加上 token 参数
+ */
+ if (request.method == 'post') {
+ if (request.data instanceof FormData) {
+ if (store.getters['token/isLogin']) {
+ // 如果是 FormData 类型(上传图片)
+ request.data.append('token', store.state.token.token)
+ }
+ } else {
+ // 带上 token
+ if (request.data == undefined) {
+ request.data = {}
+ }
+ if (store.getters['token/isLogin']) {
+ request.data.token = store.state.token.token
+ }
+ // request.data = Qs.stringify(request.data)
+ }
+ } else {
+ // 带上 token
+ if (request.params == undefined) {
+ request.params = {}
+ }
+ if (store.getters['token/isLogin']) {
+ request.params.token = store.state.token.token
+ }
+ }
+ return request
+ }
+)
+
+api.interceptors.response.use(
+ response => {
+ /**
+ * 全局拦截请求发送后返回的数据,如果数据有报错则在这做全局的错误提示
+ * 假设返回数据格式为:{ status: 1, error: '', data: '' }
+ * 规则是当 status 为 1 时表示请求成功,为 0 时表示接口需要登录或者登录状态失效,需要重新登录
+ * 请求出错时 error 会返回错误信息
+ */
+ if (response.data.status === 1) {
+ if (response.data.error === '') {
+ // 请求成功并且没有报错
+ return Promise.resolve(response.data)
+ } else {
+ // 这里做错误提示
+ // ElMessage.error(options)
+ return Promise.reject(response.data)
+ }
+ } else {
+ toLogin()
+ }
+ },
+ error => {
+ let message = error.message
+ if (message == 'Network Error') {
+ message = '后端网络故障'
+ } else if (message.includes('timeout')) {
+ message = '接口请求超时'
+ } else if (message.includes('Request failed with status code')) {
+ message = '接口' + message.substr(message.length - 3) + '异常'
+ }
+ ElMessage({
+ message,
+ type: 'error'
+ })
+ return Promise.reject(error)
+ }
+)
+
+export default api
diff --git a/src/assets/icons/404.svg b/src/assets/icons/404.svg
new file mode 100644
index 00000000..9044899d
--- /dev/null
+++ b/src/assets/icons/404.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/captcha.svg b/src/assets/icons/captcha.svg
new file mode 100644
index 00000000..7d77e50f
--- /dev/null
+++ b/src/assets/icons/captcha.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/example-crown.svg b/src/assets/icons/example-crown.svg
new file mode 100644
index 00000000..2e27e3bf
--- /dev/null
+++ b/src/assets/icons/example-crown.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/example-emotion-laugh-line.svg b/src/assets/icons/example-emotion-laugh-line.svg
new file mode 100644
index 00000000..e7e6ea2f
--- /dev/null
+++ b/src/assets/icons/example-emotion-laugh-line.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/example-emotion-line.svg b/src/assets/icons/example-emotion-line.svg
new file mode 100644
index 00000000..6572a838
--- /dev/null
+++ b/src/assets/icons/example-emotion-line.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/example-emotion-unhappy-line.svg b/src/assets/icons/example-emotion-unhappy-line.svg
new file mode 100644
index 00000000..7cbb3773
--- /dev/null
+++ b/src/assets/icons/example-emotion-unhappy-line.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/example-star.svg b/src/assets/icons/example-star.svg
new file mode 100644
index 00000000..c9683720
--- /dev/null
+++ b/src/assets/icons/example-star.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/example-vip.svg b/src/assets/icons/example-vip.svg
new file mode 100644
index 00000000..6e112d56
--- /dev/null
+++ b/src/assets/icons/example-vip.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/eye-open.svg b/src/assets/icons/eye-open.svg
new file mode 100644
index 00000000..b80fd2b6
--- /dev/null
+++ b/src/assets/icons/eye-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/eye.svg b/src/assets/icons/eye.svg
new file mode 100644
index 00000000..16ed2d87
--- /dev/null
+++ b/src/assets/icons/eye.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fixed-right-buy.svg b/src/assets/icons/fixed-right-buy.svg
new file mode 100644
index 00000000..923984d6
--- /dev/null
+++ b/src/assets/icons/fixed-right-buy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fixed-right-chat.svg b/src/assets/icons/fixed-right-chat.svg
new file mode 100644
index 00000000..37b6cbce
--- /dev/null
+++ b/src/assets/icons/fixed-right-chat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fixed-right-code.svg b/src/assets/icons/fixed-right-code.svg
new file mode 100644
index 00000000..6e0f1481
--- /dev/null
+++ b/src/assets/icons/fixed-right-code.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fixed-right-doc.svg b/src/assets/icons/fixed-right-doc.svg
new file mode 100644
index 00000000..0ad61471
--- /dev/null
+++ b/src/assets/icons/fixed-right-doc.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fixed-right-qq.svg b/src/assets/icons/fixed-right-qq.svg
new file mode 100644
index 00000000..969c4612
--- /dev/null
+++ b/src/assets/icons/fixed-right-qq.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fullscreen-exit.svg b/src/assets/icons/fullscreen-exit.svg
new file mode 100644
index 00000000..ea412f9b
--- /dev/null
+++ b/src/assets/icons/fullscreen-exit.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/fullscreen.svg b/src/assets/icons/fullscreen.svg
new file mode 100644
index 00000000..e1f6b07b
--- /dev/null
+++ b/src/assets/icons/fullscreen.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/image-load-fail.svg b/src/assets/icons/image-load-fail.svg
new file mode 100644
index 00000000..66a1a865
--- /dev/null
+++ b/src/assets/icons/image-load-fail.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/password.svg b/src/assets/icons/password.svg
new file mode 100644
index 00000000..e291d85d
--- /dev/null
+++ b/src/assets/icons/password.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/pro.svg b/src/assets/icons/pro.svg
new file mode 100644
index 00000000..35ba55fa
--- /dev/null
+++ b/src/assets/icons/pro.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/search-down.svg b/src/assets/icons/search-down.svg
new file mode 100644
index 00000000..ebc50186
--- /dev/null
+++ b/src/assets/icons/search-down.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/search-enter.svg b/src/assets/icons/search-enter.svg
new file mode 100644
index 00000000..710cc0ee
--- /dev/null
+++ b/src/assets/icons/search-enter.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/search-up.svg b/src/assets/icons/search-up.svg
new file mode 100644
index 00000000..000ed07d
--- /dev/null
+++ b/src/assets/icons/search-up.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/search.svg b/src/assets/icons/search.svg
new file mode 100644
index 00000000..5a884a4b
--- /dev/null
+++ b/src/assets/icons/search.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-breadcrumb.svg b/src/assets/icons/sidebar-breadcrumb.svg
new file mode 100644
index 00000000..69469eec
--- /dev/null
+++ b/src/assets/icons/sidebar-breadcrumb.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-component.svg b/src/assets/icons/sidebar-component.svg
new file mode 100644
index 00000000..1a5a45ae
--- /dev/null
+++ b/src/assets/icons/sidebar-component.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-default.svg b/src/assets/icons/sidebar-default.svg
new file mode 100644
index 00000000..cd686a91
--- /dev/null
+++ b/src/assets/icons/sidebar-default.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-element.svg b/src/assets/icons/sidebar-element.svg
new file mode 100644
index 00000000..6965ced0
--- /dev/null
+++ b/src/assets/icons/sidebar-element.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-external-link.svg b/src/assets/icons/sidebar-external-link.svg
new file mode 100644
index 00000000..a70b6b76
--- /dev/null
+++ b/src/assets/icons/sidebar-external-link.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-keep-alive.svg b/src/assets/icons/sidebar-keep-alive.svg
new file mode 100644
index 00000000..adf95ebc
--- /dev/null
+++ b/src/assets/icons/sidebar-keep-alive.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-menu.svg b/src/assets/icons/sidebar-menu.svg
new file mode 100644
index 00000000..ced1a685
--- /dev/null
+++ b/src/assets/icons/sidebar-menu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-mock.svg b/src/assets/icons/sidebar-mock.svg
new file mode 100644
index 00000000..724f5642
--- /dev/null
+++ b/src/assets/icons/sidebar-mock.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-permission.svg b/src/assets/icons/sidebar-permission.svg
new file mode 100644
index 00000000..2f812c4f
--- /dev/null
+++ b/src/assets/icons/sidebar-permission.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/sidebar-videos.svg b/src/assets/icons/sidebar-videos.svg
new file mode 100644
index 00000000..1dc80344
--- /dev/null
+++ b/src/assets/icons/sidebar-videos.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/toolbar-collapse.svg b/src/assets/icons/toolbar-collapse.svg
new file mode 100644
index 00000000..dd767331
--- /dev/null
+++ b/src/assets/icons/toolbar-collapse.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/toolbar-reload.svg b/src/assets/icons/toolbar-reload.svg
new file mode 100644
index 00000000..c2abcedc
--- /dev/null
+++ b/src/assets/icons/toolbar-reload.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/toolbar-theme.svg b/src/assets/icons/toolbar-theme.svg
new file mode 100644
index 00000000..6c34a303
--- /dev/null
+++ b/src/assets/icons/toolbar-theme.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/icons/user.svg b/src/assets/icons/user.svg
new file mode 100644
index 00000000..0ba0716a
--- /dev/null
+++ b/src/assets/icons/user.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/login-banner.jpg b/src/assets/images/login-banner.jpg
new file mode 100644
index 00000000..f209d3fc
Binary files /dev/null and b/src/assets/images/login-banner.jpg differ
diff --git a/src/assets/images/login-bg.jpg b/src/assets/images/login-bg.jpg
new file mode 100644
index 00000000..f713cba9
Binary files /dev/null and b/src/assets/images/login-bg.jpg differ
diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png
new file mode 100644
index 00000000..47d879d6
Binary files /dev/null and b/src/assets/images/logo.png differ
diff --git a/src/assets/sprites/example/address.png b/src/assets/sprites/example/address.png
new file mode 100644
index 00000000..2b5d1db3
Binary files /dev/null and b/src/assets/sprites/example/address.png differ
diff --git a/src/assets/sprites/example/feedback.png b/src/assets/sprites/example/feedback.png
new file mode 100644
index 00000000..065b55dd
Binary files /dev/null and b/src/assets/sprites/example/feedback.png differ
diff --git a/src/assets/sprites/example/payment.png b/src/assets/sprites/example/payment.png
new file mode 100644
index 00000000..1c2f680a
Binary files /dev/null and b/src/assets/sprites/example/payment.png differ
diff --git a/src/assets/styles/globals.scss b/src/assets/styles/globals.scss
new file mode 100644
index 00000000..c0969623
--- /dev/null
+++ b/src/assets/styles/globals.scss
@@ -0,0 +1,86 @@
+// 全局样式
+::-webkit-scrollbar {
+ width: 13px;
+ height: 13px;
+}
+::-webkit-scrollbar-thumb {
+ background-color: rgba(0, 0, 0, 0.4);
+ background-clip: padding-box;
+ border: 3px solid transparent;
+ border-radius: 7px;
+}
+::-webkit-scrollbar-thumb:hover {
+ background-color: rgba(0, 0, 0, 0.5);
+}
+::-webkit-scrollbar-track {
+ background-color: transparent;
+}
+::-webkit-scrollbar-track:hover {
+ background-color: #f8fafc;
+}
+html,
+body {
+ height: 100%;
+}
+body {
+ margin: 0;
+ color: #333;
+ box-sizing: border-box;
+ font-family: Lato, PingFang SC, Microsoft YaHei, sans-serif;
+ -webkit-tap-highlight-color: transparent;
+ &.hidden {
+ overflow: hidden;
+ }
+}
+* {
+ box-sizing: inherit;
+}
+// 右侧内容区针对fixed元素,有横向铺满的需求,可在fixed元素上设置 [data-fixed-calc-width]
+[data-fixed-calc-width] {
+ position: fixed;
+ left: 50%;
+ right: 0;
+ width: calc(100% - #{$g-main-sidebar-width} - #{$g-sub-sidebar-width});
+}
+[data-sidebar-no-collapse] {
+ [data-fixed-calc-width] {
+ transform: translateX(-50%) translateX(division($g-main-sidebar-width, 2)) translateX(division($g-sub-sidebar-width, 2));
+ }
+ &[data-menu-mode=head],
+ &[data-menu-mode=single] {
+ [data-fixed-calc-width] {
+ width: calc(100% - #{$g-sub-sidebar-width});
+ transform: translateX(-50%) translateX(division($g-sub-sidebar-width, 2));
+ }
+ }
+}
+[data-sidebar-collapse] {
+ [data-fixed-calc-width] {
+ width: calc(100% - #{$g-main-sidebar-width} - 64px);
+ transform: translateX(-50%) translateX(division($g-main-sidebar-width, 2)) translateX(32px);
+ }
+ &[data-menu-mode=head],
+ &[data-menu-mode=single] {
+ [data-fixed-calc-width] {
+ width: calc(100% - 64px);
+ transform: translateX(-50%) translateX(32px);
+ }
+ }
+}
+[data-mode=mobile] {
+ [data-fixed-calc-width] {
+ width: 100% !important;
+ transform: translateX(-50%) !important;
+ }
+}
+// textarea 字体跟随系统
+textarea {
+ font-family: inherit;
+}
+// 列表页全局样式
+.el-table.list-table {
+ margin: 20px 0;
+ .el-button + .el-dropdown {
+ margin-left: 10px;
+ }
+}
diff --git a/src/assets/styles/resources/layout.scss b/src/assets/styles/resources/layout.scss
new file mode 100644
index 00000000..bbc73509
--- /dev/null
+++ b/src/assets/styles/resources/layout.scss
@@ -0,0 +1,15 @@
+// 全局变量
+
+// 头部宽度(默认自适应宽度,可固定宽度,固定宽度后为居中显示)
+$g-header-width: 100%;
+// 头部高度
+$g-header-height: 70px;
+// 侧边栏宽度
+$g-main-sidebar-width: 70px;
+$g-sub-sidebar-width: 220px;
+// 侧边栏Logo高度
+$g-sidebar-logo-height: 50px;
+// 标签栏高度
+$g-tabbar-height: 40px;
+// 顶部导航栏高度
+$g-topbar-height: 50px;
diff --git a/src/assets/styles/resources/themes.scss b/src/assets/styles/resources/themes.scss
new file mode 100644
index 00000000..7c976487
--- /dev/null
+++ b/src/assets/styles/resources/themes.scss
@@ -0,0 +1,68 @@
+// 【主区域】
+// 背景色
+$g-main-bg: #f0f2f5;
+// 【头部】
+// 背景色
+$g-header-bg: #222b45;
+// 文字颜色
+$g-header-color: #fff;
+// 导航文字颜色
+$g-header-menu-color: #ccc;
+// 导航鼠标悬浮文字颜色
+$g-header-menu-hover-color: #fff;
+// 导航鼠标悬浮背景色
+$g-header-menu-hover-bg: #334067;
+// 导航选中文字颜色
+$g-header-menu-active-color: #fff;
+// 导航选中背景色
+$g-header-menu-active-bg: #334067;
+// 【主侧边栏】
+// 背景色
+$g-main-sidebar-bg: #222b45;
+// 菜单文字颜色
+$g-main-sidebar-menu-color: #ccc;
+// 菜单鼠标悬浮文字颜色
+$g-main-sidebar-menu-hover-color: #fff;
+// 菜单鼠标悬浮背景色
+$g-main-sidebar-menu-hover-bg: #334067;
+// 菜单选中文字颜色
+$g-main-sidebar-menu-active-color: #fff;
+// 菜单选中背景色
+$g-main-sidebar-menu-active-bg: #334067;
+// 【次侧边栏】
+// 背景色
+$g-sub-sidebar-bg: #fafafa;
+// 菜单背景色
+$g-sub-sidebar-menu-bg: darken(#fafafa, 7);
+// 菜单文字颜色
+$g-sub-sidebar-menu-color: #37414b;
+// 菜单鼠标悬浮文字颜色
+$g-sub-sidebar-menu-hover-color: #37414b;
+// 菜单鼠标悬浮背景色
+$g-sub-sidebar-menu-hover-bg: darken(#fafafa, 10);
+// 菜单选中文字颜色
+$g-sub-sidebar-menu-active-color: #e7f4ff;
+// 菜单选中背景色
+$g-sub-sidebar-menu-active-bg: #5482ee;
+// 【导航标记】
+// 背景色
+$g-badge-bg: #f56c6c;
+// 文字颜色
+$g-badge-color: #fff;
+// 边框颜色
+$g-badge-border-color:#fff;
+// 【标签栏】
+// 背景色
+$g-tabbar-bg: #f0f2f5;
+// 分割线颜色
+$g-tabbar-dividers-bg: #a9adb0;
+// 标签文字颜色
+$g-tabbar-tab-color: #999;
+// 标签鼠标悬浮文字颜色
+$g-tabbar-tab-hover-color: #999;
+// 标签鼠标悬浮背景色
+$g-tabbar-tab-hover-bg: #dee1e6;
+// 标签选中文字颜色
+$g-tabbar-tab-active-color: #97a8be;
+// 标签选中背景色
+$g-tabbar-tab-active-bg: #fff;
diff --git a/src/assets/styles/resources/utils.scss b/src/assets/styles/resources/utils.scss
new file mode 100644
index 00000000..29424a54
--- /dev/null
+++ b/src/assets/styles/resources/utils.scss
@@ -0,0 +1,57 @@
+@use 'sass:math';
+
+// @mixin 通过 @include 调用使用
+// % 通过 @extend 调用使用
+@function division($a, $b) {
+ @return math.div($a, $b);
+}
+
+// 文字超出隐藏,默认为单行超出隐藏,可设置多行
+@mixin text-overflow($line: 1, $fixed-width: true) {
+ @if ($line==1 and $fixed-width==true) {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ @else {
+ display: -webkit-box;
+ -webkit-box-orient: vertical;
+ -webkit-line-clamp: $line;
+ overflow: hidden;
+ }
+}
+
+// 定位居中,默认水平居中,可选择垂直居中,或者水平垂直都居中
+@mixin position-center($type: x) {
+ position: absolute;
+ @if ($type==x) {
+ left: 50%;
+ transform: translateX(-50%);
+ }
+ @if ($type==y) {
+ top: 50%;
+ transform: translateY(-50%);
+ }
+ @if ($type==xy) {
+ left: 50%;
+ top: 50%;
+ transform: translateX(-50%) translateY(-50%);
+ }
+}
+
+// 文字两端对齐
+%justify-align {
+ text-align: justify;
+ text-align-last: justify;
+}
+
+// 清除浮动
+%clearfix {
+ zoom: 1;
+ &::before,
+ &::after {
+ content: '';
+ display: block;
+ clear: both;
+ }
+}
diff --git a/src/assets/styles/resources/variables.scss b/src/assets/styles/resources/variables.scss
new file mode 100644
index 00000000..d314af3c
--- /dev/null
+++ b/src/assets/styles/resources/variables.scss
@@ -0,0 +1 @@
+// 全局变量
diff --git a/src/components/AbsoluteContainer/index.vue b/src/components/AbsoluteContainer/index.vue
new file mode 100644
index 00000000..846d5535
--- /dev/null
+++ b/src/components/AbsoluteContainer/index.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Auth/index.vue b/src/components/Auth/index.vue
new file mode 100644
index 00000000..b508ea19
--- /dev/null
+++ b/src/components/Auth/index.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/AuthAll/index.vue b/src/components/AuthAll/index.vue
new file mode 100644
index 00000000..2aa834eb
--- /dev/null
+++ b/src/components/AuthAll/index.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/BatchActionBar/index.vue b/src/components/BatchActionBar/index.vue
new file mode 100644
index 00000000..d580a5d7
--- /dev/null
+++ b/src/components/BatchActionBar/index.vue
@@ -0,0 +1,81 @@
+
+
+
当页全选
+
已选 {{ selectionData.length }} 项
+
+
+
+
+
+
+
+
+
diff --git a/src/components/CascaderArea/index.vue b/src/components/CascaderArea/index.vue
new file mode 100644
index 00000000..6722d236
--- /dev/null
+++ b/src/components/CascaderArea/index.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Copyright/index.vue b/src/components/Copyright/index.vue
new file mode 100644
index 00000000..6fcb8709
--- /dev/null
+++ b/src/components/Copyright/index.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue
new file mode 100644
index 00000000..a9fc9043
--- /dev/null
+++ b/src/components/Editor/index.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/FileUpload/index.vue b/src/components/FileUpload/index.vue
new file mode 100644
index 00000000..c1af6114
--- /dev/null
+++ b/src/components/FileUpload/index.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/FixedActionBar/index.vue b/src/components/FixedActionBar/index.vue
new file mode 100644
index 00000000..f9df51fc
--- /dev/null
+++ b/src/components/FixedActionBar/index.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue
new file mode 100644
index 00000000..b8bb04b8
--- /dev/null
+++ b/src/components/ImagePreview/index.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/ImageUpload/index.vue b/src/components/ImageUpload/index.vue
new file mode 100644
index 00000000..0365aa0a
--- /dev/null
+++ b/src/components/ImageUpload/index.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{imageViewerVisible = false}" />
+
+
+
+
+
+
diff --git a/src/components/ImagesUpload/index.vue b/src/components/ImagesUpload/index.vue
new file mode 100644
index 00000000..0d614ceb
--- /dev/null
+++ b/src/components/ImagesUpload/index.vue
@@ -0,0 +1,262 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{imageViewerVisible = false}" />
+
+
+
+
+
+
diff --git a/src/components/PageHeader/index.vue b/src/components/PageHeader/index.vue
new file mode 100644
index 00000000..a26df720
--- /dev/null
+++ b/src/components/PageHeader/index.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
diff --git a/src/components/PageMain/index.vue b/src/components/PageMain/index.vue
new file mode 100644
index 00000000..ce814615
--- /dev/null
+++ b/src/components/PageMain/index.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
diff --git a/src/components/Result/index.vue b/src/components/Result/index.vue
new file mode 100644
index 00000000..bff30e1f
--- /dev/null
+++ b/src/components/Result/index.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{ title }}
+
{{ desc }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/SearchBar/index.vue b/src/components/SearchBar/index.vue
new file mode 100644
index 00000000..bcef5624
--- /dev/null
+++ b/src/components/SearchBar/index.vue
@@ -0,0 +1,69 @@
+
+
+
+
+ {{ isUnfold ? '收起' : '展开' }}
+
+
+
+
+
+
+
diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue
new file mode 100644
index 00000000..d459e750
--- /dev/null
+++ b/src/components/SvgIcon/index.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
diff --git a/src/components/Trend/index.vue b/src/components/Trend/index.vue
new file mode 100644
index 00000000..8f7727bc
--- /dev/null
+++ b/src/components/Trend/index.vue
@@ -0,0 +1,61 @@
+
+
+ {{ prefix }}
+ {{ value }}
+ {{ suffix }}
+
+
+
+
+
+
+
diff --git a/src/components/registerGlobalComponent.js b/src/components/registerGlobalComponent.js
new file mode 100644
index 00000000..908c9e20
--- /dev/null
+++ b/src/components/registerGlobalComponent.js
@@ -0,0 +1,7 @@
+export default function registerGlobalComponent(app) {
+ const componentsContext = import.meta.globEager('./**/index.vue')
+ for (const path in componentsContext) {
+ const component = componentsContext[path].default
+ app.component(component.name, component)
+ }
+}
diff --git a/src/layout/components/BuyIt/index.vue b/src/layout/components/BuyIt/index.vue
new file mode 100644
index 00000000..8a97fb6a
--- /dev/null
+++ b/src/layout/components/BuyIt/index.vue
@@ -0,0 +1,111 @@
+
+
+
+
+ 在线
咨询
+
+
+
+ 加入
QQ群
+
+
+
+ 购买
专业版
+
+
+
+ 开发
文档
+
+
+
+ 下载
基础版
+
+
+
+
+
+
+
diff --git a/src/layout/components/Header/index.vue b/src/layout/components/Header/index.vue
new file mode 100644
index 00000000..a45a3130
--- /dev/null
+++ b/src/layout/components/Header/index.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/Logo/index.vue b/src/layout/components/Logo/index.vue
new file mode 100644
index 00000000..3eab0f42
--- /dev/null
+++ b/src/layout/components/Logo/index.vue
@@ -0,0 +1,76 @@
+
+
+
+ {{ title }}
+
+
+
+
+
+
diff --git a/src/layout/components/MainSidebar/index.vue b/src/layout/components/MainSidebar/index.vue
new file mode 100644
index 00000000..1dd1969a
--- /dev/null
+++ b/src/layout/components/MainSidebar/index.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+
+
+ {{ item.meta.title }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/Search/index.vue b/src/layout/components/Search/index.vue
new file mode 100644
index 00000000..a0962f8a
--- /dev/null
+++ b/src/layout/components/Search/index.vue
@@ -0,0 +1,364 @@
+
+
+
+
+
+
+
+ Alt+S
+ 唤醒搜索面板
+
+
+
+
+ 切换搜索结果
+
+
+
+ 访问页面
+
+
+ ESC
+ 退出
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/SidebarItem/index.vue b/src/layout/components/SidebarItem/index.vue
new file mode 100644
index 00000000..b6707ae2
--- /dev/null
+++ b/src/layout/components/SidebarItem/index.vue
@@ -0,0 +1,269 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/SubSidebar/index.vue b/src/layout/components/SubSidebar/index.vue
new file mode 100644
index 00000000..7bf70128
--- /dev/null
+++ b/src/layout/components/SubSidebar/index.vue
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
diff --git a/src/layout/components/ThemeSetting/index.vue b/src/layout/components/ThemeSetting/index.vue
new file mode 100644
index 00000000..62a4ec82
--- /dev/null
+++ b/src/layout/components/ThemeSetting/index.vue
@@ -0,0 +1,417 @@
+
+
+
+
+ 导航栏模式
+
+ 侧边栏
+
+
+
+ 顶栏
+
+
+ 功能按钮
+
+
+
+ 其它
+
+
+ 组件尺寸
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/Topbar/index.vue b/src/layout/components/Topbar/index.vue
new file mode 100644
index 00000000..2e081f58
--- /dev/null
+++ b/src/layout/components/Topbar/index.vue
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+ {{ item.title }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/UserMenu/index.vue b/src/layout/components/UserMenu/index.vue
new file mode 100644
index 00000000..87cf8d69
--- /dev/null
+++ b/src/layout/components/UserMenu/index.vue
@@ -0,0 +1,154 @@
+
+
+
+
+
+ 查看专业版
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $store.state.user.account }}
+
+
+
+
+ 控制台
+ 个人设置
+ 退出登录
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/index.vue b/src/layout/index.vue
new file mode 100644
index 00000000..e549ffdd
--- /dev/null
+++ b/src/layout/index.vue
@@ -0,0 +1,311 @@
+
+
+
+
+
+
+
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 00000000..a567ba76
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,34 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+const app = createApp(App)
+
+import store from './store'
+app.use(store)
+
+import router from './router'
+app.use(router)
+
+import ElementPlus from 'element-plus'
+import 'element-plus/dist/index.css'
+app.use(ElementPlus, {
+ size: store.state.settings.elementSize
+})
+
+import globalProperties from '@/util/global.properties'
+globalProperties(app)
+
+// 自定义指令
+import directive from '@/util/directive'
+directive(app)
+
+// 全局组件自动注册
+import registerGlobalComponent from '@/components/registerGlobalComponent'
+registerGlobalComponent(app)
+
+// 加载 svg 图标
+import 'vite-plugin-svg-icons/register'
+
+// 全局样式
+import '@/assets/styles/globals.scss'
+
+app.mount('#app')
diff --git a/src/mixins/pagination.js b/src/mixins/pagination.js
new file mode 100644
index 00000000..f7e2309a
--- /dev/null
+++ b/src/mixins/pagination.js
@@ -0,0 +1,48 @@
+export default {
+ data() {
+ return {
+ loading: false,
+ sort: null,
+ order: null,
+ pagination: {
+ page: 1,
+ size: 10,
+ total: 0,
+ sizes: [10, 20, 50, 100],
+ layout: 'total, sizes, ->, prev, pager, next, jumper'
+ }
+ }
+ },
+ methods: {
+ getParams(params = {}) {
+ const baseParams = {
+ from: (this.pagination.page - 1) * this.pagination.size,
+ limit: this.pagination.size
+ }
+ if (this.sort && this.order) {
+ baseParams.sort = this.sort
+ baseParams.order = this.order
+ }
+ Object.assign(baseParams, params)
+ return baseParams
+ },
+ onSizeChange(size) {
+ this.pagination.size = size
+ this.getDataList()
+ },
+ onCurrentChange(page) {
+ this.pagination.page = page
+ this.getDataList()
+ },
+ onSortChange(params) {
+ if (params.order) {
+ this.sort = params.prop
+ this.order = params.order === 'ascending' ? 'asc' : 'desc'
+ } else {
+ this.sort = null
+ this.order = null
+ }
+ this.getDataList()
+ }
+ }
+}
diff --git a/src/mock/member.js b/src/mock/member.js
new file mode 100644
index 00000000..b515e2ae
--- /dev/null
+++ b/src/mock/member.js
@@ -0,0 +1,43 @@
+export default [
+ {
+ url: '/mock/member/login',
+ method: 'post',
+ response: option => {
+ return {
+ error: '',
+ status: 1,
+ data: {
+ account: option.body.account,
+ token: '@string',
+ failure_time: Date.parse(new Date()) / 1000 + 24 * 60 * 60
+ }
+ }
+ }
+ },
+ {
+ url: '/mock/member/permission',
+ method: 'get',
+ response: option => {
+ let permissions = []
+ if (option.query.account == 'admin') {
+ permissions = [
+ 'permission.browse',
+ 'permission.create',
+ 'permission.edit',
+ 'permission.remove'
+ ]
+ } else if (option.query.account == 'test') {
+ permissions = [
+ 'permission.browse'
+ ]
+ }
+ return {
+ error: '',
+ status: 1,
+ data: {
+ permissions
+ }
+ }
+ }
+ }
+]
diff --git a/src/mock/route.js b/src/mock/route.js
new file mode 100644
index 00000000..051e2a91
--- /dev/null
+++ b/src/mock/route.js
@@ -0,0 +1,86 @@
+export default [
+ {
+ url: '/mock/route/list',
+ method: 'get',
+ response: () => {
+ return {
+ error: '',
+ status: 1,
+ data: [
+ {
+ meta: {
+ title: '演示',
+ icon: 'sidebar-default'
+ },
+ children: [
+ {
+ path: '/multilevel_menu_example',
+ component: 'Layout',
+ redirect: '/multilevel_menu_example/page',
+ name: 'multilevelMenuExample',
+ meta: {
+ title: '多级导航',
+ icon: 'sidebar-menu'
+ },
+ children: [
+ {
+ path: 'page',
+ name: 'multilevelMenuExample1',
+ component: 'multilevel_menu_example/page.vue',
+ meta: {
+ title: '导航1'
+ }
+ },
+ {
+ path: 'level2',
+ name: 'multilevelMenuExample2',
+ redirect: '/multilevel_menu_example/level2/page',
+ meta: {
+ title: '导航2'
+ },
+ children: [
+ {
+ path: 'page',
+ name: 'multilevelMenuExample2-1',
+ component: 'multilevel_menu_example/level2/page.vue',
+ meta: {
+ title: '导航2-1'
+ }
+ },
+ {
+ path: 'level3',
+ name: 'multilevelMenuExample2-2',
+ redirect: '/multilevel_menu_example/level2/level3/page1',
+ meta: {
+ title: '导航2-2'
+ },
+ children: [
+ {
+ path: 'page1',
+ name: 'multilevelMenuExample2-2-1',
+ component: 'multilevel_menu_example/level2/level3/page1.vue',
+ meta: {
+ title: '导航2-2-1'
+ }
+ },
+ {
+ path: 'page2',
+ name: 'multilevelMenuExample2-2-2',
+ component: 'multilevel_menu_example/level2/level3/page2.vue',
+ meta: {
+ title: '导航2-2-2'
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+]
diff --git a/src/mockProdServer.js b/src/mockProdServer.js
new file mode 100644
index 00000000..84271fa8
--- /dev/null
+++ b/src/mockProdServer.js
@@ -0,0 +1,11 @@
+import { createProdMockServer } from 'vite-plugin-mock/es/createProdMockServer'
+
+const mocks = []
+const mockContext = import.meta.globEager('./mock/*.js')
+Object.keys(mockContext).forEach(v => {
+ mocks.push(...mockContext[v].default)
+})
+
+export function setupProdMockServer() {
+ createProdMockServer(mocks)
+}
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 00000000..6139c0c2
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,255 @@
+import { createRouter, createWebHashHistory } from 'vue-router'
+import store from '@/store'
+import NProgress from 'nprogress'
+import 'nprogress/nprogress.css' // progress bar style
+import path from 'path-browserify'
+
+// 固定路由
+const constantRoutes = [
+ {
+ path: '/login',
+ name: 'login',
+ component: () => import('@/views/login.vue'),
+ meta: {
+ title: '登录'
+ }
+ },
+ {
+ path: '/',
+ component: () => import('@/layout/index.vue'),
+ redirect: '/dashboard',
+ children: [
+ {
+ path: 'dashboard',
+ name: 'dashboard',
+ component: () => import('@/views/index.vue'),
+ meta: {
+ title: () => store.state.settings.dashboardTitle
+ }
+ },
+ {
+ path: 'personal/setting',
+ name: 'personalSetting',
+ component: () => import('@/views/personal/setting.vue'),
+ meta: {
+ title: '个人设置',
+ breadcrumbNeste: [
+ { title: '个人设置', path: '/personal/setting' }
+ ]
+ }
+ },
+ {
+ path: 'personal/edit/password',
+ name: 'personalEditPassword',
+ component: () => import('@/views/personal/edit.password.vue'),
+ meta: {
+ title: '修改密码',
+ breadcrumbNeste: [
+ { title: '修改密码', path: '/personal/edit/password' }
+ ]
+ }
+ },
+ {
+ path: 'reload',
+ name: 'reload',
+ component: () => import('@/views/reload.vue')
+ }
+ ]
+ }
+]
+
+import MultilevelMenuExample from './modules/multilevel.menu.example'
+import BreadcrumbExample from './modules/breadcrumb.example'
+import KeepAliveExample from './modules/keep.alive.example'
+import ComponentBasicExample from './modules/component.basic.example'
+import ComponentExtendExample from './modules/component.extend.example'
+import PermissionExample from './modules/permission.example'
+import MockExample from './modules/mock.example'
+import ExternalLinkExample from './modules/external.link.example'
+import VideosExample from './modules/videos.example'
+
+// 动态路由(异步路由、导航栏路由)
+const asyncRoutes = [
+ {
+ meta: {
+ title: '演示',
+ icon: 'sidebar-default'
+ },
+ children: [
+ MultilevelMenuExample,
+ BreadcrumbExample,
+ KeepAliveExample,
+ ComponentBasicExample,
+ ComponentExtendExample,
+ PermissionExample,
+ MockExample,
+ ExternalLinkExample
+ ]
+ },
+ {
+ meta: {
+ title: '教程',
+ icon: 'sidebar-videos'
+ },
+ children: [
+ ...VideosExample
+ ]
+ }
+]
+
+const lastRoute = {
+ path: '/:pathMatch(.*)*',
+ component: () => import('@/views/404.vue'),
+ meta: {
+ title: '找不到页面'
+ }
+}
+
+const router = createRouter({
+ history: createWebHashHistory(),
+ routes: constantRoutes
+})
+
+router.beforeEach(async(to, from, next) => {
+ store.state.settings.enableProgress && NProgress.start()
+ // 已经登录,但还没根据权限动态生成并挂载路由
+ if (store.getters['user/isLogin'] && !store.state.menu.isGenerate) {
+ let accessRoutes = []
+ if (!store.state.settings.enableBackendReturnRoute) {
+ accessRoutes = await store.dispatch('menu/generateRoutesAtFront', {
+ asyncRoutes,
+ currentPath: to.path
+ })
+ } else {
+ accessRoutes = await store.dispatch('menu/generateRoutesAtBack', {
+ currentPath: to.path
+ })
+ }
+ accessRoutes.push(lastRoute)
+ let removeRoutes = []
+ accessRoutes.forEach(route => {
+ removeRoutes.push(router.addRoute(route))
+ })
+ // 记录的 accessRoutes 路由数据,在登出时会使用到,不使用 router.removeRoute 是考虑配置的路由可能不一定有设置 name ,则通过调用 router.addRoute() 返回的回调进行删除
+ store.commit('menu/setCurrentRemoveRoutes', removeRoutes)
+ next({ ...to, replace: true })
+ } else {
+ if (store.state.menu.isGenerate && store.state.settings.menuMode !== 'single') {
+ store.commit('menu/setHeaderActived', to.path)
+ }
+ if (store.getters['user/isLogin']) {
+ if (to.name) {
+ if (to.matched.length !== 0) {
+ // 如果已登录状态下,进入登录页会强制跳转到控制台页面
+ if (to.name == 'login') {
+ next({
+ name: 'dashboard',
+ replace: true
+ })
+ } else if (!store.state.settings.enableDashboard && to.name == 'dashboard') {
+ // 如果未开启控制台页面,则默认进入侧边栏导航第一个模块
+ if (store.getters['menu/sidebarRoutes'].length > 0) {
+ // 此处没有使用 store.getters['menu/sidebarRoutes'][0].path 直接进行跳转是因为会有个隐性 bug ,即当父级路由如果设置了 redirect ,而 redirect 对应的嵌套子路由由于没有权限导致没有被注册,此时则会无限进入 404 页面
+ let getDeepestPath = (routes, rootPath = '') => {
+ let retnPath
+ if (routes.children) {
+ if (
+ routes.children.some(item => {
+ return item.meta.sidebar != false
+ })
+ ) {
+ for (let i = 0; i < routes.children.length; i++) {
+ if (routes.children[i].meta.sidebar != false) {
+ retnPath = getDeepestPath(routes.children[i], path.resolve(rootPath, routes.path))
+ break
+ }
+ }
+ } else {
+ retnPath = getDeepestPath(routes.children[0], path.resolve(rootPath, routes.path))
+ }
+ } else {
+ retnPath = path.resolve(rootPath, routes.path)
+ }
+ return retnPath
+ }
+ next({
+ path: getDeepestPath(store.getters['menu/sidebarRoutes'][0]),
+ replace: true
+ })
+ } else {
+ next()
+ }
+ } else {
+ next()
+ }
+ } else {
+ // 如果是通过 name 跳转,并且 name 对应的路由没有权限时,需要做这步处理,手动指向到 404 页面
+ next({
+ path: '/404'
+ })
+ }
+ } else {
+ next()
+ }
+ } else {
+ if (to.name != 'login') {
+ next({
+ name: 'login',
+ query: {
+ redirect: to.fullPath
+ }
+ })
+ } else {
+ next()
+ }
+ }
+ }
+})
+
+router.afterEach((to, from) => {
+ store.state.settings.enableProgress && NProgress.done()
+ // 设置页面 title
+ to.meta.title && store.commit('settings/setTitle', typeof to.meta.title === 'function' ? to.meta.title() : to.meta.title)
+ // 判断当前页面是否开启缓存,如果开启,则将当前页面的 name 信息存入 keep-alive 全局状态
+ if (to.meta.cache) {
+ let componentName = to.matched[to.matched.length - 1].components.default.name
+ if (componentName) {
+ to.matched.forEach(item => {
+ if (item.components.default.name && item.components.default.name != 'Layout') {
+ store.commit('keepAlive/add', item.components.default.name)
+ }
+ })
+ } else {
+ console.warn('该页面组件未设置组件名,会导致缓存失效,请检查')
+ }
+ }
+ // 判断离开页面是否开启缓存,如果开启,则根据缓存规则判断是否需要清空 keep-alive 全局状态里离开页面的 name 信息
+ if (from.meta.cache) {
+ let componentName = from.matched[from.matched.length - 1].components.default.name
+ // 通过 meta.cache 判断针对哪些页面进行缓存
+ switch (typeof from.meta.cache) {
+ case 'string':
+ if (from.meta.cache != to.name) {
+ store.commit('keepAlive/remove', componentName)
+ }
+ break
+ case 'object':
+ if (!from.meta.cache.includes(to.name)) {
+ store.commit('keepAlive/remove', componentName)
+ }
+ break
+ }
+ // 如果进入的是 reload 页面,则也将离开页面的缓存清空
+ if (to.name == 'reload') {
+ store.commit('keepAlive/remove', componentName)
+ }
+ }
+ // 百度统计代码
+ if (import.meta.env.MODE == 'example') {
+ if (window._hmt) {
+ window._hmt.push(['_trackPageview', location.pathname + '#' + to.fullPath])
+ }
+ }
+})
+
+export default router
diff --git a/src/router/modules/breadcrumb.example.js b/src/router/modules/breadcrumb.example.js
new file mode 100644
index 00000000..a81d9cd1
--- /dev/null
+++ b/src/router/modules/breadcrumb.example.js
@@ -0,0 +1,61 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/breadcrumb_example',
+ component: Layout,
+ redirect: '/breadcrumb_example/list1',
+ name: 'breadcrumbExample',
+ meta: {
+ title: '面包屑导航',
+ icon: 'sidebar-breadcrumb'
+ },
+ children: [
+ {
+ path: 'list1',
+ name: 'breadcrumbExampleList1',
+ component: () => import('@/views/breadcrumb_example/list1.vue'),
+ meta: {
+ title: '列表1(平级模式)'
+ }
+ },
+ {
+ path: 'detail1',
+ name: 'breadcrumbExampleDetail1',
+ component: () => import('@/views/breadcrumb_example/detail1.vue'),
+ meta: {
+ title: '详情1',
+ sidebar: false,
+ activeMenu: '/breadcrumb_example/list1'
+ }
+ },
+ {
+ path: 'list2',
+ name: 'breadcrumbExampleList2',
+ redirect: '/breadcrumb_example/list2',
+ meta: {
+ title: '列表2(层级模式)'
+ },
+ children: [
+ {
+ path: '',
+ component: () => import('@/views/breadcrumb_example/list2.vue'),
+ meta: {
+ title: '列表2(层级模式)',
+ sidebar: false,
+ breadcrumb: false
+ }
+ },
+ {
+ path: 'detail2',
+ name: 'breadcrumbExampleDetail2',
+ component: () => import('@/views/breadcrumb_example/detail2.vue'),
+ meta: {
+ title: '详情2',
+ sidebar: false,
+ activeMenu: '/breadcrumb_example/list2'
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/router/modules/component.basic.example.js b/src/router/modules/component.basic.example.js
new file mode 100644
index 00000000..f9426b68
--- /dev/null
+++ b/src/router/modules/component.basic.example.js
@@ -0,0 +1,126 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/component_basic_example',
+ component: Layout,
+ redirect: '/component_basic_example/icon',
+ name: 'componentBasicExample',
+ meta: {
+ title: '基础组件(部分)',
+ icon: 'sidebar-element'
+ },
+ children: [
+ {
+ path: 'icon',
+ name: 'componentBasicExampleIcon',
+ component: () => import('@/views/component_basic_example/icon.vue'),
+ meta: {
+ title: '图标'
+ }
+ },
+ {
+ path: 'button',
+ name: 'componentBasicExampleButton',
+ component: () => import('@/views/component_basic_example/button.vue'),
+ meta: {
+ title: '按钮'
+ }
+ },
+ {
+ path: 'link',
+ name: 'componentBasicExampleLink',
+ component: () => import('@/views/component_basic_example/link.vue'),
+ meta: {
+ title: '文字链接'
+ }
+ },
+ {
+ path: 'radio',
+ name: 'componentBasicExampleRadio',
+ component: () => import('@/views/component_basic_example/radio.vue'),
+ meta: {
+ title: '单选框'
+ }
+ },
+ {
+ path: 'checkbox',
+ name: 'componentBasicExampleCheckbox',
+ component: () => import('@/views/component_basic_example/checkbox.vue'),
+ meta: {
+ title: '多选框'
+ }
+ },
+ {
+ path: 'input',
+ name: 'componentBasicExampleInput',
+ component: () => import('@/views/component_basic_example/input.vue'),
+ meta: {
+ title: '输入框'
+ }
+ },
+ {
+ path: 'inputnumber',
+ name: 'componentBasicExampleInputnumber',
+ component: () => import('@/views/component_basic_example/inputnumber.vue'),
+ meta: {
+ title: '计数器'
+ }
+ },
+ {
+ path: 'select',
+ name: 'componentBasicExampleSelect',
+ component: () => import('@/views/component_basic_example/select.vue'),
+ meta: {
+ title: '选择器'
+ }
+ },
+ {
+ path: 'switch',
+ name: 'componentBasicExampleSwitch',
+ component: () => import('@/views/component_basic_example/switch.vue'),
+ meta: {
+ title: '开关'
+ }
+ },
+ {
+ path: 'slider',
+ name: 'componentBasicExampleSlider',
+ component: () => import('@/views/component_basic_example/slider.vue'),
+ meta: {
+ title: '滑块'
+ }
+ },
+ {
+ path: 'timepicker',
+ name: 'componentBasicExampleTimepicker',
+ component: () => import('@/views/component_basic_example/timepicker.vue'),
+ meta: {
+ title: '时间选择器'
+ }
+ },
+ {
+ path: 'datepicker',
+ name: 'componentBasicExampleDatepicker',
+ component: () => import('@/views/component_basic_example/datepicker.vue'),
+ meta: {
+ title: '日期选择器'
+ }
+ },
+ {
+ path: 'datetimepicker',
+ name: 'componentBasicExampleDatetimepicker',
+ component: () => import('@/views/component_basic_example/datetimepicker.vue'),
+ meta: {
+ title: '日期时间选择器'
+ }
+ },
+ {
+ path: 'rate',
+ name: 'componentBasicExampleRate',
+ component: () => import('@/views/component_basic_example/rate.vue'),
+ meta: {
+ title: '评分'
+ }
+ }
+ ]
+}
diff --git a/src/router/modules/component.extend.example.js b/src/router/modules/component.extend.example.js
new file mode 100644
index 00000000..1dbb44ab
--- /dev/null
+++ b/src/router/modules/component.extend.example.js
@@ -0,0 +1,118 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/component_extend_example',
+ component: Layout,
+ redirect: '/component_extend_example/pageheader',
+ name: 'componentExtendExample',
+ meta: {
+ title: '扩展组件',
+ icon: 'sidebar-component'
+ },
+ children: [
+ {
+ path: 'svg',
+ name: 'componentExtendExampleSvg',
+ component: () => import('@/views/component_extend_example/svg.vue'),
+ meta: {
+ title: 'SVG Icon'
+ }
+ },
+ {
+ path: 'pageheader',
+ name: 'componentExtendExamplePageheader',
+ component: () => import('@/views/component_extend_example/pageheader.vue'),
+ meta: {
+ title: '页头'
+ }
+ },
+ {
+ path: 'pagemain',
+ name: 'componentExtendExamplePagemain',
+ component: () => import('@/views/component_extend_example/pagemain.vue'),
+ meta: {
+ title: '内容块'
+ }
+ },
+ {
+ path: 'result',
+ name: 'componentExtendExampleResult',
+ component: () => import('@/views/component_extend_example/result.vue'),
+ meta: {
+ title: '处理结果'
+ }
+ },
+ {
+ path: 'actionbar',
+ name: 'componentExtendExampleActionbar',
+ component: () => import('@/views/component_extend_example/actionbar.vue'),
+ meta: {
+ title: '固定底部操作栏'
+ }
+ },
+ {
+ path: 'searchbar',
+ name: 'componentExtendExampleSearchbar',
+ component: () => import('@/views/component_extend_example/searchbar.vue'),
+ meta: {
+ title: '搜索面板'
+ }
+ },
+ {
+ path: 'batchactionbar',
+ name: 'componentExtendExampleBatchactionbar',
+ component: () => import('@/views/component_extend_example/batchactionbar.vue'),
+ meta: {
+ title: '批量操作栏'
+ }
+ },
+ {
+ path: 'tableautoheight',
+ name: 'componentExtendExampleTableautoheight',
+ component: () => import('@/views/component_extend_example/table.autoheight.vue'),
+ meta: {
+ title: '表格自适应'
+ }
+ },
+ {
+ path: 'upload',
+ name: 'componentExtendExampleUpload',
+ component: () => import('@/views/component_extend_example/upload.vue'),
+ meta: {
+ title: '上传'
+ }
+ },
+ {
+ path: 'imagepreview',
+ name: 'componentExtendExampleImagePreview',
+ component: () => import('@/views/component_extend_example/image.preview.vue'),
+ meta: {
+ title: '图片预览'
+ }
+ },
+ {
+ path: 'trend',
+ name: 'componentExtendExampleTrend',
+ component: () => import('@/views/component_extend_example/trend.vue'),
+ meta: {
+ title: '趋势标记'
+ }
+ },
+ {
+ path: 'area',
+ name: 'componentExtendExampleArea',
+ component: () => import('@/views/component_extend_example/area.vue'),
+ meta: {
+ title: '省市区联动'
+ }
+ },
+ {
+ path: 'editor',
+ name: 'componentExtendExampleEditor',
+ component: () => import('@/views/component_extend_example/editor.vue'),
+ meta: {
+ title: '编辑器'
+ }
+ }
+ ]
+}
diff --git a/src/router/modules/external.link.example.js b/src/router/modules/external.link.example.js
new file mode 100644
index 00000000..1ae9ce61
--- /dev/null
+++ b/src/router/modules/external.link.example.js
@@ -0,0 +1,26 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/link',
+ component: Layout,
+ redirect: '/link/iframe',
+ name: 'externalLinkExample',
+ meta: {
+ title: '外链',
+ icon: 'sidebar-external-link'
+ },
+ children: [
+ {
+ path: 'https://gitee.com/hooray/fantastic-admin',
+ meta: {
+ title: 'Gitee 仓库'
+ }
+ },
+ {
+ path: 'https://github.com/hooray/fantastic-admin',
+ meta: {
+ title: 'Github 仓库'
+ }
+ }
+ ]
+}
diff --git a/src/router/modules/keep.alive.example.js b/src/router/modules/keep.alive.example.js
new file mode 100644
index 00000000..bb5dc359
--- /dev/null
+++ b/src/router/modules/keep.alive.example.js
@@ -0,0 +1,99 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/keep_alive_example',
+ component: Layout,
+ redirect: '/keep_alive_example/page',
+ name: 'keepAliveExample',
+ meta: {
+ title: '页面缓存',
+ icon: 'sidebar-keep-alive'
+ },
+ children: [
+ {
+ path: 'page',
+ name: 'keepAliveExamplePage',
+ component: () => import('@/views/keep_alive_example/page.vue'),
+ meta: {
+ title: '二级路由缓存'
+ }
+ },
+ {
+ path: 'detail',
+ name: 'keepAliveExampleDetail',
+ component: () => import('@/views/keep_alive_example/detail.vue'),
+ meta: {
+ title: '同级路由',
+ sidebar: false,
+ activeMenu: '/keep_alive_example/page'
+ }
+ },
+ {
+ path: 'detail2',
+ redirect: '/keep_alive_example/detail2',
+ meta: {
+ title: '下级路由',
+ sidebar: false
+ },
+ children: [
+ {
+ path: '',
+ name: 'keepAliveExampleDetail2',
+ component: () => import('@/views/keep_alive_example/detail.vue'),
+ meta: {
+ title: '下级路由',
+ activeMenu: '/keep_alive_example/page'
+ }
+ },
+ {
+ path: 'detail3',
+ redirect: '/keep_alive_example/detail2/detail3',
+ meta: {
+ title: '下下级路由',
+ sidebar: false
+ },
+ children: [
+ {
+ path: '',
+ name: 'keepAliveExampleDetail3',
+ component: () => import('@/views/keep_alive_example/detail.vue'),
+ meta: {
+ title: '下下级路由',
+ activeMenu: '/keep_alive_example/page'
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ path: 'nested',
+ name: 'keepAliveExampleNested1',
+ component: () => import('@/views/keep_alive_example/nested/nested.vue'),
+ meta: {
+ title: '路由多级缓存(1)'
+ },
+ children: [
+ {
+ path: 'nested',
+ name: 'keepAliveExampleNested2',
+ component: () => import('@/views/keep_alive_example/nested/nested/nested.vue'),
+ meta: {
+ title: '路由多级缓存(1-1)'
+ },
+ children: [
+ {
+ path: 'test',
+ name: 'keepAliveExampleNestedTest',
+ component: () => import('@/views/keep_alive_example/nested/nested/nested/index.vue'),
+ meta: {
+ title: '测试页面(1-1-1)',
+ cache: true
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/router/modules/mock.example.js b/src/router/modules/mock.example.js
new file mode 100644
index 00000000..2736a867
--- /dev/null
+++ b/src/router/modules/mock.example.js
@@ -0,0 +1,25 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/mock_example',
+ component: Layout,
+ redirect: '/mock_example/index',
+ name: 'mockExample',
+ meta: {
+ title: 'Mock',
+ icon: 'sidebar-mock'
+ },
+ children: [
+ {
+ path: 'index',
+ name: 'mockExampleIndex',
+ component: () => import('@/views/mock_example/index.vue'),
+ meta: {
+ title: 'Mock',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/mock_example'
+ }
+ }
+ ]
+}
diff --git a/src/router/modules/multilevel.menu.example.js b/src/router/modules/multilevel.menu.example.js
new file mode 100644
index 00000000..6f632ccd
--- /dev/null
+++ b/src/router/modules/multilevel.menu.example.js
@@ -0,0 +1,66 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/multilevel_menu_example',
+ component: Layout,
+ redirect: '/multilevel_menu_example/page',
+ name: 'multilevelMenuExample',
+ meta: {
+ title: '多级导航',
+ icon: 'sidebar-menu'
+ },
+ children: [
+ {
+ path: 'page',
+ name: 'multilevelMenuExample1',
+ component: () => import('@/views/multilevel_menu_example/page.vue'),
+ meta: {
+ title: '导航1'
+ }
+ },
+ {
+ path: 'level2',
+ name: 'multilevelMenuExample2',
+ redirect: '/multilevel_menu_example/level2/page',
+ meta: {
+ title: '导航2'
+ },
+ children: [
+ {
+ path: 'page',
+ name: 'multilevelMenuExample2-1',
+ component: () => import('@/views/multilevel_menu_example/level2/page.vue'),
+ meta: {
+ title: '导航2-1'
+ }
+ },
+ {
+ path: 'level3',
+ name: 'multilevelMenuExample2-2',
+ redirect: '/multilevel_menu_example/level2/level3/page1',
+ meta: {
+ title: '导航2-2'
+ },
+ children: [
+ {
+ path: 'page1',
+ name: 'multilevelMenuExample2-2-1',
+ component: () => import('@/views/multilevel_menu_example/level2/level3/page1.vue'),
+ meta: {
+ title: '导航2-2-1'
+ }
+ },
+ {
+ path: 'page2',
+ name: 'multilevelMenuExample2-2-2',
+ component: () => import('@/views/multilevel_menu_example/level2/level3/page2.vue'),
+ meta: {
+ title: '导航2-2-2'
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/src/router/modules/permission.example.js b/src/router/modules/permission.example.js
new file mode 100644
index 00000000..7a2b18af
--- /dev/null
+++ b/src/router/modules/permission.example.js
@@ -0,0 +1,26 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default {
+ path: '/permission_example',
+ component: Layout,
+ redirect: '/permission_example/index',
+ name: 'permissionExample',
+ meta: {
+ title: '权限验证',
+ icon: 'sidebar-permission'
+ },
+ children: [
+ {
+ path: 'index',
+ name: 'permissionExampleIndex',
+ component: () => import('@/views/permission_example/index.vue'),
+ meta: {
+ title: '权限验证',
+ auth: ['permission.browse'],
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/permission_example'
+ }
+ }
+ ]
+}
diff --git a/src/router/modules/videos.example.js b/src/router/modules/videos.example.js
new file mode 100644
index 00000000..7fbfb349
--- /dev/null
+++ b/src/router/modules/videos.example.js
@@ -0,0 +1,24 @@
+const Layout = () => import('@/layout/index.vue')
+
+export default [
+ {
+ path: '/videos_example/coming/soon',
+ component: Layout,
+ meta: {
+ title: '即将推出'
+ },
+ children: [
+ {
+ path: '',
+ name: 'videosExampleVideoComingSoon',
+ component: () => import('@/views/videos_example/coming.soon.vue'),
+ meta: {
+ title: '即将推出',
+ sidebar: false,
+ breadcrumb: false,
+ activeMenu: '/videos_example/coming/soon'
+ }
+ }
+ ]
+ }
+]
diff --git a/src/settings.js b/src/settings.js
new file mode 100644
index 00000000..f20a9ad7
--- /dev/null
+++ b/src/settings.js
@@ -0,0 +1,66 @@
+let globalSettings = {
+ /**
+ * 是否开启权限功能,权限功能提供以下鉴权支持:
+ * 1、路由鉴权
+ * 2、鉴权组件:、
+ * 3、鉴权指令:v-auth、v-auth-all
+ * 4、鉴权函数:this.$auth()、this.$authAll()
+ */
+ enablePermission: false,
+ /**
+ * 导航栏模式
+ * side 侧边栏模式(含主导航)
+ * head 顶部模式
+ * single 侧边栏模式(无主导航)
+ */
+ menuMode: 'side',
+ // Element 组件默认尺寸,支持:large、medium、small、mini
+ elementSize: 'large',
+ // 是否开启侧边栏展开收起按钮
+ enableSidebarCollapse: false,
+ // 侧边栏是否收起
+ sidebarCollapse: false,
+ // 切换侧边栏同时跳转页面
+ switchSidebarAndPageJump: false,
+ // 顶栏(顶部导航栏和标签栏)是否固定
+ topbarFixed: true,
+ // 是否开启面包屑导航
+ enableBreadcrumb: true,
+ // 是否显示底部版权信息,同时在路由 meta 对象里可以单独设置某个路由是否显示底部版权信息
+ showCopyright: true,
+ // 版权信息配置,格式为:Copyright © [dates] , All Rights Reserved
+ copyrightDates: '2020-2021',
+ copyrightCompany: 'Fantastic-admin',
+ copyrightWebsite: 'https://hooray.github.io/fantastic-admin',
+ // 是否开启导航搜索
+ enableNavSearch: true,
+ // 是否开启移动端适配,开启后当页面宽度小于 992px 时自动切换为移动端展示
+ enableMobileAdaptation: true,
+ // 是否开启全屏
+ enableFullscreen: false,
+ // 是否开启页面刷新
+ enablePageReload: false,
+ // 是否开启载入进度条
+ enableProgress: true,
+ // 是否开启动态标题
+ enableDynamicTitle: false,
+ // 是否开启控制台
+ enableDashboard: true,
+ // 控制台名称
+ dashboardTitle: '控制台',
+ // 是否开启后端返回路由数据
+ enableBackendReturnRoute: false,
+ // 是否开启主题配置(建议在生产环境关闭)
+ enableThemeSetting: true
+}
+
+// 演示&开发环境开启全部功能(这部分代码可删除,仅方便作者打包演示环境)
+if (import.meta.env.VITE_APP_MODE === 'example' || import.meta.env.MODE === 'development') {
+ globalSettings.enablePermission = true
+ globalSettings.enableSidebarCollapse = true
+ globalSettings.enableFullscreen = true
+ globalSettings.enablePageReload = true
+ globalSettings.enableDynamicTitle = true
+}
+
+export default globalSettings
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 00000000..d780b5f4
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,13 @@
+import { createStore, createLogger } from 'vuex'
+
+const modules = {}
+const modulesContext = import.meta.globEager('./modules/*.js')
+for (const path in modulesContext) {
+ modules[path.slice(10, -3)] = modulesContext[path].default
+}
+
+export default createStore({
+ modules: modules,
+ strict: !import.meta.env.PROD,
+ plugins: !import.meta.env.PROD ? [createLogger()] : []
+})
diff --git a/src/store/modules/keepAlive.js b/src/store/modules/keepAlive.js
new file mode 100644
index 00000000..139f096b
--- /dev/null
+++ b/src/store/modules/keepAlive.js
@@ -0,0 +1,41 @@
+const state = () => ({
+ list: []
+})
+
+const getters = {}
+
+const actions = {}
+
+const mutations = {
+ add(state, name) {
+ if (typeof name === 'string') {
+ !state.list.includes(name) && state.list.push(name)
+ } else {
+ name.map(v => {
+ v && !state.list.includes(v) && state.list.push(v)
+ })
+ }
+ },
+ remove(state, name) {
+ if (typeof name === 'string') {
+ state.list = state.list.filter(v => {
+ return v != name
+ })
+ } else {
+ state.list = state.list.filter(v => {
+ return !name.includes(v)
+ })
+ }
+ },
+ clean(state) {
+ state.list = []
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ actions,
+ getters,
+ mutations
+}
diff --git a/src/store/modules/menu.js b/src/store/modules/menu.js
new file mode 100644
index 00000000..edc045fa
--- /dev/null
+++ b/src/store/modules/menu.js
@@ -0,0 +1,247 @@
+import { deepClone } from '@/util'
+import api from '@/api'
+
+function hasPermission(permissions, route) {
+ let isAuth = false
+ if (route.meta && route.meta.auth) {
+ isAuth = permissions.some(auth => {
+ if (typeof route.meta.auth == 'string') {
+ return route.meta.auth === auth
+ } else {
+ return route.meta.auth.some(routeAuth => {
+ return routeAuth === auth
+ })
+ }
+ })
+ } else {
+ isAuth = true
+ }
+ return isAuth
+}
+
+function filterAsyncRoutes(routes, permissions) {
+ const res = []
+ routes.forEach(route => {
+ const tmp = { ...route }
+ if (hasPermission(permissions, tmp)) {
+ if (tmp.children) {
+ tmp.children = filterAsyncRoutes(tmp.children, permissions)
+ tmp.children.length && res.push(tmp)
+ } else {
+ res.push(tmp)
+ }
+ }
+ })
+ return res
+}
+
+function formatBackRoutes(routes, views = import.meta.glob('../../views/**/*.vue')) {
+ return routes.map(route => {
+ switch (route.component) {
+ case 'Layout':
+ route.component = () => import('@/layout/index.vue')
+ break
+ default:
+ if (route.component) {
+ route.component = views[`../../views/${route.component}`]
+ }
+ }
+ if (route.children) {
+ route.children = formatBackRoutes(route.children, views)
+ }
+ return route
+ })
+}
+
+// 将多层嵌套路由处理成平级
+function flatAsyncRoutes(routes, breadcrumb, baseUrl = '') {
+ let res = []
+ routes.forEach(route => {
+ const tmp = { ...route }
+ if (tmp.children) {
+ let childrenBaseUrl = ''
+ if (baseUrl == '') {
+ childrenBaseUrl = tmp.path
+ } else if (tmp.path != '') {
+ childrenBaseUrl = `${baseUrl}/${tmp.path}`
+ }
+ let childrenBreadcrumb = deepClone(breadcrumb)
+ if (route.meta.breadcrumb !== false) {
+ childrenBreadcrumb.push({
+ path: childrenBaseUrl,
+ title: route.meta.title
+ })
+ }
+ let tmpRoute = deepClone(route)
+ tmpRoute.path = childrenBaseUrl
+ tmpRoute.meta.breadcrumbNeste = childrenBreadcrumb
+ delete tmpRoute.children
+ res.push(tmpRoute)
+ let childrenRoutes = flatAsyncRoutes(tmp.children, childrenBreadcrumb, childrenBaseUrl)
+ childrenRoutes.map(item => {
+ // 如果 path 一样则覆盖,因为子路由的 path 可能设置为空,导致和父路由一样,直接注册会提示路由重复
+ if (res.some(v => v.path == item.path)) {
+ res.forEach((v, i) => {
+ if (v.path == item.path) {
+ res[i] = item
+ }
+ })
+ } else {
+ res.push(item)
+ }
+ })
+ } else {
+ if (baseUrl != '') {
+ if (tmp.path != '') {
+ tmp.path = `${baseUrl}/${tmp.path}`
+ } else {
+ tmp.path = baseUrl
+ }
+ }
+ // 处理面包屑导航
+ let tmpBreadcrumb = deepClone(breadcrumb)
+ if (tmp.meta.breadcrumb !== false) {
+ tmpBreadcrumb.push({
+ path: tmp.path,
+ title: tmp.meta.title
+ })
+ }
+ tmp.meta.breadcrumbNeste = tmpBreadcrumb
+ res.push(tmp)
+ }
+ })
+ return res
+}
+
+const state = () => ({
+ isGenerate: false,
+ routes: [],
+ headerActived: 0,
+ currentRemoveRoutes: []
+})
+
+const getters = {
+ // 由于 getter 的结果不会被缓存,导致导航栏切换时有明显的延迟,该问题会在 Vue 3.2 版本中修复,详看 https://github.com/vuejs/vuex/pull/1883
+ routes: (state, getters, rootState) => {
+ let routes
+ if (rootState.settings.menuMode === 'single') {
+ routes = [{children: []}]
+ state.routes.map(item => {
+ routes[0].children.push(...item.children)
+ })
+ } else {
+ routes = state.routes
+ }
+ return routes
+ },
+ sidebarRoutes: (state, getters) => {
+ return getters.routes.length > 0 ? getters.routes[state.headerActived].children : []
+ }
+}
+
+const actions = {
+ // 根据权限动态生成路由(前端生成)
+ generateRoutesAtFront({rootState, dispatch, commit}, data) {
+ // eslint-disable-next-line no-async-promise-executor
+ return new Promise(async resolve => {
+ let accessedRoutes
+ // 如果权限功能开启,则需要对路由数据进行筛选过滤
+ if (rootState.settings.enablePermission) {
+ const permissions = await dispatch('user/getPermissions', null, { root: true })
+ accessedRoutes = filterAsyncRoutes(data.asyncRoutes, permissions)
+ } else {
+ accessedRoutes = data.asyncRoutes
+ }
+ commit('setRoutes', accessedRoutes)
+ commit('setHeaderActived', data.currentPath)
+ let routes = []
+ accessedRoutes.map(item => {
+ routes.push(...item.children)
+ })
+ // 将三级及以上路由数据拍平成二级
+ routes.map(item => {
+ if (item.children) {
+ item.children = flatAsyncRoutes(item.children, [{
+ path: item.path,
+ title: item.meta.title
+ }])
+ }
+ })
+ resolve(routes)
+ })
+ },
+ // 生成路由(后端获取)
+ generateRoutesAtBack({ commit }, data) {
+ return new Promise(resolve => {
+ api.get('route/list', {
+ baseURL: '/mock/'
+ }).then(res => {
+ let accessedRoutes = formatBackRoutes(res.data)
+ commit('setRoutes', accessedRoutes)
+ commit('setHeaderActived', data.currentPath)
+ let routes = []
+ accessedRoutes.map(item => {
+ routes.push(...item.children)
+ })
+ // 将三级及以上路由数据拍平成二级
+ routes.map(item => {
+ if (item.children) {
+ item.children = flatAsyncRoutes(item.children, [{
+ path: item.path,
+ title: item.meta.title
+ }])
+ }
+ })
+ resolve(routes)
+ })
+ })
+ }
+}
+
+const mutations = {
+ invalidRoutes(state) {
+ state.isGenerate = false
+ state.headerActived = 0
+ },
+ setRoutes(state, routes) {
+ state.isGenerate = true
+ let newRoutes = deepClone(routes)
+ state.routes = newRoutes.filter(item => {
+ return item.children.length != 0
+ })
+ },
+ // 根据路由判断属于哪个头部导航
+ setHeaderActived(state, path) {
+ state.routes.map((item, index) => {
+ if (
+ item.children.some(r => {
+ return path.indexOf(r.path + '/') === 0 || path == r.path
+ })
+ ) {
+ state.headerActived = index
+ }
+ })
+ },
+ // 切换头部导航
+ switchHeaderActived(state, index) {
+ state.headerActived = index
+ },
+ // 记录 accessRoutes 路由,用于登出时删除路由
+ setCurrentRemoveRoutes(state, routes) {
+ state.currentRemoveRoutes = routes
+ },
+ // 清空动态路由
+ removeRoutes(state) {
+ state.currentRemoveRoutes.forEach(removeRoute => {
+ removeRoute()
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ actions,
+ getters,
+ mutations
+}
diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js
new file mode 100644
index 00000000..9f28d537
--- /dev/null
+++ b/src/store/modules/settings.js
@@ -0,0 +1,54 @@
+/**
+ * 存放全局公用状态
+ */
+import settings from '@/settings'
+
+const state = () => ({
+ ...settings,
+ // 侧边栏是否收起(用于记录 pc 模式下最后的状态)
+ sidebarCollapseLastStatus: settings.sidebarCollapse,
+ // 主页面是否最大化
+ mainPageMaximizeStatus: false,
+ // 显示模式,支持:mobile、pc
+ mode: 'pc',
+ // 页面标题
+ title: ''
+})
+
+const getters = {}
+
+const actions = {}
+
+const mutations = {
+ // 设置访问模式,页面宽度小于 992px 时切换为移动端展示
+ setMode(state, width) {
+ if (state.enableMobileAdaptation && width < 992) {
+ state.mode = 'mobile'
+ } else {
+ state.mode = 'pc'
+ }
+ },
+ // 设置网页标题
+ setTitle(state, title) {
+ state.title = title
+ },
+ // 切换侧边栏导航展开/收起
+ toggleSidebarCollapse(state) {
+ state.sidebarCollapse = !state.sidebarCollapse
+ if (state.mode == 'pc') {
+ state.sidebarCollapseLastStatus = !state.sidebarCollapseLastStatus
+ }
+ },
+ // 更新主题配置
+ updateThemeSetting(state, data) {
+ Object.assign(state, data)
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ actions,
+ getters,
+ mutations
+}
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
new file mode 100644
index 00000000..3f8d458f
--- /dev/null
+++ b/src/store/modules/user.js
@@ -0,0 +1,88 @@
+import api from '@/api'
+
+const state = () => ({
+ account: localStorage.account || '',
+ token: localStorage.token || '',
+ failure_time: localStorage.failure_time || '',
+ permissions: []
+})
+
+const getters = {
+ isLogin: state => {
+ let retn = false
+ if (state.token) {
+ let unix = Date.parse(new Date())
+ if (unix < state.failure_time * 1000) {
+ retn = true
+ }
+ }
+ return retn
+ }
+}
+
+const actions = {
+ login({commit}, data) {
+ return new Promise((resolve, reject) => {
+ // 通过 mock 进行登录
+ api.post('member/login', data, {
+ baseURL: '/mock/'
+ }).then(res => {
+ commit('setUserData', res.data)
+ resolve()
+ }).catch(error => {
+ reject(error)
+ })
+ })
+ },
+ logout({commit}) {
+ commit('removeUserData')
+ commit('menu/invalidRoutes', null, {root: true})
+ commit('tabbar/clean', null, {root: true})
+ commit('menu/removeRoutes', null, {root: true})
+ },
+ // 获取我的权限
+ getPermissions({state, commit}) {
+ return new Promise(resolve => {
+ // 通过 mock 获取权限
+ api.get('member/permission', {
+ baseURL: '/mock/',
+ params: {
+ account: state.account
+ }
+ }).then(res => {
+ commit('setPermissions', res.data.permissions)
+ resolve(res.data.permissions)
+ })
+ })
+ }
+}
+
+const mutations = {
+ setUserData(state, data) {
+ localStorage.setItem('account', data.account)
+ localStorage.setItem('token', data.token)
+ localStorage.setItem('failure_time', data.failure_time)
+ state.account = data.account
+ state.token = data.token
+ state.failure_time = data.failure_time
+ },
+ removeUserData(state) {
+ localStorage.removeItem('account')
+ localStorage.removeItem('token')
+ localStorage.removeItem('failure_time')
+ state.account = ''
+ state.token = ''
+ state.failure_time = ''
+ },
+ setPermissions(state, permissions) {
+ state.permissions = permissions
+ }
+}
+
+export default {
+ namespaced: true,
+ state,
+ actions,
+ getters,
+ mutations
+}
diff --git a/src/util/area.js b/src/util/area.js
new file mode 100644
index 00000000..904b9744
--- /dev/null
+++ b/src/util/area.js
@@ -0,0 +1,14010 @@
+const area = [
+ {
+ 'name': '北京市',
+ 'code': '110000',
+ 'region': 'north',
+ 'provinceLevelCity': true,
+ 'children': [
+ {
+ 'name': '市辖区',
+ 'code': '110100',
+ 'children': [
+ {
+ 'name': '东城区',
+ 'code': '110101'
+ },
+ {
+ 'name': '西城区',
+ 'code': '110102'
+ },
+ {
+ 'name': '朝阳区',
+ 'code': '110105'
+ },
+ {
+ 'name': '丰台区',
+ 'code': '110106'
+ },
+ {
+ 'name': '石景山区',
+ 'code': '110107'
+ },
+ {
+ 'name': '海淀区',
+ 'code': '110108'
+ },
+ {
+ 'name': '门头沟区',
+ 'code': '110109'
+ },
+ {
+ 'name': '房山区',
+ 'code': '110111'
+ },
+ {
+ 'name': '通州区',
+ 'code': '110112'
+ },
+ {
+ 'name': '顺义区',
+ 'code': '110113'
+ },
+ {
+ 'name': '昌平区',
+ 'code': '110114'
+ },
+ {
+ 'name': '大兴区',
+ 'code': '110115'
+ },
+ {
+ 'name': '怀柔区',
+ 'code': '110116'
+ },
+ {
+ 'name': '平谷区',
+ 'code': '110117'
+ },
+ {
+ 'name': '密云区',
+ 'code': '110118'
+ },
+ {
+ 'name': '延庆区',
+ 'code': '110119'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '天津市',
+ 'code': '120000',
+ 'region': 'north',
+ 'provinceLevelCity': true,
+ 'children': [
+ {
+ 'name': '市辖区',
+ 'code': '120100',
+ 'children': [
+ {
+ 'name': '和平区',
+ 'code': '120101'
+ },
+ {
+ 'name': '河东区',
+ 'code': '120102'
+ },
+ {
+ 'name': '河西区',
+ 'code': '120103'
+ },
+ {
+ 'name': '南开区',
+ 'code': '120104'
+ },
+ {
+ 'name': '河北区',
+ 'code': '120105'
+ },
+ {
+ 'name': '红桥区',
+ 'code': '120106'
+ },
+ {
+ 'name': '东丽区',
+ 'code': '120110'
+ },
+ {
+ 'name': '西青区',
+ 'code': '120111'
+ },
+ {
+ 'name': '津南区',
+ 'code': '120112'
+ },
+ {
+ 'name': '北辰区',
+ 'code': '120113'
+ },
+ {
+ 'name': '武清区',
+ 'code': '120114'
+ },
+ {
+ 'name': '宝坻区',
+ 'code': '120115'
+ },
+ {
+ 'name': '滨海新区',
+ 'code': '120116'
+ },
+ {
+ 'name': '宁河区',
+ 'code': '120117'
+ },
+ {
+ 'name': '静海区',
+ 'code': '120118'
+ },
+ {
+ 'name': '蓟州区',
+ 'code': '120119'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '河北省',
+ 'code': '130000',
+ 'region': 'north',
+ 'children': [
+ {
+ 'name': '石家庄市',
+ 'code': '130100',
+ 'children': [
+ {
+ 'name': '长安区',
+ 'code': '130102'
+ },
+ {
+ 'name': '桥西区',
+ 'code': '130104'
+ },
+ {
+ 'name': '新华区',
+ 'code': '130105'
+ },
+ {
+ 'name': '井陉矿区',
+ 'code': '130107'
+ },
+ {
+ 'name': '裕华区',
+ 'code': '130108'
+ },
+ {
+ 'name': '藁城区',
+ 'code': '130109'
+ },
+ {
+ 'name': '鹿泉区',
+ 'code': '130110'
+ },
+ {
+ 'name': '栾城区',
+ 'code': '130111'
+ },
+ {
+ 'name': '井陉县',
+ 'code': '130121'
+ },
+ {
+ 'name': '正定县',
+ 'code': '130123'
+ },
+ {
+ 'name': '行唐县',
+ 'code': '130125'
+ },
+ {
+ 'name': '灵寿县',
+ 'code': '130126'
+ },
+ {
+ 'name': '高邑县',
+ 'code': '130127'
+ },
+ {
+ 'name': '深泽县',
+ 'code': '130128'
+ },
+ {
+ 'name': '赞皇县',
+ 'code': '130129'
+ },
+ {
+ 'name': '无极县',
+ 'code': '130130'
+ },
+ {
+ 'name': '平山县',
+ 'code': '130131'
+ },
+ {
+ 'name': '元氏县',
+ 'code': '130132'
+ },
+ {
+ 'name': '赵县',
+ 'code': '130133'
+ },
+ {
+ 'name': '辛集市',
+ 'code': '130181'
+ },
+ {
+ 'name': '晋州市',
+ 'code': '130183'
+ },
+ {
+ 'name': '新乐市',
+ 'code': '130184'
+ }
+ ]
+ },
+ {
+ 'name': '唐山市',
+ 'code': '130200',
+ 'children': [
+ {
+ 'name': '路南区',
+ 'code': '130202'
+ },
+ {
+ 'name': '路北区',
+ 'code': '130203'
+ },
+ {
+ 'name': '古冶区',
+ 'code': '130204'
+ },
+ {
+ 'name': '开平区',
+ 'code': '130205'
+ },
+ {
+ 'name': '丰南区',
+ 'code': '130207'
+ },
+ {
+ 'name': '丰润区',
+ 'code': '130208'
+ },
+ {
+ 'name': '曹妃甸区',
+ 'code': '130209'
+ },
+ {
+ 'name': '滦南县',
+ 'code': '130224'
+ },
+ {
+ 'name': '乐亭县',
+ 'code': '130225'
+ },
+ {
+ 'name': '迁西县',
+ 'code': '130227'
+ },
+ {
+ 'name': '玉田县',
+ 'code': '130229'
+ },
+ {
+ 'name': '遵化市',
+ 'code': '130281'
+ },
+ {
+ 'name': '迁安市',
+ 'code': '130283'
+ },
+ {
+ 'name': '滦州市',
+ 'code': '130284'
+ }
+ ]
+ },
+ {
+ 'name': '秦皇岛市',
+ 'code': '130300',
+ 'children': [
+ {
+ 'name': '海港区',
+ 'code': '130302'
+ },
+ {
+ 'name': '山海关区',
+ 'code': '130303'
+ },
+ {
+ 'name': '北戴河区',
+ 'code': '130304'
+ },
+ {
+ 'name': '抚宁区',
+ 'code': '130306'
+ },
+ {
+ 'name': '青龙满族自治县',
+ 'code': '130321'
+ },
+ {
+ 'name': '昌黎县',
+ 'code': '130322'
+ },
+ {
+ 'name': '卢龙县',
+ 'code': '130324'
+ }
+ ]
+ },
+ {
+ 'name': '邯郸市',
+ 'code': '130400',
+ 'children': [
+ {
+ 'name': '邯山区',
+ 'code': '130402'
+ },
+ {
+ 'name': '丛台区',
+ 'code': '130403'
+ },
+ {
+ 'name': '复兴区',
+ 'code': '130404'
+ },
+ {
+ 'name': '峰峰矿区',
+ 'code': '130406'
+ },
+ {
+ 'name': '肥乡区',
+ 'code': '130407'
+ },
+ {
+ 'name': '永年区',
+ 'code': '130408'
+ },
+ {
+ 'name': '临漳县',
+ 'code': '130423'
+ },
+ {
+ 'name': '成安县',
+ 'code': '130424'
+ },
+ {
+ 'name': '大名县',
+ 'code': '130425'
+ },
+ {
+ 'name': '涉县',
+ 'code': '130426'
+ },
+ {
+ 'name': '磁县',
+ 'code': '130427'
+ },
+ {
+ 'name': '邱县',
+ 'code': '130430'
+ },
+ {
+ 'name': '鸡泽县',
+ 'code': '130431'
+ },
+ {
+ 'name': '广平县',
+ 'code': '130432'
+ },
+ {
+ 'name': '馆陶县',
+ 'code': '130433'
+ },
+ {
+ 'name': '魏县',
+ 'code': '130434'
+ },
+ {
+ 'name': '曲周县',
+ 'code': '130435'
+ },
+ {
+ 'name': '武安市',
+ 'code': '130481'
+ }
+ ]
+ },
+ {
+ 'name': '邢台市',
+ 'code': '130500',
+ 'children': [
+ {
+ 'name': '桥东区',
+ 'code': '130502'
+ },
+ {
+ 'name': '桥西区',
+ 'code': '130503'
+ },
+ {
+ 'name': '邢台县',
+ 'code': '130521'
+ },
+ {
+ 'name': '临城县',
+ 'code': '130522'
+ },
+ {
+ 'name': '内丘县',
+ 'code': '130523'
+ },
+ {
+ 'name': '柏乡县',
+ 'code': '130524'
+ },
+ {
+ 'name': '隆尧县',
+ 'code': '130525'
+ },
+ {
+ 'name': '任县',
+ 'code': '130526'
+ },
+ {
+ 'name': '南和县',
+ 'code': '130527'
+ },
+ {
+ 'name': '宁晋县',
+ 'code': '130528'
+ },
+ {
+ 'name': '巨鹿县',
+ 'code': '130529'
+ },
+ {
+ 'name': '新河县',
+ 'code': '130530'
+ },
+ {
+ 'name': '广宗县',
+ 'code': '130531'
+ },
+ {
+ 'name': '平乡县',
+ 'code': '130532'
+ },
+ {
+ 'name': '威县',
+ 'code': '130533'
+ },
+ {
+ 'name': '清河县',
+ 'code': '130534'
+ },
+ {
+ 'name': '临西县',
+ 'code': '130535'
+ },
+ {
+ 'name': '南宫市',
+ 'code': '130581'
+ },
+ {
+ 'name': '沙河市',
+ 'code': '130582'
+ }
+ ]
+ },
+ {
+ 'name': '保定市',
+ 'code': '130600',
+ 'children': [
+ {
+ 'name': '竞秀区',
+ 'code': '130602'
+ },
+ {
+ 'name': '莲池区',
+ 'code': '130606'
+ },
+ {
+ 'name': '满城区',
+ 'code': '130607'
+ },
+ {
+ 'name': '清苑区',
+ 'code': '130608'
+ },
+ {
+ 'name': '徐水区',
+ 'code': '130609'
+ },
+ {
+ 'name': '涞水县',
+ 'code': '130623'
+ },
+ {
+ 'name': '阜平县',
+ 'code': '130624'
+ },
+ {
+ 'name': '定兴县',
+ 'code': '130626'
+ },
+ {
+ 'name': '唐县',
+ 'code': '130627'
+ },
+ {
+ 'name': '高阳县',
+ 'code': '130628'
+ },
+ {
+ 'name': '容城县',
+ 'code': '130629'
+ },
+ {
+ 'name': '涞源县',
+ 'code': '130630'
+ },
+ {
+ 'name': '望都县',
+ 'code': '130631'
+ },
+ {
+ 'name': '安新县',
+ 'code': '130632'
+ },
+ {
+ 'name': '易县',
+ 'code': '130633'
+ },
+ {
+ 'name': '曲阳县',
+ 'code': '130634'
+ },
+ {
+ 'name': '蠡县',
+ 'code': '130635'
+ },
+ {
+ 'name': '顺平县',
+ 'code': '130636'
+ },
+ {
+ 'name': '博野县',
+ 'code': '130637'
+ },
+ {
+ 'name': '雄县',
+ 'code': '130638'
+ },
+ {
+ 'name': '涿州市',
+ 'code': '130681'
+ },
+ {
+ 'name': '定州市',
+ 'code': '130682'
+ },
+ {
+ 'name': '安国市',
+ 'code': '130683'
+ },
+ {
+ 'name': '高碑店市',
+ 'code': '130684'
+ }
+ ]
+ },
+ {
+ 'name': '张家口市',
+ 'code': '130700',
+ 'children': [
+ {
+ 'name': '桥东区',
+ 'code': '130702'
+ },
+ {
+ 'name': '桥西区',
+ 'code': '130703'
+ },
+ {
+ 'name': '宣化区',
+ 'code': '130705'
+ },
+ {
+ 'name': '下花园区',
+ 'code': '130706'
+ },
+ {
+ 'name': '万全区',
+ 'code': '130708'
+ },
+ {
+ 'name': '崇礼区',
+ 'code': '130709'
+ },
+ {
+ 'name': '张北县',
+ 'code': '130722'
+ },
+ {
+ 'name': '康保县',
+ 'code': '130723'
+ },
+ {
+ 'name': '沽源县',
+ 'code': '130724'
+ },
+ {
+ 'name': '尚义县',
+ 'code': '130725'
+ },
+ {
+ 'name': '蔚县',
+ 'code': '130726'
+ },
+ {
+ 'name': '阳原县',
+ 'code': '130727'
+ },
+ {
+ 'name': '怀安县',
+ 'code': '130728'
+ },
+ {
+ 'name': '怀来县',
+ 'code': '130730'
+ },
+ {
+ 'name': '涿鹿县',
+ 'code': '130731'
+ },
+ {
+ 'name': '赤城县',
+ 'code': '130732'
+ }
+ ]
+ },
+ {
+ 'name': '承德市',
+ 'code': '130800',
+ 'children': [
+ {
+ 'name': '双桥区',
+ 'code': '130802'
+ },
+ {
+ 'name': '双滦区',
+ 'code': '130803'
+ },
+ {
+ 'name': '鹰手营子矿区',
+ 'code': '130804'
+ },
+ {
+ 'name': '承德县',
+ 'code': '130821'
+ },
+ {
+ 'name': '兴隆县',
+ 'code': '130822'
+ },
+ {
+ 'name': '滦平县',
+ 'code': '130824'
+ },
+ {
+ 'name': '隆化县',
+ 'code': '130825'
+ },
+ {
+ 'name': '丰宁满族自治县',
+ 'code': '130826'
+ },
+ {
+ 'name': '宽城满族自治县',
+ 'code': '130827'
+ },
+ {
+ 'name': '围场满族蒙古族自治县',
+ 'code': '130828'
+ },
+ {
+ 'name': '平泉市',
+ 'code': '130881'
+ }
+ ]
+ },
+ {
+ 'name': '沧州市',
+ 'code': '130900',
+ 'children': [
+ {
+ 'name': '新华区',
+ 'code': '130902'
+ },
+ {
+ 'name': '运河区',
+ 'code': '130903'
+ },
+ {
+ 'name': '沧县',
+ 'code': '130921'
+ },
+ {
+ 'name': '青县',
+ 'code': '130922'
+ },
+ {
+ 'name': '东光县',
+ 'code': '130923'
+ },
+ {
+ 'name': '海兴县',
+ 'code': '130924'
+ },
+ {
+ 'name': '盐山县',
+ 'code': '130925'
+ },
+ {
+ 'name': '肃宁县',
+ 'code': '130926'
+ },
+ {
+ 'name': '南皮县',
+ 'code': '130927'
+ },
+ {
+ 'name': '吴桥县',
+ 'code': '130928'
+ },
+ {
+ 'name': '献县',
+ 'code': '130929'
+ },
+ {
+ 'name': '孟村回族自治县',
+ 'code': '130930'
+ },
+ {
+ 'name': '泊头市',
+ 'code': '130981'
+ },
+ {
+ 'name': '任丘市',
+ 'code': '130982'
+ },
+ {
+ 'name': '黄骅市',
+ 'code': '130983'
+ },
+ {
+ 'name': '河间市',
+ 'code': '130984'
+ }
+ ]
+ },
+ {
+ 'name': '廊坊市',
+ 'code': '131000',
+ 'children': [
+ {
+ 'name': '安次区',
+ 'code': '131002'
+ },
+ {
+ 'name': '广阳区',
+ 'code': '131003'
+ },
+ {
+ 'name': '固安县',
+ 'code': '131022'
+ },
+ {
+ 'name': '永清县',
+ 'code': '131023'
+ },
+ {
+ 'name': '香河县',
+ 'code': '131024'
+ },
+ {
+ 'name': '大城县',
+ 'code': '131025'
+ },
+ {
+ 'name': '文安县',
+ 'code': '131026'
+ },
+ {
+ 'name': '大厂回族自治县',
+ 'code': '131028'
+ },
+ {
+ 'name': '霸州市',
+ 'code': '131081'
+ },
+ {
+ 'name': '三河市',
+ 'code': '131082'
+ }
+ ]
+ },
+ {
+ 'name': '衡水市',
+ 'code': '131100',
+ 'children': [
+ {
+ 'name': '桃城区',
+ 'code': '131102'
+ },
+ {
+ 'name': '冀州区',
+ 'code': '131103'
+ },
+ {
+ 'name': '枣强县',
+ 'code': '131121'
+ },
+ {
+ 'name': '武邑县',
+ 'code': '131122'
+ },
+ {
+ 'name': '武强县',
+ 'code': '131123'
+ },
+ {
+ 'name': '饶阳县',
+ 'code': '131124'
+ },
+ {
+ 'name': '安平县',
+ 'code': '131125'
+ },
+ {
+ 'name': '故城县',
+ 'code': '131126'
+ },
+ {
+ 'name': '景县',
+ 'code': '131127'
+ },
+ {
+ 'name': '阜城县',
+ 'code': '131128'
+ },
+ {
+ 'name': '深州市',
+ 'code': '131182'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '山西省',
+ 'code': '140000',
+ 'region': 'north',
+ 'children': [
+ {
+ 'name': '太原市',
+ 'code': '140100',
+ 'children': [
+ {
+ 'name': '小店区',
+ 'code': '140105'
+ },
+ {
+ 'name': '迎泽区',
+ 'code': '140106'
+ },
+ {
+ 'name': '杏花岭区',
+ 'code': '140107'
+ },
+ {
+ 'name': '尖草坪区',
+ 'code': '140108'
+ },
+ {
+ 'name': '万柏林区',
+ 'code': '140109'
+ },
+ {
+ 'name': '晋源区',
+ 'code': '140110'
+ },
+ {
+ 'name': '清徐县',
+ 'code': '140121'
+ },
+ {
+ 'name': '阳曲县',
+ 'code': '140122'
+ },
+ {
+ 'name': '娄烦县',
+ 'code': '140123'
+ },
+ {
+ 'name': '古交市',
+ 'code': '140181'
+ }
+ ]
+ },
+ {
+ 'name': '大同市',
+ 'code': '140200',
+ 'children': [
+ {
+ 'name': '新荣区',
+ 'code': '140212'
+ },
+ {
+ 'name': '平城区',
+ 'code': '140213'
+ },
+ {
+ 'name': '云冈区',
+ 'code': '140214'
+ },
+ {
+ 'name': '云州区',
+ 'code': '140215'
+ },
+ {
+ 'name': '阳高县',
+ 'code': '140221'
+ },
+ {
+ 'name': '天镇县',
+ 'code': '140222'
+ },
+ {
+ 'name': '广灵县',
+ 'code': '140223'
+ },
+ {
+ 'name': '灵丘县',
+ 'code': '140224'
+ },
+ {
+ 'name': '浑源县',
+ 'code': '140225'
+ },
+ {
+ 'name': '左云县',
+ 'code': '140226'
+ }
+ ]
+ },
+ {
+ 'name': '阳泉市',
+ 'code': '140300',
+ 'children': [
+ {
+ 'name': '城区',
+ 'code': '140302'
+ },
+ {
+ 'name': '矿区',
+ 'code': '140303'
+ },
+ {
+ 'name': '郊区',
+ 'code': '140311'
+ },
+ {
+ 'name': '平定县',
+ 'code': '140321'
+ },
+ {
+ 'name': '盂县',
+ 'code': '140322'
+ }
+ ]
+ },
+ {
+ 'name': '长治市',
+ 'code': '140400',
+ 'children': [
+ {
+ 'name': '潞州区',
+ 'code': '140403'
+ },
+ {
+ 'name': '上党区',
+ 'code': '140404'
+ },
+ {
+ 'name': '屯留区',
+ 'code': '140405'
+ },
+ {
+ 'name': '潞城区',
+ 'code': '140406'
+ },
+ {
+ 'name': '襄垣县',
+ 'code': '140423'
+ },
+ {
+ 'name': '平顺县',
+ 'code': '140425'
+ },
+ {
+ 'name': '黎城县',
+ 'code': '140426'
+ },
+ {
+ 'name': '壶关县',
+ 'code': '140427'
+ },
+ {
+ 'name': '长子县',
+ 'code': '140428'
+ },
+ {
+ 'name': '武乡县',
+ 'code': '140429'
+ },
+ {
+ 'name': '沁县',
+ 'code': '140430'
+ },
+ {
+ 'name': '沁源县',
+ 'code': '140431'
+ }
+ ]
+ },
+ {
+ 'name': '晋城市',
+ 'code': '140500',
+ 'children': [
+ {
+ 'name': '城区',
+ 'code': '140502'
+ },
+ {
+ 'name': '沁水县',
+ 'code': '140521'
+ },
+ {
+ 'name': '阳城县',
+ 'code': '140522'
+ },
+ {
+ 'name': '陵川县',
+ 'code': '140524'
+ },
+ {
+ 'name': '泽州县',
+ 'code': '140525'
+ },
+ {
+ 'name': '高平市',
+ 'code': '140581'
+ }
+ ]
+ },
+ {
+ 'name': '朔州市',
+ 'code': '140600',
+ 'children': [
+ {
+ 'name': '朔城区',
+ 'code': '140602'
+ },
+ {
+ 'name': '平鲁区',
+ 'code': '140603'
+ },
+ {
+ 'name': '山阴县',
+ 'code': '140621'
+ },
+ {
+ 'name': '应县',
+ 'code': '140622'
+ },
+ {
+ 'name': '右玉县',
+ 'code': '140623'
+ },
+ {
+ 'name': '怀仁市',
+ 'code': '140681'
+ }
+ ]
+ },
+ {
+ 'name': '晋中市',
+ 'code': '140700',
+ 'children': [
+ {
+ 'name': '榆次区',
+ 'code': '140702'
+ },
+ {
+ 'name': '榆社县',
+ 'code': '140721'
+ },
+ {
+ 'name': '左权县',
+ 'code': '140722'
+ },
+ {
+ 'name': '和顺县',
+ 'code': '140723'
+ },
+ {
+ 'name': '昔阳县',
+ 'code': '140724'
+ },
+ {
+ 'name': '寿阳县',
+ 'code': '140725'
+ },
+ {
+ 'name': '太谷县',
+ 'code': '140726'
+ },
+ {
+ 'name': '祁县',
+ 'code': '140727'
+ },
+ {
+ 'name': '平遥县',
+ 'code': '140728'
+ },
+ {
+ 'name': '灵石县',
+ 'code': '140729'
+ },
+ {
+ 'name': '介休市',
+ 'code': '140781'
+ }
+ ]
+ },
+ {
+ 'name': '运城市',
+ 'code': '140800',
+ 'children': [
+ {
+ 'name': '盐湖区',
+ 'code': '140802'
+ },
+ {
+ 'name': '临猗县',
+ 'code': '140821'
+ },
+ {
+ 'name': '万荣县',
+ 'code': '140822'
+ },
+ {
+ 'name': '闻喜县',
+ 'code': '140823'
+ },
+ {
+ 'name': '稷山县',
+ 'code': '140824'
+ },
+ {
+ 'name': '新绛县',
+ 'code': '140825'
+ },
+ {
+ 'name': '绛县',
+ 'code': '140826'
+ },
+ {
+ 'name': '垣曲县',
+ 'code': '140827'
+ },
+ {
+ 'name': '夏县',
+ 'code': '140828'
+ },
+ {
+ 'name': '平陆县',
+ 'code': '140829'
+ },
+ {
+ 'name': '芮城县',
+ 'code': '140830'
+ },
+ {
+ 'name': '永济市',
+ 'code': '140881'
+ },
+ {
+ 'name': '河津市',
+ 'code': '140882'
+ }
+ ]
+ },
+ {
+ 'name': '忻州市',
+ 'code': '140900',
+ 'children': [
+ {
+ 'name': '忻府区',
+ 'code': '140902'
+ },
+ {
+ 'name': '定襄县',
+ 'code': '140921'
+ },
+ {
+ 'name': '五台县',
+ 'code': '140922'
+ },
+ {
+ 'name': '代县',
+ 'code': '140923'
+ },
+ {
+ 'name': '繁峙县',
+ 'code': '140924'
+ },
+ {
+ 'name': '宁武县',
+ 'code': '140925'
+ },
+ {
+ 'name': '静乐县',
+ 'code': '140926'
+ },
+ {
+ 'name': '神池县',
+ 'code': '140927'
+ },
+ {
+ 'name': '五寨县',
+ 'code': '140928'
+ },
+ {
+ 'name': '岢岚县',
+ 'code': '140929'
+ },
+ {
+ 'name': '河曲县',
+ 'code': '140930'
+ },
+ {
+ 'name': '保德县',
+ 'code': '140931'
+ },
+ {
+ 'name': '偏关县',
+ 'code': '140932'
+ },
+ {
+ 'name': '原平市',
+ 'code': '140981'
+ }
+ ]
+ },
+ {
+ 'name': '临汾市',
+ 'code': '141000',
+ 'children': [
+ {
+ 'name': '尧都区',
+ 'code': '141002'
+ },
+ {
+ 'name': '曲沃县',
+ 'code': '141021'
+ },
+ {
+ 'name': '翼城县',
+ 'code': '141022'
+ },
+ {
+ 'name': '襄汾县',
+ 'code': '141023'
+ },
+ {
+ 'name': '洪洞县',
+ 'code': '141024'
+ },
+ {
+ 'name': '古县',
+ 'code': '141025'
+ },
+ {
+ 'name': '安泽县',
+ 'code': '141026'
+ },
+ {
+ 'name': '浮山县',
+ 'code': '141027'
+ },
+ {
+ 'name': '吉县',
+ 'code': '141028'
+ },
+ {
+ 'name': '乡宁县',
+ 'code': '141029'
+ },
+ {
+ 'name': '大宁县',
+ 'code': '141030'
+ },
+ {
+ 'name': '隰县',
+ 'code': '141031'
+ },
+ {
+ 'name': '永和县',
+ 'code': '141032'
+ },
+ {
+ 'name': '蒲县',
+ 'code': '141033'
+ },
+ {
+ 'name': '汾西县',
+ 'code': '141034'
+ },
+ {
+ 'name': '侯马市',
+ 'code': '141081'
+ },
+ {
+ 'name': '霍州市',
+ 'code': '141082'
+ }
+ ]
+ },
+ {
+ 'name': '吕梁市',
+ 'code': '141100',
+ 'children': [
+ {
+ 'name': '离石区',
+ 'code': '141102'
+ },
+ {
+ 'name': '文水县',
+ 'code': '141121'
+ },
+ {
+ 'name': '交城县',
+ 'code': '141122'
+ },
+ {
+ 'name': '兴县',
+ 'code': '141123'
+ },
+ {
+ 'name': '临县',
+ 'code': '141124'
+ },
+ {
+ 'name': '柳林县',
+ 'code': '141125'
+ },
+ {
+ 'name': '石楼县',
+ 'code': '141126'
+ },
+ {
+ 'name': '岚县',
+ 'code': '141127'
+ },
+ {
+ 'name': '方山县',
+ 'code': '141128'
+ },
+ {
+ 'name': '中阳县',
+ 'code': '141129'
+ },
+ {
+ 'name': '交口县',
+ 'code': '141130'
+ },
+ {
+ 'name': '孝义市',
+ 'code': '141181'
+ },
+ {
+ 'name': '汾阳市',
+ 'code': '141182'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '内蒙古自治区',
+ 'code': '150000',
+ 'region': 'north',
+ 'autonomousRegion': true,
+ 'children': [
+ {
+ 'name': '呼和浩特市',
+ 'code': '150100',
+ 'children': [
+ {
+ 'name': '新城区',
+ 'code': '150102'
+ },
+ {
+ 'name': '回民区',
+ 'code': '150103'
+ },
+ {
+ 'name': '玉泉区',
+ 'code': '150104'
+ },
+ {
+ 'name': '赛罕区',
+ 'code': '150105'
+ },
+ {
+ 'name': '土默特左旗',
+ 'code': '150121'
+ },
+ {
+ 'name': '托克托县',
+ 'code': '150122'
+ },
+ {
+ 'name': '和林格尔县',
+ 'code': '150123'
+ },
+ {
+ 'name': '清水河县',
+ 'code': '150124'
+ },
+ {
+ 'name': '武川县',
+ 'code': '150125'
+ }
+ ]
+ },
+ {
+ 'name': '包头市',
+ 'code': '150200',
+ 'children': [
+ {
+ 'name': '东河区',
+ 'code': '150202'
+ },
+ {
+ 'name': '昆都仑区',
+ 'code': '150203'
+ },
+ {
+ 'name': '青山区',
+ 'code': '150204'
+ },
+ {
+ 'name': '石拐区',
+ 'code': '150205'
+ },
+ {
+ 'name': '白云鄂博矿区',
+ 'code': '150206'
+ },
+ {
+ 'name': '九原区',
+ 'code': '150207'
+ },
+ {
+ 'name': '土默特右旗',
+ 'code': '150221'
+ },
+ {
+ 'name': '固阳县',
+ 'code': '150222'
+ },
+ {
+ 'name': '达尔罕茂明安联合旗',
+ 'code': '150223'
+ }
+ ]
+ },
+ {
+ 'name': '乌海市',
+ 'code': '150300',
+ 'children': [
+ {
+ 'name': '海勃湾区',
+ 'code': '150302'
+ },
+ {
+ 'name': '海南区',
+ 'code': '150303'
+ },
+ {
+ 'name': '乌达区',
+ 'code': '150304'
+ }
+ ]
+ },
+ {
+ 'name': '赤峰市',
+ 'code': '150400',
+ 'children': [
+ {
+ 'name': '红山区',
+ 'code': '150402'
+ },
+ {
+ 'name': '元宝山区',
+ 'code': '150403'
+ },
+ {
+ 'name': '松山区',
+ 'code': '150404'
+ },
+ {
+ 'name': '阿鲁科尔沁旗',
+ 'code': '150421'
+ },
+ {
+ 'name': '巴林左旗',
+ 'code': '150422'
+ },
+ {
+ 'name': '巴林右旗',
+ 'code': '150423'
+ },
+ {
+ 'name': '林西县',
+ 'code': '150424'
+ },
+ {
+ 'name': '克什克腾旗',
+ 'code': '150425'
+ },
+ {
+ 'name': '翁牛特旗',
+ 'code': '150426'
+ },
+ {
+ 'name': '喀喇沁旗',
+ 'code': '150428'
+ },
+ {
+ 'name': '宁城县',
+ 'code': '150429'
+ },
+ {
+ 'name': '敖汉旗',
+ 'code': '150430'
+ }
+ ]
+ },
+ {
+ 'name': '通辽市',
+ 'code': '150500',
+ 'children': [
+ {
+ 'name': '科尔沁区',
+ 'code': '150502'
+ },
+ {
+ 'name': '科尔沁左翼中旗',
+ 'code': '150521'
+ },
+ {
+ 'name': '科尔沁左翼后旗',
+ 'code': '150522'
+ },
+ {
+ 'name': '开鲁县',
+ 'code': '150523'
+ },
+ {
+ 'name': '库伦旗',
+ 'code': '150524'
+ },
+ {
+ 'name': '奈曼旗',
+ 'code': '150525'
+ },
+ {
+ 'name': '扎鲁特旗',
+ 'code': '150526'
+ },
+ {
+ 'name': '霍林郭勒市',
+ 'code': '150581'
+ }
+ ]
+ },
+ {
+ 'name': '鄂尔多斯市',
+ 'code': '150600',
+ 'children': [
+ {
+ 'name': '东胜区',
+ 'code': '150602'
+ },
+ {
+ 'name': '康巴什区',
+ 'code': '150603'
+ },
+ {
+ 'name': '达拉特旗',
+ 'code': '150621'
+ },
+ {
+ 'name': '准格尔旗',
+ 'code': '150622'
+ },
+ {
+ 'name': '鄂托克前旗',
+ 'code': '150623'
+ },
+ {
+ 'name': '鄂托克旗',
+ 'code': '150624'
+ },
+ {
+ 'name': '杭锦旗',
+ 'code': '150625'
+ },
+ {
+ 'name': '乌审旗',
+ 'code': '150626'
+ },
+ {
+ 'name': '伊金霍洛旗',
+ 'code': '150627'
+ }
+ ]
+ },
+ {
+ 'name': '呼伦贝尔市',
+ 'code': '150700',
+ 'children': [
+ {
+ 'name': '海拉尔区',
+ 'code': '150702'
+ },
+ {
+ 'name': '扎赉诺尔区',
+ 'code': '150703'
+ },
+ {
+ 'name': '阿荣旗',
+ 'code': '150721'
+ },
+ {
+ 'name': '莫力达瓦达斡尔族自治旗',
+ 'code': '150722'
+ },
+ {
+ 'name': '鄂伦春自治旗',
+ 'code': '150723'
+ },
+ {
+ 'name': '鄂温克族自治旗',
+ 'code': '150724'
+ },
+ {
+ 'name': '陈巴尔虎旗',
+ 'code': '150725'
+ },
+ {
+ 'name': '新巴尔虎左旗',
+ 'code': '150726'
+ },
+ {
+ 'name': '新巴尔虎右旗',
+ 'code': '150727'
+ },
+ {
+ 'name': '满洲里市',
+ 'code': '150781'
+ },
+ {
+ 'name': '牙克石市',
+ 'code': '150782'
+ },
+ {
+ 'name': '扎兰屯市',
+ 'code': '150783'
+ },
+ {
+ 'name': '额尔古纳市',
+ 'code': '150784'
+ },
+ {
+ 'name': '根河市',
+ 'code': '150785'
+ }
+ ]
+ },
+ {
+ 'name': '巴彦淖尔市',
+ 'code': '150800',
+ 'children': [
+ {
+ 'name': '临河区',
+ 'code': '150802'
+ },
+ {
+ 'name': '五原县',
+ 'code': '150821'
+ },
+ {
+ 'name': '磴口县',
+ 'code': '150822'
+ },
+ {
+ 'name': '乌拉特前旗',
+ 'code': '150823'
+ },
+ {
+ 'name': '乌拉特中旗',
+ 'code': '150824'
+ },
+ {
+ 'name': '乌拉特后旗',
+ 'code': '150825'
+ },
+ {
+ 'name': '杭锦后旗',
+ 'code': '150826'
+ }
+ ]
+ },
+ {
+ 'name': '乌兰察布市',
+ 'code': '150900',
+ 'children': [
+ {
+ 'name': '集宁区',
+ 'code': '150902'
+ },
+ {
+ 'name': '卓资县',
+ 'code': '150921'
+ },
+ {
+ 'name': '化德县',
+ 'code': '150922'
+ },
+ {
+ 'name': '商都县',
+ 'code': '150923'
+ },
+ {
+ 'name': '兴和县',
+ 'code': '150924'
+ },
+ {
+ 'name': '凉城县',
+ 'code': '150925'
+ },
+ {
+ 'name': '察哈尔右翼前旗',
+ 'code': '150926'
+ },
+ {
+ 'name': '察哈尔右翼中旗',
+ 'code': '150927'
+ },
+ {
+ 'name': '察哈尔右翼后旗',
+ 'code': '150928'
+ },
+ {
+ 'name': '四子王旗',
+ 'code': '150929'
+ },
+ {
+ 'name': '丰镇市',
+ 'code': '150981'
+ }
+ ]
+ },
+ {
+ 'name': '兴安盟',
+ 'code': '152200',
+ 'children': [
+ {
+ 'name': '乌兰浩特市',
+ 'code': '152201'
+ },
+ {
+ 'name': '阿尔山市',
+ 'code': '152202'
+ },
+ {
+ 'name': '科尔沁右翼前旗',
+ 'code': '152221'
+ },
+ {
+ 'name': '科尔沁右翼中旗',
+ 'code': '152222'
+ },
+ {
+ 'name': '扎赉特旗',
+ 'code': '152223'
+ },
+ {
+ 'name': '突泉县',
+ 'code': '152224'
+ }
+ ]
+ },
+ {
+ 'name': '锡林郭勒盟',
+ 'code': '152500',
+ 'children': [
+ {
+ 'name': '二连浩特市',
+ 'code': '152501'
+ },
+ {
+ 'name': '锡林浩特市',
+ 'code': '152502'
+ },
+ {
+ 'name': '阿巴嘎旗',
+ 'code': '152522'
+ },
+ {
+ 'name': '苏尼特左旗',
+ 'code': '152523'
+ },
+ {
+ 'name': '苏尼特右旗',
+ 'code': '152524'
+ },
+ {
+ 'name': '东乌珠穆沁旗',
+ 'code': '152525'
+ },
+ {
+ 'name': '西乌珠穆沁旗',
+ 'code': '152526'
+ },
+ {
+ 'name': '太仆寺旗',
+ 'code': '152527'
+ },
+ {
+ 'name': '镶黄旗',
+ 'code': '152528'
+ },
+ {
+ 'name': '正镶白旗',
+ 'code': '152529'
+ },
+ {
+ 'name': '正蓝旗',
+ 'code': '152530'
+ },
+ {
+ 'name': '多伦县',
+ 'code': '152531'
+ }
+ ]
+ },
+ {
+ 'name': '阿拉善盟',
+ 'code': '152900',
+ 'children': [
+ {
+ 'name': '阿拉善左旗',
+ 'code': '152921'
+ },
+ {
+ 'name': '阿拉善右旗',
+ 'code': '152922'
+ },
+ {
+ 'name': '额济纳旗',
+ 'code': '152923'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '辽宁省',
+ 'code': '210000',
+ 'region': 'northeast',
+ 'children': [
+ {
+ 'name': '沈阳市',
+ 'code': '210100',
+ 'children': [
+ {
+ 'name': '和平区',
+ 'code': '210102'
+ },
+ {
+ 'name': '沈河区',
+ 'code': '210103'
+ },
+ {
+ 'name': '大东区',
+ 'code': '210104'
+ },
+ {
+ 'name': '皇姑区',
+ 'code': '210105'
+ },
+ {
+ 'name': '铁西区',
+ 'code': '210106'
+ },
+ {
+ 'name': '苏家屯区',
+ 'code': '210111'
+ },
+ {
+ 'name': '浑南区',
+ 'code': '210112'
+ },
+ {
+ 'name': '沈北新区',
+ 'code': '210113'
+ },
+ {
+ 'name': '于洪区',
+ 'code': '210114'
+ },
+ {
+ 'name': '辽中区',
+ 'code': '210115'
+ },
+ {
+ 'name': '康平县',
+ 'code': '210123'
+ },
+ {
+ 'name': '法库县',
+ 'code': '210124'
+ },
+ {
+ 'name': '新民市',
+ 'code': '210181'
+ }
+ ]
+ },
+ {
+ 'name': '大连市',
+ 'code': '210200',
+ 'children': [
+ {
+ 'name': '中山区',
+ 'code': '210202'
+ },
+ {
+ 'name': '西岗区',
+ 'code': '210203'
+ },
+ {
+ 'name': '沙河口区',
+ 'code': '210204'
+ },
+ {
+ 'name': '甘井子区',
+ 'code': '210211'
+ },
+ {
+ 'name': '旅顺口区',
+ 'code': '210212'
+ },
+ {
+ 'name': '金州区',
+ 'code': '210213'
+ },
+ {
+ 'name': '普兰店区',
+ 'code': '210214'
+ },
+ {
+ 'name': '长海县',
+ 'code': '210224'
+ },
+ {
+ 'name': '瓦房店市',
+ 'code': '210281'
+ },
+ {
+ 'name': '庄河市',
+ 'code': '210283'
+ }
+ ]
+ },
+ {
+ 'name': '鞍山市',
+ 'code': '210300',
+ 'children': [
+ {
+ 'name': '铁东区',
+ 'code': '210302'
+ },
+ {
+ 'name': '铁西区',
+ 'code': '210303'
+ },
+ {
+ 'name': '立山区',
+ 'code': '210304'
+ },
+ {
+ 'name': '千山区',
+ 'code': '210311'
+ },
+ {
+ 'name': '台安县',
+ 'code': '210321'
+ },
+ {
+ 'name': '岫岩满族自治县',
+ 'code': '210323'
+ },
+ {
+ 'name': '海城市',
+ 'code': '210381'
+ }
+ ]
+ },
+ {
+ 'name': '抚顺市',
+ 'code': '210400',
+ 'children': [
+ {
+ 'name': '新抚区',
+ 'code': '210402'
+ },
+ {
+ 'name': '东洲区',
+ 'code': '210403'
+ },
+ {
+ 'name': '望花区',
+ 'code': '210404'
+ },
+ {
+ 'name': '顺城区',
+ 'code': '210411'
+ },
+ {
+ 'name': '抚顺县',
+ 'code': '210421'
+ },
+ {
+ 'name': '新宾满族自治县',
+ 'code': '210422'
+ },
+ {
+ 'name': '清原满族自治县',
+ 'code': '210423'
+ }
+ ]
+ },
+ {
+ 'name': '本溪市',
+ 'code': '210500',
+ 'children': [
+ {
+ 'name': '平山区',
+ 'code': '210502'
+ },
+ {
+ 'name': '溪湖区',
+ 'code': '210503'
+ },
+ {
+ 'name': '明山区',
+ 'code': '210504'
+ },
+ {
+ 'name': '南芬区',
+ 'code': '210505'
+ },
+ {
+ 'name': '本溪满族自治县',
+ 'code': '210521'
+ },
+ {
+ 'name': '桓仁满族自治县',
+ 'code': '210522'
+ }
+ ]
+ },
+ {
+ 'name': '丹东市',
+ 'code': '210600',
+ 'children': [
+ {
+ 'name': '元宝区',
+ 'code': '210602'
+ },
+ {
+ 'name': '振兴区',
+ 'code': '210603'
+ },
+ {
+ 'name': '振安区',
+ 'code': '210604'
+ },
+ {
+ 'name': '宽甸满族自治县',
+ 'code': '210624'
+ },
+ {
+ 'name': '东港市',
+ 'code': '210681'
+ },
+ {
+ 'name': '凤城市',
+ 'code': '210682'
+ }
+ ]
+ },
+ {
+ 'name': '锦州市',
+ 'code': '210700',
+ 'children': [
+ {
+ 'name': '古塔区',
+ 'code': '210702'
+ },
+ {
+ 'name': '凌河区',
+ 'code': '210703'
+ },
+ {
+ 'name': '太和区',
+ 'code': '210711'
+ },
+ {
+ 'name': '黑山县',
+ 'code': '210726'
+ },
+ {
+ 'name': '义县',
+ 'code': '210727'
+ },
+ {
+ 'name': '凌海市',
+ 'code': '210781'
+ },
+ {
+ 'name': '北镇市',
+ 'code': '210782'
+ }
+ ]
+ },
+ {
+ 'name': '营口市',
+ 'code': '210800',
+ 'children': [
+ {
+ 'name': '站前区',
+ 'code': '210802'
+ },
+ {
+ 'name': '西市区',
+ 'code': '210803'
+ },
+ {
+ 'name': '鲅鱼圈区',
+ 'code': '210804'
+ },
+ {
+ 'name': '老边区',
+ 'code': '210811'
+ },
+ {
+ 'name': '盖州市',
+ 'code': '210881'
+ },
+ {
+ 'name': '大石桥市',
+ 'code': '210882'
+ }
+ ]
+ },
+ {
+ 'name': '阜新市',
+ 'code': '210900',
+ 'children': [
+ {
+ 'name': '海州区',
+ 'code': '210902'
+ },
+ {
+ 'name': '新邱区',
+ 'code': '210903'
+ },
+ {
+ 'name': '太平区',
+ 'code': '210904'
+ },
+ {
+ 'name': '清河门区',
+ 'code': '210905'
+ },
+ {
+ 'name': '细河区',
+ 'code': '210911'
+ },
+ {
+ 'name': '阜新蒙古族自治县',
+ 'code': '210921'
+ },
+ {
+ 'name': '彰武县',
+ 'code': '210922'
+ }
+ ]
+ },
+ {
+ 'name': '辽阳市',
+ 'code': '211000',
+ 'children': [
+ {
+ 'name': '白塔区',
+ 'code': '211002'
+ },
+ {
+ 'name': '文圣区',
+ 'code': '211003'
+ },
+ {
+ 'name': '宏伟区',
+ 'code': '211004'
+ },
+ {
+ 'name': '弓长岭区',
+ 'code': '211005'
+ },
+ {
+ 'name': '太子河区',
+ 'code': '211011'
+ },
+ {
+ 'name': '辽阳县',
+ 'code': '211021'
+ },
+ {
+ 'name': '灯塔市',
+ 'code': '211081'
+ }
+ ]
+ },
+ {
+ 'name': '盘锦市',
+ 'code': '211100',
+ 'children': [
+ {
+ 'name': '双台子区',
+ 'code': '211102'
+ },
+ {
+ 'name': '兴隆台区',
+ 'code': '211103'
+ },
+ {
+ 'name': '大洼区',
+ 'code': '211104'
+ },
+ {
+ 'name': '盘山县',
+ 'code': '211122'
+ }
+ ]
+ },
+ {
+ 'name': '铁岭市',
+ 'code': '211200',
+ 'children': [
+ {
+ 'name': '银州区',
+ 'code': '211202'
+ },
+ {
+ 'name': '清河区',
+ 'code': '211204'
+ },
+ {
+ 'name': '铁岭县',
+ 'code': '211221'
+ },
+ {
+ 'name': '西丰县',
+ 'code': '211223'
+ },
+ {
+ 'name': '昌图县',
+ 'code': '211224'
+ },
+ {
+ 'name': '调兵山市',
+ 'code': '211281'
+ },
+ {
+ 'name': '开原市',
+ 'code': '211282'
+ }
+ ]
+ },
+ {
+ 'name': '朝阳市',
+ 'code': '211300',
+ 'children': [
+ {
+ 'name': '双塔区',
+ 'code': '211302'
+ },
+ {
+ 'name': '龙城区',
+ 'code': '211303'
+ },
+ {
+ 'name': '朝阳县',
+ 'code': '211321'
+ },
+ {
+ 'name': '建平县',
+ 'code': '211322'
+ },
+ {
+ 'name': '喀喇沁左翼蒙古族自治县',
+ 'code': '211324'
+ },
+ {
+ 'name': '北票市',
+ 'code': '211381'
+ },
+ {
+ 'name': '凌源市',
+ 'code': '211382'
+ }
+ ]
+ },
+ {
+ 'name': '葫芦岛市',
+ 'code': '211400',
+ 'children': [
+ {
+ 'name': '连山区',
+ 'code': '211402'
+ },
+ {
+ 'name': '龙港区',
+ 'code': '211403'
+ },
+ {
+ 'name': '南票区',
+ 'code': '211404'
+ },
+ {
+ 'name': '绥中县',
+ 'code': '211421'
+ },
+ {
+ 'name': '建昌县',
+ 'code': '211422'
+ },
+ {
+ 'name': '兴城市',
+ 'code': '211481'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '吉林省',
+ 'code': '220000',
+ 'region': 'northeast',
+ 'children': [
+ {
+ 'name': '长春市',
+ 'code': '220100',
+ 'children': [
+ {
+ 'name': '南关区',
+ 'code': '220102'
+ },
+ {
+ 'name': '宽城区',
+ 'code': '220103'
+ },
+ {
+ 'name': '朝阳区',
+ 'code': '220104'
+ },
+ {
+ 'name': '二道区',
+ 'code': '220105'
+ },
+ {
+ 'name': '绿园区',
+ 'code': '220106'
+ },
+ {
+ 'name': '双阳区',
+ 'code': '220112'
+ },
+ {
+ 'name': '九台区',
+ 'code': '220113'
+ },
+ {
+ 'name': '农安县',
+ 'code': '220122'
+ },
+ {
+ 'name': '榆树市',
+ 'code': '220182'
+ },
+ {
+ 'name': '德惠市',
+ 'code': '220183'
+ }
+ ]
+ },
+ {
+ 'name': '吉林市',
+ 'code': '220200',
+ 'children': [
+ {
+ 'name': '昌邑区',
+ 'code': '220202'
+ },
+ {
+ 'name': '龙潭区',
+ 'code': '220203'
+ },
+ {
+ 'name': '船营区',
+ 'code': '220204'
+ },
+ {
+ 'name': '丰满区',
+ 'code': '220211'
+ },
+ {
+ 'name': '永吉县',
+ 'code': '220221'
+ },
+ {
+ 'name': '蛟河市',
+ 'code': '220281'
+ },
+ {
+ 'name': '桦甸市',
+ 'code': '220282'
+ },
+ {
+ 'name': '舒兰市',
+ 'code': '220283'
+ },
+ {
+ 'name': '磐石市',
+ 'code': '220284'
+ }
+ ]
+ },
+ {
+ 'name': '四平市',
+ 'code': '220300',
+ 'children': [
+ {
+ 'name': '铁西区',
+ 'code': '220302'
+ },
+ {
+ 'name': '铁东区',
+ 'code': '220303'
+ },
+ {
+ 'name': '梨树县',
+ 'code': '220322'
+ },
+ {
+ 'name': '伊通满族自治县',
+ 'code': '220323'
+ },
+ {
+ 'name': '公主岭市',
+ 'code': '220381'
+ },
+ {
+ 'name': '双辽市',
+ 'code': '220382'
+ }
+ ]
+ },
+ {
+ 'name': '辽源市',
+ 'code': '220400',
+ 'children': [
+ {
+ 'name': '龙山区',
+ 'code': '220402'
+ },
+ {
+ 'name': '西安区',
+ 'code': '220403'
+ },
+ {
+ 'name': '东丰县',
+ 'code': '220421'
+ },
+ {
+ 'name': '东辽县',
+ 'code': '220422'
+ }
+ ]
+ },
+ {
+ 'name': '通化市',
+ 'code': '220500',
+ 'children': [
+ {
+ 'name': '东昌区',
+ 'code': '220502'
+ },
+ {
+ 'name': '二道江区',
+ 'code': '220503'
+ },
+ {
+ 'name': '通化县',
+ 'code': '220521'
+ },
+ {
+ 'name': '辉南县',
+ 'code': '220523'
+ },
+ {
+ 'name': '柳河县',
+ 'code': '220524'
+ },
+ {
+ 'name': '梅河口市',
+ 'code': '220581'
+ },
+ {
+ 'name': '集安市',
+ 'code': '220582'
+ }
+ ]
+ },
+ {
+ 'name': '白山市',
+ 'code': '220600',
+ 'children': [
+ {
+ 'name': '浑江区',
+ 'code': '220602'
+ },
+ {
+ 'name': '江源区',
+ 'code': '220605'
+ },
+ {
+ 'name': '抚松县',
+ 'code': '220621'
+ },
+ {
+ 'name': '靖宇县',
+ 'code': '220622'
+ },
+ {
+ 'name': '长白朝鲜族自治县',
+ 'code': '220623'
+ },
+ {
+ 'name': '临江市',
+ 'code': '220681'
+ }
+ ]
+ },
+ {
+ 'name': '松原市',
+ 'code': '220700',
+ 'children': [
+ {
+ 'name': '宁江区',
+ 'code': '220702'
+ },
+ {
+ 'name': '前郭尔罗斯蒙古族自治县',
+ 'code': '220721'
+ },
+ {
+ 'name': '长岭县',
+ 'code': '220722'
+ },
+ {
+ 'name': '乾安县',
+ 'code': '220723'
+ },
+ {
+ 'name': '扶余市',
+ 'code': '220781'
+ }
+ ]
+ },
+ {
+ 'name': '白城市',
+ 'code': '220800',
+ 'children': [
+ {
+ 'name': '洮北区',
+ 'code': '220802'
+ },
+ {
+ 'name': '镇赉县',
+ 'code': '220821'
+ },
+ {
+ 'name': '通榆县',
+ 'code': '220822'
+ },
+ {
+ 'name': '洮南市',
+ 'code': '220881'
+ },
+ {
+ 'name': '大安市',
+ 'code': '220882'
+ }
+ ]
+ },
+ {
+ 'name': '延边朝鲜族自治州',
+ 'code': '222400',
+ 'children': [
+ {
+ 'name': '延吉市',
+ 'code': '222401'
+ },
+ {
+ 'name': '图们市',
+ 'code': '222402'
+ },
+ {
+ 'name': '敦化市',
+ 'code': '222403'
+ },
+ {
+ 'name': '珲春市',
+ 'code': '222404'
+ },
+ {
+ 'name': '龙井市',
+ 'code': '222405'
+ },
+ {
+ 'name': '和龙市',
+ 'code': '222406'
+ },
+ {
+ 'name': '汪清县',
+ 'code': '222424'
+ },
+ {
+ 'name': '安图县',
+ 'code': '222426'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '黑龙江省',
+ 'code': '230000',
+ 'region': 'northeast',
+ 'children': [
+ {
+ 'name': '哈尔滨市',
+ 'code': '230100',
+ 'children': [
+ {
+ 'name': '道里区',
+ 'code': '230102'
+ },
+ {
+ 'name': '南岗区',
+ 'code': '230103'
+ },
+ {
+ 'name': '道外区',
+ 'code': '230104'
+ },
+ {
+ 'name': '平房区',
+ 'code': '230108'
+ },
+ {
+ 'name': '松北区',
+ 'code': '230109'
+ },
+ {
+ 'name': '香坊区',
+ 'code': '230110'
+ },
+ {
+ 'name': '呼兰区',
+ 'code': '230111'
+ },
+ {
+ 'name': '阿城区',
+ 'code': '230112'
+ },
+ {
+ 'name': '双城区',
+ 'code': '230113'
+ },
+ {
+ 'name': '依兰县',
+ 'code': '230123'
+ },
+ {
+ 'name': '方正县',
+ 'code': '230124'
+ },
+ {
+ 'name': '宾县',
+ 'code': '230125'
+ },
+ {
+ 'name': '巴彦县',
+ 'code': '230126'
+ },
+ {
+ 'name': '木兰县',
+ 'code': '230127'
+ },
+ {
+ 'name': '通河县',
+ 'code': '230128'
+ },
+ {
+ 'name': '延寿县',
+ 'code': '230129'
+ },
+ {
+ 'name': '尚志市',
+ 'code': '230183'
+ },
+ {
+ 'name': '五常市',
+ 'code': '230184'
+ }
+ ]
+ },
+ {
+ 'name': '齐齐哈尔市',
+ 'code': '230200',
+ 'children': [
+ {
+ 'name': '龙沙区',
+ 'code': '230202'
+ },
+ {
+ 'name': '建华区',
+ 'code': '230203'
+ },
+ {
+ 'name': '铁锋区',
+ 'code': '230204'
+ },
+ {
+ 'name': '昂昂溪区',
+ 'code': '230205'
+ },
+ {
+ 'name': '富拉尔基区',
+ 'code': '230206'
+ },
+ {
+ 'name': '碾子山区',
+ 'code': '230207'
+ },
+ {
+ 'name': '梅里斯达斡尔族区',
+ 'code': '230208'
+ },
+ {
+ 'name': '龙江县',
+ 'code': '230221'
+ },
+ {
+ 'name': '依安县',
+ 'code': '230223'
+ },
+ {
+ 'name': '泰来县',
+ 'code': '230224'
+ },
+ {
+ 'name': '甘南县',
+ 'code': '230225'
+ },
+ {
+ 'name': '富裕县',
+ 'code': '230227'
+ },
+ {
+ 'name': '克山县',
+ 'code': '230229'
+ },
+ {
+ 'name': '克东县',
+ 'code': '230230'
+ },
+ {
+ 'name': '拜泉县',
+ 'code': '230231'
+ },
+ {
+ 'name': '讷河市',
+ 'code': '230281'
+ }
+ ]
+ },
+ {
+ 'name': '鸡西市',
+ 'code': '230300',
+ 'children': [
+ {
+ 'name': '鸡冠区',
+ 'code': '230302'
+ },
+ {
+ 'name': '恒山区',
+ 'code': '230303'
+ },
+ {
+ 'name': '滴道区',
+ 'code': '230304'
+ },
+ {
+ 'name': '梨树区',
+ 'code': '230305'
+ },
+ {
+ 'name': '城子河区',
+ 'code': '230306'
+ },
+ {
+ 'name': '麻山区',
+ 'code': '230307'
+ },
+ {
+ 'name': '鸡东县',
+ 'code': '230321'
+ },
+ {
+ 'name': '虎林市',
+ 'code': '230381'
+ },
+ {
+ 'name': '密山市',
+ 'code': '230382'
+ }
+ ]
+ },
+ {
+ 'name': '鹤岗市',
+ 'code': '230400',
+ 'children': [
+ {
+ 'name': '向阳区',
+ 'code': '230402'
+ },
+ {
+ 'name': '工农区',
+ 'code': '230403'
+ },
+ {
+ 'name': '南山区',
+ 'code': '230404'
+ },
+ {
+ 'name': '兴安区',
+ 'code': '230405'
+ },
+ {
+ 'name': '东山区',
+ 'code': '230406'
+ },
+ {
+ 'name': '兴山区',
+ 'code': '230407'
+ },
+ {
+ 'name': '萝北县',
+ 'code': '230421'
+ },
+ {
+ 'name': '绥滨县',
+ 'code': '230422'
+ }
+ ]
+ },
+ {
+ 'name': '双鸭山市',
+ 'code': '230500',
+ 'children': [
+ {
+ 'name': '尖山区',
+ 'code': '230502'
+ },
+ {
+ 'name': '岭东区',
+ 'code': '230503'
+ },
+ {
+ 'name': '四方台区',
+ 'code': '230505'
+ },
+ {
+ 'name': '宝山区',
+ 'code': '230506'
+ },
+ {
+ 'name': '集贤县',
+ 'code': '230521'
+ },
+ {
+ 'name': '友谊县',
+ 'code': '230522'
+ },
+ {
+ 'name': '宝清县',
+ 'code': '230523'
+ },
+ {
+ 'name': '饶河县',
+ 'code': '230524'
+ }
+ ]
+ },
+ {
+ 'name': '大庆市',
+ 'code': '230600',
+ 'children': [
+ {
+ 'name': '萨尔图区',
+ 'code': '230602'
+ },
+ {
+ 'name': '龙凤区',
+ 'code': '230603'
+ },
+ {
+ 'name': '让胡路区',
+ 'code': '230604'
+ },
+ {
+ 'name': '红岗区',
+ 'code': '230605'
+ },
+ {
+ 'name': '大同区',
+ 'code': '230606'
+ },
+ {
+ 'name': '肇州县',
+ 'code': '230621'
+ },
+ {
+ 'name': '肇源县',
+ 'code': '230622'
+ },
+ {
+ 'name': '林甸县',
+ 'code': '230623'
+ },
+ {
+ 'name': '杜尔伯特蒙古族自治县',
+ 'code': '230624'
+ }
+ ]
+ },
+ {
+ 'name': '伊春市',
+ 'code': '230700',
+ 'children': [
+ {
+ 'name': '伊春区',
+ 'code': '230702'
+ },
+ {
+ 'name': '南岔区',
+ 'code': '230703'
+ },
+ {
+ 'name': '友好区',
+ 'code': '230704'
+ },
+ {
+ 'name': '西林区',
+ 'code': '230705'
+ },
+ {
+ 'name': '翠峦区',
+ 'code': '230706'
+ },
+ {
+ 'name': '新青区',
+ 'code': '230707'
+ },
+ {
+ 'name': '美溪区',
+ 'code': '230708'
+ },
+ {
+ 'name': '金山屯区',
+ 'code': '230709'
+ },
+ {
+ 'name': '五营区',
+ 'code': '230710'
+ },
+ {
+ 'name': '乌马河区',
+ 'code': '230711'
+ },
+ {
+ 'name': '汤旺河区',
+ 'code': '230712'
+ },
+ {
+ 'name': '带岭区',
+ 'code': '230713'
+ },
+ {
+ 'name': '乌伊岭区',
+ 'code': '230714'
+ },
+ {
+ 'name': '红星区',
+ 'code': '230715'
+ },
+ {
+ 'name': '上甘岭区',
+ 'code': '230716'
+ },
+ {
+ 'name': '嘉荫县',
+ 'code': '230722'
+ },
+ {
+ 'name': '铁力市',
+ 'code': '230781'
+ }
+ ]
+ },
+ {
+ 'name': '佳木斯市',
+ 'code': '230800',
+ 'children': [
+ {
+ 'name': '向阳区',
+ 'code': '230803'
+ },
+ {
+ 'name': '前进区',
+ 'code': '230804'
+ },
+ {
+ 'name': '东风区',
+ 'code': '230805'
+ },
+ {
+ 'name': '郊区',
+ 'code': '230811'
+ },
+ {
+ 'name': '桦南县',
+ 'code': '230822'
+ },
+ {
+ 'name': '桦川县',
+ 'code': '230826'
+ },
+ {
+ 'name': '汤原县',
+ 'code': '230828'
+ },
+ {
+ 'name': '同江市',
+ 'code': '230881'
+ },
+ {
+ 'name': '富锦市',
+ 'code': '230882'
+ },
+ {
+ 'name': '抚远市',
+ 'code': '230883'
+ }
+ ]
+ },
+ {
+ 'name': '七台河市',
+ 'code': '230900',
+ 'children': [
+ {
+ 'name': '新兴区',
+ 'code': '230902'
+ },
+ {
+ 'name': '桃山区',
+ 'code': '230903'
+ },
+ {
+ 'name': '茄子河区',
+ 'code': '230904'
+ },
+ {
+ 'name': '勃利县',
+ 'code': '230921'
+ }
+ ]
+ },
+ {
+ 'name': '牡丹江市',
+ 'code': '231000',
+ 'children': [
+ {
+ 'name': '东安区',
+ 'code': '231002'
+ },
+ {
+ 'name': '阳明区',
+ 'code': '231003'
+ },
+ {
+ 'name': '爱民区',
+ 'code': '231004'
+ },
+ {
+ 'name': '西安区',
+ 'code': '231005'
+ },
+ {
+ 'name': '林口县',
+ 'code': '231025'
+ },
+ {
+ 'name': '绥芬河市',
+ 'code': '231081'
+ },
+ {
+ 'name': '海林市',
+ 'code': '231083'
+ },
+ {
+ 'name': '宁安市',
+ 'code': '231084'
+ },
+ {
+ 'name': '穆棱市',
+ 'code': '231085'
+ },
+ {
+ 'name': '东宁市',
+ 'code': '231086'
+ }
+ ]
+ },
+ {
+ 'name': '黑河市',
+ 'code': '231100',
+ 'children': [
+ {
+ 'name': '爱辉区',
+ 'code': '231102'
+ },
+ {
+ 'name': '嫩江县',
+ 'code': '231121'
+ },
+ {
+ 'name': '逊克县',
+ 'code': '231123'
+ },
+ {
+ 'name': '孙吴县',
+ 'code': '231124'
+ },
+ {
+ 'name': '北安市',
+ 'code': '231181'
+ },
+ {
+ 'name': '五大连池市',
+ 'code': '231182'
+ }
+ ]
+ },
+ {
+ 'name': '绥化市',
+ 'code': '231200',
+ 'children': [
+ {
+ 'name': '北林区',
+ 'code': '231202'
+ },
+ {
+ 'name': '望奎县',
+ 'code': '231221'
+ },
+ {
+ 'name': '兰西县',
+ 'code': '231222'
+ },
+ {
+ 'name': '青冈县',
+ 'code': '231223'
+ },
+ {
+ 'name': '庆安县',
+ 'code': '231224'
+ },
+ {
+ 'name': '明水县',
+ 'code': '231225'
+ },
+ {
+ 'name': '绥棱县',
+ 'code': '231226'
+ },
+ {
+ 'name': '安达市',
+ 'code': '231281'
+ },
+ {
+ 'name': '肇东市',
+ 'code': '231282'
+ },
+ {
+ 'name': '海伦市',
+ 'code': '231283'
+ }
+ ]
+ },
+ {
+ 'name': '大兴安岭地区',
+ 'code': '232700',
+ 'children': [
+ {
+ 'name': '漠河市',
+ 'code': '232701'
+ },
+ {
+ 'name': '呼玛县',
+ 'code': '232721'
+ },
+ {
+ 'name': '塔河县',
+ 'code': '232722'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '上海市',
+ 'code': '310000',
+ 'region': 'east',
+ 'provinceLevelCity': true,
+ 'children': [
+ {
+ 'name': '市辖区',
+ 'code': '310100',
+ 'children': [
+ {
+ 'name': '黄浦区',
+ 'code': '310101'
+ },
+ {
+ 'name': '徐汇区',
+ 'code': '310104'
+ },
+ {
+ 'name': '长宁区',
+ 'code': '310105'
+ },
+ {
+ 'name': '静安区',
+ 'code': '310106'
+ },
+ {
+ 'name': '普陀区',
+ 'code': '310107'
+ },
+ {
+ 'name': '虹口区',
+ 'code': '310109'
+ },
+ {
+ 'name': '杨浦区',
+ 'code': '310110'
+ },
+ {
+ 'name': '闵行区',
+ 'code': '310112'
+ },
+ {
+ 'name': '宝山区',
+ 'code': '310113'
+ },
+ {
+ 'name': '嘉定区',
+ 'code': '310114'
+ },
+ {
+ 'name': '浦东新区',
+ 'code': '310115'
+ },
+ {
+ 'name': '金山区',
+ 'code': '310116'
+ },
+ {
+ 'name': '松江区',
+ 'code': '310117'
+ },
+ {
+ 'name': '青浦区',
+ 'code': '310118'
+ },
+ {
+ 'name': '奉贤区',
+ 'code': '310120'
+ },
+ {
+ 'name': '崇明区',
+ 'code': '310151'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '江苏省',
+ 'code': '320000',
+ 'region': 'east',
+ 'children': [
+ {
+ 'name': '南京市',
+ 'code': '320100',
+ 'children': [
+ {
+ 'name': '玄武区',
+ 'code': '320102'
+ },
+ {
+ 'name': '秦淮区',
+ 'code': '320104'
+ },
+ {
+ 'name': '建邺区',
+ 'code': '320105'
+ },
+ {
+ 'name': '鼓楼区',
+ 'code': '320106'
+ },
+ {
+ 'name': '浦口区',
+ 'code': '320111'
+ },
+ {
+ 'name': '栖霞区',
+ 'code': '320113'
+ },
+ {
+ 'name': '雨花台区',
+ 'code': '320114'
+ },
+ {
+ 'name': '江宁区',
+ 'code': '320115'
+ },
+ {
+ 'name': '六合区',
+ 'code': '320116'
+ },
+ {
+ 'name': '溧水区',
+ 'code': '320117'
+ },
+ {
+ 'name': '高淳区',
+ 'code': '320118'
+ }
+ ]
+ },
+ {
+ 'name': '无锡市',
+ 'code': '320200',
+ 'children': [
+ {
+ 'name': '锡山区',
+ 'code': '320205'
+ },
+ {
+ 'name': '惠山区',
+ 'code': '320206'
+ },
+ {
+ 'name': '滨湖区',
+ 'code': '320211'
+ },
+ {
+ 'name': '梁溪区',
+ 'code': '320213'
+ },
+ {
+ 'name': '新吴区',
+ 'code': '320214'
+ },
+ {
+ 'name': '江阴市',
+ 'code': '320281'
+ },
+ {
+ 'name': '宜兴市',
+ 'code': '320282'
+ }
+ ]
+ },
+ {
+ 'name': '徐州市',
+ 'code': '320300',
+ 'children': [
+ {
+ 'name': '鼓楼区',
+ 'code': '320302'
+ },
+ {
+ 'name': '云龙区',
+ 'code': '320303'
+ },
+ {
+ 'name': '贾汪区',
+ 'code': '320305'
+ },
+ {
+ 'name': '泉山区',
+ 'code': '320311'
+ },
+ {
+ 'name': '铜山区',
+ 'code': '320312'
+ },
+ {
+ 'name': '丰县',
+ 'code': '320321'
+ },
+ {
+ 'name': '沛县',
+ 'code': '320322'
+ },
+ {
+ 'name': '睢宁县',
+ 'code': '320324'
+ },
+ {
+ 'name': '新沂市',
+ 'code': '320381'
+ },
+ {
+ 'name': '邳州市',
+ 'code': '320382'
+ }
+ ]
+ },
+ {
+ 'name': '常州市',
+ 'code': '320400',
+ 'children': [
+ {
+ 'name': '天宁区',
+ 'code': '320402'
+ },
+ {
+ 'name': '钟楼区',
+ 'code': '320404'
+ },
+ {
+ 'name': '新北区',
+ 'code': '320411'
+ },
+ {
+ 'name': '武进区',
+ 'code': '320412'
+ },
+ {
+ 'name': '金坛区',
+ 'code': '320413'
+ },
+ {
+ 'name': '溧阳市',
+ 'code': '320481'
+ }
+ ]
+ },
+ {
+ 'name': '苏州市',
+ 'code': '320500',
+ 'children': [
+ {
+ 'name': '虎丘区',
+ 'code': '320505'
+ },
+ {
+ 'name': '吴中区',
+ 'code': '320506'
+ },
+ {
+ 'name': '相城区',
+ 'code': '320507'
+ },
+ {
+ 'name': '姑苏区',
+ 'code': '320508'
+ },
+ {
+ 'name': '吴江区',
+ 'code': '320509'
+ },
+ {
+ 'name': '常熟市',
+ 'code': '320581'
+ },
+ {
+ 'name': '张家港市',
+ 'code': '320582'
+ },
+ {
+ 'name': '昆山市',
+ 'code': '320583'
+ },
+ {
+ 'name': '太仓市',
+ 'code': '320585'
+ }
+ ]
+ },
+ {
+ 'name': '南通市',
+ 'code': '320600',
+ 'children': [
+ {
+ 'name': '崇川区',
+ 'code': '320602'
+ },
+ {
+ 'name': '港闸区',
+ 'code': '320611'
+ },
+ {
+ 'name': '通州区',
+ 'code': '320612'
+ },
+ {
+ 'name': '如东县',
+ 'code': '320623'
+ },
+ {
+ 'name': '启东市',
+ 'code': '320681'
+ },
+ {
+ 'name': '如皋市',
+ 'code': '320682'
+ },
+ {
+ 'name': '海门市',
+ 'code': '320684'
+ },
+ {
+ 'name': '海安市',
+ 'code': '320685'
+ }
+ ]
+ },
+ {
+ 'name': '连云港市',
+ 'code': '320700',
+ 'children': [
+ {
+ 'name': '连云区',
+ 'code': '320703'
+ },
+ {
+ 'name': '海州区',
+ 'code': '320706'
+ },
+ {
+ 'name': '赣榆区',
+ 'code': '320707'
+ },
+ {
+ 'name': '东海县',
+ 'code': '320722'
+ },
+ {
+ 'name': '灌云县',
+ 'code': '320723'
+ },
+ {
+ 'name': '灌南县',
+ 'code': '320724'
+ }
+ ]
+ },
+ {
+ 'name': '淮安市',
+ 'code': '320800',
+ 'children': [
+ {
+ 'name': '淮安区',
+ 'code': '320803'
+ },
+ {
+ 'name': '淮阴区',
+ 'code': '320804'
+ },
+ {
+ 'name': '清江浦区',
+ 'code': '320812'
+ },
+ {
+ 'name': '洪泽区',
+ 'code': '320813'
+ },
+ {
+ 'name': '涟水县',
+ 'code': '320826'
+ },
+ {
+ 'name': '盱眙县',
+ 'code': '320830'
+ },
+ {
+ 'name': '金湖县',
+ 'code': '320831'
+ }
+ ]
+ },
+ {
+ 'name': '盐城市',
+ 'code': '320900',
+ 'children': [
+ {
+ 'name': '亭湖区',
+ 'code': '320902'
+ },
+ {
+ 'name': '盐都区',
+ 'code': '320903'
+ },
+ {
+ 'name': '大丰区',
+ 'code': '320904'
+ },
+ {
+ 'name': '响水县',
+ 'code': '320921'
+ },
+ {
+ 'name': '滨海县',
+ 'code': '320922'
+ },
+ {
+ 'name': '阜宁县',
+ 'code': '320923'
+ },
+ {
+ 'name': '射阳县',
+ 'code': '320924'
+ },
+ {
+ 'name': '建湖县',
+ 'code': '320925'
+ },
+ {
+ 'name': '东台市',
+ 'code': '320981'
+ }
+ ]
+ },
+ {
+ 'name': '扬州市',
+ 'code': '321000',
+ 'children': [
+ {
+ 'name': '广陵区',
+ 'code': '321002'
+ },
+ {
+ 'name': '邗江区',
+ 'code': '321003'
+ },
+ {
+ 'name': '江都区',
+ 'code': '321012'
+ },
+ {
+ 'name': '宝应县',
+ 'code': '321023'
+ },
+ {
+ 'name': '仪征市',
+ 'code': '321081'
+ },
+ {
+ 'name': '高邮市',
+ 'code': '321084'
+ }
+ ]
+ },
+ {
+ 'name': '镇江市',
+ 'code': '321100',
+ 'children': [
+ {
+ 'name': '京口区',
+ 'code': '321102'
+ },
+ {
+ 'name': '润州区',
+ 'code': '321111'
+ },
+ {
+ 'name': '丹徒区',
+ 'code': '321112'
+ },
+ {
+ 'name': '丹阳市',
+ 'code': '321181'
+ },
+ {
+ 'name': '扬中市',
+ 'code': '321182'
+ },
+ {
+ 'name': '句容市',
+ 'code': '321183'
+ }
+ ]
+ },
+ {
+ 'name': '泰州市',
+ 'code': '321200',
+ 'children': [
+ {
+ 'name': '海陵区',
+ 'code': '321202'
+ },
+ {
+ 'name': '高港区',
+ 'code': '321203'
+ },
+ {
+ 'name': '姜堰区',
+ 'code': '321204'
+ },
+ {
+ 'name': '兴化市',
+ 'code': '321281'
+ },
+ {
+ 'name': '靖江市',
+ 'code': '321282'
+ },
+ {
+ 'name': '泰兴市',
+ 'code': '321283'
+ }
+ ]
+ },
+ {
+ 'name': '宿迁市',
+ 'code': '321300',
+ 'children': [
+ {
+ 'name': '宿城区',
+ 'code': '321302'
+ },
+ {
+ 'name': '宿豫区',
+ 'code': '321311'
+ },
+ {
+ 'name': '沭阳县',
+ 'code': '321322'
+ },
+ {
+ 'name': '泗阳县',
+ 'code': '321323'
+ },
+ {
+ 'name': '泗洪县',
+ 'code': '321324'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '浙江省',
+ 'code': '330000',
+ 'region': 'east',
+ 'children': [
+ {
+ 'name': '杭州市',
+ 'code': '330100',
+ 'children': [
+ {
+ 'name': '上城区',
+ 'code': '330102'
+ },
+ {
+ 'name': '下城区',
+ 'code': '330103'
+ },
+ {
+ 'name': '江干区',
+ 'code': '330104'
+ },
+ {
+ 'name': '拱墅区',
+ 'code': '330105'
+ },
+ {
+ 'name': '西湖区',
+ 'code': '330106'
+ },
+ {
+ 'name': '滨江区',
+ 'code': '330108'
+ },
+ {
+ 'name': '萧山区',
+ 'code': '330109'
+ },
+ {
+ 'name': '余杭区',
+ 'code': '330110'
+ },
+ {
+ 'name': '富阳区',
+ 'code': '330111'
+ },
+ {
+ 'name': '临安区',
+ 'code': '330112'
+ },
+ {
+ 'name': '桐庐县',
+ 'code': '330122'
+ },
+ {
+ 'name': '淳安县',
+ 'code': '330127'
+ },
+ {
+ 'name': '建德市',
+ 'code': '330182'
+ }
+ ]
+ },
+ {
+ 'name': '宁波市',
+ 'code': '330200',
+ 'children': [
+ {
+ 'name': '海曙区',
+ 'code': '330203'
+ },
+ {
+ 'name': '江北区',
+ 'code': '330205'
+ },
+ {
+ 'name': '北仑区',
+ 'code': '330206'
+ },
+ {
+ 'name': '镇海区',
+ 'code': '330211'
+ },
+ {
+ 'name': '鄞州区',
+ 'code': '330212'
+ },
+ {
+ 'name': '奉化区',
+ 'code': '330213'
+ },
+ {
+ 'name': '象山县',
+ 'code': '330225'
+ },
+ {
+ 'name': '宁海县',
+ 'code': '330226'
+ },
+ {
+ 'name': '余姚市',
+ 'code': '330281'
+ },
+ {
+ 'name': '慈溪市',
+ 'code': '330282'
+ }
+ ]
+ },
+ {
+ 'name': '温州市',
+ 'code': '330300',
+ 'children': [
+ {
+ 'name': '鹿城区',
+ 'code': '330302'
+ },
+ {
+ 'name': '龙湾区',
+ 'code': '330303'
+ },
+ {
+ 'name': '瓯海区',
+ 'code': '330304'
+ },
+ {
+ 'name': '洞头区',
+ 'code': '330305'
+ },
+ {
+ 'name': '永嘉县',
+ 'code': '330324'
+ },
+ {
+ 'name': '平阳县',
+ 'code': '330326'
+ },
+ {
+ 'name': '苍南县',
+ 'code': '330327'
+ },
+ {
+ 'name': '文成县',
+ 'code': '330328'
+ },
+ {
+ 'name': '泰顺县',
+ 'code': '330329'
+ },
+ {
+ 'name': '瑞安市',
+ 'code': '330381'
+ },
+ {
+ 'name': '乐清市',
+ 'code': '330382'
+ }
+ ]
+ },
+ {
+ 'name': '嘉兴市',
+ 'code': '330400',
+ 'children': [
+ {
+ 'name': '南湖区',
+ 'code': '330402'
+ },
+ {
+ 'name': '秀洲区',
+ 'code': '330411'
+ },
+ {
+ 'name': '嘉善县',
+ 'code': '330421'
+ },
+ {
+ 'name': '海盐县',
+ 'code': '330424'
+ },
+ {
+ 'name': '海宁市',
+ 'code': '330481'
+ },
+ {
+ 'name': '平湖市',
+ 'code': '330482'
+ },
+ {
+ 'name': '桐乡市',
+ 'code': '330483'
+ }
+ ]
+ },
+ {
+ 'name': '湖州市',
+ 'code': '330500',
+ 'children': [
+ {
+ 'name': '吴兴区',
+ 'code': '330502'
+ },
+ {
+ 'name': '南浔区',
+ 'code': '330503'
+ },
+ {
+ 'name': '德清县',
+ 'code': '330521'
+ },
+ {
+ 'name': '长兴县',
+ 'code': '330522'
+ },
+ {
+ 'name': '安吉县',
+ 'code': '330523'
+ }
+ ]
+ },
+ {
+ 'name': '绍兴市',
+ 'code': '330600',
+ 'children': [
+ {
+ 'name': '越城区',
+ 'code': '330602'
+ },
+ {
+ 'name': '柯桥区',
+ 'code': '330603'
+ },
+ {
+ 'name': '上虞区',
+ 'code': '330604'
+ },
+ {
+ 'name': '新昌县',
+ 'code': '330624'
+ },
+ {
+ 'name': '诸暨市',
+ 'code': '330681'
+ },
+ {
+ 'name': '嵊州市',
+ 'code': '330683'
+ }
+ ]
+ },
+ {
+ 'name': '金华市',
+ 'code': '330700',
+ 'children': [
+ {
+ 'name': '婺城区',
+ 'code': '330702'
+ },
+ {
+ 'name': '金东区',
+ 'code': '330703'
+ },
+ {
+ 'name': '武义县',
+ 'code': '330723'
+ },
+ {
+ 'name': '浦江县',
+ 'code': '330726'
+ },
+ {
+ 'name': '磐安县',
+ 'code': '330727'
+ },
+ {
+ 'name': '兰溪市',
+ 'code': '330781'
+ },
+ {
+ 'name': '义乌市',
+ 'code': '330782'
+ },
+ {
+ 'name': '东阳市',
+ 'code': '330783'
+ },
+ {
+ 'name': '永康市',
+ 'code': '330784'
+ }
+ ]
+ },
+ {
+ 'name': '衢州市',
+ 'code': '330800',
+ 'children': [
+ {
+ 'name': '柯城区',
+ 'code': '330802'
+ },
+ {
+ 'name': '衢江区',
+ 'code': '330803'
+ },
+ {
+ 'name': '常山县',
+ 'code': '330822'
+ },
+ {
+ 'name': '开化县',
+ 'code': '330824'
+ },
+ {
+ 'name': '龙游县',
+ 'code': '330825'
+ },
+ {
+ 'name': '江山市',
+ 'code': '330881'
+ }
+ ]
+ },
+ {
+ 'name': '舟山市',
+ 'code': '330900',
+ 'children': [
+ {
+ 'name': '定海区',
+ 'code': '330902'
+ },
+ {
+ 'name': '普陀区',
+ 'code': '330903'
+ },
+ {
+ 'name': '岱山县',
+ 'code': '330921'
+ },
+ {
+ 'name': '嵊泗县',
+ 'code': '330922'
+ }
+ ]
+ },
+ {
+ 'name': '台州市',
+ 'code': '331000',
+ 'children': [
+ {
+ 'name': '椒江区',
+ 'code': '331002'
+ },
+ {
+ 'name': '黄岩区',
+ 'code': '331003'
+ },
+ {
+ 'name': '路桥区',
+ 'code': '331004'
+ },
+ {
+ 'name': '三门县',
+ 'code': '331022'
+ },
+ {
+ 'name': '天台县',
+ 'code': '331023'
+ },
+ {
+ 'name': '仙居县',
+ 'code': '331024'
+ },
+ {
+ 'name': '温岭市',
+ 'code': '331081'
+ },
+ {
+ 'name': '临海市',
+ 'code': '331082'
+ },
+ {
+ 'name': '玉环市',
+ 'code': '331083'
+ }
+ ]
+ },
+ {
+ 'name': '丽水市',
+ 'code': '331100',
+ 'children': [
+ {
+ 'name': '莲都区',
+ 'code': '331102'
+ },
+ {
+ 'name': '青田县',
+ 'code': '331121'
+ },
+ {
+ 'name': '缙云县',
+ 'code': '331122'
+ },
+ {
+ 'name': '遂昌县',
+ 'code': '331123'
+ },
+ {
+ 'name': '松阳县',
+ 'code': '331124'
+ },
+ {
+ 'name': '云和县',
+ 'code': '331125'
+ },
+ {
+ 'name': '庆元县',
+ 'code': '331126'
+ },
+ {
+ 'name': '景宁畲族自治县',
+ 'code': '331127'
+ },
+ {
+ 'name': '龙泉市',
+ 'code': '331181'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '安徽省',
+ 'code': '340000',
+ 'region': 'east',
+ 'children': [
+ {
+ 'name': '合肥市',
+ 'code': '340100',
+ 'children': [
+ {
+ 'name': '瑶海区',
+ 'code': '340102'
+ },
+ {
+ 'name': '庐阳区',
+ 'code': '340103'
+ },
+ {
+ 'name': '蜀山区',
+ 'code': '340104'
+ },
+ {
+ 'name': '包河区',
+ 'code': '340111'
+ },
+ {
+ 'name': '长丰县',
+ 'code': '340121'
+ },
+ {
+ 'name': '肥东县',
+ 'code': '340122'
+ },
+ {
+ 'name': '肥西县',
+ 'code': '340123'
+ },
+ {
+ 'name': '庐江县',
+ 'code': '340124'
+ },
+ {
+ 'name': '巢湖市',
+ 'code': '340181'
+ }
+ ]
+ },
+ {
+ 'name': '芜湖市',
+ 'code': '340200',
+ 'children': [
+ {
+ 'name': '镜湖区',
+ 'code': '340202'
+ },
+ {
+ 'name': '弋江区',
+ 'code': '340203'
+ },
+ {
+ 'name': '鸠江区',
+ 'code': '340207'
+ },
+ {
+ 'name': '三山区',
+ 'code': '340208'
+ },
+ {
+ 'name': '芜湖县',
+ 'code': '340221'
+ },
+ {
+ 'name': '繁昌县',
+ 'code': '340222'
+ },
+ {
+ 'name': '南陵县',
+ 'code': '340223'
+ },
+ {
+ 'name': '无为县',
+ 'code': '340225'
+ }
+ ]
+ },
+ {
+ 'name': '蚌埠市',
+ 'code': '340300',
+ 'children': [
+ {
+ 'name': '龙子湖区',
+ 'code': '340302'
+ },
+ {
+ 'name': '蚌山区',
+ 'code': '340303'
+ },
+ {
+ 'name': '禹会区',
+ 'code': '340304'
+ },
+ {
+ 'name': '淮上区',
+ 'code': '340311'
+ },
+ {
+ 'name': '怀远县',
+ 'code': '340321'
+ },
+ {
+ 'name': '五河县',
+ 'code': '340322'
+ },
+ {
+ 'name': '固镇县',
+ 'code': '340323'
+ }
+ ]
+ },
+ {
+ 'name': '淮南市',
+ 'code': '340400',
+ 'children': [
+ {
+ 'name': '大通区',
+ 'code': '340402'
+ },
+ {
+ 'name': '田家庵区',
+ 'code': '340403'
+ },
+ {
+ 'name': '谢家集区',
+ 'code': '340404'
+ },
+ {
+ 'name': '八公山区',
+ 'code': '340405'
+ },
+ {
+ 'name': '潘集区',
+ 'code': '340406'
+ },
+ {
+ 'name': '凤台县',
+ 'code': '340421'
+ },
+ {
+ 'name': '寿县',
+ 'code': '340422'
+ }
+ ]
+ },
+ {
+ 'name': '马鞍山市',
+ 'code': '340500',
+ 'children': [
+ {
+ 'name': '花山区',
+ 'code': '340503'
+ },
+ {
+ 'name': '雨山区',
+ 'code': '340504'
+ },
+ {
+ 'name': '博望区',
+ 'code': '340506'
+ },
+ {
+ 'name': '当涂县',
+ 'code': '340521'
+ },
+ {
+ 'name': '含山县',
+ 'code': '340522'
+ },
+ {
+ 'name': '和县',
+ 'code': '340523'
+ }
+ ]
+ },
+ {
+ 'name': '淮北市',
+ 'code': '340600',
+ 'children': [
+ {
+ 'name': '杜集区',
+ 'code': '340602'
+ },
+ {
+ 'name': '相山区',
+ 'code': '340603'
+ },
+ {
+ 'name': '烈山区',
+ 'code': '340604'
+ },
+ {
+ 'name': '濉溪县',
+ 'code': '340621'
+ }
+ ]
+ },
+ {
+ 'name': '铜陵市',
+ 'code': '340700',
+ 'children': [
+ {
+ 'name': '铜官区',
+ 'code': '340705'
+ },
+ {
+ 'name': '义安区',
+ 'code': '340706'
+ },
+ {
+ 'name': '郊区',
+ 'code': '340711'
+ },
+ {
+ 'name': '枞阳县',
+ 'code': '340722'
+ }
+ ]
+ },
+ {
+ 'name': '安庆市',
+ 'code': '340800',
+ 'children': [
+ {
+ 'name': '迎江区',
+ 'code': '340802'
+ },
+ {
+ 'name': '大观区',
+ 'code': '340803'
+ },
+ {
+ 'name': '宜秀区',
+ 'code': '340811'
+ },
+ {
+ 'name': '怀宁县',
+ 'code': '340822'
+ },
+ {
+ 'name': '太湖县',
+ 'code': '340825'
+ },
+ {
+ 'name': '宿松县',
+ 'code': '340826'
+ },
+ {
+ 'name': '望江县',
+ 'code': '340827'
+ },
+ {
+ 'name': '岳西县',
+ 'code': '340828'
+ },
+ {
+ 'name': '桐城市',
+ 'code': '340881'
+ },
+ {
+ 'name': '潜山市',
+ 'code': '340882'
+ }
+ ]
+ },
+ {
+ 'name': '黄山市',
+ 'code': '341000',
+ 'children': [
+ {
+ 'name': '屯溪区',
+ 'code': '341002'
+ },
+ {
+ 'name': '黄山区',
+ 'code': '341003'
+ },
+ {
+ 'name': '徽州区',
+ 'code': '341004'
+ },
+ {
+ 'name': '歙县',
+ 'code': '341021'
+ },
+ {
+ 'name': '休宁县',
+ 'code': '341022'
+ },
+ {
+ 'name': '黟县',
+ 'code': '341023'
+ },
+ {
+ 'name': '祁门县',
+ 'code': '341024'
+ }
+ ]
+ },
+ {
+ 'name': '滁州市',
+ 'code': '341100',
+ 'children': [
+ {
+ 'name': '琅琊区',
+ 'code': '341102'
+ },
+ {
+ 'name': '南谯区',
+ 'code': '341103'
+ },
+ {
+ 'name': '来安县',
+ 'code': '341122'
+ },
+ {
+ 'name': '全椒县',
+ 'code': '341124'
+ },
+ {
+ 'name': '定远县',
+ 'code': '341125'
+ },
+ {
+ 'name': '凤阳县',
+ 'code': '341126'
+ },
+ {
+ 'name': '天长市',
+ 'code': '341181'
+ },
+ {
+ 'name': '明光市',
+ 'code': '341182'
+ }
+ ]
+ },
+ {
+ 'name': '阜阳市',
+ 'code': '341200',
+ 'children': [
+ {
+ 'name': '颍州区',
+ 'code': '341202'
+ },
+ {
+ 'name': '颍东区',
+ 'code': '341203'
+ },
+ {
+ 'name': '颍泉区',
+ 'code': '341204'
+ },
+ {
+ 'name': '临泉县',
+ 'code': '341221'
+ },
+ {
+ 'name': '太和县',
+ 'code': '341222'
+ },
+ {
+ 'name': '阜南县',
+ 'code': '341225'
+ },
+ {
+ 'name': '颍上县',
+ 'code': '341226'
+ },
+ {
+ 'name': '界首市',
+ 'code': '341282'
+ }
+ ]
+ },
+ {
+ 'name': '宿州市',
+ 'code': '341300',
+ 'children': [
+ {
+ 'name': '埇桥区',
+ 'code': '341302'
+ },
+ {
+ 'name': '砀山县',
+ 'code': '341321'
+ },
+ {
+ 'name': '萧县',
+ 'code': '341322'
+ },
+ {
+ 'name': '灵璧县',
+ 'code': '341323'
+ },
+ {
+ 'name': '泗县',
+ 'code': '341324'
+ }
+ ]
+ },
+ {
+ 'name': '六安市',
+ 'code': '341500',
+ 'children': [
+ {
+ 'name': '金安区',
+ 'code': '341502'
+ },
+ {
+ 'name': '裕安区',
+ 'code': '341503'
+ },
+ {
+ 'name': '叶集区',
+ 'code': '341504'
+ },
+ {
+ 'name': '霍邱县',
+ 'code': '341522'
+ },
+ {
+ 'name': '舒城县',
+ 'code': '341523'
+ },
+ {
+ 'name': '金寨县',
+ 'code': '341524'
+ },
+ {
+ 'name': '霍山县',
+ 'code': '341525'
+ }
+ ]
+ },
+ {
+ 'name': '亳州市',
+ 'code': '341600',
+ 'children': [
+ {
+ 'name': '谯城区',
+ 'code': '341602'
+ },
+ {
+ 'name': '涡阳县',
+ 'code': '341621'
+ },
+ {
+ 'name': '蒙城县',
+ 'code': '341622'
+ },
+ {
+ 'name': '利辛县',
+ 'code': '341623'
+ }
+ ]
+ },
+ {
+ 'name': '池州市',
+ 'code': '341700',
+ 'children': [
+ {
+ 'name': '贵池区',
+ 'code': '341702'
+ },
+ {
+ 'name': '东至县',
+ 'code': '341721'
+ },
+ {
+ 'name': '石台县',
+ 'code': '341722'
+ },
+ {
+ 'name': '青阳县',
+ 'code': '341723'
+ }
+ ]
+ },
+ {
+ 'name': '宣城市',
+ 'code': '341800',
+ 'children': [
+ {
+ 'name': '宣州区',
+ 'code': '341802'
+ },
+ {
+ 'name': '郎溪县',
+ 'code': '341821'
+ },
+ {
+ 'name': '广德县',
+ 'code': '341822'
+ },
+ {
+ 'name': '泾县',
+ 'code': '341823'
+ },
+ {
+ 'name': '绩溪县',
+ 'code': '341824'
+ },
+ {
+ 'name': '旌德县',
+ 'code': '341825'
+ },
+ {
+ 'name': '宁国市',
+ 'code': '341881'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '福建省',
+ 'code': '350000',
+ 'region': 'east',
+ 'children': [
+ {
+ 'name': '福州市',
+ 'code': '350100',
+ 'children': [
+ {
+ 'name': '鼓楼区',
+ 'code': '350102'
+ },
+ {
+ 'name': '台江区',
+ 'code': '350103'
+ },
+ {
+ 'name': '仓山区',
+ 'code': '350104'
+ },
+ {
+ 'name': '马尾区',
+ 'code': '350105'
+ },
+ {
+ 'name': '晋安区',
+ 'code': '350111'
+ },
+ {
+ 'name': '长乐区',
+ 'code': '350112'
+ },
+ {
+ 'name': '闽侯县',
+ 'code': '350121'
+ },
+ {
+ 'name': '连江县',
+ 'code': '350122'
+ },
+ {
+ 'name': '罗源县',
+ 'code': '350123'
+ },
+ {
+ 'name': '闽清县',
+ 'code': '350124'
+ },
+ {
+ 'name': '永泰县',
+ 'code': '350125'
+ },
+ {
+ 'name': '平潭县',
+ 'code': '350128'
+ },
+ {
+ 'name': '福清市',
+ 'code': '350181'
+ }
+ ]
+ },
+ {
+ 'name': '厦门市',
+ 'code': '350200',
+ 'children': [
+ {
+ 'name': '思明区',
+ 'code': '350203'
+ },
+ {
+ 'name': '海沧区',
+ 'code': '350205'
+ },
+ {
+ 'name': '湖里区',
+ 'code': '350206'
+ },
+ {
+ 'name': '集美区',
+ 'code': '350211'
+ },
+ {
+ 'name': '同安区',
+ 'code': '350212'
+ },
+ {
+ 'name': '翔安区',
+ 'code': '350213'
+ }
+ ]
+ },
+ {
+ 'name': '莆田市',
+ 'code': '350300',
+ 'children': [
+ {
+ 'name': '城厢区',
+ 'code': '350302'
+ },
+ {
+ 'name': '涵江区',
+ 'code': '350303'
+ },
+ {
+ 'name': '荔城区',
+ 'code': '350304'
+ },
+ {
+ 'name': '秀屿区',
+ 'code': '350305'
+ },
+ {
+ 'name': '仙游县',
+ 'code': '350322'
+ }
+ ]
+ },
+ {
+ 'name': '三明市',
+ 'code': '350400',
+ 'children': [
+ {
+ 'name': '梅列区',
+ 'code': '350402'
+ },
+ {
+ 'name': '三元区',
+ 'code': '350403'
+ },
+ {
+ 'name': '明溪县',
+ 'code': '350421'
+ },
+ {
+ 'name': '清流县',
+ 'code': '350423'
+ },
+ {
+ 'name': '宁化县',
+ 'code': '350424'
+ },
+ {
+ 'name': '大田县',
+ 'code': '350425'
+ },
+ {
+ 'name': '尤溪县',
+ 'code': '350426'
+ },
+ {
+ 'name': '沙县',
+ 'code': '350427'
+ },
+ {
+ 'name': '将乐县',
+ 'code': '350428'
+ },
+ {
+ 'name': '泰宁县',
+ 'code': '350429'
+ },
+ {
+ 'name': '建宁县',
+ 'code': '350430'
+ },
+ {
+ 'name': '永安市',
+ 'code': '350481'
+ }
+ ]
+ },
+ {
+ 'name': '泉州市',
+ 'code': '350500',
+ 'children': [
+ {
+ 'name': '鲤城区',
+ 'code': '350502'
+ },
+ {
+ 'name': '丰泽区',
+ 'code': '350503'
+ },
+ {
+ 'name': '洛江区',
+ 'code': '350504'
+ },
+ {
+ 'name': '泉港区',
+ 'code': '350505'
+ },
+ {
+ 'name': '惠安县',
+ 'code': '350521'
+ },
+ {
+ 'name': '安溪县',
+ 'code': '350524'
+ },
+ {
+ 'name': '永春县',
+ 'code': '350525'
+ },
+ {
+ 'name': '德化县',
+ 'code': '350526'
+ },
+ {
+ 'name': '金门县',
+ 'code': '350527'
+ },
+ {
+ 'name': '石狮市',
+ 'code': '350581'
+ },
+ {
+ 'name': '晋江市',
+ 'code': '350582'
+ },
+ {
+ 'name': '南安市',
+ 'code': '350583'
+ }
+ ]
+ },
+ {
+ 'name': '漳州市',
+ 'code': '350600',
+ 'children': [
+ {
+ 'name': '芗城区',
+ 'code': '350602'
+ },
+ {
+ 'name': '龙文区',
+ 'code': '350603'
+ },
+ {
+ 'name': '云霄县',
+ 'code': '350622'
+ },
+ {
+ 'name': '漳浦县',
+ 'code': '350623'
+ },
+ {
+ 'name': '诏安县',
+ 'code': '350624'
+ },
+ {
+ 'name': '长泰县',
+ 'code': '350625'
+ },
+ {
+ 'name': '东山县',
+ 'code': '350626'
+ },
+ {
+ 'name': '南靖县',
+ 'code': '350627'
+ },
+ {
+ 'name': '平和县',
+ 'code': '350628'
+ },
+ {
+ 'name': '华安县',
+ 'code': '350629'
+ },
+ {
+ 'name': '龙海市',
+ 'code': '350681'
+ }
+ ]
+ },
+ {
+ 'name': '南平市',
+ 'code': '350700',
+ 'children': [
+ {
+ 'name': '延平区',
+ 'code': '350702'
+ },
+ {
+ 'name': '建阳区',
+ 'code': '350703'
+ },
+ {
+ 'name': '顺昌县',
+ 'code': '350721'
+ },
+ {
+ 'name': '浦城县',
+ 'code': '350722'
+ },
+ {
+ 'name': '光泽县',
+ 'code': '350723'
+ },
+ {
+ 'name': '松溪县',
+ 'code': '350724'
+ },
+ {
+ 'name': '政和县',
+ 'code': '350725'
+ },
+ {
+ 'name': '邵武市',
+ 'code': '350781'
+ },
+ {
+ 'name': '武夷山市',
+ 'code': '350782'
+ },
+ {
+ 'name': '建瓯市',
+ 'code': '350783'
+ }
+ ]
+ },
+ {
+ 'name': '龙岩市',
+ 'code': '350800',
+ 'children': [
+ {
+ 'name': '新罗区',
+ 'code': '350802'
+ },
+ {
+ 'name': '永定区',
+ 'code': '350803'
+ },
+ {
+ 'name': '长汀县',
+ 'code': '350821'
+ },
+ {
+ 'name': '上杭县',
+ 'code': '350823'
+ },
+ {
+ 'name': '武平县',
+ 'code': '350824'
+ },
+ {
+ 'name': '连城县',
+ 'code': '350825'
+ },
+ {
+ 'name': '漳平市',
+ 'code': '350881'
+ }
+ ]
+ },
+ {
+ 'name': '宁德市',
+ 'code': '350900',
+ 'children': [
+ {
+ 'name': '蕉城区',
+ 'code': '350902'
+ },
+ {
+ 'name': '霞浦县',
+ 'code': '350921'
+ },
+ {
+ 'name': '古田县',
+ 'code': '350922'
+ },
+ {
+ 'name': '屏南县',
+ 'code': '350923'
+ },
+ {
+ 'name': '寿宁县',
+ 'code': '350924'
+ },
+ {
+ 'name': '周宁县',
+ 'code': '350925'
+ },
+ {
+ 'name': '柘荣县',
+ 'code': '350926'
+ },
+ {
+ 'name': '福安市',
+ 'code': '350981'
+ },
+ {
+ 'name': '福鼎市',
+ 'code': '350982'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '江西省',
+ 'code': '360000',
+ 'region': 'east',
+ 'children': [
+ {
+ 'name': '南昌市',
+ 'code': '360100',
+ 'children': [
+ {
+ 'name': '东湖区',
+ 'code': '360102'
+ },
+ {
+ 'name': '西湖区',
+ 'code': '360103'
+ },
+ {
+ 'name': '青云谱区',
+ 'code': '360104'
+ },
+ {
+ 'name': '湾里区',
+ 'code': '360105'
+ },
+ {
+ 'name': '青山湖区',
+ 'code': '360111'
+ },
+ {
+ 'name': '新建区',
+ 'code': '360112'
+ },
+ {
+ 'name': '南昌县',
+ 'code': '360121'
+ },
+ {
+ 'name': '安义县',
+ 'code': '360123'
+ },
+ {
+ 'name': '进贤县',
+ 'code': '360124'
+ }
+ ]
+ },
+ {
+ 'name': '景德镇市',
+ 'code': '360200',
+ 'children': [
+ {
+ 'name': '昌江区',
+ 'code': '360202'
+ },
+ {
+ 'name': '珠山区',
+ 'code': '360203'
+ },
+ {
+ 'name': '浮梁县',
+ 'code': '360222'
+ },
+ {
+ 'name': '乐平市',
+ 'code': '360281'
+ }
+ ]
+ },
+ {
+ 'name': '萍乡市',
+ 'code': '360300',
+ 'children': [
+ {
+ 'name': '安源区',
+ 'code': '360302'
+ },
+ {
+ 'name': '湘东区',
+ 'code': '360313'
+ },
+ {
+ 'name': '莲花县',
+ 'code': '360321'
+ },
+ {
+ 'name': '上栗县',
+ 'code': '360322'
+ },
+ {
+ 'name': '芦溪县',
+ 'code': '360323'
+ }
+ ]
+ },
+ {
+ 'name': '九江市',
+ 'code': '360400',
+ 'children': [
+ {
+ 'name': '濂溪区',
+ 'code': '360402'
+ },
+ {
+ 'name': '浔阳区',
+ 'code': '360403'
+ },
+ {
+ 'name': '柴桑区',
+ 'code': '360404'
+ },
+ {
+ 'name': '武宁县',
+ 'code': '360423'
+ },
+ {
+ 'name': '修水县',
+ 'code': '360424'
+ },
+ {
+ 'name': '永修县',
+ 'code': '360425'
+ },
+ {
+ 'name': '德安县',
+ 'code': '360426'
+ },
+ {
+ 'name': '都昌县',
+ 'code': '360428'
+ },
+ {
+ 'name': '湖口县',
+ 'code': '360429'
+ },
+ {
+ 'name': '彭泽县',
+ 'code': '360430'
+ },
+ {
+ 'name': '瑞昌市',
+ 'code': '360481'
+ },
+ {
+ 'name': '共青城市',
+ 'code': '360482'
+ },
+ {
+ 'name': '庐山市',
+ 'code': '360483'
+ }
+ ]
+ },
+ {
+ 'name': '新余市',
+ 'code': '360500',
+ 'children': [
+ {
+ 'name': '渝水区',
+ 'code': '360502'
+ },
+ {
+ 'name': '分宜县',
+ 'code': '360521'
+ }
+ ]
+ },
+ {
+ 'name': '鹰潭市',
+ 'code': '360600',
+ 'children': [
+ {
+ 'name': '月湖区',
+ 'code': '360602'
+ },
+ {
+ 'name': '余江区',
+ 'code': '360603'
+ },
+ {
+ 'name': '贵溪市',
+ 'code': '360681'
+ }
+ ]
+ },
+ {
+ 'name': '赣州市',
+ 'code': '360700',
+ 'children': [
+ {
+ 'name': '章贡区',
+ 'code': '360702'
+ },
+ {
+ 'name': '南康区',
+ 'code': '360703'
+ },
+ {
+ 'name': '赣县区',
+ 'code': '360704'
+ },
+ {
+ 'name': '信丰县',
+ 'code': '360722'
+ },
+ {
+ 'name': '大余县',
+ 'code': '360723'
+ },
+ {
+ 'name': '上犹县',
+ 'code': '360724'
+ },
+ {
+ 'name': '崇义县',
+ 'code': '360725'
+ },
+ {
+ 'name': '安远县',
+ 'code': '360726'
+ },
+ {
+ 'name': '龙南县',
+ 'code': '360727'
+ },
+ {
+ 'name': '定南县',
+ 'code': '360728'
+ },
+ {
+ 'name': '全南县',
+ 'code': '360729'
+ },
+ {
+ 'name': '宁都县',
+ 'code': '360730'
+ },
+ {
+ 'name': '于都县',
+ 'code': '360731'
+ },
+ {
+ 'name': '兴国县',
+ 'code': '360732'
+ },
+ {
+ 'name': '会昌县',
+ 'code': '360733'
+ },
+ {
+ 'name': '寻乌县',
+ 'code': '360734'
+ },
+ {
+ 'name': '石城县',
+ 'code': '360735'
+ },
+ {
+ 'name': '瑞金市',
+ 'code': '360781'
+ }
+ ]
+ },
+ {
+ 'name': '吉安市',
+ 'code': '360800',
+ 'children': [
+ {
+ 'name': '吉州区',
+ 'code': '360802'
+ },
+ {
+ 'name': '青原区',
+ 'code': '360803'
+ },
+ {
+ 'name': '吉安县',
+ 'code': '360821'
+ },
+ {
+ 'name': '吉水县',
+ 'code': '360822'
+ },
+ {
+ 'name': '峡江县',
+ 'code': '360823'
+ },
+ {
+ 'name': '新干县',
+ 'code': '360824'
+ },
+ {
+ 'name': '永丰县',
+ 'code': '360825'
+ },
+ {
+ 'name': '泰和县',
+ 'code': '360826'
+ },
+ {
+ 'name': '遂川县',
+ 'code': '360827'
+ },
+ {
+ 'name': '万安县',
+ 'code': '360828'
+ },
+ {
+ 'name': '安福县',
+ 'code': '360829'
+ },
+ {
+ 'name': '永新县',
+ 'code': '360830'
+ },
+ {
+ 'name': '井冈山市',
+ 'code': '360881'
+ }
+ ]
+ },
+ {
+ 'name': '宜春市',
+ 'code': '360900',
+ 'children': [
+ {
+ 'name': '袁州区',
+ 'code': '360902'
+ },
+ {
+ 'name': '奉新县',
+ 'code': '360921'
+ },
+ {
+ 'name': '万载县',
+ 'code': '360922'
+ },
+ {
+ 'name': '上高县',
+ 'code': '360923'
+ },
+ {
+ 'name': '宜丰县',
+ 'code': '360924'
+ },
+ {
+ 'name': '靖安县',
+ 'code': '360925'
+ },
+ {
+ 'name': '铜鼓县',
+ 'code': '360926'
+ },
+ {
+ 'name': '丰城市',
+ 'code': '360981'
+ },
+ {
+ 'name': '樟树市',
+ 'code': '360982'
+ },
+ {
+ 'name': '高安市',
+ 'code': '360983'
+ }
+ ]
+ },
+ {
+ 'name': '抚州市',
+ 'code': '361000',
+ 'children': [
+ {
+ 'name': '临川区',
+ 'code': '361002'
+ },
+ {
+ 'name': '东乡区',
+ 'code': '361003'
+ },
+ {
+ 'name': '南城县',
+ 'code': '361021'
+ },
+ {
+ 'name': '黎川县',
+ 'code': '361022'
+ },
+ {
+ 'name': '南丰县',
+ 'code': '361023'
+ },
+ {
+ 'name': '崇仁县',
+ 'code': '361024'
+ },
+ {
+ 'name': '乐安县',
+ 'code': '361025'
+ },
+ {
+ 'name': '宜黄县',
+ 'code': '361026'
+ },
+ {
+ 'name': '金溪县',
+ 'code': '361027'
+ },
+ {
+ 'name': '资溪县',
+ 'code': '361028'
+ },
+ {
+ 'name': '广昌县',
+ 'code': '361030'
+ }
+ ]
+ },
+ {
+ 'name': '上饶市',
+ 'code': '361100',
+ 'children': [
+ {
+ 'name': '信州区',
+ 'code': '361102'
+ },
+ {
+ 'name': '广丰区',
+ 'code': '361103'
+ },
+ {
+ 'name': '上饶县',
+ 'code': '361121'
+ },
+ {
+ 'name': '玉山县',
+ 'code': '361123'
+ },
+ {
+ 'name': '铅山县',
+ 'code': '361124'
+ },
+ {
+ 'name': '横峰县',
+ 'code': '361125'
+ },
+ {
+ 'name': '弋阳县',
+ 'code': '361126'
+ },
+ {
+ 'name': '余干县',
+ 'code': '361127'
+ },
+ {
+ 'name': '鄱阳县',
+ 'code': '361128'
+ },
+ {
+ 'name': '万年县',
+ 'code': '361129'
+ },
+ {
+ 'name': '婺源县',
+ 'code': '361130'
+ },
+ {
+ 'name': '德兴市',
+ 'code': '361181'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '山东省',
+ 'code': '370000',
+ 'region': 'east',
+ 'children': [
+ {
+ 'name': '济南市',
+ 'code': '370100',
+ 'children': [
+ {
+ 'name': '历下区',
+ 'code': '370102'
+ },
+ {
+ 'name': '市中区',
+ 'code': '370103'
+ },
+ {
+ 'name': '槐荫区',
+ 'code': '370104'
+ },
+ {
+ 'name': '天桥区',
+ 'code': '370105'
+ },
+ {
+ 'name': '历城区',
+ 'code': '370112'
+ },
+ {
+ 'name': '长清区',
+ 'code': '370113'
+ },
+ {
+ 'name': '章丘区',
+ 'code': '370114'
+ },
+ {
+ 'name': '济阳区',
+ 'code': '370115'
+ },
+ {
+ 'name': '莱芜区',
+ 'code': '370116'
+ },
+ {
+ 'name': '钢城区',
+ 'code': '370117'
+ },
+ {
+ 'name': '平阴县',
+ 'code': '370124'
+ },
+ {
+ 'name': '商河县',
+ 'code': '370126'
+ }
+ ]
+ },
+ {
+ 'name': '青岛市',
+ 'code': '370200',
+ 'children': [
+ {
+ 'name': '市南区',
+ 'code': '370202'
+ },
+ {
+ 'name': '市北区',
+ 'code': '370203'
+ },
+ {
+ 'name': '黄岛区',
+ 'code': '370211'
+ },
+ {
+ 'name': '崂山区',
+ 'code': '370212'
+ },
+ {
+ 'name': '李沧区',
+ 'code': '370213'
+ },
+ {
+ 'name': '城阳区',
+ 'code': '370214'
+ },
+ {
+ 'name': '即墨区',
+ 'code': '370215'
+ },
+ {
+ 'name': '胶州市',
+ 'code': '370281'
+ },
+ {
+ 'name': '平度市',
+ 'code': '370283'
+ },
+ {
+ 'name': '莱西市',
+ 'code': '370285'
+ }
+ ]
+ },
+ {
+ 'name': '淄博市',
+ 'code': '370300',
+ 'children': [
+ {
+ 'name': '淄川区',
+ 'code': '370302'
+ },
+ {
+ 'name': '张店区',
+ 'code': '370303'
+ },
+ {
+ 'name': '博山区',
+ 'code': '370304'
+ },
+ {
+ 'name': '临淄区',
+ 'code': '370305'
+ },
+ {
+ 'name': '周村区',
+ 'code': '370306'
+ },
+ {
+ 'name': '桓台县',
+ 'code': '370321'
+ },
+ {
+ 'name': '高青县',
+ 'code': '370322'
+ },
+ {
+ 'name': '沂源县',
+ 'code': '370323'
+ }
+ ]
+ },
+ {
+ 'name': '枣庄市',
+ 'code': '370400',
+ 'children': [
+ {
+ 'name': '市中区',
+ 'code': '370402'
+ },
+ {
+ 'name': '薛城区',
+ 'code': '370403'
+ },
+ {
+ 'name': '峄城区',
+ 'code': '370404'
+ },
+ {
+ 'name': '台儿庄区',
+ 'code': '370405'
+ },
+ {
+ 'name': '山亭区',
+ 'code': '370406'
+ },
+ {
+ 'name': '滕州市',
+ 'code': '370481'
+ }
+ ]
+ },
+ {
+ 'name': '东营市',
+ 'code': '370500',
+ 'children': [
+ {
+ 'name': '东营区',
+ 'code': '370502'
+ },
+ {
+ 'name': '河口区',
+ 'code': '370503'
+ },
+ {
+ 'name': '垦利区',
+ 'code': '370505'
+ },
+ {
+ 'name': '利津县',
+ 'code': '370522'
+ },
+ {
+ 'name': '广饶县',
+ 'code': '370523'
+ }
+ ]
+ },
+ {
+ 'name': '烟台市',
+ 'code': '370600',
+ 'children': [
+ {
+ 'name': '芝罘区',
+ 'code': '370602'
+ },
+ {
+ 'name': '福山区',
+ 'code': '370611'
+ },
+ {
+ 'name': '牟平区',
+ 'code': '370612'
+ },
+ {
+ 'name': '莱山区',
+ 'code': '370613'
+ },
+ {
+ 'name': '长岛县',
+ 'code': '370634'
+ },
+ {
+ 'name': '龙口市',
+ 'code': '370681'
+ },
+ {
+ 'name': '莱阳市',
+ 'code': '370682'
+ },
+ {
+ 'name': '莱州市',
+ 'code': '370683'
+ },
+ {
+ 'name': '蓬莱市',
+ 'code': '370684'
+ },
+ {
+ 'name': '招远市',
+ 'code': '370685'
+ },
+ {
+ 'name': '栖霞市',
+ 'code': '370686'
+ },
+ {
+ 'name': '海阳市',
+ 'code': '370687'
+ }
+ ]
+ },
+ {
+ 'name': '潍坊市',
+ 'code': '370700',
+ 'children': [
+ {
+ 'name': '潍城区',
+ 'code': '370702'
+ },
+ {
+ 'name': '寒亭区',
+ 'code': '370703'
+ },
+ {
+ 'name': '坊子区',
+ 'code': '370704'
+ },
+ {
+ 'name': '奎文区',
+ 'code': '370705'
+ },
+ {
+ 'name': '临朐县',
+ 'code': '370724'
+ },
+ {
+ 'name': '昌乐县',
+ 'code': '370725'
+ },
+ {
+ 'name': '青州市',
+ 'code': '370781'
+ },
+ {
+ 'name': '诸城市',
+ 'code': '370782'
+ },
+ {
+ 'name': '寿光市',
+ 'code': '370783'
+ },
+ {
+ 'name': '安丘市',
+ 'code': '370784'
+ },
+ {
+ 'name': '高密市',
+ 'code': '370785'
+ },
+ {
+ 'name': '昌邑市',
+ 'code': '370786'
+ }
+ ]
+ },
+ {
+ 'name': '济宁市',
+ 'code': '370800',
+ 'children': [
+ {
+ 'name': '任城区',
+ 'code': '370811'
+ },
+ {
+ 'name': '兖州区',
+ 'code': '370812'
+ },
+ {
+ 'name': '微山县',
+ 'code': '370826'
+ },
+ {
+ 'name': '鱼台县',
+ 'code': '370827'
+ },
+ {
+ 'name': '金乡县',
+ 'code': '370828'
+ },
+ {
+ 'name': '嘉祥县',
+ 'code': '370829'
+ },
+ {
+ 'name': '汶上县',
+ 'code': '370830'
+ },
+ {
+ 'name': '泗水县',
+ 'code': '370831'
+ },
+ {
+ 'name': '梁山县',
+ 'code': '370832'
+ },
+ {
+ 'name': '曲阜市',
+ 'code': '370881'
+ },
+ {
+ 'name': '邹城市',
+ 'code': '370883'
+ }
+ ]
+ },
+ {
+ 'name': '泰安市',
+ 'code': '370900',
+ 'children': [
+ {
+ 'name': '泰山区',
+ 'code': '370902'
+ },
+ {
+ 'name': '岱岳区',
+ 'code': '370911'
+ },
+ {
+ 'name': '宁阳县',
+ 'code': '370921'
+ },
+ {
+ 'name': '东平县',
+ 'code': '370923'
+ },
+ {
+ 'name': '新泰市',
+ 'code': '370982'
+ },
+ {
+ 'name': '肥城市',
+ 'code': '370983'
+ }
+ ]
+ },
+ {
+ 'name': '威海市',
+ 'code': '371000',
+ 'children': [
+ {
+ 'name': '环翠区',
+ 'code': '371002'
+ },
+ {
+ 'name': '文登区',
+ 'code': '371003'
+ },
+ {
+ 'name': '荣成市',
+ 'code': '371082'
+ },
+ {
+ 'name': '乳山市',
+ 'code': '371083'
+ }
+ ]
+ },
+ {
+ 'name': '日照市',
+ 'code': '371100',
+ 'children': [
+ {
+ 'name': '东港区',
+ 'code': '371102'
+ },
+ {
+ 'name': '岚山区',
+ 'code': '371103'
+ },
+ {
+ 'name': '五莲县',
+ 'code': '371121'
+ },
+ {
+ 'name': '莒县',
+ 'code': '371122'
+ }
+ ]
+ },
+ {
+ 'name': '临沂市',
+ 'code': '371300',
+ 'children': [
+ {
+ 'name': '兰山区',
+ 'code': '371302'
+ },
+ {
+ 'name': '罗庄区',
+ 'code': '371311'
+ },
+ {
+ 'name': '河东区',
+ 'code': '371312'
+ },
+ {
+ 'name': '沂南县',
+ 'code': '371321'
+ },
+ {
+ 'name': '郯城县',
+ 'code': '371322'
+ },
+ {
+ 'name': '沂水县',
+ 'code': '371323'
+ },
+ {
+ 'name': '兰陵县',
+ 'code': '371324'
+ },
+ {
+ 'name': '费县',
+ 'code': '371325'
+ },
+ {
+ 'name': '平邑县',
+ 'code': '371326'
+ },
+ {
+ 'name': '莒南县',
+ 'code': '371327'
+ },
+ {
+ 'name': '蒙阴县',
+ 'code': '371328'
+ },
+ {
+ 'name': '临沭县',
+ 'code': '371329'
+ }
+ ]
+ },
+ {
+ 'name': '德州市',
+ 'code': '371400',
+ 'children': [
+ {
+ 'name': '德城区',
+ 'code': '371402'
+ },
+ {
+ 'name': '陵城区',
+ 'code': '371403'
+ },
+ {
+ 'name': '宁津县',
+ 'code': '371422'
+ },
+ {
+ 'name': '庆云县',
+ 'code': '371423'
+ },
+ {
+ 'name': '临邑县',
+ 'code': '371424'
+ },
+ {
+ 'name': '齐河县',
+ 'code': '371425'
+ },
+ {
+ 'name': '平原县',
+ 'code': '371426'
+ },
+ {
+ 'name': '夏津县',
+ 'code': '371427'
+ },
+ {
+ 'name': '武城县',
+ 'code': '371428'
+ },
+ {
+ 'name': '乐陵市',
+ 'code': '371481'
+ },
+ {
+ 'name': '禹城市',
+ 'code': '371482'
+ }
+ ]
+ },
+ {
+ 'name': '聊城市',
+ 'code': '371500',
+ 'children': [
+ {
+ 'name': '东昌府区',
+ 'code': '371502'
+ },
+ {
+ 'name': '阳谷县',
+ 'code': '371521'
+ },
+ {
+ 'name': '莘县',
+ 'code': '371522'
+ },
+ {
+ 'name': '茌平县',
+ 'code': '371523'
+ },
+ {
+ 'name': '东阿县',
+ 'code': '371524'
+ },
+ {
+ 'name': '冠县',
+ 'code': '371525'
+ },
+ {
+ 'name': '高唐县',
+ 'code': '371526'
+ },
+ {
+ 'name': '临清市',
+ 'code': '371581'
+ }
+ ]
+ },
+ {
+ 'name': '滨州市',
+ 'code': '371600',
+ 'children': [
+ {
+ 'name': '滨城区',
+ 'code': '371602'
+ },
+ {
+ 'name': '沾化区',
+ 'code': '371603'
+ },
+ {
+ 'name': '惠民县',
+ 'code': '371621'
+ },
+ {
+ 'name': '阳信县',
+ 'code': '371622'
+ },
+ {
+ 'name': '无棣县',
+ 'code': '371623'
+ },
+ {
+ 'name': '博兴县',
+ 'code': '371625'
+ },
+ {
+ 'name': '邹平市',
+ 'code': '371681'
+ }
+ ]
+ },
+ {
+ 'name': '菏泽市',
+ 'code': '371700',
+ 'children': [
+ {
+ 'name': '牡丹区',
+ 'code': '371702'
+ },
+ {
+ 'name': '定陶区',
+ 'code': '371703'
+ },
+ {
+ 'name': '曹县',
+ 'code': '371721'
+ },
+ {
+ 'name': '单县',
+ 'code': '371722'
+ },
+ {
+ 'name': '成武县',
+ 'code': '371723'
+ },
+ {
+ 'name': '巨野县',
+ 'code': '371724'
+ },
+ {
+ 'name': '郓城县',
+ 'code': '371725'
+ },
+ {
+ 'name': '鄄城县',
+ 'code': '371726'
+ },
+ {
+ 'name': '东明县',
+ 'code': '371728'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '河南省',
+ 'code': '410000',
+ 'region': 'central',
+ 'children': [
+ {
+ 'name': '郑州市',
+ 'code': '410100',
+ 'children': [
+ {
+ 'name': '中原区',
+ 'code': '410102'
+ },
+ {
+ 'name': '二七区',
+ 'code': '410103'
+ },
+ {
+ 'name': '管城回族区',
+ 'code': '410104'
+ },
+ {
+ 'name': '金水区',
+ 'code': '410105'
+ },
+ {
+ 'name': '上街区',
+ 'code': '410106'
+ },
+ {
+ 'name': '惠济区',
+ 'code': '410108'
+ },
+ {
+ 'name': '中牟县',
+ 'code': '410122'
+ },
+ {
+ 'name': '巩义市',
+ 'code': '410181'
+ },
+ {
+ 'name': '荥阳市',
+ 'code': '410182'
+ },
+ {
+ 'name': '新密市',
+ 'code': '410183'
+ },
+ {
+ 'name': '新郑市',
+ 'code': '410184'
+ },
+ {
+ 'name': '登封市',
+ 'code': '410185'
+ }
+ ]
+ },
+ {
+ 'name': '开封市',
+ 'code': '410200',
+ 'children': [
+ {
+ 'name': '龙亭区',
+ 'code': '410202'
+ },
+ {
+ 'name': '顺河回族区',
+ 'code': '410203'
+ },
+ {
+ 'name': '鼓楼区',
+ 'code': '410204'
+ },
+ {
+ 'name': '禹王台区',
+ 'code': '410205'
+ },
+ {
+ 'name': '祥符区',
+ 'code': '410212'
+ },
+ {
+ 'name': '杞县',
+ 'code': '410221'
+ },
+ {
+ 'name': '通许县',
+ 'code': '410222'
+ },
+ {
+ 'name': '尉氏县',
+ 'code': '410223'
+ },
+ {
+ 'name': '兰考县',
+ 'code': '410225'
+ }
+ ]
+ },
+ {
+ 'name': '洛阳市',
+ 'code': '410300',
+ 'children': [
+ {
+ 'name': '老城区',
+ 'code': '410302'
+ },
+ {
+ 'name': '西工区',
+ 'code': '410303'
+ },
+ {
+ 'name': '瀍河回族区',
+ 'code': '410304'
+ },
+ {
+ 'name': '涧西区',
+ 'code': '410305'
+ },
+ {
+ 'name': '吉利区',
+ 'code': '410306'
+ },
+ {
+ 'name': '洛龙区',
+ 'code': '410311'
+ },
+ {
+ 'name': '孟津县',
+ 'code': '410322'
+ },
+ {
+ 'name': '新安县',
+ 'code': '410323'
+ },
+ {
+ 'name': '栾川县',
+ 'code': '410324'
+ },
+ {
+ 'name': '嵩县',
+ 'code': '410325'
+ },
+ {
+ 'name': '汝阳县',
+ 'code': '410326'
+ },
+ {
+ 'name': '宜阳县',
+ 'code': '410327'
+ },
+ {
+ 'name': '洛宁县',
+ 'code': '410328'
+ },
+ {
+ 'name': '伊川县',
+ 'code': '410329'
+ },
+ {
+ 'name': '偃师市',
+ 'code': '410381'
+ }
+ ]
+ },
+ {
+ 'name': '平顶山市',
+ 'code': '410400',
+ 'children': [
+ {
+ 'name': '新华区',
+ 'code': '410402'
+ },
+ {
+ 'name': '卫东区',
+ 'code': '410403'
+ },
+ {
+ 'name': '石龙区',
+ 'code': '410404'
+ },
+ {
+ 'name': '湛河区',
+ 'code': '410411'
+ },
+ {
+ 'name': '宝丰县',
+ 'code': '410421'
+ },
+ {
+ 'name': '叶县',
+ 'code': '410422'
+ },
+ {
+ 'name': '鲁山县',
+ 'code': '410423'
+ },
+ {
+ 'name': '郏县',
+ 'code': '410425'
+ },
+ {
+ 'name': '舞钢市',
+ 'code': '410481'
+ },
+ {
+ 'name': '汝州市',
+ 'code': '410482'
+ }
+ ]
+ },
+ {
+ 'name': '安阳市',
+ 'code': '410500',
+ 'children': [
+ {
+ 'name': '文峰区',
+ 'code': '410502'
+ },
+ {
+ 'name': '北关区',
+ 'code': '410503'
+ },
+ {
+ 'name': '殷都区',
+ 'code': '410505'
+ },
+ {
+ 'name': '龙安区',
+ 'code': '410506'
+ },
+ {
+ 'name': '安阳县',
+ 'code': '410522'
+ },
+ {
+ 'name': '汤阴县',
+ 'code': '410523'
+ },
+ {
+ 'name': '滑县',
+ 'code': '410526'
+ },
+ {
+ 'name': '内黄县',
+ 'code': '410527'
+ },
+ {
+ 'name': '林州市',
+ 'code': '410581'
+ }
+ ]
+ },
+ {
+ 'name': '鹤壁市',
+ 'code': '410600',
+ 'children': [
+ {
+ 'name': '鹤山区',
+ 'code': '410602'
+ },
+ {
+ 'name': '山城区',
+ 'code': '410603'
+ },
+ {
+ 'name': '淇滨区',
+ 'code': '410611'
+ },
+ {
+ 'name': '浚县',
+ 'code': '410621'
+ },
+ {
+ 'name': '淇县',
+ 'code': '410622'
+ }
+ ]
+ },
+ {
+ 'name': '新乡市',
+ 'code': '410700',
+ 'children': [
+ {
+ 'name': '红旗区',
+ 'code': '410702'
+ },
+ {
+ 'name': '卫滨区',
+ 'code': '410703'
+ },
+ {
+ 'name': '凤泉区',
+ 'code': '410704'
+ },
+ {
+ 'name': '牧野区',
+ 'code': '410711'
+ },
+ {
+ 'name': '新乡县',
+ 'code': '410721'
+ },
+ {
+ 'name': '获嘉县',
+ 'code': '410724'
+ },
+ {
+ 'name': '原阳县',
+ 'code': '410725'
+ },
+ {
+ 'name': '延津县',
+ 'code': '410726'
+ },
+ {
+ 'name': '封丘县',
+ 'code': '410727'
+ },
+ {
+ 'name': '长垣县',
+ 'code': '410728'
+ },
+ {
+ 'name': '卫辉市',
+ 'code': '410781'
+ },
+ {
+ 'name': '辉县市',
+ 'code': '410782'
+ }
+ ]
+ },
+ {
+ 'name': '焦作市',
+ 'code': '410800',
+ 'children': [
+ {
+ 'name': '解放区',
+ 'code': '410802'
+ },
+ {
+ 'name': '中站区',
+ 'code': '410803'
+ },
+ {
+ 'name': '马村区',
+ 'code': '410804'
+ },
+ {
+ 'name': '山阳区',
+ 'code': '410811'
+ },
+ {
+ 'name': '修武县',
+ 'code': '410821'
+ },
+ {
+ 'name': '博爱县',
+ 'code': '410822'
+ },
+ {
+ 'name': '武陟县',
+ 'code': '410823'
+ },
+ {
+ 'name': '温县',
+ 'code': '410825'
+ },
+ {
+ 'name': '沁阳市',
+ 'code': '410882'
+ },
+ {
+ 'name': '孟州市',
+ 'code': '410883'
+ }
+ ]
+ },
+ {
+ 'name': '濮阳市',
+ 'code': '410900',
+ 'children': [
+ {
+ 'name': '华龙区',
+ 'code': '410902'
+ },
+ {
+ 'name': '清丰县',
+ 'code': '410922'
+ },
+ {
+ 'name': '南乐县',
+ 'code': '410923'
+ },
+ {
+ 'name': '范县',
+ 'code': '410926'
+ },
+ {
+ 'name': '台前县',
+ 'code': '410927'
+ },
+ {
+ 'name': '濮阳县',
+ 'code': '410928'
+ }
+ ]
+ },
+ {
+ 'name': '许昌市',
+ 'code': '411000',
+ 'children': [
+ {
+ 'name': '魏都区',
+ 'code': '411002'
+ },
+ {
+ 'name': '建安区',
+ 'code': '411003'
+ },
+ {
+ 'name': '鄢陵县',
+ 'code': '411024'
+ },
+ {
+ 'name': '襄城县',
+ 'code': '411025'
+ },
+ {
+ 'name': '禹州市',
+ 'code': '411081'
+ },
+ {
+ 'name': '长葛市',
+ 'code': '411082'
+ }
+ ]
+ },
+ {
+ 'name': '漯河市',
+ 'code': '411100',
+ 'children': [
+ {
+ 'name': '源汇区',
+ 'code': '411102'
+ },
+ {
+ 'name': '郾城区',
+ 'code': '411103'
+ },
+ {
+ 'name': '召陵区',
+ 'code': '411104'
+ },
+ {
+ 'name': '舞阳县',
+ 'code': '411121'
+ },
+ {
+ 'name': '临颍县',
+ 'code': '411122'
+ }
+ ]
+ },
+ {
+ 'name': '三门峡市',
+ 'code': '411200',
+ 'children': [
+ {
+ 'name': '湖滨区',
+ 'code': '411202'
+ },
+ {
+ 'name': '陕州区',
+ 'code': '411203'
+ },
+ {
+ 'name': '渑池县',
+ 'code': '411221'
+ },
+ {
+ 'name': '卢氏县',
+ 'code': '411224'
+ },
+ {
+ 'name': '义马市',
+ 'code': '411281'
+ },
+ {
+ 'name': '灵宝市',
+ 'code': '411282'
+ }
+ ]
+ },
+ {
+ 'name': '南阳市',
+ 'code': '411300',
+ 'children': [
+ {
+ 'name': '宛城区',
+ 'code': '411302'
+ },
+ {
+ 'name': '卧龙区',
+ 'code': '411303'
+ },
+ {
+ 'name': '南召县',
+ 'code': '411321'
+ },
+ {
+ 'name': '方城县',
+ 'code': '411322'
+ },
+ {
+ 'name': '西峡县',
+ 'code': '411323'
+ },
+ {
+ 'name': '镇平县',
+ 'code': '411324'
+ },
+ {
+ 'name': '内乡县',
+ 'code': '411325'
+ },
+ {
+ 'name': '淅川县',
+ 'code': '411326'
+ },
+ {
+ 'name': '社旗县',
+ 'code': '411327'
+ },
+ {
+ 'name': '唐河县',
+ 'code': '411328'
+ },
+ {
+ 'name': '新野县',
+ 'code': '411329'
+ },
+ {
+ 'name': '桐柏县',
+ 'code': '411330'
+ },
+ {
+ 'name': '邓州市',
+ 'code': '411381'
+ }
+ ]
+ },
+ {
+ 'name': '商丘市',
+ 'code': '411400',
+ 'children': [
+ {
+ 'name': '梁园区',
+ 'code': '411402'
+ },
+ {
+ 'name': '睢阳区',
+ 'code': '411403'
+ },
+ {
+ 'name': '民权县',
+ 'code': '411421'
+ },
+ {
+ 'name': '睢县',
+ 'code': '411422'
+ },
+ {
+ 'name': '宁陵县',
+ 'code': '411423'
+ },
+ {
+ 'name': '柘城县',
+ 'code': '411424'
+ },
+ {
+ 'name': '虞城县',
+ 'code': '411425'
+ },
+ {
+ 'name': '夏邑县',
+ 'code': '411426'
+ },
+ {
+ 'name': '永城市',
+ 'code': '411481'
+ }
+ ]
+ },
+ {
+ 'name': '信阳市',
+ 'code': '411500',
+ 'children': [
+ {
+ 'name': '浉河区',
+ 'code': '411502'
+ },
+ {
+ 'name': '平桥区',
+ 'code': '411503'
+ },
+ {
+ 'name': '罗山县',
+ 'code': '411521'
+ },
+ {
+ 'name': '光山县',
+ 'code': '411522'
+ },
+ {
+ 'name': '新县',
+ 'code': '411523'
+ },
+ {
+ 'name': '商城县',
+ 'code': '411524'
+ },
+ {
+ 'name': '固始县',
+ 'code': '411525'
+ },
+ {
+ 'name': '潢川县',
+ 'code': '411526'
+ },
+ {
+ 'name': '淮滨县',
+ 'code': '411527'
+ },
+ {
+ 'name': '息县',
+ 'code': '411528'
+ }
+ ]
+ },
+ {
+ 'name': '周口市',
+ 'code': '411600',
+ 'children': [
+ {
+ 'name': '川汇区',
+ 'code': '411602'
+ },
+ {
+ 'name': '扶沟县',
+ 'code': '411621'
+ },
+ {
+ 'name': '西华县',
+ 'code': '411622'
+ },
+ {
+ 'name': '商水县',
+ 'code': '411623'
+ },
+ {
+ 'name': '沈丘县',
+ 'code': '411624'
+ },
+ {
+ 'name': '郸城县',
+ 'code': '411625'
+ },
+ {
+ 'name': '淮阳县',
+ 'code': '411626'
+ },
+ {
+ 'name': '太康县',
+ 'code': '411627'
+ },
+ {
+ 'name': '鹿邑县',
+ 'code': '411628'
+ },
+ {
+ 'name': '项城市',
+ 'code': '411681'
+ }
+ ]
+ },
+ {
+ 'name': '驻马店市',
+ 'code': '411700',
+ 'children': [
+ {
+ 'name': '驿城区',
+ 'code': '411702'
+ },
+ {
+ 'name': '西平县',
+ 'code': '411721'
+ },
+ {
+ 'name': '上蔡县',
+ 'code': '411722'
+ },
+ {
+ 'name': '平舆县',
+ 'code': '411723'
+ },
+ {
+ 'name': '正阳县',
+ 'code': '411724'
+ },
+ {
+ 'name': '确山县',
+ 'code': '411725'
+ },
+ {
+ 'name': '泌阳县',
+ 'code': '411726'
+ },
+ {
+ 'name': '汝南县',
+ 'code': '411727'
+ },
+ {
+ 'name': '遂平县',
+ 'code': '411728'
+ },
+ {
+ 'name': '新蔡县',
+ 'code': '411729'
+ }
+ ]
+ },
+ {
+ 'name': '直辖县',
+ 'code': '419000',
+ 'children': [
+ {
+ 'name': '济源市',
+ 'code': '419001'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '湖北省',
+ 'code': '420000',
+ 'region': 'central',
+ 'children': [
+ {
+ 'name': '武汉市',
+ 'code': '420100',
+ 'children': [
+ {
+ 'name': '江岸区',
+ 'code': '420102'
+ },
+ {
+ 'name': '江汉区',
+ 'code': '420103'
+ },
+ {
+ 'name': '硚口区',
+ 'code': '420104'
+ },
+ {
+ 'name': '汉阳区',
+ 'code': '420105'
+ },
+ {
+ 'name': '武昌区',
+ 'code': '420106'
+ },
+ {
+ 'name': '青山区',
+ 'code': '420107'
+ },
+ {
+ 'name': '洪山区',
+ 'code': '420111'
+ },
+ {
+ 'name': '东西湖区',
+ 'code': '420112'
+ },
+ {
+ 'name': '汉南区',
+ 'code': '420113'
+ },
+ {
+ 'name': '蔡甸区',
+ 'code': '420114'
+ },
+ {
+ 'name': '江夏区',
+ 'code': '420115'
+ },
+ {
+ 'name': '黄陂区',
+ 'code': '420116'
+ },
+ {
+ 'name': '新洲区',
+ 'code': '420117'
+ }
+ ]
+ },
+ {
+ 'name': '黄石市',
+ 'code': '420200',
+ 'children': [
+ {
+ 'name': '黄石港区',
+ 'code': '420202'
+ },
+ {
+ 'name': '西塞山区',
+ 'code': '420203'
+ },
+ {
+ 'name': '下陆区',
+ 'code': '420204'
+ },
+ {
+ 'name': '铁山区',
+ 'code': '420205'
+ },
+ {
+ 'name': '阳新县',
+ 'code': '420222'
+ },
+ {
+ 'name': '大冶市',
+ 'code': '420281'
+ }
+ ]
+ },
+ {
+ 'name': '十堰市',
+ 'code': '420300',
+ 'children': [
+ {
+ 'name': '茅箭区',
+ 'code': '420302'
+ },
+ {
+ 'name': '张湾区',
+ 'code': '420303'
+ },
+ {
+ 'name': '郧阳区',
+ 'code': '420304'
+ },
+ {
+ 'name': '郧西县',
+ 'code': '420322'
+ },
+ {
+ 'name': '竹山县',
+ 'code': '420323'
+ },
+ {
+ 'name': '竹溪县',
+ 'code': '420324'
+ },
+ {
+ 'name': '房县',
+ 'code': '420325'
+ },
+ {
+ 'name': '丹江口市',
+ 'code': '420381'
+ }
+ ]
+ },
+ {
+ 'name': '宜昌市',
+ 'code': '420500',
+ 'children': [
+ {
+ 'name': '西陵区',
+ 'code': '420502'
+ },
+ {
+ 'name': '伍家岗区',
+ 'code': '420503'
+ },
+ {
+ 'name': '点军区',
+ 'code': '420504'
+ },
+ {
+ 'name': '猇亭区',
+ 'code': '420505'
+ },
+ {
+ 'name': '夷陵区',
+ 'code': '420506'
+ },
+ {
+ 'name': '远安县',
+ 'code': '420525'
+ },
+ {
+ 'name': '兴山县',
+ 'code': '420526'
+ },
+ {
+ 'name': '秭归县',
+ 'code': '420527'
+ },
+ {
+ 'name': '长阳土家族自治县',
+ 'code': '420528'
+ },
+ {
+ 'name': '五峰土家族自治县',
+ 'code': '420529'
+ },
+ {
+ 'name': '宜都市',
+ 'code': '420581'
+ },
+ {
+ 'name': '当阳市',
+ 'code': '420582'
+ },
+ {
+ 'name': '枝江市',
+ 'code': '420583'
+ }
+ ]
+ },
+ {
+ 'name': '襄阳市',
+ 'code': '420600',
+ 'children': [
+ {
+ 'name': '襄城区',
+ 'code': '420602'
+ },
+ {
+ 'name': '樊城区',
+ 'code': '420606'
+ },
+ {
+ 'name': '襄州区',
+ 'code': '420607'
+ },
+ {
+ 'name': '南漳县',
+ 'code': '420624'
+ },
+ {
+ 'name': '谷城县',
+ 'code': '420625'
+ },
+ {
+ 'name': '保康县',
+ 'code': '420626'
+ },
+ {
+ 'name': '老河口市',
+ 'code': '420682'
+ },
+ {
+ 'name': '枣阳市',
+ 'code': '420683'
+ },
+ {
+ 'name': '宜城市',
+ 'code': '420684'
+ }
+ ]
+ },
+ {
+ 'name': '鄂州市',
+ 'code': '420700',
+ 'children': [
+ {
+ 'name': '梁子湖区',
+ 'code': '420702'
+ },
+ {
+ 'name': '华容区',
+ 'code': '420703'
+ },
+ {
+ 'name': '鄂城区',
+ 'code': '420704'
+ }
+ ]
+ },
+ {
+ 'name': '荆门市',
+ 'code': '420800',
+ 'children': [
+ {
+ 'name': '东宝区',
+ 'code': '420802'
+ },
+ {
+ 'name': '掇刀区',
+ 'code': '420804'
+ },
+ {
+ 'name': '沙洋县',
+ 'code': '420822'
+ },
+ {
+ 'name': '钟祥市',
+ 'code': '420881'
+ },
+ {
+ 'name': '京山市',
+ 'code': '420882'
+ }
+ ]
+ },
+ {
+ 'name': '孝感市',
+ 'code': '420900',
+ 'children': [
+ {
+ 'name': '孝南区',
+ 'code': '420902'
+ },
+ {
+ 'name': '孝昌县',
+ 'code': '420921'
+ },
+ {
+ 'name': '大悟县',
+ 'code': '420922'
+ },
+ {
+ 'name': '云梦县',
+ 'code': '420923'
+ },
+ {
+ 'name': '应城市',
+ 'code': '420981'
+ },
+ {
+ 'name': '安陆市',
+ 'code': '420982'
+ },
+ {
+ 'name': '汉川市',
+ 'code': '420984'
+ }
+ ]
+ },
+ {
+ 'name': '荆州市',
+ 'code': '421000',
+ 'children': [
+ {
+ 'name': '沙市区',
+ 'code': '421002'
+ },
+ {
+ 'name': '荆州区',
+ 'code': '421003'
+ },
+ {
+ 'name': '公安县',
+ 'code': '421022'
+ },
+ {
+ 'name': '监利县',
+ 'code': '421023'
+ },
+ {
+ 'name': '江陵县',
+ 'code': '421024'
+ },
+ {
+ 'name': '石首市',
+ 'code': '421081'
+ },
+ {
+ 'name': '洪湖市',
+ 'code': '421083'
+ },
+ {
+ 'name': '松滋市',
+ 'code': '421087'
+ }
+ ]
+ },
+ {
+ 'name': '黄冈市',
+ 'code': '421100',
+ 'children': [
+ {
+ 'name': '黄州区',
+ 'code': '421102'
+ },
+ {
+ 'name': '团风县',
+ 'code': '421121'
+ },
+ {
+ 'name': '红安县',
+ 'code': '421122'
+ },
+ {
+ 'name': '罗田县',
+ 'code': '421123'
+ },
+ {
+ 'name': '英山县',
+ 'code': '421124'
+ },
+ {
+ 'name': '浠水县',
+ 'code': '421125'
+ },
+ {
+ 'name': '蕲春县',
+ 'code': '421126'
+ },
+ {
+ 'name': '黄梅县',
+ 'code': '421127'
+ },
+ {
+ 'name': '麻城市',
+ 'code': '421181'
+ },
+ {
+ 'name': '武穴市',
+ 'code': '421182'
+ }
+ ]
+ },
+ {
+ 'name': '咸宁市',
+ 'code': '421200',
+ 'children': [
+ {
+ 'name': '咸安区',
+ 'code': '421202'
+ },
+ {
+ 'name': '嘉鱼县',
+ 'code': '421221'
+ },
+ {
+ 'name': '通城县',
+ 'code': '421222'
+ },
+ {
+ 'name': '崇阳县',
+ 'code': '421223'
+ },
+ {
+ 'name': '通山县',
+ 'code': '421224'
+ },
+ {
+ 'name': '赤壁市',
+ 'code': '421281'
+ }
+ ]
+ },
+ {
+ 'name': '随州市',
+ 'code': '421300',
+ 'children': [
+ {
+ 'name': '曾都区',
+ 'code': '421303'
+ },
+ {
+ 'name': '随县',
+ 'code': '421321'
+ },
+ {
+ 'name': '广水市',
+ 'code': '421381'
+ }
+ ]
+ },
+ {
+ 'name': '恩施土家族苗族自治州',
+ 'code': '422800',
+ 'children': [
+ {
+ 'name': '恩施市',
+ 'code': '422801'
+ },
+ {
+ 'name': '利川市',
+ 'code': '422802'
+ },
+ {
+ 'name': '建始县',
+ 'code': '422822'
+ },
+ {
+ 'name': '巴东县',
+ 'code': '422823'
+ },
+ {
+ 'name': '宣恩县',
+ 'code': '422825'
+ },
+ {
+ 'name': '咸丰县',
+ 'code': '422826'
+ },
+ {
+ 'name': '来凤县',
+ 'code': '422827'
+ },
+ {
+ 'name': '鹤峰县',
+ 'code': '422828'
+ }
+ ]
+ },
+ {
+ 'name': '直辖县',
+ 'code': '429000',
+ 'children': [
+ {
+ 'name': '仙桃市',
+ 'code': '429004'
+ },
+ {
+ 'name': '潜江市',
+ 'code': '429005'
+ },
+ {
+ 'name': '天门市',
+ 'code': '429006'
+ },
+ {
+ 'name': '神农架林区',
+ 'code': '429021'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '湖南省',
+ 'code': '430000',
+ 'region': 'central',
+ 'children': [
+ {
+ 'name': '长沙市',
+ 'code': '430100',
+ 'children': [
+ {
+ 'name': '芙蓉区',
+ 'code': '430102'
+ },
+ {
+ 'name': '天心区',
+ 'code': '430103'
+ },
+ {
+ 'name': '岳麓区',
+ 'code': '430104'
+ },
+ {
+ 'name': '开福区',
+ 'code': '430105'
+ },
+ {
+ 'name': '雨花区',
+ 'code': '430111'
+ },
+ {
+ 'name': '望城区',
+ 'code': '430112'
+ },
+ {
+ 'name': '长沙县',
+ 'code': '430121'
+ },
+ {
+ 'name': '浏阳市',
+ 'code': '430181'
+ },
+ {
+ 'name': '宁乡市',
+ 'code': '430182'
+ }
+ ]
+ },
+ {
+ 'name': '株洲市',
+ 'code': '430200',
+ 'children': [
+ {
+ 'name': '荷塘区',
+ 'code': '430202'
+ },
+ {
+ 'name': '芦淞区',
+ 'code': '430203'
+ },
+ {
+ 'name': '石峰区',
+ 'code': '430204'
+ },
+ {
+ 'name': '天元区',
+ 'code': '430211'
+ },
+ {
+ 'name': '渌口区',
+ 'code': '430212'
+ },
+ {
+ 'name': '攸县',
+ 'code': '430223'
+ },
+ {
+ 'name': '茶陵县',
+ 'code': '430224'
+ },
+ {
+ 'name': '炎陵县',
+ 'code': '430225'
+ },
+ {
+ 'name': '醴陵市',
+ 'code': '430281'
+ }
+ ]
+ },
+ {
+ 'name': '湘潭市',
+ 'code': '430300',
+ 'children': [
+ {
+ 'name': '雨湖区',
+ 'code': '430302'
+ },
+ {
+ 'name': '岳塘区',
+ 'code': '430304'
+ },
+ {
+ 'name': '湘潭县',
+ 'code': '430321'
+ },
+ {
+ 'name': '湘乡市',
+ 'code': '430381'
+ },
+ {
+ 'name': '韶山市',
+ 'code': '430382'
+ }
+ ]
+ },
+ {
+ 'name': '衡阳市',
+ 'code': '430400',
+ 'children': [
+ {
+ 'name': '珠晖区',
+ 'code': '430405'
+ },
+ {
+ 'name': '雁峰区',
+ 'code': '430406'
+ },
+ {
+ 'name': '石鼓区',
+ 'code': '430407'
+ },
+ {
+ 'name': '蒸湘区',
+ 'code': '430408'
+ },
+ {
+ 'name': '南岳区',
+ 'code': '430412'
+ },
+ {
+ 'name': '衡阳县',
+ 'code': '430421'
+ },
+ {
+ 'name': '衡南县',
+ 'code': '430422'
+ },
+ {
+ 'name': '衡山县',
+ 'code': '430423'
+ },
+ {
+ 'name': '衡东县',
+ 'code': '430424'
+ },
+ {
+ 'name': '祁东县',
+ 'code': '430426'
+ },
+ {
+ 'name': '耒阳市',
+ 'code': '430481'
+ },
+ {
+ 'name': '常宁市',
+ 'code': '430482'
+ }
+ ]
+ },
+ {
+ 'name': '邵阳市',
+ 'code': '430500',
+ 'children': [
+ {
+ 'name': '双清区',
+ 'code': '430502'
+ },
+ {
+ 'name': '大祥区',
+ 'code': '430503'
+ },
+ {
+ 'name': '北塔区',
+ 'code': '430511'
+ },
+ {
+ 'name': '邵东县',
+ 'code': '430521'
+ },
+ {
+ 'name': '新邵县',
+ 'code': '430522'
+ },
+ {
+ 'name': '邵阳县',
+ 'code': '430523'
+ },
+ {
+ 'name': '隆回县',
+ 'code': '430524'
+ },
+ {
+ 'name': '洞口县',
+ 'code': '430525'
+ },
+ {
+ 'name': '绥宁县',
+ 'code': '430527'
+ },
+ {
+ 'name': '新宁县',
+ 'code': '430528'
+ },
+ {
+ 'name': '城步苗族自治县',
+ 'code': '430529'
+ },
+ {
+ 'name': '武冈市',
+ 'code': '430581'
+ }
+ ]
+ },
+ {
+ 'name': '岳阳市',
+ 'code': '430600',
+ 'children': [
+ {
+ 'name': '岳阳楼区',
+ 'code': '430602'
+ },
+ {
+ 'name': '云溪区',
+ 'code': '430603'
+ },
+ {
+ 'name': '君山区',
+ 'code': '430611'
+ },
+ {
+ 'name': '岳阳县',
+ 'code': '430621'
+ },
+ {
+ 'name': '华容县',
+ 'code': '430623'
+ },
+ {
+ 'name': '湘阴县',
+ 'code': '430624'
+ },
+ {
+ 'name': '平江县',
+ 'code': '430626'
+ },
+ {
+ 'name': '汨罗市',
+ 'code': '430681'
+ },
+ {
+ 'name': '临湘市',
+ 'code': '430682'
+ }
+ ]
+ },
+ {
+ 'name': '常德市',
+ 'code': '430700',
+ 'children': [
+ {
+ 'name': '武陵区',
+ 'code': '430702'
+ },
+ {
+ 'name': '鼎城区',
+ 'code': '430703'
+ },
+ {
+ 'name': '安乡县',
+ 'code': '430721'
+ },
+ {
+ 'name': '汉寿县',
+ 'code': '430722'
+ },
+ {
+ 'name': '澧县',
+ 'code': '430723'
+ },
+ {
+ 'name': '临澧县',
+ 'code': '430724'
+ },
+ {
+ 'name': '桃源县',
+ 'code': '430725'
+ },
+ {
+ 'name': '石门县',
+ 'code': '430726'
+ },
+ {
+ 'name': '津市市',
+ 'code': '430781'
+ }
+ ]
+ },
+ {
+ 'name': '张家界市',
+ 'code': '430800',
+ 'children': [
+ {
+ 'name': '永定区',
+ 'code': '430802'
+ },
+ {
+ 'name': '武陵源区',
+ 'code': '430811'
+ },
+ {
+ 'name': '慈利县',
+ 'code': '430821'
+ },
+ {
+ 'name': '桑植县',
+ 'code': '430822'
+ }
+ ]
+ },
+ {
+ 'name': '益阳市',
+ 'code': '430900',
+ 'children': [
+ {
+ 'name': '资阳区',
+ 'code': '430902'
+ },
+ {
+ 'name': '赫山区',
+ 'code': '430903'
+ },
+ {
+ 'name': '南县',
+ 'code': '430921'
+ },
+ {
+ 'name': '桃江县',
+ 'code': '430922'
+ },
+ {
+ 'name': '安化县',
+ 'code': '430923'
+ },
+ {
+ 'name': '沅江市',
+ 'code': '430981'
+ }
+ ]
+ },
+ {
+ 'name': '郴州市',
+ 'code': '431000',
+ 'children': [
+ {
+ 'name': '北湖区',
+ 'code': '431002'
+ },
+ {
+ 'name': '苏仙区',
+ 'code': '431003'
+ },
+ {
+ 'name': '桂阳县',
+ 'code': '431021'
+ },
+ {
+ 'name': '宜章县',
+ 'code': '431022'
+ },
+ {
+ 'name': '永兴县',
+ 'code': '431023'
+ },
+ {
+ 'name': '嘉禾县',
+ 'code': '431024'
+ },
+ {
+ 'name': '临武县',
+ 'code': '431025'
+ },
+ {
+ 'name': '汝城县',
+ 'code': '431026'
+ },
+ {
+ 'name': '桂东县',
+ 'code': '431027'
+ },
+ {
+ 'name': '安仁县',
+ 'code': '431028'
+ },
+ {
+ 'name': '资兴市',
+ 'code': '431081'
+ }
+ ]
+ },
+ {
+ 'name': '永州市',
+ 'code': '431100',
+ 'children': [
+ {
+ 'name': '零陵区',
+ 'code': '431102'
+ },
+ {
+ 'name': '冷水滩区',
+ 'code': '431103'
+ },
+ {
+ 'name': '祁阳县',
+ 'code': '431121'
+ },
+ {
+ 'name': '东安县',
+ 'code': '431122'
+ },
+ {
+ 'name': '双牌县',
+ 'code': '431123'
+ },
+ {
+ 'name': '道县',
+ 'code': '431124'
+ },
+ {
+ 'name': '江永县',
+ 'code': '431125'
+ },
+ {
+ 'name': '宁远县',
+ 'code': '431126'
+ },
+ {
+ 'name': '蓝山县',
+ 'code': '431127'
+ },
+ {
+ 'name': '新田县',
+ 'code': '431128'
+ },
+ {
+ 'name': '江华瑶族自治县',
+ 'code': '431129'
+ }
+ ]
+ },
+ {
+ 'name': '怀化市',
+ 'code': '431200',
+ 'children': [
+ {
+ 'name': '鹤城区',
+ 'code': '431202'
+ },
+ {
+ 'name': '中方县',
+ 'code': '431221'
+ },
+ {
+ 'name': '沅陵县',
+ 'code': '431222'
+ },
+ {
+ 'name': '辰溪县',
+ 'code': '431223'
+ },
+ {
+ 'name': '溆浦县',
+ 'code': '431224'
+ },
+ {
+ 'name': '会同县',
+ 'code': '431225'
+ },
+ {
+ 'name': '麻阳苗族自治县',
+ 'code': '431226'
+ },
+ {
+ 'name': '新晃侗族自治县',
+ 'code': '431227'
+ },
+ {
+ 'name': '芷江侗族自治县',
+ 'code': '431228'
+ },
+ {
+ 'name': '靖州苗族侗族自治县',
+ 'code': '431229'
+ },
+ {
+ 'name': '通道侗族自治县',
+ 'code': '431230'
+ },
+ {
+ 'name': '洪江市',
+ 'code': '431281'
+ }
+ ]
+ },
+ {
+ 'name': '娄底市',
+ 'code': '431300',
+ 'children': [
+ {
+ 'name': '娄星区',
+ 'code': '431302'
+ },
+ {
+ 'name': '双峰县',
+ 'code': '431321'
+ },
+ {
+ 'name': '新化县',
+ 'code': '431322'
+ },
+ {
+ 'name': '冷水江市',
+ 'code': '431381'
+ },
+ {
+ 'name': '涟源市',
+ 'code': '431382'
+ }
+ ]
+ },
+ {
+ 'name': '湘西土家族苗族自治州',
+ 'code': '433100',
+ 'children': [
+ {
+ 'name': '吉首市',
+ 'code': '433101'
+ },
+ {
+ 'name': '泸溪县',
+ 'code': '433122'
+ },
+ {
+ 'name': '凤凰县',
+ 'code': '433123'
+ },
+ {
+ 'name': '花垣县',
+ 'code': '433124'
+ },
+ {
+ 'name': '保靖县',
+ 'code': '433125'
+ },
+ {
+ 'name': '古丈县',
+ 'code': '433126'
+ },
+ {
+ 'name': '永顺县',
+ 'code': '433127'
+ },
+ {
+ 'name': '龙山县',
+ 'code': '433130'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '广东省',
+ 'code': '440000',
+ 'region': 'south',
+ 'children': [
+ {
+ 'name': '广州市',
+ 'code': '440100',
+ 'children': [
+ {
+ 'name': '荔湾区',
+ 'code': '440103'
+ },
+ {
+ 'name': '越秀区',
+ 'code': '440104'
+ },
+ {
+ 'name': '海珠区',
+ 'code': '440105'
+ },
+ {
+ 'name': '天河区',
+ 'code': '440106'
+ },
+ {
+ 'name': '白云区',
+ 'code': '440111'
+ },
+ {
+ 'name': '黄埔区',
+ 'code': '440112'
+ },
+ {
+ 'name': '番禺区',
+ 'code': '440113'
+ },
+ {
+ 'name': '花都区',
+ 'code': '440114'
+ },
+ {
+ 'name': '南沙区',
+ 'code': '440115'
+ },
+ {
+ 'name': '从化区',
+ 'code': '440117'
+ },
+ {
+ 'name': '增城区',
+ 'code': '440118'
+ }
+ ]
+ },
+ {
+ 'name': '韶关市',
+ 'code': '440200',
+ 'children': [
+ {
+ 'name': '武江区',
+ 'code': '440203'
+ },
+ {
+ 'name': '浈江区',
+ 'code': '440204'
+ },
+ {
+ 'name': '曲江区',
+ 'code': '440205'
+ },
+ {
+ 'name': '始兴县',
+ 'code': '440222'
+ },
+ {
+ 'name': '仁化县',
+ 'code': '440224'
+ },
+ {
+ 'name': '翁源县',
+ 'code': '440229'
+ },
+ {
+ 'name': '乳源瑶族自治县',
+ 'code': '440232'
+ },
+ {
+ 'name': '新丰县',
+ 'code': '440233'
+ },
+ {
+ 'name': '乐昌市',
+ 'code': '440281'
+ },
+ {
+ 'name': '南雄市',
+ 'code': '440282'
+ }
+ ]
+ },
+ {
+ 'name': '深圳市',
+ 'code': '440300',
+ 'children': [
+ {
+ 'name': '罗湖区',
+ 'code': '440303'
+ },
+ {
+ 'name': '福田区',
+ 'code': '440304'
+ },
+ {
+ 'name': '南山区',
+ 'code': '440305'
+ },
+ {
+ 'name': '宝安区',
+ 'code': '440306'
+ },
+ {
+ 'name': '龙岗区',
+ 'code': '440307'
+ },
+ {
+ 'name': '盐田区',
+ 'code': '440308'
+ },
+ {
+ 'name': '龙华区',
+ 'code': '440309'
+ },
+ {
+ 'name': '坪山区',
+ 'code': '440310'
+ },
+ {
+ 'name': '光明区',
+ 'code': '440311'
+ }
+ ]
+ },
+ {
+ 'name': '珠海市',
+ 'code': '440400',
+ 'children': [
+ {
+ 'name': '香洲区',
+ 'code': '440402'
+ },
+ {
+ 'name': '斗门区',
+ 'code': '440403'
+ },
+ {
+ 'name': '金湾区',
+ 'code': '440404'
+ }
+ ]
+ },
+ {
+ 'name': '汕头市',
+ 'code': '440500',
+ 'children': [
+ {
+ 'name': '龙湖区',
+ 'code': '440507'
+ },
+ {
+ 'name': '金平区',
+ 'code': '440511'
+ },
+ {
+ 'name': '濠江区',
+ 'code': '440512'
+ },
+ {
+ 'name': '潮阳区',
+ 'code': '440513'
+ },
+ {
+ 'name': '潮南区',
+ 'code': '440514'
+ },
+ {
+ 'name': '澄海区',
+ 'code': '440515'
+ },
+ {
+ 'name': '南澳县',
+ 'code': '440523'
+ }
+ ]
+ },
+ {
+ 'name': '佛山市',
+ 'code': '440600',
+ 'children': [
+ {
+ 'name': '禅城区',
+ 'code': '440604'
+ },
+ {
+ 'name': '南海区',
+ 'code': '440605'
+ },
+ {
+ 'name': '顺德区',
+ 'code': '440606'
+ },
+ {
+ 'name': '三水区',
+ 'code': '440607'
+ },
+ {
+ 'name': '高明区',
+ 'code': '440608'
+ }
+ ]
+ },
+ {
+ 'name': '江门市',
+ 'code': '440700',
+ 'children': [
+ {
+ 'name': '蓬江区',
+ 'code': '440703'
+ },
+ {
+ 'name': '江海区',
+ 'code': '440704'
+ },
+ {
+ 'name': '新会区',
+ 'code': '440705'
+ },
+ {
+ 'name': '台山市',
+ 'code': '440781'
+ },
+ {
+ 'name': '开平市',
+ 'code': '440783'
+ },
+ {
+ 'name': '鹤山市',
+ 'code': '440784'
+ },
+ {
+ 'name': '恩平市',
+ 'code': '440785'
+ }
+ ]
+ },
+ {
+ 'name': '湛江市',
+ 'code': '440800',
+ 'children': [
+ {
+ 'name': '赤坎区',
+ 'code': '440802'
+ },
+ {
+ 'name': '霞山区',
+ 'code': '440803'
+ },
+ {
+ 'name': '坡头区',
+ 'code': '440804'
+ },
+ {
+ 'name': '麻章区',
+ 'code': '440811'
+ },
+ {
+ 'name': '遂溪县',
+ 'code': '440823'
+ },
+ {
+ 'name': '徐闻县',
+ 'code': '440825'
+ },
+ {
+ 'name': '廉江市',
+ 'code': '440881'
+ },
+ {
+ 'name': '雷州市',
+ 'code': '440882'
+ },
+ {
+ 'name': '吴川市',
+ 'code': '440883'
+ }
+ ]
+ },
+ {
+ 'name': '茂名市',
+ 'code': '440900',
+ 'children': [
+ {
+ 'name': '茂南区',
+ 'code': '440902'
+ },
+ {
+ 'name': '电白区',
+ 'code': '440904'
+ },
+ {
+ 'name': '高州市',
+ 'code': '440981'
+ },
+ {
+ 'name': '化州市',
+ 'code': '440982'
+ },
+ {
+ 'name': '信宜市',
+ 'code': '440983'
+ }
+ ]
+ },
+ {
+ 'name': '肇庆市',
+ 'code': '441200',
+ 'children': [
+ {
+ 'name': '端州区',
+ 'code': '441202'
+ },
+ {
+ 'name': '鼎湖区',
+ 'code': '441203'
+ },
+ {
+ 'name': '高要区',
+ 'code': '441204'
+ },
+ {
+ 'name': '广宁县',
+ 'code': '441223'
+ },
+ {
+ 'name': '怀集县',
+ 'code': '441224'
+ },
+ {
+ 'name': '封开县',
+ 'code': '441225'
+ },
+ {
+ 'name': '德庆县',
+ 'code': '441226'
+ },
+ {
+ 'name': '四会市',
+ 'code': '441284'
+ }
+ ]
+ },
+ {
+ 'name': '惠州市',
+ 'code': '441300',
+ 'children': [
+ {
+ 'name': '惠城区',
+ 'code': '441302'
+ },
+ {
+ 'name': '惠阳区',
+ 'code': '441303'
+ },
+ {
+ 'name': '博罗县',
+ 'code': '441322'
+ },
+ {
+ 'name': '惠东县',
+ 'code': '441323'
+ },
+ {
+ 'name': '龙门县',
+ 'code': '441324'
+ }
+ ]
+ },
+ {
+ 'name': '梅州市',
+ 'code': '441400',
+ 'children': [
+ {
+ 'name': '梅江区',
+ 'code': '441402'
+ },
+ {
+ 'name': '梅县区',
+ 'code': '441403'
+ },
+ {
+ 'name': '大埔县',
+ 'code': '441422'
+ },
+ {
+ 'name': '丰顺县',
+ 'code': '441423'
+ },
+ {
+ 'name': '五华县',
+ 'code': '441424'
+ },
+ {
+ 'name': '平远县',
+ 'code': '441426'
+ },
+ {
+ 'name': '蕉岭县',
+ 'code': '441427'
+ },
+ {
+ 'name': '兴宁市',
+ 'code': '441481'
+ }
+ ]
+ },
+ {
+ 'name': '汕尾市',
+ 'code': '441500',
+ 'children': [
+ {
+ 'name': '城区',
+ 'code': '441502'
+ },
+ {
+ 'name': '海丰县',
+ 'code': '441521'
+ },
+ {
+ 'name': '陆河县',
+ 'code': '441523'
+ },
+ {
+ 'name': '陆丰市',
+ 'code': '441581'
+ }
+ ]
+ },
+ {
+ 'name': '河源市',
+ 'code': '441600',
+ 'children': [
+ {
+ 'name': '源城区',
+ 'code': '441602'
+ },
+ {
+ 'name': '紫金县',
+ 'code': '441621'
+ },
+ {
+ 'name': '龙川县',
+ 'code': '441622'
+ },
+ {
+ 'name': '连平县',
+ 'code': '441623'
+ },
+ {
+ 'name': '和平县',
+ 'code': '441624'
+ },
+ {
+ 'name': '东源县',
+ 'code': '441625'
+ }
+ ]
+ },
+ {
+ 'name': '阳江市',
+ 'code': '441700',
+ 'children': [
+ {
+ 'name': '江城区',
+ 'code': '441702'
+ },
+ {
+ 'name': '阳东区',
+ 'code': '441704'
+ },
+ {
+ 'name': '阳西县',
+ 'code': '441721'
+ },
+ {
+ 'name': '阳春市',
+ 'code': '441781'
+ }
+ ]
+ },
+ {
+ 'name': '清远市',
+ 'code': '441800',
+ 'children': [
+ {
+ 'name': '清城区',
+ 'code': '441802'
+ },
+ {
+ 'name': '清新区',
+ 'code': '441803'
+ },
+ {
+ 'name': '佛冈县',
+ 'code': '441821'
+ },
+ {
+ 'name': '阳山县',
+ 'code': '441823'
+ },
+ {
+ 'name': '连山壮族瑶族自治县',
+ 'code': '441825'
+ },
+ {
+ 'name': '连南瑶族自治县',
+ 'code': '441826'
+ },
+ {
+ 'name': '英德市',
+ 'code': '441881'
+ },
+ {
+ 'name': '连州市',
+ 'code': '441882'
+ }
+ ]
+ },
+ {
+ 'name': '东莞市',
+ 'code': '441900',
+ 'children': [
+ {
+ 'name': '东城街道',
+ 'code': '441900003'
+ },
+ {
+ 'name': '南城街道',
+ 'code': '441900004'
+ },
+ {
+ 'name': '万江街道',
+ 'code': '441900005'
+ },
+ {
+ 'name': '莞城街道',
+ 'code': '441900006'
+ },
+ {
+ 'name': '石碣镇',
+ 'code': '441900101'
+ },
+ {
+ 'name': '石龙镇',
+ 'code': '441900102'
+ },
+ {
+ 'name': '茶山镇',
+ 'code': '441900103'
+ },
+ {
+ 'name': '石排镇',
+ 'code': '441900104'
+ },
+ {
+ 'name': '企石镇',
+ 'code': '441900105'
+ },
+ {
+ 'name': '横沥镇',
+ 'code': '441900106'
+ },
+ {
+ 'name': '桥头镇',
+ 'code': '441900107'
+ },
+ {
+ 'name': '谢岗镇',
+ 'code': '441900108'
+ },
+ {
+ 'name': '东坑镇',
+ 'code': '441900109'
+ },
+ {
+ 'name': '常平镇',
+ 'code': '441900110'
+ },
+ {
+ 'name': '寮步镇',
+ 'code': '441900111'
+ },
+ {
+ 'name': '樟木头镇',
+ 'code': '441900112'
+ },
+ {
+ 'name': '大朗镇',
+ 'code': '441900113'
+ },
+ {
+ 'name': '黄江镇',
+ 'code': '441900114'
+ },
+ {
+ 'name': '清溪镇',
+ 'code': '441900115'
+ },
+ {
+ 'name': '塘厦镇',
+ 'code': '441900116'
+ },
+ {
+ 'name': '凤岗镇',
+ 'code': '441900117'
+ },
+ {
+ 'name': '大岭山镇',
+ 'code': '441900118'
+ },
+ {
+ 'name': '长安镇',
+ 'code': '441900119'
+ },
+ {
+ 'name': '虎门镇',
+ 'code': '441900121'
+ },
+ {
+ 'name': '厚街镇',
+ 'code': '441900122'
+ },
+ {
+ 'name': '沙田镇',
+ 'code': '441900123'
+ },
+ {
+ 'name': '道滘镇',
+ 'code': '441900124'
+ },
+ {
+ 'name': '洪梅镇',
+ 'code': '441900125'
+ },
+ {
+ 'name': '麻涌镇',
+ 'code': '441900126'
+ },
+ {
+ 'name': '望牛墩镇',
+ 'code': '441900127'
+ },
+ {
+ 'name': '中堂镇',
+ 'code': '441900128'
+ },
+ {
+ 'name': '高埗镇',
+ 'code': '441900129'
+ },
+ {
+ 'name': '松山湖',
+ 'code': '441900401'
+ },
+ {
+ 'name': '东莞港',
+ 'code': '441900402'
+ },
+ {
+ 'name': '东莞生态园',
+ 'code': '441900403'
+ }
+ ]
+ },
+ {
+ 'name': '中山市',
+ 'code': '442000',
+ 'children': [
+ {
+ 'name': '石岐街道',
+ 'code': '442000001'
+ },
+ {
+ 'name': '东区街道',
+ 'code': '442000002'
+ },
+ {
+ 'name': '中山港街道',
+ 'code': '442000003'
+ },
+ {
+ 'name': '西区街道',
+ 'code': '442000004'
+ },
+ {
+ 'name': '南区街道',
+ 'code': '442000005'
+ },
+ {
+ 'name': '五桂山街道',
+ 'code': '442000006'
+ },
+ {
+ 'name': '小榄镇',
+ 'code': '442000100'
+ },
+ {
+ 'name': '黄圃镇',
+ 'code': '442000101'
+ },
+ {
+ 'name': '民众镇',
+ 'code': '442000102'
+ },
+ {
+ 'name': '东凤镇',
+ 'code': '442000103'
+ },
+ {
+ 'name': '东升镇',
+ 'code': '442000104'
+ },
+ {
+ 'name': '古镇镇',
+ 'code': '442000105'
+ },
+ {
+ 'name': '沙溪镇',
+ 'code': '442000106'
+ },
+ {
+ 'name': '坦洲镇',
+ 'code': '442000107'
+ },
+ {
+ 'name': '港口镇',
+ 'code': '442000108'
+ },
+ {
+ 'name': '三角镇',
+ 'code': '442000109'
+ },
+ {
+ 'name': '横栏镇',
+ 'code': '442000110'
+ },
+ {
+ 'name': '南头镇',
+ 'code': '442000111'
+ },
+ {
+ 'name': '阜沙镇',
+ 'code': '442000112'
+ },
+ {
+ 'name': '南朗镇',
+ 'code': '442000113'
+ },
+ {
+ 'name': '三乡镇',
+ 'code': '442000114'
+ },
+ {
+ 'name': '板芙镇',
+ 'code': '442000115'
+ },
+ {
+ 'name': '大涌镇',
+ 'code': '442000116'
+ },
+ {
+ 'name': '神湾镇',
+ 'code': '442000117'
+ }
+ ]
+ },
+ {
+ 'name': '潮州市',
+ 'code': '445100',
+ 'children': [
+ {
+ 'name': '湘桥区',
+ 'code': '445102'
+ },
+ {
+ 'name': '潮安区',
+ 'code': '445103'
+ },
+ {
+ 'name': '饶平县',
+ 'code': '445122'
+ }
+ ]
+ },
+ {
+ 'name': '揭阳市',
+ 'code': '445200',
+ 'children': [
+ {
+ 'name': '榕城区',
+ 'code': '445202'
+ },
+ {
+ 'name': '揭东区',
+ 'code': '445203'
+ },
+ {
+ 'name': '揭西县',
+ 'code': '445222'
+ },
+ {
+ 'name': '惠来县',
+ 'code': '445224'
+ },
+ {
+ 'name': '普宁市',
+ 'code': '445281'
+ }
+ ]
+ },
+ {
+ 'name': '云浮市',
+ 'code': '445300',
+ 'children': [
+ {
+ 'name': '云城区',
+ 'code': '445302'
+ },
+ {
+ 'name': '云安区',
+ 'code': '445303'
+ },
+ {
+ 'name': '新兴县',
+ 'code': '445321'
+ },
+ {
+ 'name': '郁南县',
+ 'code': '445322'
+ },
+ {
+ 'name': '罗定市',
+ 'code': '445381'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '广西壮族自治区',
+ 'code': '450000',
+ 'region': 'south',
+ 'autonomousRegion': true,
+ 'children': [
+ {
+ 'name': '南宁市',
+ 'code': '450100',
+ 'children': [
+ {
+ 'name': '兴宁区',
+ 'code': '450102'
+ },
+ {
+ 'name': '青秀区',
+ 'code': '450103'
+ },
+ {
+ 'name': '江南区',
+ 'code': '450105'
+ },
+ {
+ 'name': '西乡塘区',
+ 'code': '450107'
+ },
+ {
+ 'name': '良庆区',
+ 'code': '450108'
+ },
+ {
+ 'name': '邕宁区',
+ 'code': '450109'
+ },
+ {
+ 'name': '武鸣区',
+ 'code': '450110'
+ },
+ {
+ 'name': '隆安县',
+ 'code': '450123'
+ },
+ {
+ 'name': '马山县',
+ 'code': '450124'
+ },
+ {
+ 'name': '上林县',
+ 'code': '450125'
+ },
+ {
+ 'name': '宾阳县',
+ 'code': '450126'
+ },
+ {
+ 'name': '横县',
+ 'code': '450127'
+ }
+ ]
+ },
+ {
+ 'name': '柳州市',
+ 'code': '450200',
+ 'children': [
+ {
+ 'name': '城中区',
+ 'code': '450202'
+ },
+ {
+ 'name': '鱼峰区',
+ 'code': '450203'
+ },
+ {
+ 'name': '柳南区',
+ 'code': '450204'
+ },
+ {
+ 'name': '柳北区',
+ 'code': '450205'
+ },
+ {
+ 'name': '柳江区',
+ 'code': '450206'
+ },
+ {
+ 'name': '柳城县',
+ 'code': '450222'
+ },
+ {
+ 'name': '鹿寨县',
+ 'code': '450223'
+ },
+ {
+ 'name': '融安县',
+ 'code': '450224'
+ },
+ {
+ 'name': '融水苗族自治县',
+ 'code': '450225'
+ },
+ {
+ 'name': '三江侗族自治县',
+ 'code': '450226'
+ }
+ ]
+ },
+ {
+ 'name': '桂林市',
+ 'code': '450300',
+ 'children': [
+ {
+ 'name': '秀峰区',
+ 'code': '450302'
+ },
+ {
+ 'name': '叠彩区',
+ 'code': '450303'
+ },
+ {
+ 'name': '象山区',
+ 'code': '450304'
+ },
+ {
+ 'name': '七星区',
+ 'code': '450305'
+ },
+ {
+ 'name': '雁山区',
+ 'code': '450311'
+ },
+ {
+ 'name': '临桂区',
+ 'code': '450312'
+ },
+ {
+ 'name': '阳朔县',
+ 'code': '450321'
+ },
+ {
+ 'name': '灵川县',
+ 'code': '450323'
+ },
+ {
+ 'name': '全州县',
+ 'code': '450324'
+ },
+ {
+ 'name': '兴安县',
+ 'code': '450325'
+ },
+ {
+ 'name': '永福县',
+ 'code': '450326'
+ },
+ {
+ 'name': '灌阳县',
+ 'code': '450327'
+ },
+ {
+ 'name': '龙胜各族自治县',
+ 'code': '450328'
+ },
+ {
+ 'name': '资源县',
+ 'code': '450329'
+ },
+ {
+ 'name': '平乐县',
+ 'code': '450330'
+ },
+ {
+ 'name': '荔浦市',
+ 'code': '450381'
+ },
+ {
+ 'name': '恭城瑶族自治县',
+ 'code': '450332'
+ }
+ ]
+ },
+ {
+ 'name': '梧州市',
+ 'code': '450400',
+ 'children': [
+ {
+ 'name': '万秀区',
+ 'code': '450403'
+ },
+ {
+ 'name': '长洲区',
+ 'code': '450405'
+ },
+ {
+ 'name': '龙圩区',
+ 'code': '450406'
+ },
+ {
+ 'name': '苍梧县',
+ 'code': '450421'
+ },
+ {
+ 'name': '藤县',
+ 'code': '450422'
+ },
+ {
+ 'name': '蒙山县',
+ 'code': '450423'
+ },
+ {
+ 'name': '岑溪市',
+ 'code': '450481'
+ }
+ ]
+ },
+ {
+ 'name': '北海市',
+ 'code': '450500',
+ 'children': [
+ {
+ 'name': '海城区',
+ 'code': '450502'
+ },
+ {
+ 'name': '银海区',
+ 'code': '450503'
+ },
+ {
+ 'name': '铁山港区',
+ 'code': '450512'
+ },
+ {
+ 'name': '合浦县',
+ 'code': '450521'
+ }
+ ]
+ },
+ {
+ 'name': '防城港市',
+ 'code': '450600',
+ 'children': [
+ {
+ 'name': '港口区',
+ 'code': '450602'
+ },
+ {
+ 'name': '防城区',
+ 'code': '450603'
+ },
+ {
+ 'name': '上思县',
+ 'code': '450621'
+ },
+ {
+ 'name': '东兴市',
+ 'code': '450681'
+ }
+ ]
+ },
+ {
+ 'name': '钦州市',
+ 'code': '450700',
+ 'children': [
+ {
+ 'name': '钦南区',
+ 'code': '450702'
+ },
+ {
+ 'name': '钦北区',
+ 'code': '450703'
+ },
+ {
+ 'name': '灵山县',
+ 'code': '450721'
+ },
+ {
+ 'name': '浦北县',
+ 'code': '450722'
+ }
+ ]
+ },
+ {
+ 'name': '贵港市',
+ 'code': '450800',
+ 'children': [
+ {
+ 'name': '港北区',
+ 'code': '450802'
+ },
+ {
+ 'name': '港南区',
+ 'code': '450803'
+ },
+ {
+ 'name': '覃塘区',
+ 'code': '450804'
+ },
+ {
+ 'name': '平南县',
+ 'code': '450821'
+ },
+ {
+ 'name': '桂平市',
+ 'code': '450881'
+ }
+ ]
+ },
+ {
+ 'name': '玉林市',
+ 'code': '450900',
+ 'children': [
+ {
+ 'name': '玉州区',
+ 'code': '450902'
+ },
+ {
+ 'name': '福绵区',
+ 'code': '450903'
+ },
+ {
+ 'name': '容县',
+ 'code': '450921'
+ },
+ {
+ 'name': '陆川县',
+ 'code': '450922'
+ },
+ {
+ 'name': '博白县',
+ 'code': '450923'
+ },
+ {
+ 'name': '兴业县',
+ 'code': '450924'
+ },
+ {
+ 'name': '北流市',
+ 'code': '450981'
+ }
+ ]
+ },
+ {
+ 'name': '百色市',
+ 'code': '451000',
+ 'children': [
+ {
+ 'name': '右江区',
+ 'code': '451002'
+ },
+ {
+ 'name': '田阳县',
+ 'code': '451021'
+ },
+ {
+ 'name': '田东县',
+ 'code': '451022'
+ },
+ {
+ 'name': '平果县',
+ 'code': '451023'
+ },
+ {
+ 'name': '德保县',
+ 'code': '451024'
+ },
+ {
+ 'name': '那坡县',
+ 'code': '451026'
+ },
+ {
+ 'name': '凌云县',
+ 'code': '451027'
+ },
+ {
+ 'name': '乐业县',
+ 'code': '451028'
+ },
+ {
+ 'name': '田林县',
+ 'code': '451029'
+ },
+ {
+ 'name': '西林县',
+ 'code': '451030'
+ },
+ {
+ 'name': '隆林各族自治县',
+ 'code': '451031'
+ },
+ {
+ 'name': '靖西市',
+ 'code': '451081'
+ }
+ ]
+ },
+ {
+ 'name': '贺州市',
+ 'code': '451100',
+ 'children': [
+ {
+ 'name': '八步区',
+ 'code': '451102'
+ },
+ {
+ 'name': '平桂区',
+ 'code': '451103'
+ },
+ {
+ 'name': '昭平县',
+ 'code': '451121'
+ },
+ {
+ 'name': '钟山县',
+ 'code': '451122'
+ },
+ {
+ 'name': '富川瑶族自治县',
+ 'code': '451123'
+ }
+ ]
+ },
+ {
+ 'name': '河池市',
+ 'code': '451200',
+ 'children': [
+ {
+ 'name': '金城江区',
+ 'code': '451202'
+ },
+ {
+ 'name': '宜州区',
+ 'code': '451203'
+ },
+ {
+ 'name': '南丹县',
+ 'code': '451221'
+ },
+ {
+ 'name': '天峨县',
+ 'code': '451222'
+ },
+ {
+ 'name': '凤山县',
+ 'code': '451223'
+ },
+ {
+ 'name': '东兰县',
+ 'code': '451224'
+ },
+ {
+ 'name': '罗城仫佬族自治县',
+ 'code': '451225'
+ },
+ {
+ 'name': '环江毛南族自治县',
+ 'code': '451226'
+ },
+ {
+ 'name': '巴马瑶族自治县',
+ 'code': '451227'
+ },
+ {
+ 'name': '都安瑶族自治县',
+ 'code': '451228'
+ },
+ {
+ 'name': '大化瑶族自治县',
+ 'code': '451229'
+ }
+ ]
+ },
+ {
+ 'name': '来宾市',
+ 'code': '451300',
+ 'children': [
+ {
+ 'name': '兴宾区',
+ 'code': '451302'
+ },
+ {
+ 'name': '忻城县',
+ 'code': '451321'
+ },
+ {
+ 'name': '象州县',
+ 'code': '451322'
+ },
+ {
+ 'name': '武宣县',
+ 'code': '451323'
+ },
+ {
+ 'name': '金秀瑶族自治县',
+ 'code': '451324'
+ },
+ {
+ 'name': '合山市',
+ 'code': '451381'
+ }
+ ]
+ },
+ {
+ 'name': '崇左市',
+ 'code': '451400',
+ 'children': [
+ {
+ 'name': '江州区',
+ 'code': '451402'
+ },
+ {
+ 'name': '扶绥县',
+ 'code': '451421'
+ },
+ {
+ 'name': '宁明县',
+ 'code': '451422'
+ },
+ {
+ 'name': '龙州县',
+ 'code': '451423'
+ },
+ {
+ 'name': '大新县',
+ 'code': '451424'
+ },
+ {
+ 'name': '天等县',
+ 'code': '451425'
+ },
+ {
+ 'name': '凭祥市',
+ 'code': '451481'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '海南省',
+ 'code': '460000',
+ 'region': 'south',
+ 'children': [
+ {
+ 'name': '海口市',
+ 'code': '460100',
+ 'children': [
+ {
+ 'name': '秀英区',
+ 'code': '460105'
+ },
+ {
+ 'name': '龙华区',
+ 'code': '460106'
+ },
+ {
+ 'name': '琼山区',
+ 'code': '460107'
+ },
+ {
+ 'name': '美兰区',
+ 'code': '460108'
+ }
+ ]
+ },
+ {
+ 'name': '三亚市',
+ 'code': '460200',
+ 'children': [
+ {
+ 'name': '海棠区',
+ 'code': '460202'
+ },
+ {
+ 'name': '吉阳区',
+ 'code': '460203'
+ },
+ {
+ 'name': '天涯区',
+ 'code': '460204'
+ },
+ {
+ 'name': '崖州区',
+ 'code': '460205'
+ }
+ ]
+ },
+ {
+ 'name': '三沙市',
+ 'code': '460300',
+ 'children': [
+ {
+ 'name': '西沙群岛',
+ 'code': '460321'
+ },
+ {
+ 'name': '南沙群岛',
+ 'code': '460322'
+ },
+ {
+ 'name': '中沙群岛的岛礁及其海域',
+ 'code': '460323'
+ }
+ ]
+ },
+ {
+ 'name': '儋州市',
+ 'code': '460400',
+ 'children': [
+ {
+ 'name': '那大镇',
+ 'code': '460400100'
+ },
+ {
+ 'name': '和庆镇',
+ 'code': '460400101'
+ },
+ {
+ 'name': '南丰镇',
+ 'code': '460400102'
+ },
+ {
+ 'name': '大成镇',
+ 'code': '460400103'
+ },
+ {
+ 'name': '雅星镇',
+ 'code': '460400104'
+ },
+ {
+ 'name': '兰洋镇',
+ 'code': '460400105'
+ },
+ {
+ 'name': '光村镇',
+ 'code': '460400106'
+ },
+ {
+ 'name': '木棠镇',
+ 'code': '460400107'
+ },
+ {
+ 'name': '海头镇',
+ 'code': '460400108'
+ },
+ {
+ 'name': '峨蔓镇',
+ 'code': '460400109'
+ },
+ {
+ 'name': '王五镇',
+ 'code': '460400111'
+ },
+ {
+ 'name': '白马井镇',
+ 'code': '460400112'
+ },
+ {
+ 'name': '中和镇',
+ 'code': '460400113'
+ },
+ {
+ 'name': '排浦镇',
+ 'code': '460400114'
+ },
+ {
+ 'name': '东成镇',
+ 'code': '460400115'
+ },
+ {
+ 'name': '新州镇',
+ 'code': '460400116'
+ },
+ {
+ 'name': '洋浦经济开发区',
+ 'code': '460400499'
+ },
+ {
+ 'name': '华南热作学院',
+ 'code': '460400500'
+ }
+ ]
+ },
+ {
+ 'name': '直辖县',
+ 'code': '469000',
+ 'children': [
+ {
+ 'name': '五指山市',
+ 'code': '469001'
+ },
+ {
+ 'name': '琼海市',
+ 'code': '469002'
+ },
+ {
+ 'name': '文昌市',
+ 'code': '469005'
+ },
+ {
+ 'name': '万宁市',
+ 'code': '469006'
+ },
+ {
+ 'name': '东方市',
+ 'code': '469007'
+ },
+ {
+ 'name': '定安县',
+ 'code': '469021'
+ },
+ {
+ 'name': '屯昌县',
+ 'code': '469022'
+ },
+ {
+ 'name': '澄迈县',
+ 'code': '469023'
+ },
+ {
+ 'name': '临高县',
+ 'code': '469024'
+ },
+ {
+ 'name': '白沙黎族自治县',
+ 'code': '469025'
+ },
+ {
+ 'name': '昌江黎族自治县',
+ 'code': '469026'
+ },
+ {
+ 'name': '乐东黎族自治县',
+ 'code': '469027'
+ },
+ {
+ 'name': '陵水黎族自治县',
+ 'code': '469028'
+ },
+ {
+ 'name': '保亭黎族苗族自治县',
+ 'code': '469029'
+ },
+ {
+ 'name': '琼中黎族苗族自治县',
+ 'code': '469030'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '重庆市',
+ 'code': '500000',
+ 'region': 'southwest',
+ 'provinceLevelCity': true,
+ 'children': [
+ {
+ 'name': '市辖区',
+ 'code': '500100',
+ 'children': [
+ {
+ 'name': '万州区',
+ 'code': '500101'
+ },
+ {
+ 'name': '涪陵区',
+ 'code': '500102'
+ },
+ {
+ 'name': '渝中区',
+ 'code': '500103'
+ },
+ {
+ 'name': '大渡口区',
+ 'code': '500104'
+ },
+ {
+ 'name': '江北区',
+ 'code': '500105'
+ },
+ {
+ 'name': '沙坪坝区',
+ 'code': '500106'
+ },
+ {
+ 'name': '九龙坡区',
+ 'code': '500107'
+ },
+ {
+ 'name': '南岸区',
+ 'code': '500108'
+ },
+ {
+ 'name': '北碚区',
+ 'code': '500109'
+ },
+ {
+ 'name': '綦江区',
+ 'code': '500110'
+ },
+ {
+ 'name': '大足区',
+ 'code': '500111'
+ },
+ {
+ 'name': '渝北区',
+ 'code': '500112'
+ },
+ {
+ 'name': '巴南区',
+ 'code': '500113'
+ },
+ {
+ 'name': '黔江区',
+ 'code': '500114'
+ },
+ {
+ 'name': '长寿区',
+ 'code': '500115'
+ },
+ {
+ 'name': '江津区',
+ 'code': '500116'
+ },
+ {
+ 'name': '合川区',
+ 'code': '500117'
+ },
+ {
+ 'name': '永川区',
+ 'code': '500118'
+ },
+ {
+ 'name': '南川区',
+ 'code': '500119'
+ },
+ {
+ 'name': '璧山区',
+ 'code': '500120'
+ },
+ {
+ 'name': '铜梁区',
+ 'code': '500151'
+ },
+ {
+ 'name': '潼南区',
+ 'code': '500152'
+ },
+ {
+ 'name': '荣昌区',
+ 'code': '500153'
+ },
+ {
+ 'name': '开州区',
+ 'code': '500154'
+ },
+ {
+ 'name': '梁平区',
+ 'code': '500155'
+ },
+ {
+ 'name': '武隆区',
+ 'code': '500156'
+ }
+ ]
+ },
+ {
+ 'name': '县辖区',
+ 'code': '500200',
+ 'children': [
+ {
+ 'name': '城口县',
+ 'code': '500229'
+ },
+ {
+ 'name': '丰都县',
+ 'code': '500230'
+ },
+ {
+ 'name': '垫江县',
+ 'code': '500231'
+ },
+ {
+ 'name': '忠县',
+ 'code': '500233'
+ },
+ {
+ 'name': '云阳县',
+ 'code': '500235'
+ },
+ {
+ 'name': '奉节县',
+ 'code': '500236'
+ },
+ {
+ 'name': '巫山县',
+ 'code': '500237'
+ },
+ {
+ 'name': '巫溪县',
+ 'code': '500238'
+ },
+ {
+ 'name': '石柱土家族自治县',
+ 'code': '500240'
+ },
+ {
+ 'name': '秀山土家族苗族自治县',
+ 'code': '500241'
+ },
+ {
+ 'name': '酉阳土家族苗族自治县',
+ 'code': '500242'
+ },
+ {
+ 'name': '彭水苗族土家族自治县',
+ 'code': '500243'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '四川省',
+ 'code': '510000',
+ 'region': 'southwest',
+ 'children': [
+ {
+ 'name': '成都市',
+ 'code': '510100',
+ 'children': [
+ {
+ 'name': '锦江区',
+ 'code': '510104'
+ },
+ {
+ 'name': '青羊区',
+ 'code': '510105'
+ },
+ {
+ 'name': '金牛区',
+ 'code': '510106'
+ },
+ {
+ 'name': '武侯区',
+ 'code': '510107'
+ },
+ {
+ 'name': '成华区',
+ 'code': '510108'
+ },
+ {
+ 'name': '龙泉驿区',
+ 'code': '510112'
+ },
+ {
+ 'name': '青白江区',
+ 'code': '510113'
+ },
+ {
+ 'name': '新都区',
+ 'code': '510114'
+ },
+ {
+ 'name': '温江区',
+ 'code': '510115'
+ },
+ {
+ 'name': '双流区',
+ 'code': '510116'
+ },
+ {
+ 'name': '郫都区',
+ 'code': '510117'
+ },
+ {
+ 'name': '金堂县',
+ 'code': '510121'
+ },
+ {
+ 'name': '大邑县',
+ 'code': '510129'
+ },
+ {
+ 'name': '蒲江县',
+ 'code': '510131'
+ },
+ {
+ 'name': '新津县',
+ 'code': '510132'
+ },
+ {
+ 'name': '都江堰市',
+ 'code': '510181'
+ },
+ {
+ 'name': '彭州市',
+ 'code': '510182'
+ },
+ {
+ 'name': '邛崃市',
+ 'code': '510183'
+ },
+ {
+ 'name': '崇州市',
+ 'code': '510184'
+ },
+ {
+ 'name': '简阳市',
+ 'code': '510185'
+ }
+ ]
+ },
+ {
+ 'name': '自贡市',
+ 'code': '510300',
+ 'children': [
+ {
+ 'name': '自流井区',
+ 'code': '510302'
+ },
+ {
+ 'name': '贡井区',
+ 'code': '510303'
+ },
+ {
+ 'name': '大安区',
+ 'code': '510304'
+ },
+ {
+ 'name': '沿滩区',
+ 'code': '510311'
+ },
+ {
+ 'name': '荣县',
+ 'code': '510321'
+ },
+ {
+ 'name': '富顺县',
+ 'code': '510322'
+ }
+ ]
+ },
+ {
+ 'name': '攀枝花市',
+ 'code': '510400',
+ 'children': [
+ {
+ 'name': '东区',
+ 'code': '510402'
+ },
+ {
+ 'name': '西区',
+ 'code': '510403'
+ },
+ {
+ 'name': '仁和区',
+ 'code': '510411'
+ },
+ {
+ 'name': '米易县',
+ 'code': '510421'
+ },
+ {
+ 'name': '盐边县',
+ 'code': '510422'
+ }
+ ]
+ },
+ {
+ 'name': '泸州市',
+ 'code': '510500',
+ 'children': [
+ {
+ 'name': '江阳区',
+ 'code': '510502'
+ },
+ {
+ 'name': '纳溪区',
+ 'code': '510503'
+ },
+ {
+ 'name': '龙马潭区',
+ 'code': '510504'
+ },
+ {
+ 'name': '泸县',
+ 'code': '510521'
+ },
+ {
+ 'name': '合江县',
+ 'code': '510522'
+ },
+ {
+ 'name': '叙永县',
+ 'code': '510524'
+ },
+ {
+ 'name': '古蔺县',
+ 'code': '510525'
+ }
+ ]
+ },
+ {
+ 'name': '德阳市',
+ 'code': '510600',
+ 'children': [
+ {
+ 'name': '旌阳区',
+ 'code': '510603'
+ },
+ {
+ 'name': '罗江区',
+ 'code': '510604'
+ },
+ {
+ 'name': '中江县',
+ 'code': '510623'
+ },
+ {
+ 'name': '广汉市',
+ 'code': '510681'
+ },
+ {
+ 'name': '什邡市',
+ 'code': '510682'
+ },
+ {
+ 'name': '绵竹市',
+ 'code': '510683'
+ }
+ ]
+ },
+ {
+ 'name': '绵阳市',
+ 'code': '510700',
+ 'children': [
+ {
+ 'name': '涪城区',
+ 'code': '510703'
+ },
+ {
+ 'name': '游仙区',
+ 'code': '510704'
+ },
+ {
+ 'name': '安州区',
+ 'code': '510705'
+ },
+ {
+ 'name': '三台县',
+ 'code': '510722'
+ },
+ {
+ 'name': '盐亭县',
+ 'code': '510723'
+ },
+ {
+ 'name': '梓潼县',
+ 'code': '510725'
+ },
+ {
+ 'name': '北川羌族自治县',
+ 'code': '510726'
+ },
+ {
+ 'name': '平武县',
+ 'code': '510727'
+ },
+ {
+ 'name': '江油市',
+ 'code': '510781'
+ }
+ ]
+ },
+ {
+ 'name': '广元市',
+ 'code': '510800',
+ 'children': [
+ {
+ 'name': '利州区',
+ 'code': '510802'
+ },
+ {
+ 'name': '昭化区',
+ 'code': '510811'
+ },
+ {
+ 'name': '朝天区',
+ 'code': '510812'
+ },
+ {
+ 'name': '旺苍县',
+ 'code': '510821'
+ },
+ {
+ 'name': '青川县',
+ 'code': '510822'
+ },
+ {
+ 'name': '剑阁县',
+ 'code': '510823'
+ },
+ {
+ 'name': '苍溪县',
+ 'code': '510824'
+ }
+ ]
+ },
+ {
+ 'name': '遂宁市',
+ 'code': '510900',
+ 'children': [
+ {
+ 'name': '船山区',
+ 'code': '510903'
+ },
+ {
+ 'name': '安居区',
+ 'code': '510904'
+ },
+ {
+ 'name': '蓬溪县',
+ 'code': '510921'
+ },
+ {
+ 'name': '射洪县',
+ 'code': '510922'
+ },
+ {
+ 'name': '大英县',
+ 'code': '510923'
+ }
+ ]
+ },
+ {
+ 'name': '内江市',
+ 'code': '511000',
+ 'children': [
+ {
+ 'name': '市中区',
+ 'code': '511002'
+ },
+ {
+ 'name': '东兴区',
+ 'code': '511011'
+ },
+ {
+ 'name': '威远县',
+ 'code': '511024'
+ },
+ {
+ 'name': '资中县',
+ 'code': '511025'
+ },
+ {
+ 'name': '隆昌市',
+ 'code': '511083'
+ }
+ ]
+ },
+ {
+ 'name': '乐山市',
+ 'code': '511100',
+ 'children': [
+ {
+ 'name': '市中区',
+ 'code': '511102'
+ },
+ {
+ 'name': '沙湾区',
+ 'code': '511111'
+ },
+ {
+ 'name': '五通桥区',
+ 'code': '511112'
+ },
+ {
+ 'name': '金口河区',
+ 'code': '511113'
+ },
+ {
+ 'name': '犍为县',
+ 'code': '511123'
+ },
+ {
+ 'name': '井研县',
+ 'code': '511124'
+ },
+ {
+ 'name': '夹江县',
+ 'code': '511126'
+ },
+ {
+ 'name': '沐川县',
+ 'code': '511129'
+ },
+ {
+ 'name': '峨边彝族自治县',
+ 'code': '511132'
+ },
+ {
+ 'name': '马边彝族自治县',
+ 'code': '511133'
+ },
+ {
+ 'name': '峨眉山市',
+ 'code': '511181'
+ }
+ ]
+ },
+ {
+ 'name': '南充市',
+ 'code': '511300',
+ 'children': [
+ {
+ 'name': '顺庆区',
+ 'code': '511302'
+ },
+ {
+ 'name': '高坪区',
+ 'code': '511303'
+ },
+ {
+ 'name': '嘉陵区',
+ 'code': '511304'
+ },
+ {
+ 'name': '南部县',
+ 'code': '511321'
+ },
+ {
+ 'name': '营山县',
+ 'code': '511322'
+ },
+ {
+ 'name': '蓬安县',
+ 'code': '511323'
+ },
+ {
+ 'name': '仪陇县',
+ 'code': '511324'
+ },
+ {
+ 'name': '西充县',
+ 'code': '511325'
+ },
+ {
+ 'name': '阆中市',
+ 'code': '511381'
+ }
+ ]
+ },
+ {
+ 'name': '眉山市',
+ 'code': '511400',
+ 'children': [
+ {
+ 'name': '东坡区',
+ 'code': '511402'
+ },
+ {
+ 'name': '彭山区',
+ 'code': '511403'
+ },
+ {
+ 'name': '仁寿县',
+ 'code': '511421'
+ },
+ {
+ 'name': '洪雅县',
+ 'code': '511423'
+ },
+ {
+ 'name': '丹棱县',
+ 'code': '511424'
+ },
+ {
+ 'name': '青神县',
+ 'code': '511425'
+ }
+ ]
+ },
+ {
+ 'name': '宜宾市',
+ 'code': '511500',
+ 'children': [
+ {
+ 'name': '翠屏区',
+ 'code': '511502'
+ },
+ {
+ 'name': '南溪区',
+ 'code': '511503'
+ },
+ {
+ 'name': '叙州区',
+ 'code': '511504'
+ },
+ {
+ 'name': '江安县',
+ 'code': '511523'
+ },
+ {
+ 'name': '长宁县',
+ 'code': '511524'
+ },
+ {
+ 'name': '高县',
+ 'code': '511525'
+ },
+ {
+ 'name': '珙县',
+ 'code': '511526'
+ },
+ {
+ 'name': '筠连县',
+ 'code': '511527'
+ },
+ {
+ 'name': '兴文县',
+ 'code': '511528'
+ },
+ {
+ 'name': '屏山县',
+ 'code': '511529'
+ }
+ ]
+ },
+ {
+ 'name': '广安市',
+ 'code': '511600',
+ 'children': [
+ {
+ 'name': '广安区',
+ 'code': '511602'
+ },
+ {
+ 'name': '前锋区',
+ 'code': '511603'
+ },
+ {
+ 'name': '岳池县',
+ 'code': '511621'
+ },
+ {
+ 'name': '武胜县',
+ 'code': '511622'
+ },
+ {
+ 'name': '邻水县',
+ 'code': '511623'
+ },
+ {
+ 'name': '华蓥市',
+ 'code': '511681'
+ }
+ ]
+ },
+ {
+ 'name': '达州市',
+ 'code': '511700',
+ 'children': [
+ {
+ 'name': '通川区',
+ 'code': '511702'
+ },
+ {
+ 'name': '达川区',
+ 'code': '511703'
+ },
+ {
+ 'name': '宣汉县',
+ 'code': '511722'
+ },
+ {
+ 'name': '开江县',
+ 'code': '511723'
+ },
+ {
+ 'name': '大竹县',
+ 'code': '511724'
+ },
+ {
+ 'name': '渠县',
+ 'code': '511725'
+ },
+ {
+ 'name': '万源市',
+ 'code': '511781'
+ }
+ ]
+ },
+ {
+ 'name': '雅安市',
+ 'code': '511800',
+ 'children': [
+ {
+ 'name': '雨城区',
+ 'code': '511802'
+ },
+ {
+ 'name': '名山区',
+ 'code': '511803'
+ },
+ {
+ 'name': '荥经县',
+ 'code': '511822'
+ },
+ {
+ 'name': '汉源县',
+ 'code': '511823'
+ },
+ {
+ 'name': '石棉县',
+ 'code': '511824'
+ },
+ {
+ 'name': '天全县',
+ 'code': '511825'
+ },
+ {
+ 'name': '芦山县',
+ 'code': '511826'
+ },
+ {
+ 'name': '宝兴县',
+ 'code': '511827'
+ }
+ ]
+ },
+ {
+ 'name': '巴中市',
+ 'code': '511900',
+ 'children': [
+ {
+ 'name': '巴州区',
+ 'code': '511902'
+ },
+ {
+ 'name': '恩阳区',
+ 'code': '511903'
+ },
+ {
+ 'name': '通江县',
+ 'code': '511921'
+ },
+ {
+ 'name': '南江县',
+ 'code': '511922'
+ },
+ {
+ 'name': '平昌县',
+ 'code': '511923'
+ }
+ ]
+ },
+ {
+ 'name': '资阳市',
+ 'code': '512000',
+ 'children': [
+ {
+ 'name': '雁江区',
+ 'code': '512002'
+ },
+ {
+ 'name': '安岳县',
+ 'code': '512021'
+ },
+ {
+ 'name': '乐至县',
+ 'code': '512022'
+ }
+ ]
+ },
+ {
+ 'name': '阿坝藏族羌族自治州',
+ 'code': '513200',
+ 'children': [
+ {
+ 'name': '马尔康市',
+ 'code': '513201'
+ },
+ {
+ 'name': '汶川县',
+ 'code': '513221'
+ },
+ {
+ 'name': '理县',
+ 'code': '513222'
+ },
+ {
+ 'name': '茂县',
+ 'code': '513223'
+ },
+ {
+ 'name': '松潘县',
+ 'code': '513224'
+ },
+ {
+ 'name': '九寨沟县',
+ 'code': '513225'
+ },
+ {
+ 'name': '金川县',
+ 'code': '513226'
+ },
+ {
+ 'name': '小金县',
+ 'code': '513227'
+ },
+ {
+ 'name': '黑水县',
+ 'code': '513228'
+ },
+ {
+ 'name': '壤塘县',
+ 'code': '513230'
+ },
+ {
+ 'name': '阿坝县',
+ 'code': '513231'
+ },
+ {
+ 'name': '若尔盖县',
+ 'code': '513232'
+ },
+ {
+ 'name': '红原县',
+ 'code': '513233'
+ }
+ ]
+ },
+ {
+ 'name': '甘孜藏族自治州',
+ 'code': '513300',
+ 'children': [
+ {
+ 'name': '康定市',
+ 'code': '513301'
+ },
+ {
+ 'name': '泸定县',
+ 'code': '513322'
+ },
+ {
+ 'name': '丹巴县',
+ 'code': '513323'
+ },
+ {
+ 'name': '九龙县',
+ 'code': '513324'
+ },
+ {
+ 'name': '雅江县',
+ 'code': '513325'
+ },
+ {
+ 'name': '道孚县',
+ 'code': '513326'
+ },
+ {
+ 'name': '炉霍县',
+ 'code': '513327'
+ },
+ {
+ 'name': '甘孜县',
+ 'code': '513328'
+ },
+ {
+ 'name': '新龙县',
+ 'code': '513329'
+ },
+ {
+ 'name': '德格县',
+ 'code': '513330'
+ },
+ {
+ 'name': '白玉县',
+ 'code': '513331'
+ },
+ {
+ 'name': '石渠县',
+ 'code': '513332'
+ },
+ {
+ 'name': '色达县',
+ 'code': '513333'
+ },
+ {
+ 'name': '理塘县',
+ 'code': '513334'
+ },
+ {
+ 'name': '巴塘县',
+ 'code': '513335'
+ },
+ {
+ 'name': '乡城县',
+ 'code': '513336'
+ },
+ {
+ 'name': '稻城县',
+ 'code': '513337'
+ },
+ {
+ 'name': '得荣县',
+ 'code': '513338'
+ }
+ ]
+ },
+ {
+ 'name': '凉山彝族自治州',
+ 'code': '513400',
+ 'children': [
+ {
+ 'name': '西昌市',
+ 'code': '513401'
+ },
+ {
+ 'name': '木里藏族自治县',
+ 'code': '513422'
+ },
+ {
+ 'name': '盐源县',
+ 'code': '513423'
+ },
+ {
+ 'name': '德昌县',
+ 'code': '513424'
+ },
+ {
+ 'name': '会理县',
+ 'code': '513425'
+ },
+ {
+ 'name': '会东县',
+ 'code': '513426'
+ },
+ {
+ 'name': '宁南县',
+ 'code': '513427'
+ },
+ {
+ 'name': '普格县',
+ 'code': '513428'
+ },
+ {
+ 'name': '布拖县',
+ 'code': '513429'
+ },
+ {
+ 'name': '金阳县',
+ 'code': '513430'
+ },
+ {
+ 'name': '昭觉县',
+ 'code': '513431'
+ },
+ {
+ 'name': '喜德县',
+ 'code': '513432'
+ },
+ {
+ 'name': '冕宁县',
+ 'code': '513433'
+ },
+ {
+ 'name': '越西县',
+ 'code': '513434'
+ },
+ {
+ 'name': '甘洛县',
+ 'code': '513435'
+ },
+ {
+ 'name': '美姑县',
+ 'code': '513436'
+ },
+ {
+ 'name': '雷波县',
+ 'code': '513437'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '贵州省',
+ 'code': '520000',
+ 'region': 'southwest',
+ 'children': [
+ {
+ 'name': '贵阳市',
+ 'code': '520100',
+ 'children': [
+ {
+ 'name': '南明区',
+ 'code': '520102'
+ },
+ {
+ 'name': '云岩区',
+ 'code': '520103'
+ },
+ {
+ 'name': '花溪区',
+ 'code': '520111'
+ },
+ {
+ 'name': '乌当区',
+ 'code': '520112'
+ },
+ {
+ 'name': '白云区',
+ 'code': '520113'
+ },
+ {
+ 'name': '观山湖区',
+ 'code': '520115'
+ },
+ {
+ 'name': '开阳县',
+ 'code': '520121'
+ },
+ {
+ 'name': '息烽县',
+ 'code': '520122'
+ },
+ {
+ 'name': '修文县',
+ 'code': '520123'
+ },
+ {
+ 'name': '清镇市',
+ 'code': '520181'
+ }
+ ]
+ },
+ {
+ 'name': '六盘水市',
+ 'code': '520200',
+ 'children': [
+ {
+ 'name': '钟山区',
+ 'code': '520201'
+ },
+ {
+ 'name': '六枝特区',
+ 'code': '520203'
+ },
+ {
+ 'name': '水城县',
+ 'code': '520221'
+ },
+ {
+ 'name': '盘州市',
+ 'code': '520281'
+ }
+ ]
+ },
+ {
+ 'name': '遵义市',
+ 'code': '520300',
+ 'children': [
+ {
+ 'name': '红花岗区',
+ 'code': '520302'
+ },
+ {
+ 'name': '汇川区',
+ 'code': '520303'
+ },
+ {
+ 'name': '播州区',
+ 'code': '520304'
+ },
+ {
+ 'name': '桐梓县',
+ 'code': '520322'
+ },
+ {
+ 'name': '绥阳县',
+ 'code': '520323'
+ },
+ {
+ 'name': '正安县',
+ 'code': '520324'
+ },
+ {
+ 'name': '道真仡佬族苗族自治县',
+ 'code': '520325'
+ },
+ {
+ 'name': '务川仡佬族苗族自治县',
+ 'code': '520326'
+ },
+ {
+ 'name': '凤冈县',
+ 'code': '520327'
+ },
+ {
+ 'name': '湄潭县',
+ 'code': '520328'
+ },
+ {
+ 'name': '余庆县',
+ 'code': '520329'
+ },
+ {
+ 'name': '习水县',
+ 'code': '520330'
+ },
+ {
+ 'name': '赤水市',
+ 'code': '520381'
+ },
+ {
+ 'name': '仁怀市',
+ 'code': '520382'
+ }
+ ]
+ },
+ {
+ 'name': '安顺市',
+ 'code': '520400',
+ 'children': [
+ {
+ 'name': '西秀区',
+ 'code': '520402'
+ },
+ {
+ 'name': '平坝区',
+ 'code': '520403'
+ },
+ {
+ 'name': '普定县',
+ 'code': '520422'
+ },
+ {
+ 'name': '镇宁布依族苗族自治县',
+ 'code': '520423'
+ },
+ {
+ 'name': '关岭布依族苗族自治县',
+ 'code': '520424'
+ },
+ {
+ 'name': '紫云苗族布依族自治县',
+ 'code': '520425'
+ }
+ ]
+ },
+ {
+ 'name': '毕节市',
+ 'code': '520500',
+ 'children': [
+ {
+ 'name': '七星关区',
+ 'code': '520502'
+ },
+ {
+ 'name': '大方县',
+ 'code': '520521'
+ },
+ {
+ 'name': '黔西县',
+ 'code': '520522'
+ },
+ {
+ 'name': '金沙县',
+ 'code': '520523'
+ },
+ {
+ 'name': '织金县',
+ 'code': '520524'
+ },
+ {
+ 'name': '纳雍县',
+ 'code': '520525'
+ },
+ {
+ 'name': '威宁彝族回族苗族自治县',
+ 'code': '520526'
+ },
+ {
+ 'name': '赫章县',
+ 'code': '520527'
+ }
+ ]
+ },
+ {
+ 'name': '铜仁市',
+ 'code': '520600',
+ 'children': [
+ {
+ 'name': '碧江区',
+ 'code': '520602'
+ },
+ {
+ 'name': '万山区',
+ 'code': '520603'
+ },
+ {
+ 'name': '江口县',
+ 'code': '520621'
+ },
+ {
+ 'name': '玉屏侗族自治县',
+ 'code': '520622'
+ },
+ {
+ 'name': '石阡县',
+ 'code': '520623'
+ },
+ {
+ 'name': '思南县',
+ 'code': '520624'
+ },
+ {
+ 'name': '印江土家族苗族自治县',
+ 'code': '520625'
+ },
+ {
+ 'name': '德江县',
+ 'code': '520626'
+ },
+ {
+ 'name': '沿河土家族自治县',
+ 'code': '520627'
+ },
+ {
+ 'name': '松桃苗族自治县',
+ 'code': '520628'
+ }
+ ]
+ },
+ {
+ 'name': '黔西南布依族苗族自治州',
+ 'code': '522300',
+ 'children': [
+ {
+ 'name': '兴义市',
+ 'code': '522301'
+ },
+ {
+ 'name': '兴仁市',
+ 'code': '522302'
+ },
+ {
+ 'name': '普安县',
+ 'code': '522323'
+ },
+ {
+ 'name': '晴隆县',
+ 'code': '522324'
+ },
+ {
+ 'name': '贞丰县',
+ 'code': '522325'
+ },
+ {
+ 'name': '望谟县',
+ 'code': '522326'
+ },
+ {
+ 'name': '册亨县',
+ 'code': '522327'
+ },
+ {
+ 'name': '安龙县',
+ 'code': '522328'
+ }
+ ]
+ },
+ {
+ 'name': '黔东南苗族侗族自治州',
+ 'code': '522600',
+ 'children': [
+ {
+ 'name': '凯里市',
+ 'code': '522601'
+ },
+ {
+ 'name': '黄平县',
+ 'code': '522622'
+ },
+ {
+ 'name': '施秉县',
+ 'code': '522623'
+ },
+ {
+ 'name': '三穗县',
+ 'code': '522624'
+ },
+ {
+ 'name': '镇远县',
+ 'code': '522625'
+ },
+ {
+ 'name': '岑巩县',
+ 'code': '522626'
+ },
+ {
+ 'name': '天柱县',
+ 'code': '522627'
+ },
+ {
+ 'name': '锦屏县',
+ 'code': '522628'
+ },
+ {
+ 'name': '剑河县',
+ 'code': '522629'
+ },
+ {
+ 'name': '台江县',
+ 'code': '522630'
+ },
+ {
+ 'name': '黎平县',
+ 'code': '522631'
+ },
+ {
+ 'name': '榕江县',
+ 'code': '522632'
+ },
+ {
+ 'name': '从江县',
+ 'code': '522633'
+ },
+ {
+ 'name': '雷山县',
+ 'code': '522634'
+ },
+ {
+ 'name': '麻江县',
+ 'code': '522635'
+ },
+ {
+ 'name': '丹寨县',
+ 'code': '522636'
+ }
+ ]
+ },
+ {
+ 'name': '黔南布依族苗族自治州',
+ 'code': '522700',
+ 'children': [
+ {
+ 'name': '都匀市',
+ 'code': '522701'
+ },
+ {
+ 'name': '福泉市',
+ 'code': '522702'
+ },
+ {
+ 'name': '荔波县',
+ 'code': '522722'
+ },
+ {
+ 'name': '贵定县',
+ 'code': '522723'
+ },
+ {
+ 'name': '瓮安县',
+ 'code': '522725'
+ },
+ {
+ 'name': '独山县',
+ 'code': '522726'
+ },
+ {
+ 'name': '平塘县',
+ 'code': '522727'
+ },
+ {
+ 'name': '罗甸县',
+ 'code': '522728'
+ },
+ {
+ 'name': '长顺县',
+ 'code': '522729'
+ },
+ {
+ 'name': '龙里县',
+ 'code': '522730'
+ },
+ {
+ 'name': '惠水县',
+ 'code': '522731'
+ },
+ {
+ 'name': '三都水族自治县',
+ 'code': '522732'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '云南省',
+ 'code': '530000',
+ 'region': 'southwest',
+ 'children': [
+ {
+ 'name': '昆明市',
+ 'code': '530100',
+ 'children': [
+ {
+ 'name': '五华区',
+ 'code': '530102'
+ },
+ {
+ 'name': '盘龙区',
+ 'code': '530103'
+ },
+ {
+ 'name': '官渡区',
+ 'code': '530111'
+ },
+ {
+ 'name': '西山区',
+ 'code': '530112'
+ },
+ {
+ 'name': '东川区',
+ 'code': '530113'
+ },
+ {
+ 'name': '呈贡区',
+ 'code': '530114'
+ },
+ {
+ 'name': '晋宁区',
+ 'code': '530115'
+ },
+ {
+ 'name': '富民县',
+ 'code': '530124'
+ },
+ {
+ 'name': '宜良县',
+ 'code': '530125'
+ },
+ {
+ 'name': '石林彝族自治县',
+ 'code': '530126'
+ },
+ {
+ 'name': '嵩明县',
+ 'code': '530127'
+ },
+ {
+ 'name': '禄劝彝族苗族自治县',
+ 'code': '530128'
+ },
+ {
+ 'name': '寻甸回族彝族自治县',
+ 'code': '530129'
+ },
+ {
+ 'name': '安宁市',
+ 'code': '530181'
+ }
+ ]
+ },
+ {
+ 'name': '曲靖市',
+ 'code': '530300',
+ 'children': [
+ {
+ 'name': '麒麟区',
+ 'code': '530302'
+ },
+ {
+ 'name': '沾益区',
+ 'code': '530303'
+ },
+ {
+ 'name': '马龙区',
+ 'code': '530304'
+ },
+ {
+ 'name': '陆良县',
+ 'code': '530322'
+ },
+ {
+ 'name': '师宗县',
+ 'code': '530323'
+ },
+ {
+ 'name': '罗平县',
+ 'code': '530324'
+ },
+ {
+ 'name': '富源县',
+ 'code': '530325'
+ },
+ {
+ 'name': '会泽县',
+ 'code': '530326'
+ },
+ {
+ 'name': '宣威市',
+ 'code': '530381'
+ }
+ ]
+ },
+ {
+ 'name': '玉溪市',
+ 'code': '530400',
+ 'children': [
+ {
+ 'name': '红塔区',
+ 'code': '530402'
+ },
+ {
+ 'name': '江川区',
+ 'code': '530403'
+ },
+ {
+ 'name': '澄江县',
+ 'code': '530422'
+ },
+ {
+ 'name': '通海县',
+ 'code': '530423'
+ },
+ {
+ 'name': '华宁县',
+ 'code': '530424'
+ },
+ {
+ 'name': '易门县',
+ 'code': '530425'
+ },
+ {
+ 'name': '峨山彝族自治县',
+ 'code': '530426'
+ },
+ {
+ 'name': '新平彝族傣族自治县',
+ 'code': '530427'
+ },
+ {
+ 'name': '元江哈尼族彝族傣族自治县',
+ 'code': '530428'
+ }
+ ]
+ },
+ {
+ 'name': '保山市',
+ 'code': '530500',
+ 'children': [
+ {
+ 'name': '隆阳区',
+ 'code': '530502'
+ },
+ {
+ 'name': '施甸县',
+ 'code': '530521'
+ },
+ {
+ 'name': '龙陵县',
+ 'code': '530523'
+ },
+ {
+ 'name': '昌宁县',
+ 'code': '530524'
+ },
+ {
+ 'name': '腾冲市',
+ 'code': '530581'
+ }
+ ]
+ },
+ {
+ 'name': '昭通市',
+ 'code': '530600',
+ 'children': [
+ {
+ 'name': '昭阳区',
+ 'code': '530602'
+ },
+ {
+ 'name': '鲁甸县',
+ 'code': '530621'
+ },
+ {
+ 'name': '巧家县',
+ 'code': '530622'
+ },
+ {
+ 'name': '盐津县',
+ 'code': '530623'
+ },
+ {
+ 'name': '大关县',
+ 'code': '530624'
+ },
+ {
+ 'name': '永善县',
+ 'code': '530625'
+ },
+ {
+ 'name': '绥江县',
+ 'code': '530626'
+ },
+ {
+ 'name': '镇雄县',
+ 'code': '530627'
+ },
+ {
+ 'name': '彝良县',
+ 'code': '530628'
+ },
+ {
+ 'name': '威信县',
+ 'code': '530629'
+ },
+ {
+ 'name': '水富市',
+ 'code': '530681'
+ }
+ ]
+ },
+ {
+ 'name': '丽江市',
+ 'code': '530700',
+ 'children': [
+ {
+ 'name': '古城区',
+ 'code': '530702'
+ },
+ {
+ 'name': '玉龙纳西族自治县',
+ 'code': '530721'
+ },
+ {
+ 'name': '永胜县',
+ 'code': '530722'
+ },
+ {
+ 'name': '华坪县',
+ 'code': '530723'
+ },
+ {
+ 'name': '宁蒗彝族自治县',
+ 'code': '530724'
+ }
+ ]
+ },
+ {
+ 'name': '普洱市',
+ 'code': '530800',
+ 'children': [
+ {
+ 'name': '思茅区',
+ 'code': '530802'
+ },
+ {
+ 'name': '宁洱哈尼族彝族自治县',
+ 'code': '530821'
+ },
+ {
+ 'name': '墨江哈尼族自治县',
+ 'code': '530822'
+ },
+ {
+ 'name': '景东彝族自治县',
+ 'code': '530823'
+ },
+ {
+ 'name': '景谷傣族彝族自治县',
+ 'code': '530824'
+ },
+ {
+ 'name': '镇沅彝族哈尼族拉祜族自治县',
+ 'code': '530825'
+ },
+ {
+ 'name': '江城哈尼族彝族自治县',
+ 'code': '530826'
+ },
+ {
+ 'name': '孟连傣族拉祜族佤族自治县',
+ 'code': '530827'
+ },
+ {
+ 'name': '澜沧拉祜族自治县',
+ 'code': '530828'
+ },
+ {
+ 'name': '西盟佤族自治县',
+ 'code': '530829'
+ }
+ ]
+ },
+ {
+ 'name': '临沧市',
+ 'code': '530900',
+ 'children': [
+ {
+ 'name': '临翔区',
+ 'code': '530902'
+ },
+ {
+ 'name': '凤庆县',
+ 'code': '530921'
+ },
+ {
+ 'name': '云县',
+ 'code': '530922'
+ },
+ {
+ 'name': '永德县',
+ 'code': '530923'
+ },
+ {
+ 'name': '镇康县',
+ 'code': '530924'
+ },
+ {
+ 'name': '双江拉祜族佤族布朗族傣族自治县',
+ 'code': '530925'
+ },
+ {
+ 'name': '耿马傣族佤族自治县',
+ 'code': '530926'
+ },
+ {
+ 'name': '沧源佤族自治县',
+ 'code': '530927'
+ }
+ ]
+ },
+ {
+ 'name': '楚雄彝族自治州',
+ 'code': '532300',
+ 'children': [
+ {
+ 'name': '楚雄市',
+ 'code': '532301'
+ },
+ {
+ 'name': '双柏县',
+ 'code': '532322'
+ },
+ {
+ 'name': '牟定县',
+ 'code': '532323'
+ },
+ {
+ 'name': '南华县',
+ 'code': '532324'
+ },
+ {
+ 'name': '姚安县',
+ 'code': '532325'
+ },
+ {
+ 'name': '大姚县',
+ 'code': '532326'
+ },
+ {
+ 'name': '永仁县',
+ 'code': '532327'
+ },
+ {
+ 'name': '元谋县',
+ 'code': '532328'
+ },
+ {
+ 'name': '武定县',
+ 'code': '532329'
+ },
+ {
+ 'name': '禄丰县',
+ 'code': '532331'
+ }
+ ]
+ },
+ {
+ 'name': '红河哈尼族彝族自治州',
+ 'code': '532500',
+ 'children': [
+ {
+ 'name': '个旧市',
+ 'code': '532501'
+ },
+ {
+ 'name': '开远市',
+ 'code': '532502'
+ },
+ {
+ 'name': '蒙自市',
+ 'code': '532503'
+ },
+ {
+ 'name': '弥勒市',
+ 'code': '532504'
+ },
+ {
+ 'name': '屏边苗族自治县',
+ 'code': '532523'
+ },
+ {
+ 'name': '建水县',
+ 'code': '532524'
+ },
+ {
+ 'name': '石屏县',
+ 'code': '532525'
+ },
+ {
+ 'name': '泸西县',
+ 'code': '532527'
+ },
+ {
+ 'name': '元阳县',
+ 'code': '532528'
+ },
+ {
+ 'name': '红河县',
+ 'code': '532529'
+ },
+ {
+ 'name': '金平苗族瑶族傣族自治县',
+ 'code': '532530'
+ },
+ {
+ 'name': '绿春县',
+ 'code': '532531'
+ },
+ {
+ 'name': '河口瑶族自治县',
+ 'code': '532532'
+ }
+ ]
+ },
+ {
+ 'name': '文山壮族苗族自治州',
+ 'code': '532600',
+ 'children': [
+ {
+ 'name': '文山市',
+ 'code': '532601'
+ },
+ {
+ 'name': '砚山县',
+ 'code': '532622'
+ },
+ {
+ 'name': '西畴县',
+ 'code': '532623'
+ },
+ {
+ 'name': '麻栗坡县',
+ 'code': '532624'
+ },
+ {
+ 'name': '马关县',
+ 'code': '532625'
+ },
+ {
+ 'name': '丘北县',
+ 'code': '532626'
+ },
+ {
+ 'name': '广南县',
+ 'code': '532627'
+ },
+ {
+ 'name': '富宁县',
+ 'code': '532628'
+ }
+ ]
+ },
+ {
+ 'name': '西双版纳傣族自治州',
+ 'code': '532800',
+ 'children': [
+ {
+ 'name': '景洪市',
+ 'code': '532801'
+ },
+ {
+ 'name': '勐海县',
+ 'code': '532822'
+ },
+ {
+ 'name': '勐腊县',
+ 'code': '532823'
+ }
+ ]
+ },
+ {
+ 'name': '大理白族自治州',
+ 'code': '532900',
+ 'children': [
+ {
+ 'name': '大理市',
+ 'code': '532901'
+ },
+ {
+ 'name': '漾濞彝族自治县',
+ 'code': '532922'
+ },
+ {
+ 'name': '祥云县',
+ 'code': '532923'
+ },
+ {
+ 'name': '宾川县',
+ 'code': '532924'
+ },
+ {
+ 'name': '弥渡县',
+ 'code': '532925'
+ },
+ {
+ 'name': '南涧彝族自治县',
+ 'code': '532926'
+ },
+ {
+ 'name': '巍山彝族回族自治县',
+ 'code': '532927'
+ },
+ {
+ 'name': '永平县',
+ 'code': '532928'
+ },
+ {
+ 'name': '云龙县',
+ 'code': '532929'
+ },
+ {
+ 'name': '洱源县',
+ 'code': '532930'
+ },
+ {
+ 'name': '剑川县',
+ 'code': '532931'
+ },
+ {
+ 'name': '鹤庆县',
+ 'code': '532932'
+ }
+ ]
+ },
+ {
+ 'name': '德宏傣族景颇族自治州',
+ 'code': '533100',
+ 'children': [
+ {
+ 'name': '瑞丽市',
+ 'code': '533102'
+ },
+ {
+ 'name': '芒市',
+ 'code': '533103'
+ },
+ {
+ 'name': '梁河县',
+ 'code': '533122'
+ },
+ {
+ 'name': '盈江县',
+ 'code': '533123'
+ },
+ {
+ 'name': '陇川县',
+ 'code': '533124'
+ }
+ ]
+ },
+ {
+ 'name': '怒江傈僳族自治州',
+ 'code': '533300',
+ 'children': [
+ {
+ 'name': '泸水市',
+ 'code': '533301'
+ },
+ {
+ 'name': '福贡县',
+ 'code': '533323'
+ },
+ {
+ 'name': '贡山独龙族怒族自治县',
+ 'code': '533324'
+ },
+ {
+ 'name': '兰坪白族普米族自治县',
+ 'code': '533325'
+ }
+ ]
+ },
+ {
+ 'name': '迪庆藏族自治州',
+ 'code': '533400',
+ 'children': [
+ {
+ 'name': '香格里拉市',
+ 'code': '533401'
+ },
+ {
+ 'name': '德钦县',
+ 'code': '533422'
+ },
+ {
+ 'name': '维西傈僳族自治县',
+ 'code': '533423'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '西藏自治区',
+ 'code': '540000',
+ 'region': 'southwest',
+ 'autonomousRegion': true,
+ 'children': [
+ {
+ 'name': '拉萨市',
+ 'code': '540100',
+ 'children': [
+ {
+ 'name': '城关区',
+ 'code': '540102'
+ },
+ {
+ 'name': '堆龙德庆区',
+ 'code': '540103'
+ },
+ {
+ 'name': '达孜区',
+ 'code': '540104'
+ },
+ {
+ 'name': '林周县',
+ 'code': '540121'
+ },
+ {
+ 'name': '当雄县',
+ 'code': '540122'
+ },
+ {
+ 'name': '尼木县',
+ 'code': '540123'
+ },
+ {
+ 'name': '曲水县',
+ 'code': '540124'
+ },
+ {
+ 'name': '墨竹工卡县',
+ 'code': '540127'
+ }
+ ]
+ },
+ {
+ 'name': '日喀则市',
+ 'code': '540200',
+ 'children': [
+ {
+ 'name': '桑珠孜区',
+ 'code': '540202'
+ },
+ {
+ 'name': '南木林县',
+ 'code': '540221'
+ },
+ {
+ 'name': '江孜县',
+ 'code': '540222'
+ },
+ {
+ 'name': '定日县',
+ 'code': '540223'
+ },
+ {
+ 'name': '萨迦县',
+ 'code': '540224'
+ },
+ {
+ 'name': '拉孜县',
+ 'code': '540225'
+ },
+ {
+ 'name': '昂仁县',
+ 'code': '540226'
+ },
+ {
+ 'name': '谢通门县',
+ 'code': '540227'
+ },
+ {
+ 'name': '白朗县',
+ 'code': '540228'
+ },
+ {
+ 'name': '仁布县',
+ 'code': '540229'
+ },
+ {
+ 'name': '康马县',
+ 'code': '540230'
+ },
+ {
+ 'name': '定结县',
+ 'code': '540231'
+ },
+ {
+ 'name': '仲巴县',
+ 'code': '540232'
+ },
+ {
+ 'name': '亚东县',
+ 'code': '540233'
+ },
+ {
+ 'name': '吉隆县',
+ 'code': '540234'
+ },
+ {
+ 'name': '聂拉木县',
+ 'code': '540235'
+ },
+ {
+ 'name': '萨嘎县',
+ 'code': '540236'
+ },
+ {
+ 'name': '岗巴县',
+ 'code': '540237'
+ }
+ ]
+ },
+ {
+ 'name': '昌都市',
+ 'code': '540300',
+ 'children': [
+ {
+ 'name': '卡若区',
+ 'code': '540302'
+ },
+ {
+ 'name': '江达县',
+ 'code': '540321'
+ },
+ {
+ 'name': '贡觉县',
+ 'code': '540322'
+ },
+ {
+ 'name': '类乌齐县',
+ 'code': '540323'
+ },
+ {
+ 'name': '丁青县',
+ 'code': '540324'
+ },
+ {
+ 'name': '察雅县',
+ 'code': '540325'
+ },
+ {
+ 'name': '八宿县',
+ 'code': '540326'
+ },
+ {
+ 'name': '左贡县',
+ 'code': '540327'
+ },
+ {
+ 'name': '芒康县',
+ 'code': '540328'
+ },
+ {
+ 'name': '洛隆县',
+ 'code': '540329'
+ },
+ {
+ 'name': '边坝县',
+ 'code': '540330'
+ }
+ ]
+ },
+ {
+ 'name': '林芝市',
+ 'code': '540400',
+ 'children': [
+ {
+ 'name': '巴宜区',
+ 'code': '540402'
+ },
+ {
+ 'name': '工布江达县',
+ 'code': '540421'
+ },
+ {
+ 'name': '米林县',
+ 'code': '540422'
+ },
+ {
+ 'name': '墨脱县',
+ 'code': '540423'
+ },
+ {
+ 'name': '波密县',
+ 'code': '540424'
+ },
+ {
+ 'name': '察隅县',
+ 'code': '540425'
+ },
+ {
+ 'name': '朗县',
+ 'code': '540426'
+ }
+ ]
+ },
+ {
+ 'name': '山南市',
+ 'code': '540500',
+ 'children': [
+ {
+ 'name': '乃东区',
+ 'code': '540502'
+ },
+ {
+ 'name': '扎囊县',
+ 'code': '540521'
+ },
+ {
+ 'name': '贡嘎县',
+ 'code': '540522'
+ },
+ {
+ 'name': '桑日县',
+ 'code': '540523'
+ },
+ {
+ 'name': '琼结县',
+ 'code': '540524'
+ },
+ {
+ 'name': '曲松县',
+ 'code': '540525'
+ },
+ {
+ 'name': '措美县',
+ 'code': '540526'
+ },
+ {
+ 'name': '洛扎县',
+ 'code': '540527'
+ },
+ {
+ 'name': '加查县',
+ 'code': '540528'
+ },
+ {
+ 'name': '隆子县',
+ 'code': '540529'
+ },
+ {
+ 'name': '错那县',
+ 'code': '540530'
+ },
+ {
+ 'name': '浪卡子县',
+ 'code': '540531'
+ }
+ ]
+ },
+ {
+ 'name': '那曲市',
+ 'code': '540600',
+ 'children': [
+ {
+ 'name': '色尼区',
+ 'code': '540602'
+ },
+ {
+ 'name': '嘉黎县',
+ 'code': '540621'
+ },
+ {
+ 'name': '比如县',
+ 'code': '540622'
+ },
+ {
+ 'name': '聂荣县',
+ 'code': '540623'
+ },
+ {
+ 'name': '安多县',
+ 'code': '540624'
+ },
+ {
+ 'name': '申扎县',
+ 'code': '540625'
+ },
+ {
+ 'name': '索县',
+ 'code': '540626'
+ },
+ {
+ 'name': '班戈县',
+ 'code': '540627'
+ },
+ {
+ 'name': '巴青县',
+ 'code': '540628'
+ },
+ {
+ 'name': '尼玛县',
+ 'code': '540629'
+ },
+ {
+ 'name': '双湖县',
+ 'code': '540630'
+ }
+ ]
+ },
+ {
+ 'name': '阿里地区',
+ 'code': '542500',
+ 'children': [
+ {
+ 'name': '普兰县',
+ 'code': '542521'
+ },
+ {
+ 'name': '札达县',
+ 'code': '542522'
+ },
+ {
+ 'name': '噶尔县',
+ 'code': '542523'
+ },
+ {
+ 'name': '日土县',
+ 'code': '542524'
+ },
+ {
+ 'name': '革吉县',
+ 'code': '542525'
+ },
+ {
+ 'name': '改则县',
+ 'code': '542526'
+ },
+ {
+ 'name': '措勤县',
+ 'code': '542527'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '陕西省',
+ 'code': '610000',
+ 'region': 'northwest',
+ 'children': [
+ {
+ 'name': '西安市',
+ 'code': '610100',
+ 'children': [
+ {
+ 'name': '新城区',
+ 'code': '610102'
+ },
+ {
+ 'name': '碑林区',
+ 'code': '610103'
+ },
+ {
+ 'name': '莲湖区',
+ 'code': '610104'
+ },
+ {
+ 'name': '灞桥区',
+ 'code': '610111'
+ },
+ {
+ 'name': '未央区',
+ 'code': '610112'
+ },
+ {
+ 'name': '雁塔区',
+ 'code': '610113'
+ },
+ {
+ 'name': '阎良区',
+ 'code': '610114'
+ },
+ {
+ 'name': '临潼区',
+ 'code': '610115'
+ },
+ {
+ 'name': '长安区',
+ 'code': '610116'
+ },
+ {
+ 'name': '高陵区',
+ 'code': '610117'
+ },
+ {
+ 'name': '鄠邑区',
+ 'code': '610118'
+ },
+ {
+ 'name': '蓝田县',
+ 'code': '610122'
+ },
+ {
+ 'name': '周至县',
+ 'code': '610124'
+ }
+ ]
+ },
+ {
+ 'name': '铜川市',
+ 'code': '610200',
+ 'children': [
+ {
+ 'name': '王益区',
+ 'code': '610202'
+ },
+ {
+ 'name': '印台区',
+ 'code': '610203'
+ },
+ {
+ 'name': '耀州区',
+ 'code': '610204'
+ },
+ {
+ 'name': '宜君县',
+ 'code': '610222'
+ }
+ ]
+ },
+ {
+ 'name': '宝鸡市',
+ 'code': '610300',
+ 'children': [
+ {
+ 'name': '渭滨区',
+ 'code': '610302'
+ },
+ {
+ 'name': '金台区',
+ 'code': '610303'
+ },
+ {
+ 'name': '陈仓区',
+ 'code': '610304'
+ },
+ {
+ 'name': '凤翔县',
+ 'code': '610322'
+ },
+ {
+ 'name': '岐山县',
+ 'code': '610323'
+ },
+ {
+ 'name': '扶风县',
+ 'code': '610324'
+ },
+ {
+ 'name': '眉县',
+ 'code': '610326'
+ },
+ {
+ 'name': '陇县',
+ 'code': '610327'
+ },
+ {
+ 'name': '千阳县',
+ 'code': '610328'
+ },
+ {
+ 'name': '麟游县',
+ 'code': '610329'
+ },
+ {
+ 'name': '凤县',
+ 'code': '610330'
+ },
+ {
+ 'name': '太白县',
+ 'code': '610331'
+ }
+ ]
+ },
+ {
+ 'name': '咸阳市',
+ 'code': '610400',
+ 'children': [
+ {
+ 'name': '秦都区',
+ 'code': '610402'
+ },
+ {
+ 'name': '杨陵区',
+ 'code': '610403'
+ },
+ {
+ 'name': '渭城区',
+ 'code': '610404'
+ },
+ {
+ 'name': '三原县',
+ 'code': '610422'
+ },
+ {
+ 'name': '泾阳县',
+ 'code': '610423'
+ },
+ {
+ 'name': '乾县',
+ 'code': '610424'
+ },
+ {
+ 'name': '礼泉县',
+ 'code': '610425'
+ },
+ {
+ 'name': '永寿县',
+ 'code': '610426'
+ },
+ {
+ 'name': '长武县',
+ 'code': '610428'
+ },
+ {
+ 'name': '旬邑县',
+ 'code': '610429'
+ },
+ {
+ 'name': '淳化县',
+ 'code': '610430'
+ },
+ {
+ 'name': '武功县',
+ 'code': '610431'
+ },
+ {
+ 'name': '兴平市',
+ 'code': '610481'
+ },
+ {
+ 'name': '彬州市',
+ 'code': '610482'
+ }
+ ]
+ },
+ {
+ 'name': '渭南市',
+ 'code': '610500',
+ 'children': [
+ {
+ 'name': '临渭区',
+ 'code': '610502'
+ },
+ {
+ 'name': '华州区',
+ 'code': '610503'
+ },
+ {
+ 'name': '潼关县',
+ 'code': '610522'
+ },
+ {
+ 'name': '大荔县',
+ 'code': '610523'
+ },
+ {
+ 'name': '合阳县',
+ 'code': '610524'
+ },
+ {
+ 'name': '澄城县',
+ 'code': '610525'
+ },
+ {
+ 'name': '蒲城县',
+ 'code': '610526'
+ },
+ {
+ 'name': '白水县',
+ 'code': '610527'
+ },
+ {
+ 'name': '富平县',
+ 'code': '610528'
+ },
+ {
+ 'name': '韩城市',
+ 'code': '610581'
+ },
+ {
+ 'name': '华阴市',
+ 'code': '610582'
+ }
+ ]
+ },
+ {
+ 'name': '延安市',
+ 'code': '610600',
+ 'children': [
+ {
+ 'name': '宝塔区',
+ 'code': '610602'
+ },
+ {
+ 'name': '安塞区',
+ 'code': '610603'
+ },
+ {
+ 'name': '延长县',
+ 'code': '610621'
+ },
+ {
+ 'name': '延川县',
+ 'code': '610622'
+ },
+ {
+ 'name': '子长县',
+ 'code': '610623'
+ },
+ {
+ 'name': '志丹县',
+ 'code': '610625'
+ },
+ {
+ 'name': '吴起县',
+ 'code': '610626'
+ },
+ {
+ 'name': '甘泉县',
+ 'code': '610627'
+ },
+ {
+ 'name': '富县',
+ 'code': '610628'
+ },
+ {
+ 'name': '洛川县',
+ 'code': '610629'
+ },
+ {
+ 'name': '宜川县',
+ 'code': '610630'
+ },
+ {
+ 'name': '黄龙县',
+ 'code': '610631'
+ },
+ {
+ 'name': '黄陵县',
+ 'code': '610632'
+ }
+ ]
+ },
+ {
+ 'name': '汉中市',
+ 'code': '610700',
+ 'children': [
+ {
+ 'name': '汉台区',
+ 'code': '610702'
+ },
+ {
+ 'name': '南郑区',
+ 'code': '610703'
+ },
+ {
+ 'name': '城固县',
+ 'code': '610722'
+ },
+ {
+ 'name': '洋县',
+ 'code': '610723'
+ },
+ {
+ 'name': '西乡县',
+ 'code': '610724'
+ },
+ {
+ 'name': '勉县',
+ 'code': '610725'
+ },
+ {
+ 'name': '宁强县',
+ 'code': '610726'
+ },
+ {
+ 'name': '略阳县',
+ 'code': '610727'
+ },
+ {
+ 'name': '镇巴县',
+ 'code': '610728'
+ },
+ {
+ 'name': '留坝县',
+ 'code': '610729'
+ },
+ {
+ 'name': '佛坪县',
+ 'code': '610730'
+ }
+ ]
+ },
+ {
+ 'name': '榆林市',
+ 'code': '610800',
+ 'children': [
+ {
+ 'name': '榆阳区',
+ 'code': '610802'
+ },
+ {
+ 'name': '横山区',
+ 'code': '610803'
+ },
+ {
+ 'name': '府谷县',
+ 'code': '610822'
+ },
+ {
+ 'name': '靖边县',
+ 'code': '610824'
+ },
+ {
+ 'name': '定边县',
+ 'code': '610825'
+ },
+ {
+ 'name': '绥德县',
+ 'code': '610826'
+ },
+ {
+ 'name': '米脂县',
+ 'code': '610827'
+ },
+ {
+ 'name': '佳县',
+ 'code': '610828'
+ },
+ {
+ 'name': '吴堡县',
+ 'code': '610829'
+ },
+ {
+ 'name': '清涧县',
+ 'code': '610830'
+ },
+ {
+ 'name': '子洲县',
+ 'code': '610831'
+ },
+ {
+ 'name': '神木市',
+ 'code': '610881'
+ }
+ ]
+ },
+ {
+ 'name': '安康市',
+ 'code': '610900',
+ 'children': [
+ {
+ 'name': '汉滨区',
+ 'code': '610902'
+ },
+ {
+ 'name': '汉阴县',
+ 'code': '610921'
+ },
+ {
+ 'name': '石泉县',
+ 'code': '610922'
+ },
+ {
+ 'name': '宁陕县',
+ 'code': '610923'
+ },
+ {
+ 'name': '紫阳县',
+ 'code': '610924'
+ },
+ {
+ 'name': '岚皋县',
+ 'code': '610925'
+ },
+ {
+ 'name': '平利县',
+ 'code': '610926'
+ },
+ {
+ 'name': '镇坪县',
+ 'code': '610927'
+ },
+ {
+ 'name': '旬阳县',
+ 'code': '610928'
+ },
+ {
+ 'name': '白河县',
+ 'code': '610929'
+ }
+ ]
+ },
+ {
+ 'name': '商洛市',
+ 'code': '611000',
+ 'children': [
+ {
+ 'name': '商州区',
+ 'code': '611002'
+ },
+ {
+ 'name': '洛南县',
+ 'code': '611021'
+ },
+ {
+ 'name': '丹凤县',
+ 'code': '611022'
+ },
+ {
+ 'name': '商南县',
+ 'code': '611023'
+ },
+ {
+ 'name': '山阳县',
+ 'code': '611024'
+ },
+ {
+ 'name': '镇安县',
+ 'code': '611025'
+ },
+ {
+ 'name': '柞水县',
+ 'code': '611026'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '甘肃省',
+ 'code': '620000',
+ 'region': 'northwest',
+ 'children': [
+ {
+ 'name': '兰州市',
+ 'code': '620100',
+ 'children': [
+ {
+ 'name': '城关区',
+ 'code': '620102'
+ },
+ {
+ 'name': '七里河区',
+ 'code': '620103'
+ },
+ {
+ 'name': '西固区',
+ 'code': '620104'
+ },
+ {
+ 'name': '安宁区',
+ 'code': '620105'
+ },
+ {
+ 'name': '红古区',
+ 'code': '620111'
+ },
+ {
+ 'name': '永登县',
+ 'code': '620121'
+ },
+ {
+ 'name': '皋兰县',
+ 'code': '620122'
+ },
+ {
+ 'name': '榆中县',
+ 'code': '620123'
+ }
+ ]
+ },
+ {
+ 'name': '嘉峪关市',
+ 'code': '620200',
+ 'children': [
+ {
+ 'name': '市辖区',
+ 'code': '620201'
+ }
+ ]
+ },
+ {
+ 'name': '金昌市',
+ 'code': '620300',
+ 'children': [
+ {
+ 'name': '金川区',
+ 'code': '620302'
+ },
+ {
+ 'name': '永昌县',
+ 'code': '620321'
+ }
+ ]
+ },
+ {
+ 'name': '白银市',
+ 'code': '620400',
+ 'children': [
+ {
+ 'name': '白银区',
+ 'code': '620402'
+ },
+ {
+ 'name': '平川区',
+ 'code': '620403'
+ },
+ {
+ 'name': '靖远县',
+ 'code': '620421'
+ },
+ {
+ 'name': '会宁县',
+ 'code': '620422'
+ },
+ {
+ 'name': '景泰县',
+ 'code': '620423'
+ }
+ ]
+ },
+ {
+ 'name': '天水市',
+ 'code': '620500',
+ 'children': [
+ {
+ 'name': '秦州区',
+ 'code': '620502'
+ },
+ {
+ 'name': '麦积区',
+ 'code': '620503'
+ },
+ {
+ 'name': '清水县',
+ 'code': '620521'
+ },
+ {
+ 'name': '秦安县',
+ 'code': '620522'
+ },
+ {
+ 'name': '甘谷县',
+ 'code': '620523'
+ },
+ {
+ 'name': '武山县',
+ 'code': '620524'
+ },
+ {
+ 'name': '张家川回族自治县',
+ 'code': '620525'
+ }
+ ]
+ },
+ {
+ 'name': '武威市',
+ 'code': '620600',
+ 'children': [
+ {
+ 'name': '凉州区',
+ 'code': '620602'
+ },
+ {
+ 'name': '民勤县',
+ 'code': '620621'
+ },
+ {
+ 'name': '古浪县',
+ 'code': '620622'
+ },
+ {
+ 'name': '天祝藏族自治县',
+ 'code': '620623'
+ }
+ ]
+ },
+ {
+ 'name': '张掖市',
+ 'code': '620700',
+ 'children': [
+ {
+ 'name': '甘州区',
+ 'code': '620702'
+ },
+ {
+ 'name': '肃南裕固族自治县',
+ 'code': '620721'
+ },
+ {
+ 'name': '民乐县',
+ 'code': '620722'
+ },
+ {
+ 'name': '临泽县',
+ 'code': '620723'
+ },
+ {
+ 'name': '高台县',
+ 'code': '620724'
+ },
+ {
+ 'name': '山丹县',
+ 'code': '620725'
+ }
+ ]
+ },
+ {
+ 'name': '平凉市',
+ 'code': '620800',
+ 'children': [
+ {
+ 'name': '崆峒区',
+ 'code': '620802'
+ },
+ {
+ 'name': '泾川县',
+ 'code': '620821'
+ },
+ {
+ 'name': '灵台县',
+ 'code': '620822'
+ },
+ {
+ 'name': '崇信县',
+ 'code': '620823'
+ },
+ {
+ 'name': '庄浪县',
+ 'code': '620825'
+ },
+ {
+ 'name': '静宁县',
+ 'code': '620826'
+ },
+ {
+ 'name': '华亭市',
+ 'code': '620881'
+ }
+ ]
+ },
+ {
+ 'name': '酒泉市',
+ 'code': '620900',
+ 'children': [
+ {
+ 'name': '肃州区',
+ 'code': '620902'
+ },
+ {
+ 'name': '金塔县',
+ 'code': '620921'
+ },
+ {
+ 'name': '瓜州县',
+ 'code': '620922'
+ },
+ {
+ 'name': '肃北蒙古族自治县',
+ 'code': '620923'
+ },
+ {
+ 'name': '阿克塞哈萨克族自治县',
+ 'code': '620924'
+ },
+ {
+ 'name': '玉门市',
+ 'code': '620981'
+ },
+ {
+ 'name': '敦煌市',
+ 'code': '620982'
+ }
+ ]
+ },
+ {
+ 'name': '庆阳市',
+ 'code': '621000',
+ 'children': [
+ {
+ 'name': '西峰区',
+ 'code': '621002'
+ },
+ {
+ 'name': '庆城县',
+ 'code': '621021'
+ },
+ {
+ 'name': '环县',
+ 'code': '621022'
+ },
+ {
+ 'name': '华池县',
+ 'code': '621023'
+ },
+ {
+ 'name': '合水县',
+ 'code': '621024'
+ },
+ {
+ 'name': '正宁县',
+ 'code': '621025'
+ },
+ {
+ 'name': '宁县',
+ 'code': '621026'
+ },
+ {
+ 'name': '镇原县',
+ 'code': '621027'
+ }
+ ]
+ },
+ {
+ 'name': '定西市',
+ 'code': '621100',
+ 'children': [
+ {
+ 'name': '安定区',
+ 'code': '621102'
+ },
+ {
+ 'name': '通渭县',
+ 'code': '621121'
+ },
+ {
+ 'name': '陇西县',
+ 'code': '621122'
+ },
+ {
+ 'name': '渭源县',
+ 'code': '621123'
+ },
+ {
+ 'name': '临洮县',
+ 'code': '621124'
+ },
+ {
+ 'name': '漳县',
+ 'code': '621125'
+ },
+ {
+ 'name': '岷县',
+ 'code': '621126'
+ }
+ ]
+ },
+ {
+ 'name': '陇南市',
+ 'code': '621200',
+ 'children': [
+ {
+ 'name': '武都区',
+ 'code': '621202'
+ },
+ {
+ 'name': '成县',
+ 'code': '621221'
+ },
+ {
+ 'name': '文县',
+ 'code': '621222'
+ },
+ {
+ 'name': '宕昌县',
+ 'code': '621223'
+ },
+ {
+ 'name': '康县',
+ 'code': '621224'
+ },
+ {
+ 'name': '西和县',
+ 'code': '621225'
+ },
+ {
+ 'name': '礼县',
+ 'code': '621226'
+ },
+ {
+ 'name': '徽县',
+ 'code': '621227'
+ },
+ {
+ 'name': '两当县',
+ 'code': '621228'
+ }
+ ]
+ },
+ {
+ 'name': '临夏回族自治州',
+ 'code': '622900',
+ 'children': [
+ {
+ 'name': '临夏市',
+ 'code': '622901'
+ },
+ {
+ 'name': '临夏县',
+ 'code': '622921'
+ },
+ {
+ 'name': '康乐县',
+ 'code': '622922'
+ },
+ {
+ 'name': '永靖县',
+ 'code': '622923'
+ },
+ {
+ 'name': '广河县',
+ 'code': '622924'
+ },
+ {
+ 'name': '和政县',
+ 'code': '622925'
+ },
+ {
+ 'name': '东乡族自治县',
+ 'code': '622926'
+ },
+ {
+ 'name': '积石山保安族东乡族撒拉族自治县',
+ 'code': '622927'
+ }
+ ]
+ },
+ {
+ 'name': '甘南藏族自治州',
+ 'code': '623000',
+ 'children': [
+ {
+ 'name': '合作市',
+ 'code': '623001'
+ },
+ {
+ 'name': '临潭县',
+ 'code': '623021'
+ },
+ {
+ 'name': '卓尼县',
+ 'code': '623022'
+ },
+ {
+ 'name': '舟曲县',
+ 'code': '623023'
+ },
+ {
+ 'name': '迭部县',
+ 'code': '623024'
+ },
+ {
+ 'name': '玛曲县',
+ 'code': '623025'
+ },
+ {
+ 'name': '碌曲县',
+ 'code': '623026'
+ },
+ {
+ 'name': '夏河县',
+ 'code': '623027'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '青海省',
+ 'code': '630000',
+ 'region': 'northwest',
+ 'children': [
+ {
+ 'name': '西宁市',
+ 'code': '630100',
+ 'children': [
+ {
+ 'name': '城东区',
+ 'code': '630102'
+ },
+ {
+ 'name': '城中区',
+ 'code': '630103'
+ },
+ {
+ 'name': '城西区',
+ 'code': '630104'
+ },
+ {
+ 'name': '城北区',
+ 'code': '630105'
+ },
+ {
+ 'name': '大通回族土族自治县',
+ 'code': '630121'
+ },
+ {
+ 'name': '湟中县',
+ 'code': '630122'
+ },
+ {
+ 'name': '湟源县',
+ 'code': '630123'
+ }
+ ]
+ },
+ {
+ 'name': '海东市',
+ 'code': '630200',
+ 'children': [
+ {
+ 'name': '乐都区',
+ 'code': '630202'
+ },
+ {
+ 'name': '平安区',
+ 'code': '630203'
+ },
+ {
+ 'name': '民和回族土族自治县',
+ 'code': '630222'
+ },
+ {
+ 'name': '互助土族自治县',
+ 'code': '630223'
+ },
+ {
+ 'name': '化隆回族自治县',
+ 'code': '630224'
+ },
+ {
+ 'name': '循化撒拉族自治县',
+ 'code': '630225'
+ }
+ ]
+ },
+ {
+ 'name': '海北藏族自治州',
+ 'code': '632200',
+ 'children': [
+ {
+ 'name': '门源回族自治县',
+ 'code': '632221'
+ },
+ {
+ 'name': '祁连县',
+ 'code': '632222'
+ },
+ {
+ 'name': '海晏县',
+ 'code': '632223'
+ },
+ {
+ 'name': '刚察县',
+ 'code': '632224'
+ }
+ ]
+ },
+ {
+ 'name': '黄南藏族自治州',
+ 'code': '632300',
+ 'children': [
+ {
+ 'name': '同仁县',
+ 'code': '632321'
+ },
+ {
+ 'name': '尖扎县',
+ 'code': '632322'
+ },
+ {
+ 'name': '泽库县',
+ 'code': '632323'
+ },
+ {
+ 'name': '河南蒙古族自治县',
+ 'code': '632324'
+ }
+ ]
+ },
+ {
+ 'name': '海南藏族自治州',
+ 'code': '632500',
+ 'children': [
+ {
+ 'name': '共和县',
+ 'code': '632521'
+ },
+ {
+ 'name': '同德县',
+ 'code': '632522'
+ },
+ {
+ 'name': '贵德县',
+ 'code': '632523'
+ },
+ {
+ 'name': '兴海县',
+ 'code': '632524'
+ },
+ {
+ 'name': '贵南县',
+ 'code': '632525'
+ }
+ ]
+ },
+ {
+ 'name': '果洛藏族自治州',
+ 'code': '632600',
+ 'children': [
+ {
+ 'name': '玛沁县',
+ 'code': '632621'
+ },
+ {
+ 'name': '班玛县',
+ 'code': '632622'
+ },
+ {
+ 'name': '甘德县',
+ 'code': '632623'
+ },
+ {
+ 'name': '达日县',
+ 'code': '632624'
+ },
+ {
+ 'name': '久治县',
+ 'code': '632625'
+ },
+ {
+ 'name': '玛多县',
+ 'code': '632626'
+ }
+ ]
+ },
+ {
+ 'name': '玉树藏族自治州',
+ 'code': '632700',
+ 'children': [
+ {
+ 'name': '玉树市',
+ 'code': '632701'
+ },
+ {
+ 'name': '杂多县',
+ 'code': '632722'
+ },
+ {
+ 'name': '称多县',
+ 'code': '632723'
+ },
+ {
+ 'name': '治多县',
+ 'code': '632724'
+ },
+ {
+ 'name': '囊谦县',
+ 'code': '632725'
+ },
+ {
+ 'name': '曲麻莱县',
+ 'code': '632726'
+ }
+ ]
+ },
+ {
+ 'name': '海西蒙古族藏族自治州',
+ 'code': '632800',
+ 'children': [
+ {
+ 'name': '格尔木市',
+ 'code': '632801'
+ },
+ {
+ 'name': '德令哈市',
+ 'code': '632802'
+ },
+ {
+ 'name': '茫崖市',
+ 'code': '632803'
+ },
+ {
+ 'name': '乌兰县',
+ 'code': '632821'
+ },
+ {
+ 'name': '都兰县',
+ 'code': '632822'
+ },
+ {
+ 'name': '天峻县',
+ 'code': '632823'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '宁夏回族自治区',
+ 'code': '640000',
+ 'region': 'northwest',
+ 'autonomousRegion': true,
+ 'children': [
+ {
+ 'name': '银川市',
+ 'code': '640100',
+ 'children': [
+ {
+ 'name': '兴庆区',
+ 'code': '640104'
+ },
+ {
+ 'name': '西夏区',
+ 'code': '640105'
+ },
+ {
+ 'name': '金凤区',
+ 'code': '640106'
+ },
+ {
+ 'name': '永宁县',
+ 'code': '640121'
+ },
+ {
+ 'name': '贺兰县',
+ 'code': '640122'
+ },
+ {
+ 'name': '灵武市',
+ 'code': '640181'
+ }
+ ]
+ },
+ {
+ 'name': '石嘴山市',
+ 'code': '640200',
+ 'children': [
+ {
+ 'name': '大武口区',
+ 'code': '640202'
+ },
+ {
+ 'name': '惠农区',
+ 'code': '640205'
+ },
+ {
+ 'name': '平罗县',
+ 'code': '640221'
+ }
+ ]
+ },
+ {
+ 'name': '吴忠市',
+ 'code': '640300',
+ 'children': [
+ {
+ 'name': '利通区',
+ 'code': '640302'
+ },
+ {
+ 'name': '红寺堡区',
+ 'code': '640303'
+ },
+ {
+ 'name': '盐池县',
+ 'code': '640323'
+ },
+ {
+ 'name': '同心县',
+ 'code': '640324'
+ },
+ {
+ 'name': '青铜峡市',
+ 'code': '640381'
+ }
+ ]
+ },
+ {
+ 'name': '固原市',
+ 'code': '640400',
+ 'children': [
+ {
+ 'name': '原州区',
+ 'code': '640402'
+ },
+ {
+ 'name': '西吉县',
+ 'code': '640422'
+ },
+ {
+ 'name': '隆德县',
+ 'code': '640423'
+ },
+ {
+ 'name': '泾源县',
+ 'code': '640424'
+ },
+ {
+ 'name': '彭阳县',
+ 'code': '640425'
+ }
+ ]
+ },
+ {
+ 'name': '中卫市',
+ 'code': '640500',
+ 'children': [
+ {
+ 'name': '沙坡头区',
+ 'code': '640502'
+ },
+ {
+ 'name': '中宁县',
+ 'code': '640521'
+ },
+ {
+ 'name': '海原县',
+ 'code': '640522'
+ }
+ ]
+ }
+ ]
+ },
+ {
+ 'name': '新疆维吾尔自治区',
+ 'code': '650000',
+ 'region': 'northwest',
+ 'autonomousRegion': true,
+ 'children': [
+ {
+ 'name': '乌鲁木齐市',
+ 'code': '650100',
+ 'children': [
+ {
+ 'name': '天山区',
+ 'code': '650102'
+ },
+ {
+ 'name': '沙依巴克区',
+ 'code': '650103'
+ },
+ {
+ 'name': '新市区',
+ 'code': '650104'
+ },
+ {
+ 'name': '水磨沟区',
+ 'code': '650105'
+ },
+ {
+ 'name': '头屯河区',
+ 'code': '650106'
+ },
+ {
+ 'name': '达坂城区',
+ 'code': '650107'
+ },
+ {
+ 'name': '米东区',
+ 'code': '650109'
+ },
+ {
+ 'name': '乌鲁木齐县',
+ 'code': '650121'
+ }
+ ]
+ },
+ {
+ 'name': '克拉玛依市',
+ 'code': '650200',
+ 'children': [
+ {
+ 'name': '独山子区',
+ 'code': '650202'
+ },
+ {
+ 'name': '克拉玛依区',
+ 'code': '650203'
+ },
+ {
+ 'name': '白碱滩区',
+ 'code': '650204'
+ },
+ {
+ 'name': '乌尔禾区',
+ 'code': '650205'
+ }
+ ]
+ },
+ {
+ 'name': '吐鲁番市',
+ 'code': '650400',
+ 'children': [
+ {
+ 'name': '高昌区',
+ 'code': '650402'
+ },
+ {
+ 'name': '鄯善县',
+ 'code': '650421'
+ },
+ {
+ 'name': '托克逊县',
+ 'code': '650422'
+ }
+ ]
+ },
+ {
+ 'name': '哈密市',
+ 'code': '650500',
+ 'children': [
+ {
+ 'name': '伊州区',
+ 'code': '650502'
+ },
+ {
+ 'name': '巴里坤哈萨克自治县',
+ 'code': '650521'
+ },
+ {
+ 'name': '伊吾县',
+ 'code': '650522'
+ }
+ ]
+ },
+ {
+ 'name': '昌吉回族自治州',
+ 'code': '652300',
+ 'children': [
+ {
+ 'name': '昌吉市',
+ 'code': '652301'
+ },
+ {
+ 'name': '阜康市',
+ 'code': '652302'
+ },
+ {
+ 'name': '呼图壁县',
+ 'code': '652323'
+ },
+ {
+ 'name': '玛纳斯县',
+ 'code': '652324'
+ },
+ {
+ 'name': '奇台县',
+ 'code': '652325'
+ },
+ {
+ 'name': '吉木萨尔县',
+ 'code': '652327'
+ },
+ {
+ 'name': '木垒哈萨克自治县',
+ 'code': '652328'
+ }
+ ]
+ },
+ {
+ 'name': '博尔塔拉蒙古自治州',
+ 'code': '652700',
+ 'children': [
+ {
+ 'name': '博乐市',
+ 'code': '652701'
+ },
+ {
+ 'name': '阿拉山口市',
+ 'code': '652702'
+ },
+ {
+ 'name': '精河县',
+ 'code': '652722'
+ },
+ {
+ 'name': '温泉县',
+ 'code': '652723'
+ }
+ ]
+ },
+ {
+ 'name': '巴音郭楞蒙古自治州',
+ 'code': '652800',
+ 'children': [
+ {
+ 'name': '库尔勒市',
+ 'code': '652801'
+ },
+ {
+ 'name': '轮台县',
+ 'code': '652822'
+ },
+ {
+ 'name': '尉犁县',
+ 'code': '652823'
+ },
+ {
+ 'name': '若羌县',
+ 'code': '652824'
+ },
+ {
+ 'name': '且末县',
+ 'code': '652825'
+ },
+ {
+ 'name': '焉耆回族自治县',
+ 'code': '652826'
+ },
+ {
+ 'name': '和静县',
+ 'code': '652827'
+ },
+ {
+ 'name': '和硕县',
+ 'code': '652828'
+ },
+ {
+ 'name': '博湖县',
+ 'code': '652829'
+ }
+ ]
+ },
+ {
+ 'name': '阿克苏地区',
+ 'code': '652900',
+ 'children': [
+ {
+ 'name': '阿克苏市',
+ 'code': '652901'
+ },
+ {
+ 'name': '温宿县',
+ 'code': '652922'
+ },
+ {
+ 'name': '库车县',
+ 'code': '652923'
+ },
+ {
+ 'name': '沙雅县',
+ 'code': '652924'
+ },
+ {
+ 'name': '新和县',
+ 'code': '652925'
+ },
+ {
+ 'name': '拜城县',
+ 'code': '652926'
+ },
+ {
+ 'name': '乌什县',
+ 'code': '652927'
+ },
+ {
+ 'name': '阿瓦提县',
+ 'code': '652928'
+ },
+ {
+ 'name': '柯坪县',
+ 'code': '652929'
+ }
+ ]
+ },
+ {
+ 'name': '克孜勒苏柯尔克孜自治州',
+ 'code': '653000',
+ 'children': [
+ {
+ 'name': '阿图什市',
+ 'code': '653001'
+ },
+ {
+ 'name': '阿克陶县',
+ 'code': '653022'
+ },
+ {
+ 'name': '阿合奇县',
+ 'code': '653023'
+ },
+ {
+ 'name': '乌恰县',
+ 'code': '653024'
+ }
+ ]
+ },
+ {
+ 'name': '喀什地区',
+ 'code': '653100',
+ 'children': [
+ {
+ 'name': '喀什市',
+ 'code': '653101'
+ },
+ {
+ 'name': '疏附县',
+ 'code': '653121'
+ },
+ {
+ 'name': '疏勒县',
+ 'code': '653122'
+ },
+ {
+ 'name': '英吉沙县',
+ 'code': '653123'
+ },
+ {
+ 'name': '泽普县',
+ 'code': '653124'
+ },
+ {
+ 'name': '莎车县',
+ 'code': '653125'
+ },
+ {
+ 'name': '叶城县',
+ 'code': '653126'
+ },
+ {
+ 'name': '麦盖提县',
+ 'code': '653127'
+ },
+ {
+ 'name': '岳普湖县',
+ 'code': '653128'
+ },
+ {
+ 'name': '伽师县',
+ 'code': '653129'
+ },
+ {
+ 'name': '巴楚县',
+ 'code': '653130'
+ },
+ {
+ 'name': '塔什库尔干塔吉克自治县',
+ 'code': '653131'
+ }
+ ]
+ },
+ {
+ 'name': '和田地区',
+ 'code': '653200',
+ 'children': [
+ {
+ 'name': '和田市',
+ 'code': '653201'
+ },
+ {
+ 'name': '和田县',
+ 'code': '653221'
+ },
+ {
+ 'name': '墨玉县',
+ 'code': '653222'
+ },
+ {
+ 'name': '皮山县',
+ 'code': '653223'
+ },
+ {
+ 'name': '洛浦县',
+ 'code': '653224'
+ },
+ {
+ 'name': '策勒县',
+ 'code': '653225'
+ },
+ {
+ 'name': '于田县',
+ 'code': '653226'
+ },
+ {
+ 'name': '民丰县',
+ 'code': '653227'
+ }
+ ]
+ },
+ {
+ 'name': '伊犁哈萨克自治州',
+ 'code': '654000',
+ 'children': [
+ {
+ 'name': '伊宁市',
+ 'code': '654002'
+ },
+ {
+ 'name': '奎屯市',
+ 'code': '654003'
+ },
+ {
+ 'name': '霍尔果斯市',
+ 'code': '654004'
+ },
+ {
+ 'name': '伊宁县',
+ 'code': '654021'
+ },
+ {
+ 'name': '察布查尔锡伯自治县',
+ 'code': '654022'
+ },
+ {
+ 'name': '霍城县',
+ 'code': '654023'
+ },
+ {
+ 'name': '巩留县',
+ 'code': '654024'
+ },
+ {
+ 'name': '新源县',
+ 'code': '654025'
+ },
+ {
+ 'name': '昭苏县',
+ 'code': '654026'
+ },
+ {
+ 'name': '特克斯县',
+ 'code': '654027'
+ },
+ {
+ 'name': '尼勒克县',
+ 'code': '654028'
+ }
+ ]
+ },
+ {
+ 'name': '塔城地区',
+ 'code': '654200',
+ 'children': [
+ {
+ 'name': '塔城市',
+ 'code': '654201'
+ },
+ {
+ 'name': '乌苏市',
+ 'code': '654202'
+ },
+ {
+ 'name': '额敏县',
+ 'code': '654221'
+ },
+ {
+ 'name': '沙湾县',
+ 'code': '654223'
+ },
+ {
+ 'name': '托里县',
+ 'code': '654224'
+ },
+ {
+ 'name': '裕民县',
+ 'code': '654225'
+ },
+ {
+ 'name': '和布克赛尔蒙古自治县',
+ 'code': '654226'
+ }
+ ]
+ },
+ {
+ 'name': '阿勒泰地区',
+ 'code': '654300',
+ 'children': [
+ {
+ 'name': '阿勒泰市',
+ 'code': '654301'
+ },
+ {
+ 'name': '布尔津县',
+ 'code': '654321'
+ },
+ {
+ 'name': '富蕴县',
+ 'code': '654322'
+ },
+ {
+ 'name': '福海县',
+ 'code': '654323'
+ },
+ {
+ 'name': '哈巴河县',
+ 'code': '654324'
+ },
+ {
+ 'name': '青河县',
+ 'code': '654325'
+ },
+ {
+ 'name': '吉木乃县',
+ 'code': '654326'
+ }
+ ]
+ },
+ {
+ 'name': '直辖县',
+ 'code': '659000',
+ 'children': [
+ {
+ 'name': '石河子市',
+ 'code': '659001'
+ },
+ {
+ 'name': '阿拉尔市',
+ 'code': '659002'
+ },
+ {
+ 'name': '图木舒克市',
+ 'code': '659003'
+ },
+ {
+ 'name': '五家渠市',
+ 'code': '659004'
+ },
+ {
+ 'name': '北屯市',
+ 'code': '659005'
+ },
+ {
+ 'name': '铁门关市',
+ 'code': '659006'
+ },
+ {
+ 'name': '双河市',
+ 'code': '659007'
+ },
+ {
+ 'name': '可克达拉市',
+ 'code': '659008'
+ },
+ {
+ 'name': '昆玉市',
+ 'code': '659009'
+ }
+ ]
+ }
+ ]
+ }
+]
+
+export default area
diff --git a/src/util/directive.js b/src/util/directive.js
new file mode 100644
index 00000000..9a144882
--- /dev/null
+++ b/src/util/directive.js
@@ -0,0 +1,19 @@
+import { auth, authAll } from '@/util'
+
+export default function directive(app) {
+ // 注册 v-auth 和 v-auth-all 指令
+ app.directive('auth', {
+ mounted: (el, binding) => {
+ if (!auth(binding.value)) {
+ el.remove()
+ }
+ }
+ })
+ app.directive('auth-all', {
+ mounted: (el, binding) => {
+ if (!authAll(binding.value)) {
+ el.remove()
+ }
+ }
+ })
+}
diff --git a/src/util/global.properties.js b/src/util/global.properties.js
new file mode 100644
index 00000000..cb30de53
--- /dev/null
+++ b/src/util/global.properties.js
@@ -0,0 +1,20 @@
+import api from '@/api'
+import { auth, authAll } from '@/util'
+import dayjs from 'dayjs'
+import 'dayjs/locale/zh-cn'
+import Cookies from 'js-cookie'
+import hotkeys from 'hotkeys-js'
+import mitt from 'mitt'
+
+export default function globalProperties(app) {
+ // 请求
+ app.config.globalProperties.$api = api
+ // 鉴权
+ app.config.globalProperties.$auth = auth
+ app.config.globalProperties.$authAll = authAll
+ dayjs.locale('zh-cn')
+ app.config.globalProperties.$dayjs = dayjs
+ app.config.globalProperties.$cookies = Cookies
+ app.config.globalProperties.$hotkeys = hotkeys
+ app.config.globalProperties.$eventBus = mitt()
+}
diff --git a/src/util/index.js b/src/util/index.js
new file mode 100644
index 00000000..b9557c88
--- /dev/null
+++ b/src/util/index.js
@@ -0,0 +1,63 @@
+import store from '@/store'
+
+export function deepClone(target) {
+ // 定义一个变量
+ let result
+ // 如果当前需要深拷贝的是一个对象的话
+ if (typeof target === 'object') {
+ // 如果是一个数组的话
+ if (Array.isArray(target)) {
+ result = [] // 将result赋值为一个数组,并且执行遍历
+ for (let i in target) {
+ // 递归克隆数组中的每一项
+ result.push(deepClone(target[i]))
+ }
+ // 判断如果当前的值是null的话;直接赋值为null
+ } else if (target === null) {
+ result = null
+ // 判断如果当前的值是一个RegExp对象的话,直接赋值
+ } else if (target.constructor === RegExp) {
+ result = target
+ } else {
+ // 否则是普通对象,直接for in循环,递归赋值对象的所有值
+ result = {}
+ for (let i in target) {
+ result[i] = deepClone(target[i])
+ }
+ }
+ // 如果不是对象的话,就是基本数据类型,那么直接赋值
+ } else {
+ result = target
+ }
+ // 返回最终结果
+ return result
+}
+
+function hasPermission(permission) {
+ if (store.state.settings.enablePermission) {
+ return store.state.user.permissions.some(v => {
+ return v === permission
+ })
+ } else {
+ return true
+ }
+}
+
+export function auth(value) {
+ let auth
+ if (typeof value === 'string') {
+ auth = hasPermission(value)
+ } else {
+ auth = value.some(item => {
+ return hasPermission(item)
+ })
+ }
+ return auth
+}
+
+export function authAll(value) {
+ const auth = value.every(item => {
+ return hasPermission(item)
+ })
+ return auth
+}
diff --git a/src/views/404.vue b/src/views/404.vue
new file mode 100644
index 00000000..785f8704
--- /dev/null
+++ b/src/views/404.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
404
+
抱歉,你访问的页面不存在
+
{{ countdown }}秒后,返回首页
+
+
+
+
+
+
+
diff --git a/src/views/breadcrumb_example/detail1.vue b/src/views/breadcrumb_example/detail1.vue
new file mode 100644
index 00000000..b5583c8a
--- /dev/null
+++ b/src/views/breadcrumb_example/detail1.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/views/breadcrumb_example/detail2.vue b/src/views/breadcrumb_example/detail2.vue
new file mode 100644
index 00000000..b5583c8a
--- /dev/null
+++ b/src/views/breadcrumb_example/detail2.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/views/breadcrumb_example/list1.vue b/src/views/breadcrumb_example/list1.vue
new file mode 100644
index 00000000..86dbedfd
--- /dev/null
+++ b/src/views/breadcrumb_example/list1.vue
@@ -0,0 +1,5 @@
+
+
+ 查看详情页
+
+
diff --git a/src/views/breadcrumb_example/list2.vue b/src/views/breadcrumb_example/list2.vue
new file mode 100644
index 00000000..d3adf91c
--- /dev/null
+++ b/src/views/breadcrumb_example/list2.vue
@@ -0,0 +1,5 @@
+
+
+ 查看详情页
+
+
diff --git a/src/views/component_basic_example/button.vue b/src/views/component_basic_example/button.vue
new file mode 100644
index 00000000..ea6c9880
--- /dev/null
+++ b/src/views/component_basic_example/button.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+ 默认按钮
+ 主要按钮
+ 成功按钮
+ 信息按钮
+ 警告按钮
+ 危险按钮
+
+
+ 朴素按钮
+ 主要按钮
+ 成功按钮
+ 信息按钮
+ 警告按钮
+ 危险按钮
+
+
+ 圆角按钮
+ 主要按钮
+ 成功按钮
+ 信息按钮
+ 警告按钮
+ 危险按钮
+
+
+
+
+
+
+
+
+
+
+
+
+ 默认按钮
+ 主要按钮
+ 成功按钮
+ 信息按钮
+ 警告按钮
+ 危险按钮
+
+
+ 朴素按钮
+ 主要按钮
+ 成功按钮
+ 信息按钮
+ 警告按钮
+ 危险按钮
+
+
+
+ 文字按钮
+ 文字按钮
+
+
+
+
+
+ 搜索
+ 上传
+
+
+
+ 上一页
+ 下一页
+
+
+
+
+
+
+
+
+ 加载中
+
+
+
+ 默认按钮
+ 中等按钮
+ 小型按钮
+ 超小按钮
+
+
+ 默认按钮
+ 中等按钮
+ 小型按钮
+ 超小按钮
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/checkbox.vue b/src/views/component_basic_example/checkbox.vue
new file mode 100644
index 00000000..5f914315
--- /dev/null
+++ b/src/views/component_basic_example/checkbox.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+ 备选项
+
+
+ 备选项1
+ 备选项
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ city }}
+
+
+
+
+ {{ city }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/components/alert.vue b/src/views/component_basic_example/components/alert.vue
new file mode 100644
index 00000000..c4c597a4
--- /dev/null
+++ b/src/views/component_basic_example/components/alert.vue
@@ -0,0 +1,16 @@
+
+
+
+
+ 基础组件来自 Element Plus ,更多组件及使用技巧请查看 Element Plus 官网
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/datepicker.vue b/src/views/component_basic_example/datepicker.vue
new file mode 100644
index 00000000..e0f0e3f8
--- /dev/null
+++ b/src/views/component_basic_example/datepicker.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+ 默认
+
+ 带快捷选项
+
+
+
+ 周
+
+ 月
+
+ 年
+
+ 多个日期
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/datetimepicker.vue b/src/views/component_basic_example/datetimepicker.vue
new file mode 100644
index 00000000..fa03bc9f
--- /dev/null
+++ b/src/views/component_basic_example/datetimepicker.vue
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+ 起始日期时刻为 12:00:00,结束日期时刻为 08:00:00
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/icon.json b/src/views/component_basic_example/icon.json
new file mode 100644
index 00000000..873aefb4
--- /dev/null
+++ b/src/views/component_basic_example/icon.json
@@ -0,0 +1 @@
+["platform-eleme","eleme","delete-solid","delete","s-tools","setting","user-solid","user","phone","phone-outline","more","more-outline","star-on","star-off","s-goods","goods","warning","warning-outline","question","info","remove","circle-plus","success","error","zoom-in","zoom-out","remove-outline","circle-plus-outline","circle-check","circle-close","s-help","help","minus","plus","check","close","picture","picture-outline","picture-outline-round","upload","upload2","download","camera-solid","camera","video-camera-solid","video-camera","message-solid","bell","s-cooperation","s-order","s-platform","s-fold","s-unfold","s-operation","s-promotion","s-home","s-release","s-ticket","s-management","s-open","s-shop","s-marketing","s-flag","s-comment","s-finance","s-claim","s-custom","s-opportunity","s-data","s-check","s-grid","menu","share","d-caret","caret-left","caret-right","caret-bottom","caret-top","bottom-left","bottom-right","back","right","bottom","top","top-left","top-right","arrow-left","arrow-right","arrow-down","arrow-up","d-arrow-left","d-arrow-right","video-pause","video-play","refresh","refresh-right","refresh-left","finished","sort","sort-up","sort-down","rank","loading","view","c-scale-to-original","date","edit","edit-outline","folder","folder-opened","folder-add","folder-remove","folder-delete","folder-checked","tickets","document-remove","document-delete","document-copy","document-checked","document","document-add","printer","paperclip","takeaway-box","search","monitor","attract","mobile","scissors","umbrella","headset","brush","mouse","coordinate","magic-stick","reading","data-line","data-board","pie-chart","data-analysis","collection-tag","film","suitcase","suitcase-1","receiving","collection","files","notebook-1","notebook-2","toilet-paper","office-building","school","table-lamp","house","no-smoking","smoking","shopping-cart-full","shopping-cart-1","shopping-cart-2","shopping-bag-1","shopping-bag-2","sold-out","sell","present","box","bank-card","money","coin","wallet","discount","price-tag","news","guide","male","female","thumb","cpu","link","connection","open","turn-off","set-up","chat-round","chat-line-round","chat-square","chat-dot-round","chat-dot-square","chat-line-square","message","postcard","position","turn-off-microphone","microphone","close-notification","bangzhu","time","odometer","crop","aim","switch-button","full-screen","copy-document","mic","stopwatch","medal-1","medal","trophy","trophy-1","first-aid-kit","discover","place","location","location-outline","location-information","add-location","delete-location","map-location","alarm-clock","timer","watch-1","watch","lock","unlock","key","service","mobile-phone","bicycle","truck","ship","basketball","football","soccer","baseball","wind-power","light-rain","lightning","heavy-rain","sunrise","sunrise-1","sunset","sunny","cloudy","partly-cloudy","cloudy-and-sunny","moon","moon-night","dish","dish-1","food","chicken","fork-spoon","knife-fork","burger","tableware","sugar","dessert","ice-cream","hot-water","water-cup","coffee-cup","cold-drink","goblet","goblet-full","goblet-square","goblet-square-full","refrigerator","grape","watermelon","cherry","apple","pear","orange","coffee","ice-tea","ice-drink","milk-tea","potato-strips","lollipop","ice-cream-square","ice-cream-round"]
diff --git a/src/views/component_basic_example/icon.vue b/src/views/component_basic_example/icon.vue
new file mode 100644
index 00000000..0c4eade9
--- /dev/null
+++ b/src/views/component_basic_example/icon.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/input.vue b/src/views/component_basic_example/input.vue
new file mode 100644
index 00000000..35f700f8
--- /dev/null
+++ b/src/views/component_basic_example/input.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/inputnumber.vue b/src/views/component_basic_example/inputnumber.vue
new file mode 100644
index 00000000..388a596f
--- /dev/null
+++ b/src/views/component_basic_example/inputnumber.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/link.vue b/src/views/component_basic_example/link.vue
new file mode 100644
index 00000000..462d02cd
--- /dev/null
+++ b/src/views/component_basic_example/link.vue
@@ -0,0 +1,48 @@
+
+
+
+
+
+ 默认链接
+ 主要链接
+ 成功链接
+ 警告链接
+ 危险链接
+ 信息链接
+
+
+ 默认链接
+ 主要链接
+ 成功链接
+ 警告链接
+ 危险链接
+ 信息链接
+
+
+ 无下划线
+ 有下划线
+
+
+ 编辑
+ 查看
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/radio.vue b/src/views/component_basic_example/radio.vue
new file mode 100644
index 00000000..eb40f9c2
--- /dev/null
+++ b/src/views/component_basic_example/radio.vue
@@ -0,0 +1,52 @@
+
+
+
+
+
+ 备选项
+ 备选项
+
+
+ 备选项
+ 备选项
+
+
+
+ 备选项
+ 备选项
+ 备选项
+
+
+
+
+
+
+
+
+
+
+
+ 备选项1
+ 备选项2
+
+
+
+
+
diff --git a/src/views/component_basic_example/rate.vue b/src/views/component_basic_example/rate.vue
new file mode 100644
index 00000000..e4eae9bc
--- /dev/null
+++ b/src/views/component_basic_example/rate.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
diff --git a/src/views/component_basic_example/select.vue b/src/views/component_basic_example/select.vue
new file mode 100644
index 00000000..15dc589d
--- /dev/null
+++ b/src/views/component_basic_example/select.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/slider.vue b/src/views/component_basic_example/slider.vue
new file mode 100644
index 00000000..a54d223d
--- /dev/null
+++ b/src/views/component_basic_example/slider.vue
@@ -0,0 +1,61 @@
+
+
+
+
+
+ 默认
+
+ 自定义初始值
+
+ 隐藏 Tooltip
+
+ 格式化 Tooltip
+
+ 禁用
+
+
+
+ 不显示间断点
+
+ 显示间断点
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/switch.vue b/src/views/component_basic_example/switch.vue
new file mode 100644
index 00000000..0a66af2c
--- /dev/null
+++ b/src/views/component_basic_example/switch.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_basic_example/timepicker.vue b/src/views/component_basic_example/timepicker.vue
new file mode 100644
index 00000000..fdf7f313
--- /dev/null
+++ b/src/views/component_basic_example/timepicker.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/actionbar.vue b/src/views/component_extend_example/actionbar.vue
new file mode 100644
index 00000000..0c80d11c
--- /dev/null
+++ b/src/views/component_extend_example/actionbar.vue
@@ -0,0 +1,155 @@
+
+
+
+
+ FixedActionBar
+ 避免因页面过长导致操作按钮需要滚动到页面底部才能操作,例如表单页
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 立即创建
+ 取消
+
+
+
+
+
diff --git a/src/views/component_extend_example/area.vue b/src/views/component_extend_example/area.vue
new file mode 100644
index 00000000..14ec579b
--- /dev/null
+++ b/src/views/component_extend_example/area.vue
@@ -0,0 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/batchactionbar.vue b/src/views/component_extend_example/batchactionbar.vue
new file mode 100644
index 00000000..b65e9cdd
--- /dev/null
+++ b/src/views/component_extend_example/batchactionbar.vue
@@ -0,0 +1,73 @@
+
+
+
+
+ BatchActionBar
+ 该组件需要和 ElTable 搭配使用
+
+
+
+
+ 单个批量操作按钮
+
+ 批量操作按钮组1
+ 批量操作按钮组2
+
+
+
+
+
+
+
+
+
+ 单个批量操作按钮
+
+ 批量操作按钮组1
+ 批量操作按钮组2
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/editor.vue b/src/views/component_extend_example/editor.vue
new file mode 100644
index 00000000..3f4c57d0
--- /dev/null
+++ b/src/views/component_extend_example/editor.vue
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/image.preview.vue b/src/views/component_extend_example/image.preview.vue
new file mode 100644
index 00000000..ab4a7d88
--- /dev/null
+++ b/src/views/component_extend_example/image.preview.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/pageheader.vue b/src/views/component_extend_example/pageheader.vue
new file mode 100644
index 00000000..bff5ce50
--- /dev/null
+++ b/src/views/component_extend_example/pageheader.vue
@@ -0,0 +1,12 @@
+
+
+
+
+
+ 提供两块插槽:
+ 一块是 content 区域插槽,一块是右侧区域
+
+ 返回
+
+
+
diff --git a/src/views/component_extend_example/pagemain.vue b/src/views/component_extend_example/pagemain.vue
new file mode 100644
index 00000000..7983d402
--- /dev/null
+++ b/src/views/component_extend_example/pagemain.vue
@@ -0,0 +1,33 @@
+
+
+
+
+ PageMain 是最常用的页面组件,几乎所有页面都会使用到
+
+
+ 这里放页面内容
+
+
+
+
+ 还可以结合 ElRow 使用
+
+
+
+
+ 这里放页面内容
+
+
+
+
+ 这里放页面内容
+
+
+
+
+ Fantastic-admin
+
+ 这是一款开箱即用的中后台框架,同时它也经历过数十个真实项目的技术沉淀,确保框架在开发中可落地、可使用、可维护
+
+
+
diff --git a/src/views/component_extend_example/result.vue b/src/views/component_extend_example/result.vue
new file mode 100644
index 00000000..a909dfb3
--- /dev/null
+++ b/src/views/component_extend_example/result.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+ 返回列表
+ 打印
+
+
+
+
+
+ 您提交的内容有如下错误:
+
+
+ 返回修改
+
+
+
+
diff --git a/src/views/component_extend_example/searchbar.vue b/src/views/component_extend_example/searchbar.vue
new file mode 100644
index 00000000..5f06a01d
--- /dev/null
+++ b/src/views/component_extend_example/searchbar.vue
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 备选项
+ 备选项
+
+
+
+
+ 筛选
+ 导出
+ 查看已导出记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 备选项
+ 备选项
+
+
+
+
+ 筛选
+ 导出
+ 查看已导出记录
+
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/svg.vue b/src/views/component_extend_example/svg.vue
new file mode 100644
index 00000000..d84d2056
--- /dev/null
+++ b/src/views/component_extend_example/svg.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+ 也支持彩色 SVG Icon
+
+
+
+
+
翻转:
+
+ 无
+ 水平翻转
+ 垂直翻转
+ 水平垂直翻转
+
+
旋转:
+
+
+ 使用方法:
+
+ - 上 Iconfont 下载需要的 svg 图标
+ - 将 svg 文件放入 ./src/assets/icons 目录下,文件名即为 name
+
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/table.autoheight.vue b/src/views/component_extend_example/table.autoheight.vue
new file mode 100644
index 00000000..24279c5b
--- /dev/null
+++ b/src/views/component_extend_example/table.autoheight.vue
@@ -0,0 +1,160 @@
+
+
+
+
+ AbsoluteContainer
+ 该组件是一个 absolute 固定容器,表格自适应需要自行实现,可参考演示源码,缩小浏览器窗口高度可查看最终效果
+
+
+
+
+
+
+
+
+
+ 新增
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/trend.vue b/src/views/component_extend_example/trend.vue
new file mode 100644
index 00000000..b9a07d1a
--- /dev/null
+++ b/src/views/component_extend_example/trend.vue
@@ -0,0 +1,42 @@
+
+
+
+
+ Trend
+ 标记上升和下降趋势。通常用绿色代表“好”,红色代表“不好”,股票涨跌场景除外
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/component_extend_example/upload.vue b/src/views/component_extend_example/upload.vue
new file mode 100644
index 00000000..4a841f45
--- /dev/null
+++ b/src/views/component_extend_example/upload.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
diff --git a/src/views/index.vue b/src/views/index.vue
new file mode 100644
index 00000000..4a0bb061
--- /dev/null
+++ b/src/views/index.vue
@@ -0,0 +1,389 @@
+
+
+
+
+
+
这是一款开箱即用的中后台框架,同时它也经历过数十个真实项目的技术沉淀,确保框架在开发中可落地、可使用、可维护
+
注:在作者就职的公司,本框架已在电商、直播、OA、ERP等多个不同领域的中后台系统中应用并稳定运行
+
+
+
+ 开发文档
+ 代码仓库
+
+
+
+
+
+
+
![]()
+
Fantastic-admin
+
+
+
+ {{ item }}
+
+
+
+
+ {{ item }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - 没有前端开发人员的小型公司。据了解,有些小型公司没有前端开发人员,而这些公司在开发中后台系统的时候,直接要求后端开发人员来进行开发工作。所以借助 Vue 的易学习易上手特性,再加上本框架的加持,可以让后端开发人员能在短时间内转型成为全栈开发。
+ - 前端开发人员不足的中小型公司。根据招聘网站统计,几乎所有公司都缺前端,其中有很大一部分中小型公司标配只有1-2名前端开发人员,而这些公司在开发中后台系统的时候,如果能有一套现成的中后台框架系统,不仅能提高项目开发效率,同时还大大减轻前端开发人员工作压力。
+ - 项目型公司。特点为项目多,周期短,甲方对页面布局和主题风格有绝对话语权,而通过专业版提供的 20 套页面布局和 6 款主题风格(共计 120 种)可应对绝大部分甲方需求,并且可自定义扩展主题风格的样式,实现高度定制化。
+ - 产品型公司。产品型公司最担心的就是产品开发中代码不可控的因素,本框架除了提供完善的开发文档和代码注释外,针对专业版用户还提供一对一的技术支持,确保开发人员尽可能理解整套框架源码的方方面面,为产品保驾护航。
+ - 接私活的个人开发者。手里有一套可高度定制化的中后台框架,什么项目都不用担心啦~
+
+
+
+
+
+
+ - 作者拥有10年+的前后端开发经验。部分框架的作者由于天然缺少后端开发经验,可能会在设计框架的时候,很少或者没有考虑后端的实现逻辑,导致框架在实际使用中,业务场景无法落地,开发人员得通过修改源码自行实现业务。
+ - 经历过数十个真实项目的打磨。没用在真实业务场景中使用过的框架都是纸飞机,哪怕它提供的演示功能特别华丽。而本框架在作者就职的公司,已经稳定应用在电商、直播、OA、CRM、ERP等多个不同领域的中后台系统中。
+ - 丰富的组件库。除了支持 ElementUI 自带的组件外,框架还扩充了部分业务组件,以及第三方插件。借助以往的项目经验,提供最佳实践方案,方便开发人员直接使用。
+ - 持续更新的业务应用静态页面。通过项目积累,沉淀出数十个业务应用的静态页面,做到开发人员拿来即可使用,极大提升开发效率的同时,还省去了产品和设计人员的工作。
+ - 长期维护。无论是免费的基础版,还是付费的专业版,均提供长期维护。区别在于基础版侧重于稳定性维护,主要在修复 bug ,不定期增加新特性;专业版侧重于新特性开发,在确保稳定的基础上,会长期深挖中后台系统框架,持续产出可落地的特性或开发规范。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 123
+ {{ titlePrefix[0] }}访问量(单位:PV)
+
+
+ 123
+ {{ titlePrefix[1] }}访问量(单位:PV)
+
+
+ 12
+ 对比
+
+
+
+
+ 123
+ {{ titlePrefix[0] }}访问量(单位:UV)
+
+
+ 123
+ {{ titlePrefix[1] }}访问量(单位:UV)
+
+
+ 12
+ 对比
+
+
+
+
+
+
+
+
+
+
+
+ 123
+ {{ titlePrefix[0] }}下载量(单位:次)
+
+
+ 123
+ {{ titlePrefix[1] }}下载量(单位:次)
+
+
+ 12
+ 对比
+
+
+
+
+
+
+
+
+
+
+
+ 123
+ {{ titlePrefix[0] }}销售总金额(单位:人民币)
+
+
+ 123
+ {{ titlePrefix[1] }}销售总金额(单位:人民币)
+
+
+ 12
+ 对比
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/keep_alive_example/detail.vue b/src/views/keep_alive_example/detail.vue
new file mode 100644
index 00000000..96e00248
--- /dev/null
+++ b/src/views/keep_alive_example/detail.vue
@@ -0,0 +1,5 @@
+
+
+ 返回
+
+
diff --git a/src/views/keep_alive_example/nested/nested.vue b/src/views/keep_alive_example/nested/nested.vue
new file mode 100644
index 00000000..acc15db0
--- /dev/null
+++ b/src/views/keep_alive_example/nested/nested.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/src/views/keep_alive_example/nested/nested/nested.vue b/src/views/keep_alive_example/nested/nested/nested.vue
new file mode 100644
index 00000000..e593c59c
--- /dev/null
+++ b/src/views/keep_alive_example/nested/nested/nested.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
diff --git a/src/views/keep_alive_example/nested/nested/nested/index.vue b/src/views/keep_alive_example/nested/nested/nested/index.vue
new file mode 100644
index 00000000..9569e14e
--- /dev/null
+++ b/src/views/keep_alive_example/nested/nested/nested/index.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/src/views/keep_alive_example/nested/nested/nested/index2.vue b/src/views/keep_alive_example/nested/nested/nested/index2.vue
new file mode 100644
index 00000000..e14f5b1b
--- /dev/null
+++ b/src/views/keep_alive_example/nested/nested/nested/index2.vue
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/src/views/keep_alive_example/page.vue b/src/views/keep_alive_example/page.vue
new file mode 100644
index 00000000..f491776d
--- /dev/null
+++ b/src/views/keep_alive_example/page.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+ 进入同级路由页面
+ 进入下级路由页面
+ 进入下下级路由页面
+
+
+
+
+
+
+
+
diff --git a/src/views/login.vue b/src/views/login.vue
new file mode 100644
index 00000000..99939470
--- /dev/null
+++ b/src/views/login.vue
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
{{ title }}管理后台
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 记住我
+ 忘记密码
+
+ 登 录
+
+ 演示帐号一键登录:
+ admin
+ test
+
+
+
+
+
重置密码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 发送验证码
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 去登录
+
+
+ 确 认
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/mock_example/index.vue b/src/views/mock_example/index.vue
new file mode 100644
index 00000000..0915caed
--- /dev/null
+++ b/src/views/mock_example/index.vue
@@ -0,0 +1,29 @@
+
+
+
+ Mock.js 官网
+
+
+ 测试:获取用户权限
+
+
+
+
+
diff --git a/src/views/multilevel_menu_example/level2/level3/page1.vue b/src/views/multilevel_menu_example/level2/level3/page1.vue
new file mode 100644
index 00000000..c0e1ae94
--- /dev/null
+++ b/src/views/multilevel_menu_example/level2/level3/page1.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/views/multilevel_menu_example/level2/level3/page2.vue b/src/views/multilevel_menu_example/level2/level3/page2.vue
new file mode 100644
index 00000000..c77011cd
--- /dev/null
+++ b/src/views/multilevel_menu_example/level2/level3/page2.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/views/multilevel_menu_example/level2/page.vue b/src/views/multilevel_menu_example/level2/page.vue
new file mode 100644
index 00000000..77118409
--- /dev/null
+++ b/src/views/multilevel_menu_example/level2/page.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/views/multilevel_menu_example/page.vue b/src/views/multilevel_menu_example/page.vue
new file mode 100644
index 00000000..0fa72143
--- /dev/null
+++ b/src/views/multilevel_menu_example/page.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/src/views/permission_example/index.vue b/src/views/permission_example/index.vue
new file mode 100644
index 00000000..7ec313a3
--- /dev/null
+++ b/src/views/permission_example/index.vue
@@ -0,0 +1,111 @@
+
+
+
+
+ 请到 seeting.js 里打开权限功能,再进入该页面查看演示
+
+
切换帐号
+
+
+
+
+
帐号权限
+
{{ $store.state.user.permissions }}
+
鉴权组件(请对照代码查看)
+
+
+ 你有 permission.browse 权限
+
+ 你没有 permission.browse 权限
+
+
+
+ 你有 permission.create 权限
+
+ 你没有 permission.create 权限
+
+
+
+ 你有 permission.browse 或 permission.create 权限
+
+ 你没有 permission.browse 或 permission.create 权限
+
+
+
+ 你有 permission.browse 和 permission.create 权限
+
+ 你没有 permission.browse 和 permission.create 权限
+
+
+
+
鉴权指令(请对照代码查看)
+
+
+ 如果你有 permission.browse 权限则能看到这句话
+
+
+ 如果你有 permission.create 权限则能看到这句话
+
+
+ 如果你有 permission.browse 或 permission.create 权限则能看到这句话
+
+
+ 如果你有 permission.browse 和 permission.create 权限则能看到这句话
+
+
+
鉴权函数(请对照代码查看)
+
+
+ 校验 permission.browse 权限
+ 校验 permission.create 权限
+
+
+ 校验 permission.browse 或 permission.create 权限
+ 校验 permission.browse 和 permission.create 权限
+
+
+
+
+
+
+
+
diff --git a/src/views/personal/edit.password.vue b/src/views/personal/edit.password.vue
new file mode 100644
index 00000000..3b1c2585
--- /dev/null
+++ b/src/views/personal/edit.password.vue
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提交
+
+
+
+
+
diff --git a/src/views/personal/setting.vue b/src/views/personal/setting.vue
new file mode 100644
index 00000000..5c0d92a8
--- /dev/null
+++ b/src/views/personal/setting.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+ 基本设置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 保存
+
+
+
+
+
+
+
+
+
+ 安全设置
+
+
+
+
+
密保手机
+
已绑定手机:187****3441
+
+
+ 修改
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/reload.vue b/src/views/reload.vue
new file mode 100644
index 00000000..02d0fcf1
--- /dev/null
+++ b/src/views/reload.vue
@@ -0,0 +1,11 @@
+
+
+
+
+
diff --git a/src/views/videos_example/coming.soon.vue b/src/views/videos_example/coming.soon.vue
new file mode 100644
index 00000000..51f7aa50
--- /dev/null
+++ b/src/views/videos_example/coming.soon.vue
@@ -0,0 +1,5 @@
+
+
+
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 00000000..bba07e33
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,62 @@
+import { defineConfig, loadEnv } from 'vite'
+import createVitePlugins from './vite/plugins'
+
+const fs = require('fs')
+const path = require('path')
+
+// https://vitejs.dev/config/
+export default ({ mode, command }) => {
+ const env = loadEnv(mode, process.cwd())
+ // 全局 scss 资源
+ const scssResources = []
+ fs.readdirSync('src/assets/styles/resources').map(dirname => {
+ if (fs.statSync(`src/assets/styles/resources/${dirname}`).isFile()) {
+ scssResources.push(`@import "src/assets/styles/resources/${dirname}";`)
+ }
+ })
+ // css 精灵图相关
+ fs.readdirSync('src/assets/sprites').map(dirname => {
+ if (fs.statSync(`src/assets/sprites/${dirname}`).isDirectory()) {
+ // css 精灵图生成的 scss 文件也需要放入全局 scss 资源
+ scssResources.push(`@import "src/assets/sprites/_${dirname}.scss";`)
+ }
+ })
+ return defineConfig({
+ base: './',
+ // 开发服务器选项 https://cn.vitejs.dev/config/#server-options
+ server: {
+ open: true,
+ port: 9000,
+ proxy: {
+ '/proxy': {
+ target: env.VITE_APP_API_BASEURL,
+ changeOrigin: command === 'serve' && env.VITE_OPEN_PROXY == 'true',
+ rewrite: path => path.replace(/\/proxy/, '')
+ }
+ }
+ },
+ // 构建选项 https://cn.vitejs.dev/config/#server-fsserve-root
+ build: {
+ outDir: mode == 'production' ? 'dist' : `dist-${mode}`,
+ sourcemap: env.VITE_BUILD_SOURCEMAP == 'true',
+ terserOptions: {
+ compress: {
+ drop_console: env.VITE_BUILD_DROP_CONSOLE == 'true'
+ }
+ }
+ },
+ plugins: createVitePlugins(env, command === 'build'),
+ resolve: {
+ alias: {
+ '@': path.resolve(__dirname, 'src')
+ }
+ },
+ css: {
+ preprocessorOptions: {
+ scss: {
+ additionalData: scssResources.join('')
+ }
+ }
+ }
+ })
+}
diff --git a/vite/plugins/banner.js b/vite/plugins/banner.js
new file mode 100644
index 00000000..af7d0f48
--- /dev/null
+++ b/vite/plugins/banner.js
@@ -0,0 +1,10 @@
+import banner from 'vite-plugin-banner'
+
+export default function createBanner() {
+ return banner(`
+/**
+ * name: Fantastic-admin
+ * homepage: https://hooray.gitee.io/fantastic-admin/
+ */
+ `)
+}
diff --git a/vite/plugins/compression.js b/vite/plugins/compression.js
new file mode 100644
index 00000000..f808ecad
--- /dev/null
+++ b/vite/plugins/compression.js
@@ -0,0 +1,25 @@
+import compression from 'vite-plugin-compression'
+
+export default function createCompression(env) {
+ const { VITE_BUILD_COMPRESS } = env
+ const compressList = VITE_BUILD_COMPRESS.split(',')
+ const plugin = []
+ if (compressList.includes('gzip')) {
+ plugin.push(
+ compression({
+ ext: '.gz',
+ deleteOriginFile: false
+ })
+ )
+ }
+ if (compressList.includes('brotli')) {
+ plugin.push(
+ compression({
+ ext: '.br',
+ algorithm: 'brotliCompress',
+ deleteOriginFile: false
+ })
+ )
+ }
+ return plugin
+}
diff --git a/vite/plugins/html.js b/vite/plugins/html.js
new file mode 100644
index 00000000..6b8114b8
--- /dev/null
+++ b/vite/plugins/html.js
@@ -0,0 +1,16 @@
+import htmlPlugin from 'vite-plugin-html'
+
+export default function createHtml(env, isBuild) {
+ const { VITE_APP_TITLE, VITE_APP_DEBUG_TOOL, VITE_APP_MODE } = env
+ const html = htmlPlugin({
+ inject: {
+ injectData: {
+ title: VITE_APP_TITLE,
+ debugTool: VITE_APP_DEBUG_TOOL,
+ appMode: VITE_APP_MODE
+ }
+ },
+ minify: isBuild
+ })
+ return html
+}
diff --git a/vite/plugins/index.js b/vite/plugins/index.js
new file mode 100644
index 00000000..ef252071
--- /dev/null
+++ b/vite/plugins/index.js
@@ -0,0 +1,21 @@
+import vue from '@vitejs/plugin-vue'
+
+import createRestart from './restart'
+import createHtml from './html'
+import createSvgIcon from './svg-icon'
+import createMock from './mock'
+import createCompression from './compression'
+import createSpritesmith from './spritesmith'
+import createBanner from './banner'
+
+export default function createVitePlugins(viteEnv, isBuild = false) {
+ const vitePlugins = [vue()]
+ !isBuild && vitePlugins.push(createRestart())
+ vitePlugins.push(createHtml(viteEnv, isBuild))
+ vitePlugins.push(createSvgIcon(isBuild))
+ vitePlugins.push(createMock())
+ isBuild && vitePlugins.push(...createCompression(viteEnv))
+ vitePlugins.push(...createSpritesmith())
+ vitePlugins.push(createBanner())
+ return vitePlugins
+}
diff --git a/vite/plugins/mock.js b/vite/plugins/mock.js
new file mode 100644
index 00000000..605c47ff
--- /dev/null
+++ b/vite/plugins/mock.js
@@ -0,0 +1,11 @@
+import { viteMockServe } from 'vite-plugin-mock'
+
+export default function createMock() {
+ return viteMockServe({
+ mockPath: 'src/mock',
+ injectCode: `
+ import { setupProdMockServer } from './mockProdServer';
+ setupProdMockServer();
+ `
+ })
+}
diff --git a/vite/plugins/restart.js b/vite/plugins/restart.js
new file mode 100644
index 00000000..02800aff
--- /dev/null
+++ b/vite/plugins/restart.js
@@ -0,0 +1,9 @@
+import ViteRestart from 'vite-plugin-restart'
+
+export default function createRestart() {
+ return ViteRestart({
+ restart: [
+ '.env.development'
+ ]
+ })
+}
diff --git a/vite/plugins/spritesmith.js b/vite/plugins/spritesmith.js
new file mode 100644
index 00000000..e016f315
--- /dev/null
+++ b/vite/plugins/spritesmith.js
@@ -0,0 +1,49 @@
+import spritesmith from 'vite-plugin-spritesmith'
+import fs from 'fs'
+
+export default function createSpritesmith(isBuild) {
+ const spriteDirnames = []
+ fs.readdirSync('src/assets/sprites').map(dirname => {
+ if (fs.statSync(`src/assets/sprites/${dirname}`).isDirectory()) {
+ spriteDirnames.push(dirname)
+ }
+ })
+ const plugin = []
+ spriteDirnames.map(item => {
+ plugin.push(
+ spritesmith({
+ watch: !isBuild,
+ src: {
+ cwd: `./src/assets/sprites/${item}`,
+ glob: '*.png'
+ },
+ target: {
+ image: `./src/assets/sprites/${item}.png`,
+ css: [
+ [
+ `./src/assets/sprites/_${item}.scss`,
+ {
+ format: 'handlebars_based_template'
+ }
+ ]
+ ]
+ },
+ apiOptions: {
+ cssImageRef: `@/assets/sprites/${item}.png`,
+ spritesheet_info: {
+ name: item,
+ format: 'handlebars_based_template'
+ }
+ },
+ customTemplates: {
+ handlebars_based_template: './scss.template.hbs'
+ },
+ spritesmithOptions: {
+ algorithm: 'binary-tree',
+ padding: 10
+ }
+ })
+ )
+ })
+ return plugin
+}
diff --git a/vite/plugins/svg-icon.js b/vite/plugins/svg-icon.js
new file mode 100644
index 00000000..560c6fc5
--- /dev/null
+++ b/vite/plugins/svg-icon.js
@@ -0,0 +1,10 @@
+import svgIcon from 'vite-plugin-svg-icons'
+import path from 'path'
+
+export default function createSvgIcon(isBuild) {
+ return svgIcon({
+ iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/')],
+ symbolId: 'icon-[dir]-[name]',
+ svgoOptions: isBuild
+ })
+}