veypi 6 months ago
parent d2c9513c62
commit c306e8edc8

@ -6,6 +6,7 @@
// //
use std::cell::RefCell; use std::cell::RefCell;
use std::fmt;
use std::pin::Pin; use std::pin::Pin;
use std::rc::Rc; use std::rc::Rc;
use std::task::{Context, Poll}; use std::task::{Context, Poll};

@ -1,9 +0,0 @@
/dist
/src-capacitor
/src-cordova
/.quasar
/node_modules
.eslintrc.js
/src-ssr
/quasar.config.*.temporary.compiled*
/src/libs/

@ -1,95 +0,0 @@
module.exports = {
// https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy
// This option interrupts the configuration hierarchy at this file
// Remove this if you have an higher level ESLint config file (it usually happens into a monorepos)
root: true,
// https://eslint.vuejs.org/user-guide/#how-to-use-a-custom-parser
// Must use parserOptions instead of "parser" to allow vue-eslint-parser to keep working
// `parser: 'vue-eslint-parser'` is already included with any 'plugin:vue/**' config and should be omitted
parserOptions: {
parser: require.resolve('@typescript-eslint/parser'),
extraFileExtensions: ['.vue']
},
env: {
browser: true,
es2021: true,
node: true,
'vue/setup-compiler-macros': true
},
// Rules order is important, please avoid shuffling them
extends: [
// Base ESLint recommended rules
// 'eslint:recommended',
// https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#usage
// ESLint typescript rules
'plugin:@typescript-eslint/recommended',
// Uncomment any of the lines below to choose desired strictness,
// but leave only one uncommented!
// See https://eslint.vuejs.org/rules/#available-rules
'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
// 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
// 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
// https://github.com/prettier/eslint-config-prettier#installation
// usage with Prettier, provided by 'eslint-config-prettier'.
'prettier'
],
plugins: [
// required to apply rules which need type information
'@typescript-eslint',
// https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
// required to lint *.vue files
'vue'
// https://github.com/typescript-eslint/typescript-eslint/issues/389#issuecomment-509292674
// Prettier has not been included as plugin to avoid performance impact
// add it as an extension for your IDE
],
globals: {
ga: 'readonly', // Google Analytics
cordova: 'readonly',
__statics: 'readonly',
__QUASAR_SSR__: 'readonly',
__QUASAR_SSR_SERVER__: 'readonly',
__QUASAR_SSR_CLIENT__: 'readonly',
__QUASAR_SSR_PWA__: 'readonly',
process: 'readonly',
Capacitor: 'readonly',
chrome: 'readonly'
},
// add your custom rules here
rules: {
'@typescript-eslint/ban-ts-comment': 0,
'@typescript-eslint/no-empty-function': 0,
'vue/multi-word-component-names': 0,
'@typescript-eslint/no-unused-vars': 0,
'@typescript-eslint/no-explicit-any': 0,
'prefer-promise-reject-errors': 'off',
quotes: ['warn', 'single', { avoidEscape: true }],
// this rule, if on, would require explicit return type on the `render` function
'@typescript-eslint/explicit-function-return-type': 'off',
// in plain CommonJS modules, you can't use `import foo = require('foo')` to pass this rule, so it has to be disabled
'@typescript-eslint/no-var-requires': 'off',
// The core 'no-unused-vars' rules (in the eslint:recommended ruleset)
// does not work with type definitions
'no-unused-vars': 'off',
// allow debugger during development only
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
}
}

51
oaweb/.gitignore vendored

@ -1,37 +1,24 @@
.DS_Store # Nuxt dev/build outputs
.thumbs.db .output
node_modules .data
.nuxt
# Quasar core related directories .nitro
.quasar .cache
/dist dist
/quasar.config.*.temporary.compiled*
# Cordova related directories and files
/src-cordova/node_modules
/src-cordova/platforms
/src-cordova/plugins
/src-cordova/www
# Capacitor related directories and files # Node dependencies
/src-capacitor/www node_modules
/src-capacitor/node_modules
# BEX related directories and files
/src-bex/www
/src-bex/js/core
# Log files # Logs
npm-debug.log* logs
yarn-debug.log* *.log
yarn-error.log*
# Editor directories and files # Misc
.DS_Store
.fleet
.idea .idea
*.suo
*.ntvs*
*.njsproj
*.sln
# local .env files # Local env files
.env.local* .env
.env.*
!.env.example

@ -1,3 +0,0 @@
# pnpm-related options
shamefully-hoist=true
strict-peer-dependencies=false

@ -1,4 +0,0 @@
{
"singleQuote": true,
"semi": true
}

@ -1,15 +0,0 @@
{
"recommendations": [
"dbaeumer.vscode-eslint",
"esbenp.prettier-vscode",
"editorconfig.editorconfig",
"vue.volar",
"wayou.vscode-todo-highlight"
],
"unwantedRecommendations": [
"octref.vetur",
"hookyqr.beautify",
"dbaeumer.jshint",
"ms-vscode.vscode-typescript-tslint-plugin"
]
}

@ -1,16 +0,0 @@
{
"editor.bracketPairColorization.enabled": true,
"editor.guides.bracketPairs": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": [
"source.fixAll.eslint"
],
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"vue"
],
"typescript.tsdk": "node_modules/typescript/lib"
}

@ -1,41 +1,75 @@
# OneAuth (oaweb) # Nuxt 3 Minimal Starter
oneauth Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
## Setup
Make sure to install the dependencies:
## Install the dependencies
```bash ```bash
yarn # npm
# or
npm install npm install
# pnpm
pnpm install
# yarn
yarn install
# bun
bun install
``` ```
### Start the app in development mode (hot-code reloading, error reporting, etc.) ## Development Server
Start the development server on `http://localhost:3000`:
```bash ```bash
quasar dev # npm
npm run dev
# pnpm
pnpm run dev
# yarn
yarn dev
# bun
bun run dev
``` ```
## Production
Build the application for production:
### Lint the files
```bash ```bash
yarn lint # npm
# or npm run build
npm run lint
# pnpm
pnpm run build
# yarn
yarn build
# bun
bun run build
``` ```
Locally preview production build:
### Format the files
```bash ```bash
yarn format # npm
# or npm run preview
npm run format
```
# pnpm
pnpm run preview
# yarn
yarn preview
### Build the app for production # bun
```bash bun run preview
quasar build
``` ```
### Customize the configuration Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
See [Configuring quasar.config.js](https://v2.quasar.dev/quasar-cli-vite/quasar-config-js).

@ -0,0 +1,18 @@
/*
* app.config.ts
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-05-31 18:10
* Distributed under terms of the MIT license.
*/
export default defineAppConfig({
id: '',
layout: {
theme: '',
size: [0, 0],
header_height: 80,
footer_height: 16,
menu_width: 40,
}
})

@ -0,0 +1,47 @@
<template>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
<div id='v-msg'></div>
</template>
<script setup lang="ts">
let app = useAppConfig()
watch(app, () => {
document.documentElement.setAttribute('theme', app.layout.theme)
}, { immediate: true })
onMounted(() => {
app.layout.size = [document.body.clientWidth, document.body.clientHeight]
window.onresize = () => {
app.layout.size = [document.body.clientWidth, document.body.clientHeight]
}
})
</script>
<style >
body,
html {
height: 100vh;
width: 100vw;
margin: 0;
padding: 0;
background: var(--base-bg);
color: var(--base-txt);
}
/* 周围滑动留白 */
html {
overflow: hidden;
}
body {
overflow: auto;
}
#__nuxt {
height: 100vh;
width: 100vw;
}
</style>

@ -0,0 +1,88 @@
// app global css in SCSS form
:root {
transition: all 0.2s linear;
--base-txt: #000;
--base-bg: #f5f5f5;
--base-bg-1: #e0e0e0;
--base-bg-2: #d0d0d0;
--base-bg-3: #c0c0c0;
--header-bg: #d0d0d0;
--color-primary: #2196f3;
--color-secondary: #03a9f4;
--color-accent: #ff9800;
--color-error: #f44336;
--color-warning: #ff5722;
--color-info: #ffc107;
--color-success: #4caf50;
--input-line-default: #002f55;
--input-line-shine: #1467ff;
--input-line-error: var(--color-error);
--header-bg: #ff5722;
--header-txt: #fff;
--footer-bg: #999;
--footer-txt: #eee;
}
:root[theme='dark'] {
--base-txt: #eee;
--base-bg: #222;
}
.page-h1 {
font-size: 2.5rem;
line-height: 2.5rem;
margin-bottom: 2rem;
}
.div-center {
@apply flex justify-center items-center;
}
.div-btn {
@apply cursor-pointer transition duration-500 ease-in-out
transform hover:scale-110 hover:opacity-50;
}
.div-btn hr {
right: 50%;
position: absolute;
bottom: 1px;
width: 0;
border: var(--color-primary) solid 1px;
visibility: hidden;
transition: all 0.2s linear;
}
.div-btn:hover {
/*border-bottom: #03a9f4 1px solid;*/
}
.div-btn:hover hr {
visibility: visible;
width: 80%;
right: 10%;
}
.vbtn {
user-select: none;
display: inline-block;
padding: 5px 10px;
font-weight: bold;
text-align: center;
text-decoration: none;
border: none;
border-radius: 5px;
cursor: pointer;
transition: all 0.5s;
}
.vbtn:hover {
opacity: 0.8;
}

@ -1,14 +1,13 @@
<!-- <!--
* settings.vue * app.vue
* Copyright (C) 2023 veypi <i@veypi.com> * Copyright (C) 2024 veypi <i@veypi.com>
* 2023-10-08 06:10 * 2024-05-31 17:08
* Distributed under terms of the MIT license. * Distributed under terms of the MIT license.
--> -->
<template> <template>
<div></div>
<div> <div>
<h1 class="page-h1">系统设置</h1> Component: app.card
<div class="px-4">
</div>
</div> </div>
</template> </template>

@ -0,0 +1,66 @@
<!--
* menu.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-06-06 16:18
* Distributed under terms of the MIT license.
-->
<template>
<div class="select-none items flex flex-col">
<template v-for="(v, i) in list">
<div class="item flex items-center justify-center gap-2 py-4" :active='v.path === route.fullPath'
@click="$router.push(v.path)">
<slot :name="'L' + i" @click='$router.push(v.path)'>
<div class='ico' v-if="show_ico">
<OneIcon>{{ v.ico }}</OneIcon>
</div>
<div class="text-nowrap" v-if="show_name">
{{ v.name }}
</div>
</slot>
</div>
</template>
</div>
</template>
<script lang="ts" setup>
import { OneIcon } from '@veypi/one-icon'
let route = useRoute()
interface item {
ico: string
name: string
path: string
label?: string
subs?: item[]
}
withDefaults(defineProps<{
list: item[],
vertical?: boolean,
show_ico?: boolean,
show_name?: boolean,
}>(),
{
vertical: true,
show_ico: true,
show_name: true
}
)
</script>
<style scoped lang="scss">
.items {
.item {
opacity: 0.6;
}
.item[active=true] {
opacity: 1;
}
.item:hover {
opacity: 0.8;
}
}
</style>

@ -4,27 +4,30 @@
<div v-if="props.label" class="flex-shrink" :style="{ 'width': labelWidth }"> <div v-if="props.label" class="flex-shrink" :style="{ 'width': labelWidth }">
<slot name="label">{{ props.label }}</slot> <slot name="label">{{ props.label }}</slot>
</div> </div>
<div class="flex-grow vinput-body"> <div v-if="clicktoedit" class="flex-grow vinput-body
<template v-if="type === ArgType.Number"> cursor-pointer" @click=" clicktoedit = false"> {{ normalwrap ?
<input :type="type" :disabled="disabled" @input="check()" :value="value" @focusout="update" normalwrap(value) : value }}&nbsp;&nbsp;</div>
@focusin="change('input')" class="noborder w-full" :style="dy_style" style="font-weight: inherit" ref="inputRef" <div v-else class="flex-grow vinput-body">
@blur="update" @keyup.enter="unblur(); update();"> <template v-if="type === 'number'">
<input :type="type" :disabled="disabled" @input="check()" :value="value" @focusin="change('input')"
class="noborder w-full" :style="dy_style" style="font-weight: inherit" ref="inputRef" @blur="update"
@keyup.enter="update">
<hr> <hr>
</template> </template>
<template v-else-if="type === ArgType.Text"> <template v-else-if="type === 'text'">
<input :type="type" :disabled="disabled" @input="check()" :value="value" @focusout="update" <input :type="type" :disabled="disabled" @input="check()" :value="value" @focusin="change('input');"
@focusin="change('input');" class="noborder w-full" :style="dy_style" style="font-weight: inherit" class="noborder w-full" :style="dy_style" style="font-weight: inherit" ref="inputRef" @blur="update"
ref="inputRef" @blur="update" @keyup.enter="update"> @keyup.enter="update">
<hr> <hr>
</template> </template>
<template v-else-if="type === ArgType.Password"> <template v-else-if="type === 'password'">
<input :type="type" :disabled="disabled" @input="check()" :value="value" @focusout="update" <input :type="type" :disabled="disabled" @input="check()" :value="value" @focusin="change('input');"
@focusin="change('input');" class="noborder w-full" :style="dy_style" style="font-weight: inherit" class="noborder w-full" :style="dy_style" style="font-weight: inherit" ref="inputRef" @blur="update"
ref="inputRef" @blur="update" @keyup.enter="update"> @keyup.enter="update">
<hr> <hr>
</template> </template>
<template v-else-if="type === ArgType.File"> <template v-else-if="type === 'file'">
<!-- <FormKit v-model="value" @change="update" class="noborder" type="file" outer-class="w-full" />--> <!-- <FormKit v-model="value" @change="update" class="noborder" type="file" outer-class="w-full" />-->
<!-- <FormKit class="noborder" type="file" outer-class="w-full" />--> <!-- <FormKit class="noborder" type="file" outer-class="w-full" />-->
<div class="div-center rounded-md relative" style=""> <div class="div-center rounded-md relative" style="">
@ -36,20 +39,20 @@
</div> </div>
<!-- @click="setParameter(v.key,vv.key, c.value)"--> <!-- @click="setParameter(v.key,vv.key, c.value)"-->
</template> </template>
<template v-else-if="type === ArgType.Radio"> <template v-else-if="type === 'radio'">
<div class="flex justify-between gap-4"> <div class="flex justify-between gap-4">
<template :key="ov.key" v-for="ov of options"> <template :key="ok" v-for="(ov, ok) of transDic">
<div :class="[value === ov.key ? 'radio-btn-active' : <div :class="[value === ok ? 'radio-btn-active' :
'div-btn']" @click="setSelect(ov.key)" style="color:white;" 'div-btn']" @click="setSelect(ok)" style="color:white;"
class="div-center font-bold grow truncate radio-btn rounded-md transition duration-500"> class="div-center font-bold grow truncate radio-btn rounded-md transition duration-500">
{{ ov.name || ov.key }} {{ ov || ok }}
</div> </div>
</template> </template>
</div> </div>
</template> </template>
<template v-else-if="type === ArgType.Select"> <template v-else-if="type === 'select'">
<div class="noborder cursor-pointer w-full overflow-x-auto whitespace-nowrap" @click="showSelect" :title="title"> <div class="noborder cursor-pointer w-full overflow-x-auto whitespace-nowrap" @click="showSelect" :title="title">
<span v-if="value === undefined || value === null"></span> <span v-if="value === undefined || value === null"></span>
<span v-else-if="!Array.isArray(value)">{{ transDic[value] || value }}</span> <span v-else-if="!Array.isArray(value)">{{ transDic[value] || value }}</span>
@ -68,7 +71,7 @@
<div class="w-full h-32"></div> <div class="w-full h-32"></div>
</div> </div>
</template> </template>
<template v-else-if="type === ArgType.Region"> <template v-else-if="type === 'region'">
<div class="flex items-center justify-center"> <div class="flex items-center justify-center">
<template v-if="value[0] !== '∞'"> <template v-if="value[0] !== '∞'">
<OneIcon class="div-btn" @click="updateIndex(0, '∞')">kuohao</OneIcon> <OneIcon class="div-btn" @click="updateIndex(0, '∞')">kuohao</OneIcon>
@ -98,7 +101,7 @@
</template> </template>
</div> </div>
</template> </template>
<template v-else-if="type === ArgType.Bool"> <template v-else-if="type === 'bool'">
<div class="rounded-full relative overflow-x-hidden transition duration-300 cursor-pointer text-white leading-8" <div class="rounded-full relative overflow-x-hidden transition duration-300 cursor-pointer text-white leading-8"
@click="value = !value; update()" style='height: 2rem;width: 6rem;' @click="value = !value; update()" style='height: 2rem;width: 6rem;'
:style="{ 'background': value ? '#1467ff' : '#555' }"> :style="{ 'background': value ? '#1467ff' : '#555' }">
@ -119,11 +122,25 @@
<script lang="ts" setup> <script lang="ts" setup>
import { onMounted, ref, watch, computed } from 'vue'
import { ArgType, Dict } from 'src/models'
import validator from 'validator';
import { OneIcon } from '@veypi/one-icon' import { OneIcon } from '@veypi/one-icon'
type ArgType = 'text' | 'password' | 'bool' | 'select' | 'radio' | 'number' | 'region' | 'numList' | 'strList' | 'table' | 'grid' | 'file' | 'img'
// const ArgTypesTrans = {
// [ArgType.Text]: '',
// [ArgType.Password]: '',
// [ArgType.Select]: '',
// [ArgType.Radio]: '',
// [ArgType.Number]: '',
// [ArgType.Region]: '',
// [ArgType.NumList]: '',
// [ArgType.StrList]: '',
// [ArgType.Table]: '',
// [ArgType.Grid]: '',
// [ArgType.File]: '',
// [ArgType.Img]: '',
// [ArgType.Bool]: '',
// }
const props = withDefaults(defineProps<{ const props = withDefaults(defineProps<{
modelValue?: any modelValue?: any
@ -137,20 +154,26 @@ const props = withDefaults(defineProps<{
align?: string align?: string
flexy?: boolean flexy?: boolean
require?: boolean require?: boolean
clicktoedit?: boolean,
normalwrap?: (s: string) => string
validate?: any validate?: any
// //
title?: string title?: string
}>(), { }>(), {
modelValue: '', modelValue: '',
type: ArgType.Text, type: 'text',
disabled: false, disabled: false,
hideBorder: false, hideBorder: false,
tidy: false, tidy: false,
align: '', align: '',
flexy: false, flexy: false,
require: false, require: false,
clicktoedit: false,
labelWidth: '4rem' labelWidth: '4rem'
}) })
const clicktoedit = ref(props.clicktoedit)
const emit = defineEmits<{ const emit = defineEmits<{
(e: 'update:modelValue', data: any): void (e: 'update:modelValue', data: any): void
(e: 'change', data: any): void (e: 'change', data: any): void
@ -162,7 +185,7 @@ const dy_style = computed(() => `text-align:${props.align}`)
let inputRef = ref<HTMLInputElement>() let inputRef = ref<HTMLInputElement>()
let all = ref<HTMLElement>() let all = ref<HTMLElement>()
const transDic = ref({} as Dict) const transDic = ref({})
const change = (s: string) => { const change = (s: string) => {
if (props.disabled) { if (props.disabled) {
@ -181,15 +204,18 @@ const change = (s: string) => {
const value = ref(props.modelValue) const value = ref(props.modelValue)
const sync = () => { const sync = () => {
if (props.modelValue === value.value && props.clicktoedit) {
clicktoedit.value = true
}
if (typeof props.modelValue === 'object') { if (typeof props.modelValue === 'object') {
value.value = JSON.parse(JSON.stringify(props.modelValue)) value.value = JSON.parse(JSON.stringify(props.modelValue))
} else { } else {
value.value = props.modelValue value.value = props.modelValue
} }
if (props.type === ArgType.Number) { if (props.type === 'number') {
let v = parseFloat(props.modelValue) || 0 let v = parseFloat(props.modelValue) || 0
} }
if (props.type === ArgType.Radio || props.type === ArgType.Select) { if (props.type === 'radio' || props.type === 'select') {
transDic.value = {} transDic.value = {}
if (Array.isArray(props.options)) { if (Array.isArray(props.options)) {
for (let i of props.options) { for (let i of props.options) {
@ -202,15 +228,13 @@ const sync = () => {
} else { } else {
for (let i in props.options) { for (let i in props.options) {
transDic.value[i] = props.options[i] transDic.value[i] = props.options[i]
console.log([typeof i])
console.log(transDic.value)
} }
} }
} }
} }
watch(props, sync) watch(computed(() => props), sync)
const check = (e?: InputEvent) => { const check = (e?: InputEvent) => {
if (props.type === ArgType.Number) { if (props.type === 'number') {
let v = inputRef.value?.valueAsNumber let v = inputRef.value?.valueAsNumber
if (v !== 0 && !v) { if (v !== 0 && !v) {
return false return false
@ -222,34 +246,36 @@ const check = (e?: InputEvent) => {
return false return false
} }
value.value = v value.value = v
} else if (props.type === ArgType.Region) { } else if (props.type === 'region') {
if (value.value[0] !== '∞' && value.value[1] !== '∞' && value.value[0] >= value.value[1]) { if (value.value[0] !== '∞' && value.value[1] !== '∞' && value.value[0] >= value.value[1]) {
return false return false
} }
} else if (props.type === ArgType.Text || props.type === ArgType.Password) { } else if (props.type === 'text' || props.type === 'password') {
value.value = inputRef.value?.value value.value = inputRef.value?.value
if (!validator.isLength(value.value, props.options)) {
return false
}
} }
if (typeof props.validate === 'function') { if (typeof props.validate === 'function') {
if (!props.validate(value.value)) { if (!props.validate(value.value)) {
return false return false
} }
} else if (props.validate && typeof props.validate.test ===
'function') {
if (!props.validate.test(value.value)) {
return false
}
} }
return true return true
} }
const update = () => { const update = () => {
if (value.value === props.modelValue) { // if (value.value === props.modelValue) {
return // return
} // }
if (check()) { if (check()) {
change('idle') change('idle')
emit('update:modelValue', value.value) emit('update:modelValue', value.value)
emit('change', value.value)
} else { } else {
change('error') change('error')
} }
emit('change', value.value)
} }
const updateIndex = (index: number, v: any) => { const updateIndex = (index: number, v: any) => {
@ -398,7 +424,7 @@ select {
.radio-btn { .radio-btn {
background: #A8A8A8; background: #A8A8A8;
min-height: 2.5rem; min-height: 2rem;
} }
.radio-btn-active { .radio-btn-active {

@ -5,9 +5,7 @@
* Distributed under terms of the MIT license. * Distributed under terms of the MIT license.
*/ */
import axios, { AxiosError, AxiosInstance, AxiosResponse } from 'axios'; import axios, { AxiosError, AxiosResponse } from 'axios';
import msg from '@veypi/msg'
import util from 'src/libs/util';
// Be careful when using SSR for cross-request state pollution // Be careful when using SSR for cross-request state pollution
// due to creating a Singleton instance here; // due to creating a Singleton instance here;
@ -29,7 +27,7 @@ const proxy = axios.create({
const beforeRequest = (config: any) => { const beforeRequest = (config: any) => {
// 设置 token // 设置 token
const token = util.getToken() const token = util.getToken()
// NOTE 添加自定义头部 // // NOTE 添加自定义头部
token && (config.headers.auth_token = token) token && (config.headers.auth_token = token)
// config.headers['auth_token'] = '' // config.headers['auth_token'] = ''
return config return config

@ -0,0 +1,12 @@
/*
* index.ts
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-06-06 15:48
* Distributed under terms of the MIT license.
*/
import api from './api'
export * from './models'
export { type Auths, type modelsSimpleAuth } from './models'
export { api }

@ -0,0 +1,47 @@
/*
* state.ts
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-06-06 14:44
* Distributed under terms of the MIT license.
*/
import { type Auths } from '@/composables'
interface localuser {
id: string
local: modelsUser
auth: Auths
ready: boolean
}
export const useLocalUser = () => useState<localuser>('user', () => ({
id: '',
local: {} as modelsUser,
auth: {} as Auths,
ready: false
}))
interface Vapp {
id: string;
layout: {
theme: string;
// layout px
header_height: number;
footer_height: number;
menu_width: number;
}
}
export const useVapp = () => useState<Vapp>('vapp', () => ({
id: '',
layout: {
theme: '',
header_height: 80,
footer_height: 16,
menu_width: 40,
}
}))

@ -1,8 +1,15 @@
<!--
* error.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-06-06 17:59
* Distributed under terms of the MIT license.
-->
<template> <template>
<div class="flex justify-center items-center w-full h-full"> <div class="flex justify-center items-center w-full h-full">
<div class="text-center text-xl"> <div class="text-center text-xl">
<q-icon style="font-size: 200px" name="v-404"></q-icon> <OneIcon style="font-size: 200px">404</OneIcon>
<div> <div v-if='error && error.statusCode === 404'>
路径失效啦! {{ count }} 路径失效啦! {{ count }}
</div> </div>
</div> </div>
@ -10,10 +17,13 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { useRouter, useRoute } from 'vue-router' import { OneIcon } from '@veypi/one-icon'
import { onBeforeUnmount, onMounted, ref } from "vue"; import type { NuxtError } from '#app'
const props = defineProps({
error: Object as () => NuxtError
})
const route = useRoute()
const router = useRouter() const router = useRouter()
let count = ref(5) let count = ref(5)
let timer = ref() let timer = ref()
@ -21,7 +31,7 @@ onMounted(() => {
timer.value = setInterval(() => { timer.value = setInterval(() => {
count.value-- count.value--
if (count.value === 0) { if (count.value === 0) {
router.push({ name: 'home' }) router.push('/')
clearInterval(timer.value) clearInterval(timer.value)
} }
}, 1000) }, 1000)

@ -1,25 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>
OA
</title>
<meta charset="utf-8">
<meta name="description" content="<%= productDescription %>">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport"
content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width<% if (ctx.mode.cordova || ctx.mode.capacitor) { %>, viewport-fit=cover<% } %>">
<link rel="icon" type="image/ico" href="favicon.ico">
</head>
<body>
<div id='v-msg'></div>
<!-- quasar:entry-point -->
</body>
</html>

@ -0,0 +1,123 @@
<!--
* default.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-05-31 17:09
* Distributed under terms of the MIT license.
-->
<template>
<div class="page">
<div class="header flex justify-center items-center">
<div class="ico" @click="toggle_menu(1)"></div>
<div @click="toggle_menu(2)"></div>
<div class="grow"></div>
</div>
<div class="menu">
<Menu :show_name="menu_mode === 2" :list="menu"></Menu>
</div>
<div class="menu-hr"></div>
<div class="main">
<slot />
</div>
<div class="footer flex justify-around items-center">
<div @click="toggle_menu(0)">© 2024 veypi</div>
<div>使用说明</div>
<div>联系我们</div>
</div>
</div>
</template>
<script lang="ts" setup>
let menu = ref([
{ ico: 'home', name: '应用中心', path: '/' },
{ ico: 'user', name: '用户设置', path: '/user' },
{ ico: 'file-exception', name: '文档中心', path: '/docs' },
{ ico: 'setting', name: '系统设置', path: '/settings' },
])
let app = useAppConfig()
let router = useRouter()
if (!util.checkLogin()) {
router.push('/login')
}
let menu_mode = ref(1)
let toggle_menu = (m: 0 | 1 | 2) => {
menu_mode.value = m
if (m == 0) {
app.layout.menu_width = 0
} else if (m == 1) {
app.layout.menu_width = 40
} else {
app.layout.menu_width = 100
}
}
console.log(1111)
</script>
<style scoped lang="scss">
.page {
height: 100vh;
width: 100vw;
.header {
height: v-bind('app.layout.header_height + "px"');
user-select: none;
background: var(--header-bg);
color: var(--header-txt);
font-size: 24px;
.ico {
width: v-bind('app.layout.header_height * 0.8 + "px"');
height: v-bind('app.layout.header_height * 0.8 + "px"');
background: url('/favicon.ico') no-repeat;
background-size: cover;
}
}
.menu {
overflow: hidden;
vertical-align: top;
display: inline-block;
width: v-bind("app.layout.menu_width + 'px'");
height: calc(100vh - v-bind('app.layout.header_height + app.layout.footer_height + "px"'));
transition: width 0.3s linear;
}
.menu-hr {
vertical-align: top;
display: inline-block;
width: 1px;
height: calc(100vh - v-bind('app.layout.header_height + app.layout.footer_height + "px"'));
background: #999;
}
.main {
vertical-align: top;
display: inline-block;
overflow: auto;
width: calc(100vw - v-bind("app.layout.menu_width + 1 + 'px'"));
height: calc(100vh - v-bind('app.layout.header_height + app.layout.footer_height + "px"'));
transition: width 0.3s linear;
}
.footer {
height: v-bind("app.layout.footer_height + 'px'");
user-select: none;
background: var(--footer-bg);
color: var(--footer-txt);
font-size: 12px;
line-height: v-bind("app.layout.footer_height + 'px'");
div {
cursor: pointer;
opacity: 0.6;
}
div:hover {
opacity: 1;
}
}
}
</style>

@ -0,0 +1,48 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
devtools: { enabled: true },
css: [
'~/assets/css/tailwind.css',
'~/assets/css/app.scss',
],
ssr: false,
nitro: {
devProxy: {
"/api": {
target: "http://127.0.0.1:4001/api",
changeOrigin: true,
},
},
},
app: {
head: {
meta: [
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'keywords', content: 'veypi, oneauth' }
],
title: 'OneAuth',
noscript: [
{ children: 'JavaScript is required' }
],
link: [
{ rel: 'icon', type: 'image/ico', href: 'favicon.ico' }
],
script: [
{ src: '/icon.js' },
]
}
},
postcss: {
plugins: {
tailwindcss: {},
autoprefixer: {},
}
},
modules: ["@pinia/nuxt"]
})

10692
oaweb/package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,60 +1,29 @@
{ {
"name": "oaweb", "name": "oaweb",
"version": "0.0.1",
"description": "oneauth",
"productName": "OneAuth",
"author": "veypi <veypi@qq.com>",
"private": true, "private": true,
"type": "module",
"scripts": { "scripts": {
"lint": "eslint --ext .js,.ts,.vue ./", "build": "nuxt build",
"format": "prettier --write \"**/*.{js,ts,vue,scss,html,md,json}\" --ignore-path .gitignore", "dev": "nuxt dev",
"test": "echo \"No test specified\" && exit 0", "generate": "nuxt generate",
"dev": "quasar dev", "preview": "nuxt preview",
"build": "quasar build" "postinstall": "nuxt prepare"
}, },
"dependencies": { "dependencies": {
"@quasar/extras": "^1.16.4", "@pinia/nuxt": "^0.5.1",
"@toast-ui/editor": "^3.2.2",
"@types/validator": "^13.11.2",
"@veypi/msg": "^0.1.1", "@veypi/msg": "^0.1.1",
"@veypi/oaer": "^0.2.1", "@veypi/one-icon": "^2.0.6",
"@veypi/one-icon": "2", "axios": "^1.7.2",
"animate.css": "^4.1.1", "js-base64": "^3.7.7",
"axios": "^1.2.1", "nuxt": "^3.11.2",
"cherry-markdown": "^0.8.26", "vue": "^3.4.27",
"echarts": "^5.4.3", "vue-router": "^4.3.2"
"js-base64": "^3.7.5",
"mathjax": "3",
"mitt": "^3.0.1",
"nats.ws": "^1.18.0",
"pinia": "^2.0.11",
"quasar": "^2.6.0",
"ts-nkeys": "^1.0.16",
"validator": "^13.11.0",
"vite-plugin-rewrite-all": "^1.0.1",
"vue": "^3.0.0",
"vue-i18n": "^9.2.2",
"vue-router": "^4.0.0",
"webdav": "^5.3.0"
}, },
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e",
"devDependencies": { "devDependencies": {
"@intlify/vite-plugin-vue-i18n": "^3.3.1", "autoprefixer": "^10.4.19",
"@quasar/app-vite": "^1.3.0", "postcss": "^8.4.38",
"@types/node": "^12.20.21", "sass": "^1.77.4",
"@typescript-eslint/eslint-plugin": "^5.10.0", "tailwindcss": "^3.4.3"
"@typescript-eslint/parser": "^5.10.0",
"autoprefixer": "^10.4.15",
"eslint": "^8.10.0",
"eslint-config-prettier": "^8.1.0",
"eslint-plugin-vue": "^9.0.0",
"postcss": "^8.4.29",
"prettier": "^2.5.1",
"tailwindcss": "^3.3.3",
"typescript": "^4.5.4"
},
"engines": {
"node": "^20 || ^18 || ^16 || ^14.19",
"npm": ">= 6.13.4",
"yarn": ">= 1.21.1"
} }
} }

@ -0,0 +1,15 @@
<!--
* docs.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-06-06 17:29
* Distributed under terms of the MIT license.
-->
<template>
<div>docs</div>
</template>
<script lang="ts" setup>
</script>
<style scoped></style>

@ -1,16 +1,23 @@
<!--
* index.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-05-31 17:10
* Distributed under terms of the MIT license.
-->
<template> <template>
<div> <div>
<div v-if="ofApps.length > 0"> <div v-if="ofApps.length > 0">
<div class="flex justify-between"> <div class="flex justify-between">
<h1 class="page-h1">我的应用</h1> <h1 class="page-h1">我的应用</h1>
<div class="my-5 mr-10"> <div class="my-5 mr-10">
<q-btn outline @click="new_flag = true" v-if="user.auth.Get(R.App, '').CanCreate()"> <div class='vbtn' outline @click="new_flag = true" v-if="user.auth.Get(R.App, '').CanCreate()">
</q-btn> </div>
</div> </div>
</div> </div>
<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 text-center"> <div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 text-center">
<div v-for="(item, k) in ofApps" class="flex items-center justify-center" :key="k"> <div v-for="(item, k) in ofApps" class="flex items-center justify-center" :key="k">
<AppCard :core="item" :is_part="true"></AppCard> <!-- <AppCard :core="item" :is_part="true"></AppCard> -->
</div> </div>
</div> </div>
</div> </div>
@ -18,53 +25,46 @@
<h1 class="page-h1">应用中心</h1> <h1 class="page-h1">应用中心</h1>
<div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 text-center"> <div class="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 2xl:grid-cols-5 text-center">
<div v-for="(item, k) in apps" class="flex items-center justify-center" :key="k"> <div v-for="(item, k) in apps" class="flex items-center justify-center" :key="k">
<AppCard :core="item" :is_part="false"></AppCard> <!-- <AppCard :core="item" :is_part="false"></AppCard> -->
</div> </div>
</div> </div>
</div> </div>
<q-dialog :square="false" v-model="new_flag"> <!-- <q-dialog :square="false" v-model="new_flag"> -->
<q-card class="w-4/5 md:w-96 rounded-2xl"> <!-- <q-card class="w-4/5 md:w-96 rounded-2xl"> -->
<q-card-section> <!-- <q-card-section> -->
<div class="text-h6">创建应用</div> <!-- <div class="text-h6">创建应用</div> -->
</q-card-section> <!-- </q-card-section> -->
<q-separator></q-separator> <!-- <q-separator></q-separator> -->
<q-card-section> <!-- <q-card-section> -->
<q-form @submit="create_new"> <!-- <q-form @submit="create_new"> -->
<q-input label="应用名" v-model="temp_app.name" :rules="rules.name"></q-input> <!-- <q-input label="应用名" v-model="temp_app.name" :rules="rules.name"></q-input> -->
<div class="flex justify-center my-4 items-center" label='icon'> <!-- <div class="flex justify-center my-4 items-center" label='icon'> -->
<uploader @success="temp_app.icon = $event" dir="app_icon"> <!-- <uploader @success="temp_app.icon = $event" dir="app_icon"> -->
<q-avatar> <!-- <q-avatar> -->
<img :src="temp_app.icon"> <!-- <img :src="temp_app.icon"> -->
</q-avatar> <!-- </q-avatar> -->
</uploader> <!-- </uploader> -->
<q-icon class="ml-2" size="1rem" name='autorenew' @click="temp_app.icon = rand_icon()"></q-icon> <!-- <q-icon class="ml-2" size="1rem" name='autorenew' @click="temp_app.icon = rand_icon()"></q-icon> -->
</div> <!-- </div> -->
<q-separator></q-separator> <!-- <q-separator></q-separator> -->
<div class="flex justify-end mt-8"> <!-- <div class="flex justify-end mt-8"> -->
<q-btn class="mx-3" @click="new_flag = false">取消</q-btn> <!-- <q-btn class="mx-3" @click="new_flag = false">取消</q-btn> -->
<q-btn type="submit">创建</q-btn> <!-- <q-btn type="submit">创建</q-btn> -->
</div> <!-- </div> -->
</q-form> <!-- </q-form> -->
</q-card-section> <!-- </q-card-section> -->
</q-card> <!-- </q-card> -->
</q-dialog> <!-- </q-dialog> -->
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref } from 'vue'; import { onMounted, ref } from 'vue';
import api from 'src/boot/api';
import msg from '@veypi/msg'; import msg from '@veypi/msg';
import { AUStatus, modelsApp, modelsAppUser } from 'src/models';
import AppCard from 'components/app.vue'
import { useUserStore } from 'src/stores/user';
import { R } from 'src/models';
import uploader from 'components/uploader'
import { util } from 'src/libs';
let user = useUserStore() let user = useLocalUser()
let apps = ref<modelsApp[]>([]); let apps = ref<modelsApp[]>([]);
@ -74,7 +74,7 @@ function getApps() {
api.app.list().then( api.app.list().then(
(e: modelsApp[]) => { (e: modelsApp[]) => {
apps.value = e; apps.value = e;
api.app.user('-').list(user.id).then((aus: modelsAppUser[]) => { api.app.user('-').list(user.value.id).then((aus: modelsAppUser[]) => {
for (let i in aus) { for (let i in aus) {
let ai = apps.value.findIndex(a => a.id === aus[i].app_id) let ai = apps.value.findIndex(a => a.id === aus[i].app_id)
if (ai >= 0) { if (ai >= 0) {

@ -0,0 +1,132 @@
<!--
* login.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-05-31 17:10
* Distributed under terms of the MIT license.
-->
<template>
<div class="h-full w-full flex items-center justify-center">
<div class="px-10 pb-9 pt-16 rounded-xl w-96 bg-gray-50 relative">
<img class='vico' :src="'/favicon.ico'">
<Vinput class="mb-8" v-model="data.username" label="用户名" :validate="/^[\w]{5,}$/" />
<Vinput class='mb-8' v-model="data.password" label='密码' :validate="/^[\w@_#]{6,}$/" type="password" />
<div class="flex justify-around mt-4">
<div class='vbtn bg-green-300' @click="$router.push({
name:
'register'
})">注册</div>
<div class='vbtn bg-green-300' @click="onSubmit"></div>
<div class='vbtn bg-gray-300' @click="onReset"> </div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
definePageMeta({
layout: false,
})
const app = useAppConfig()
const route = useRoute()
const router = useRouter()
let data = ref({
username: '',
password: '',
})
const onSubmit = () => {
api.user.login(data.value.username,
data.value.password).then((data: any) => {
util.setToken(data.auth_token)
// msg.Info('')
// user.fetchUserData()
let url = route.query.redirect || data.redirect || ''
console.log([url])
redirect(url)
}).catch(e => {
let m = e === '1' ? '被禁止登录' : e === '2' ? '正在申请中' : e
=== '3' ?
'申请被拒绝' : '登录失败:' + e
// msg.Warn(m)
})
}
const onReset = () => {
data.value.password = ''
data.value.username = ''
}
let uuid = computed(() => {
return route.query.uuid
})
let ifLogOut = computed(() => {
return route.query.logout === '1'
})
function redirect(url: string) {
if (url === 'undefined') {
url = ''
}
if (uuid.value && uuid.value !== app.id) {
api.app.get(uuid.value as string).then((app) => {
api.token(uuid.value as string).get({
token: util.getToken(),
}).then(e => {
url = url || app.redirect
// let data = JSON.parse(Base64.decode(e.split('.')[1]))
// console.log(data)
e = encodeURIComponent(e)
if (url.indexOf('$token') >= 0) {
url = url.replaceAll('$token', e)
} else {
url = buildURL(url, 'token=' + e)
}
window.location.href = url
})
})
} else if (url) {
router.push(url)
} else {
router.push('/')
}
}
function buildURL(url: string, params?: string) {
if (!params) {
return url;
}
// params
var hashmarkIndex = url.indexOf('#');
if (hashmarkIndex !== -1) {
url = url.slice(0, hashmarkIndex);
}
url += (url.indexOf('?') === -1 ? '?' : '&') + params;
return url;
}
onMounted(() => {
if (ifLogOut.value) {
util.setToken('')
} else if (util.checkLogin()) {
redirect(route.query.redirect as string || '')
}
})
</script>
<style scoped>
.vico {
width: 120px;
height: 120px;
position: absolute;
top: -50px;
left: -60px;
}
</style>

@ -0,0 +1,15 @@
<!--
* setting.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-06-06 17:30
* Distributed under terms of the MIT license.
-->
<template>
<div></div>
</template>
<script lang="ts" setup>
</script>
<style scoped></style>

@ -0,0 +1,17 @@
<!--
* user.vue
* Copyright (C) 2024 veypi <i@veypi.com>
* 2024-06-06 16:32
* Distributed under terms of the MIT license.
-->
<template>
<div>
user
</div>
</template>
<script lang="ts" setup>
</script>
<style scoped></style>

@ -1,27 +0,0 @@
/* eslint-disable */
// https://github.com/michael-ciniawsky/postcss-load-config
module.exports = {
plugins: [
// https://github.com/postcss/autoprefixer
require('autoprefixer')({
overrideBrowserslist: [
'last 4 Chrome versions',
'last 4 Firefox versions',
'last 4 Edge versions',
'last 4 Safari versions',
'last 4 Android versions',
'last 4 ChromeAndroid versions',
'last 4 FirefoxAndroid versions',
'last 4 iOS versions'
]
})
// https://github.com/elchininet/postcss-rtlcss
// If you want to support RTL css, then
// 1. yarn/npm install postcss-rtlcss
// 2. optionally set quasar.config.js > framework > lang to an RTL language
// 3. uncomment the following line:
// require('postcss-rtlcss')
]
}

@ -1,6 +0,0 @@
module.exports = {
plugins: {
tailwindcss: {},
autoprefixer: {},
},
}

@ -1,36 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>draw.io demo</title>
<link rel="stylesheet" href="./drawio/grapheditor.css">
<!-- <link rel="stylesheet" href="https://jgraph.github.io/drawio/src/main/webapp/mxgraph/css/common.css"> -->
</head>
<!-- geEditor 是draw.io需要的class -->
<body class="geEditor">
<!-- 加载draw.io需要的静态资源 begin -->
<script type="text/javascript" src="./drawio/Init.js"></script>
<script type="text/javascript" src="./drawio/lib/pako.min.js"></script>
<script type="text/javascript" src="./drawio/lib/base64.js"></script>
<script type="text/javascript" src="./drawio/jscolor/jscolor.js"></script>
<script type="text/javascript" src="./drawio/lib/purify.min.js"></script>
<script type="text/javascript" src="./mxgraph/mxClient.js"></script>
<script type="text/javascript" src="./drawio/Editor.js"></script>
<script type="text/javascript" src="./drawio/EditorUi.js"></script>
<script type="text/javascript" src="./drawio/Sidebar.js"></script>
<script type="text/javascript" src="./drawio/Graph.js"></script>
<script type="text/javascript" src="./drawio/Format.js"></script>
<script type="text/javascript" src="./drawio/Shapes.js"></script>
<script type="text/javascript" src="./drawio/Actions.js"></script>
<script type="text/javascript" src="./drawio/Menus.js"></script>
<script type="text/javascript" src="./drawio/Toolbar.js"></script>
<script type="text/javascript" src="./drawio/Dialogs.js"></script>
<!-- 加载draw.io需要的静态资源 end -->
<script src="./drawio.js"></script>
</body>
</html>

@ -1,74 +0,0 @@
// Extends EditorUi to update I/O action states based on availability of backend
(function() {
var editorUiInit = EditorUi.prototype.init;
EditorUi.prototype.init = function() {
editorUiInit.apply(this, arguments);
};
// Adds required resources (disables loading of fallback properties, this can only
// be used if we know that all keys are defined in the language specific file)
mxResources.loadDefaultBundle = false;
var bundle = mxResources.getDefaultBundle(mxLanguage);
// Fixes possible asynchronous requests
mxUtils.getAll([bundle, './drawio/theme/default.xml'], function(xhr) {
// Adds bundle text to resources
mxResources.parse(xhr[0].getText());
// Configures the default graph theme
var themes = new Object();
themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
// Main
window.editorUIInstance = new EditorUi(new Editor(false, themes));
try {
addPostMessageListener(editorUIInstance.editor);
} catch (error) {
console.log(error);
}
window.parent.postMessage({ eventName: 'ready', value: '' }, '*');
}, function() {
document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
});
})();
function addPostMessageListener(graphEditor) {
window.addEventListener('message', function(event) {
if (!event.data || !event.data.eventName) {
return
}
switch (event.data.eventName) {
case 'setData':
var value = event.data.value;
var doc = mxUtils.parseXml(value);
var documentName = 'cherry-drawio-' + new Date().getTime();
editorUIInstance.editor.setGraphXml(null);
graphEditor.graph.importGraphModel(doc.documentElement);
graphEditor.setFilename(documentName);
window.parent.postMessage({ eventName: 'setData:success', value: '' }, '*');
break;
case 'getData':
editorUIInstance.editor.graph.stopEditing();
var xmlData = mxUtils.getXml(editorUIInstance.editor.getGraphXml());
editorUIInstance.exportImage(1, "#ffffff", true, null, true, 50, null, "png", function(base64, filename) {
window.parent.postMessage({
mceAction: 'getData:success',
eventName: 'getData:success',
value: {
xmlData: xmlData,
base64: base64,
}
}, '*');
})
break;
case 'ready?':
window.parent.postMessage({ eventName: 'ready', value: '' }, '*');
break;
default:
break;
}
});
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,29 +0,0 @@
// urlParams is null when used for embedding
window.urlParams = window.urlParams || {};
// Public global variables
window.DOM_PURIFY_CONFIG = window.DOM_PURIFY_CONFIG ||
{
ADD_TAGS: ['use'], FORBID_TAGS: ['form'],
ALLOWED_URI_REGEXP: /^((?!javascript:).)*$/i,
ADD_ATTR: ['target', 'content']
};
// Public global variables
window.MAX_REQUEST_SIZE = window.MAX_REQUEST_SIZE || 10485760;
window.MAX_AREA = window.MAX_AREA || 15000 * 15000;
// URLs for save and export
window.EXPORT_URL = window.EXPORT_URL || './drawio';
window.SAVE_URL = window.SAVE_URL || './drawio';
window.PROXY_URL = window.PROXY_URL || null;
window.OPEN_URL = window.OPEN_URL || './drawio';
window.RESOURCES_PATH = window.RESOURCES_PATH || './drawio/resources';
window.STENCIL_PATH = window.STENCIL_PATH || './drawio/image/stencils';
window.IMAGE_PATH = window.IMAGE_PATH || './drawio/image';
window.STYLE_PATH = window.STYLE_PATH || './drawio/src/css';
window.CSS_PATH = window.CSS_PATH || './drawio/src/css';
window.OPEN_FORM = window.OPEN_FORM || './drawio';
window.mxBasePath = window.mxBasePath || './drawio/src';
window.mxLanguage = window.mxLanguage || window.RESOURCES_PATH + '/zh';
window.mxLanguages = window.mxLanguages || ['zh'];

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,215 +0,0 @@
html body .geToolbarContainer .geButton, html body .geToolbarContainer .geLabel {
padding:3px 5px 5px 5px;
position: relative;
text-align: center;
vertical-align: middle;
border-radius:3px;
}
html body .geMenubarContainer .geBigButton {
margin-top: 4px;
}
html body .geBigStandardButton:active, .geSidebarContainer .geTitle:active {
background-color: #DEEBFF;
color: #0052CC;
}
body .geToolbarContainer .geButton:active, body .geToolbarContainer .geLabel:active {
background-color: #DEEBFF;
color: #0052CC;
}
body > .geToolbarContainer .geLabel, body > .geToolbarContainer .geButton {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
border: 1px solid transparent !important;
}
body > .geToolbarContainer {
background: #f5f5f5 !important;
border-bottom: 1px solid #ccc !important;
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
}
body > .geToolbarContainer > .geToolbar {
padding-top:4px !important;
}
body > .geToolbarContainer > .geToolbar .geSeparator {
width:1px !important;
background:#cccccc !important;
margin-top:3px;
height:24px;
}
.geSidebarContainer .geToolbarContainer .geButton {
padding:0px 2px 4px 2px;
}
.geToolbarContainer .geLabel {
height:18px;
_height:31px;
}
html body .geStatus .geStatusAlert {
color:#ffffff !important;
font-size:12px;
border:none;
border-radius:6px;
text-shadow: rgb(41, 89, 137) 0px 1px 0px;
background-color:#428bca;
background-image:linear-gradient(rgb(70, 135, 206) 0px, rgb(48, 104, 162) 100%);
-webkit-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
-moz-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
}
html body .geStatus .geStatusAlert:hover {
background-color: #2d6ca2;
background-image: linear-gradient(rgb(90, 148, 211) 0px, rgb(54, 115, 181) 100%);
}
html body .geStatus .geStatusMessage {
color:#ffffff !important;
font-size:12px;
border:none;
border-radius:6px;
text-shadow: rgb(41, 89, 137) 0px 1px 0px;
background-color:#428bca;
background-image:linear-gradient(rgb(70, 135, 206) 0px, rgb(48, 104, 162) 100%);
-webkit-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
-moz-box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
box-shadow: rgba(255, 255, 255, 0.0980392) 0px 1px 0px 0px inset, rgba(0, 0, 0, 0.2) 0px 1px 1px 0px;
}
html body .geStatus .geStatusMessage:hover {
background-color: #2d6ca2;
background-image: linear-gradient(rgb(90, 148, 211) 0px, rgb(54, 115, 181) 100%);
}
html body div.mxWindow .geToolbarContainer {
font-size:11px !important;
color: #000000 !important;
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
border-width: 0px 0px 1px !important;
border-color: rgb(195, 195, 195) !important;
border-style: solid !important;
border-bottom:1px solid #e0e0e0;
}
html body div.mxWindow .geButton, .mxWindow .geLabel {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
background-image: none !important;
border:1px solid transparent !important;
}
div.mxWindow .geButton {
margin:1px !important;
}
div.mxWindow .geLabel {
padding:3px 5px 3px 5px !important;
margin:2px;
}
div.mxWindow .geButton:hover, .mxWindow .geLabel:hover {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
background: none !important;
border:1px solid gray;
}
div.mxWindow .geButton:active, .mxWindow .geLabel:active {
-webkit-box-shadow: none !important;
-moz-box-shadow: none !important;
box-shadow: none !important;
background-image: none !important;
border:1px solid black;
}
body > .geToolbarContainer .geButton {
margin:0px -1px 0px 0px !important;
height:20px;
}
html body .geSidebarTooltip, .geSidebarTooltipImage {
z-index:2;
}
html body .geSidebarContainer .geTitle {
font-size:13px;
padding:8px 0px 8px 16px;
}
html body .geMenubarContainer * {
color: #DEEBFF;
}
html body .geMenubarContainer .geStatus {
color: rgb(179, 179, 179);
}
.geMenubarContainer .geItem:hover:not(.geStatus) {
background-color: rgba(9, 30, 66, 0.48) !important;
}
html body .geToolbarContainer .geLabel {
margin:0px;
padding:6px 20px 4px 10px !important;
}
.geToolbar .geSeparator {
width:0px !important;
}
.geMenubarContainer .geItem, .geToolbar .geButton, .geToolbar .geLabel, .geSidebar, .geSidebarContainer .geTitle, .geSidebar .geItem, .mxPopupMenuItem {
-webkit-transition: none;
-moz-transition: none;
-o-transition: none;
-ms-transition: none;
transition: none;
}
html body .geMenubarContainer {
background-color: #0049B0;
color: #ffffff;
font-size: 14px;
}
html body .geMenubar > .geItem {
padding-left:14px;
padding-right:15px;
}
html body .geSidebarContainer .geToolbarContainer {
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
border:none;
}
html body .geSidebarContainer .geToolbarContainer .geButton {
margin:2px !important;
height:20px !important;
}
html body .geSidebarContainer .geToolbarContainer .geLabel {
margin:2px !important;
padding:4px !important;
}
html body .geToolbar {
margin:0px;
padding:8px 10px 0px 10px;
-webkit-box-shadow:none;
-moz-box-shadow:none;
box-shadow:none;
border:none;
}
html body .geMenubarContainer .mxDisabled {
opacity: 1;
color: rgb(179, 179, 179);
}
html .geButtonContainer {
padding-right:10px;
}
.geDialogTitle {
box-sizing:border-box;
white-space:nowrap;
background:rgb(32, 80, 129);
border-bottom:1px solid rgb(192, 192, 192);
font-size:15px;
font-weight:bold;
text-align:center;
color:white;
}
.geDialogFooter {
background:whiteSmoke;
white-space:nowrap;
text-align:right;
box-sizing:border-box;
border-top:1px solid #e5e5e5;
color:darkGray;
}
html .geNotification-bell {
opacity: 1;
}
html .geNotification-bell * {
background-color: #DEEBFF;
box-shadow: 0px 0px 10px #DEEBFF;
}

@ -1,109 +0,0 @@
<mxStylesheet>
<add as="defaultVertex">
<add as="shape" value="label"/>
<add as="perimeter" value="rectanglePerimeter"/>
<add as="fontSize" value="12"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="fillColor" value="default"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="defaultEdge">
<add as="shape" value="connector"/>
<add as="labelBackgroundColor" value="default"/>
<add as="endArrow" value="classic"/>
<add as="fontSize" value="11"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="rounded" value="1"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="text">
<add as="fillColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="top"/>
</add>
<add as="edgeLabel" extend="text">
<add as="labelBackgroundColor" value="default"/>
<add as="fontSize" value="11"/>
</add>
<add as="label">
<add as="fontStyle" value="1"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="middle"/>
<add as="spacing" value="2"/>
<add as="spacingLeft" value="52"/>
<add as="imageWidth" value="42"/>
<add as="imageHeight" value="42"/>
<add as="rounded" value="1"/>
</add>
<add as="icon" extend="label">
<add as="align" value="center"/>
<add as="imageAlign" value="center"/>
<add as="verticalLabelPosition" value="bottom"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="spacing" value="0"/>
<add as="spacingLeft" value="0"/>
<add as="spacingTop" value="6"/>
<add as="fontStyle" value="0"/>
<add as="imageWidth" value="48"/>
<add as="imageHeight" value="48"/>
</add>
<add as="swimlane">
<add as="shape" value="swimlane"/>
<add as="fontSize" value="12"/>
<add as="fontStyle" value="1"/>
<add as="startSize" value="23"/>
</add>
<add as="group">
<add as="verticalAlign" value="top"/>
<add as="fillColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="pointerEvents" value="0"/>
</add>
<add as="ellipse">
<add as="shape" value="ellipse"/>
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombus">
<add as="shape" value="rhombus"/>
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="triangle">
<add as="shape" value="triangle"/>
<add as="perimeter" value="trianglePerimeter"/>
</add>
<add as="line">
<add as="shape" value="line"/>
<add as="strokeWidth" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="8"/>
</add>
<add as="image">
<add as="shape" value="image"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="verticalLabelPosition" value="bottom"/>
</add>
<add as="roundImage" extend="image">
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombusImage" extend="image">
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="arrow">
<add as="shape" value="arrow"/>
<add as="edgeStyle" value="none"/>
<add as="fillColor" value="default"/>
</add>
</mxStylesheet>

@ -1,294 +0,0 @@
:root {
--dark-color: #18141D;
--header-color: #363238;
--panel-color: #2A252F;
--text-color: #888888;
--border-color: #505759;
}
.geEditor * {
border-color:#000;
}
html body .geBackground {
background:var(--dark-color);
}
html body .geStatus > *, html body .geUser {
color:var(--text-color);
}
html body .geDiagramContainer {
background-color:var(--dark-color);
}
html body div.geMenubarContainer, html body .geFormatContainer,
html body div.geMenubarContainer .geStatus:hover {
background-color:var(--panel-color);
border-color:#000000;
}
html body .geActiveItem {
background-color:#e0e0e0;
}
html body .mxCellEditor {
color: #f0f0f0;
}
html body.geEditor div.mxPopupMenu {
border:1px solid var(--border-color);
background:var(--panel-color);
box-shadow:none;
}
.geEditor .geTabItem {
background:var(--panel-color);
border-color:#000000;
}
.geTabContainer {
border-left-color:#000000;
border-right-color:#000000;
}
.geTabContainer div {
border-color:var(--dark-color);
}
html body .geShapePicker {
box-shadow:none;
}
html body .geTabContainer div.geActivePage, html body .geRuler {
background:var(--dark-color);
}
.geSearchSidebar input, .geBtnStepper, .geBtnUp,
html body a.geStatus .geStatusBox {
border-color: var(--border-color);
}
html body.geEditor div.mxPopupMenu hr {
background-color:var(--border-color);
}
html body .geDragPreview {
border: 1px dashed #cccccc;
}
html body .geMenubarContainer .geItem:active, html .geSidebarContainer button:active {
opacity: 0.7;
}
html body, html body .geFooterContainer, html body #geFooterItem1, html body textarea,
html body .mxWindowTitle, html body .geDialogTitle, html body .geDialogFooter,
html .geEditor div.mxTooltip, html .geHint
{
background: var(--panel-color);
color:#c0c0c0;
}
html > body > div > div.geToolbarContainer.geSimpleMainMenu,
html > body > div > div.geToolbarContainer.geSimpleMainMenu .geToolbarContainer {
background:var(--header-color);
}
html > body > div > div.geToolbarContainer.geSimpleMainMenu,
html body .mxWindowTitle, .geDialogTitle, .geDialogFooter {
border-color:black !important;
}
html body .geFooterContainer a, html body .geDiagramContainer a, html body .geStatus a {
color:#337ab7;
}
html body div.mxRubberband {
border:1px dashed #ffffff !important;
background:var(--border-color) !important;
}
html body .geTemplate {
color:#000000;
}
html body .geSidebar {
opacity:0.7;
}
html body.geEditor .geSidebarContainer div.geDropTarget {
color:#767676;
border-color:#767676;
}
html body.geEditor .gePrimaryBtn:not([disabled]),
html body.geEditor .geBigButton:not([disabled]) {
background:var(--header-color);
border: 1px solid var(--border-color);
color:#aaaaaa;
}
html body.geEditor .geBtn, html body.geEditor button,
html body.geEditor button:hover:not([disabled]),
html body.geEditor button:focus, html body.geEditor select,
html body.geEditor .geColorBtn {
background:none;
border: 1px solid var(--border-color);
color:#aaaaaa;
}
html body .geBtn:hover:not([disabled]) {
color: #c0c0c0;
}
html body.geEditor button.geAdaptiveAsset:hover:not([disabled]) {
background:#fff;
}
html body.geEditor button.geAdaptiveAsset:not([disabled]) {
border-color:#a2a2a2;
}
html body.geEditor button:hover:not([disabled]):not(.geAdaptiveAsset),
html body.geEditor select:hover:not([disabled]),
html body.geEditor .geColorBtn:hover:not([disabled]) {
background:var(--dark-color);
border: 1px solid var(--border-color);
}
html body.geEditor .geSidebar, html body.geEditor .geSidebarContainer .geTitle, html body.geEditor input, html body.geEditor textarea,
html body.geEditor .geBaseButton, html body.geEditor .geSidebarTooltip, html body.geEditor .geBaseButton, html body.geEditor select,
html body.geEditor .geSidebarContainer .geDropTarget, html body.geEditor .geToolbarContainer {
background:var(--panel-color);
border-color:var(--dark-color);
color:#aaaaaa;
}
html body.geEditor .geSidebar, html body.geEditor .geSidebarContainer .geTitle, html body.geEditor input, html body.geEditor textarea,
html body.geEditor .geBaseButton, html body.geEditor .geSidebarTooltip, html body.geEditor .geBaseButton, html body.geEditor select,
html body.geEditor .geSidebarContainer .geDropTarget {
box-shadow:none;
}
html body.geEditor button, html body.geEditor input,
html body.geEditor textarea, html body.geEditor select,
.geInsertTablePicker, .geInsertTablePicker * {
border-color:var(--border-color);
}
html body .geMenubarContainer .geToolbarContainer, html body div.geToolbarContainer, html body .geToolbar {
border-color:#000000;
box-shadow:none;
}
html body .geSketch .geToolbarContainer {
border-style:none;
}
html body.geEditor .geColorBtn, html body .geToolbarContainer {
box-shadow:none;
}
html body .geSidebarTooltip {
border:1px solid var(--border-color);
}
html body .geSprite, html body .geSocialFooter img, html body .mxPopupMenuItem>img, .geAdaptiveAsset {
filter:invert(100%);
}
.geAdaptiveAsset {
color: #333333;
}
.geInverseAdaptiveAsset {
filter:none !important
}
html body .geSidebarFooter {
border-color:var(--dark-color);
}
html body .geFormatSection {
border-bottom:1px solid var(--dark-color);
border-color:var(--dark-color);
}
html body .geDiagramContainer {
border-color:var(--border-color);
}
html body .geSidebarContainer a, html body .geMenubarContainer a, html body .geToolbar a {
color:#cccccc;
}
html body .geMenubarMenu {
border-color:var(--border-color) !important;
}
html body .geToolbarMenu, html body .geFooterContainer, html body .geFooterContainer td {
border-color:var(--border-color);
}
html body .geFooterContainer a {
background-color:none;
}
html body .geBigStandardButton {
border: 1px solid var(--border-color);
}
html body .geFooterContainer td:hover, html body #geFooterItem1:hover, html body .geBigStandardButton:hover {
background-color:#000000;
}
html body .geSidebarContainer, html body .geDiagramBackdrop {
background:var(--panel-color);
}
html body .geBackgroundPage {
box-shadow:none;
}
.gePropHeader, .gePropRow, .gePropRowDark, .gePropRowCell, .gePropRow>.gePropRowCell, .gePropRowAlt>.gePropRowCell, .gePropRowDark>.gePropRowCell, .gePropRowDarkAlt>.gePropRowCell {
background:var(--panel-color) !important;
border-color:var(--panel-color) !important;
color:#cccccc !important;
font-weight:normal !important;
}
html body tr.mxPopupMenuItem {
color:#cccccc;
}
html body.geEditor table.mxPopupMenu tr.mxPopupMenuItemHover {
background:var(--dark-color);
color:#cccccc;
}
html body .geSidebarContainer .geTitle:hover, html body .geSidebarContainer .geItem:hover,
html body .geMenubarContainer .geItem:hover, html body.geEditor .geBaseButton:hover {
background:var(--dark-color);
}
html body .geToolbarContainer .geSeparator {
background-color:var(--border-color);
}
html body .geVsplit, html body table.mxPopupMenu hr {
border-color:var(--border-color);
background-color:var(--dark-color);
}
html body .geHsplit {
border-color:#000;
}
html body .geHsplit:hover {
background-color:#000;
}
html body .geToolbarContainer .geButton:hover, html body .geToolbarContainer .geButton:active,
html body .geToolbarContainer .geLabel:hover, html body .geToolbarContainer .geLabel:active,
html body .geVsplit:hover, html .geSidebarContainer button:active:not([disabled]) {
background-color:var(--dark-color);
}
html body .geToolbarContainer .geButton.geAdaptiveAsset:hover {
background-color: #fff;
}
html body .geDialog, html body div.mxWindow {
background:var(--panel-color);
border-color:var(--header-color);
}
html body .geDialog {
box-shadow:none;
}
.geHint {
-webkit-box-shadow: 1px 1px 1px 0px #ccc;
-moz-box-shadow: 1px 1px 1px 0px #ccc;
box-shadow: 1px 1px 1px 0px #ccc;
}
html .geEditor ::-webkit-scrollbar-thumb {
background-color: var(--header-color);
}
html .geEditor ::-webkit-scrollbar-thumb:hover, .geVsplit:hover {
background-color:#a0a0a0;
}
html body a.geStatus .geStatusAlertOrange {
background-color:rgb(187, 103, 0);
border:rgb(240, 135, 5);
}
html body a.geStatus .geStatusAlert {
background-color:#a20025;
border:1px solid #bd002b;
color:#fff !important;
}
html body a.geStatus .geStatusAlert:hover {
background-color:#a20025;
border-color:#bd002b;
}
html body .geCommentContainer {
background-color: transparent;
border-width: 1px;
box-shadow: none;
color: inherit;
}
html .geNotification-bell * {
background-color: #aaa;
box-shadow: none;
}
html .geNotification-count {
color: #DEEBFF;
}
html .geNotifPanel .header {
height: 30px;
width: 100%;
background: #424242;
color: #ccc;
}
.geNotifPanel .notifications {
background-color: #707070;
}

@ -1,109 +0,0 @@
<mxStylesheet>
<add as="defaultVertex">
<add as="shape" value="label"/>
<add as="perimeter" value="rectanglePerimeter"/>
<add as="fontSize" value="12"/>
<add as="fontFamily" value="Verdana"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="fillColor" value="#adc5ff"/>
<add as="gradientColor" value="#7d85df"/>
<add as="strokeColor" value="#5d65df"/>
<add as="fontColor" value="#1d258f"/>
</add>
<add as="defaultEdge">
<add as="shape" value="connector"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="endArrow" value="classic"/>
<add as="fontSize" value="11"/>
<add as="fontFamily" value="Verdana"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="rounded" value="1"/>
<add as="strokeColor" value="#5d65df"/>
<add as="fontColor" value="#1d258f"/>
</add>
<add as="text">
<add as="fillColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="top"/>
</add>
<add as="label">
<add as="fontStyle" value="1"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="middle"/>
<add as="spacing" value="2"/>
<add as="spacingLeft" value="50"/>
<add as="imageWidth" value="42"/>
<add as="imageHeight" value="42"/>
<add as="rounded" value="1"/>
<add as="shadow" value="1"/>
<add as="glass" value="1"/>
</add>
<add as="icon" extend="label">
<add as="align" value="center"/>
<add as="imageAlign" value="center"/>
<add as="verticalLabelPosition" value="bottom"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="4"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="spacing" value="0"/>
<add as="spacingLeft" value="0"/>
<add as="spacingTop" value="6"/>
<add as="fontStyle" value="0"/>
<add as="imageWidth" value="48"/>
<add as="imageHeight" value="48"/>
</add>
<add as="swimlane">
<add as="shape" value="swimlane"/>
<add as="fontSize" value="12"/>
<add as="fontStyle" value="1"/>
<add as="startSize" value="23"/>
</add>
<add as="group">
<add as="verticalAlign" value="top"/>
<add as="fillColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="gradientColor" value="none"/>
</add>
<add as="ellipse">
<add as="shape" value="ellipse"/>
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombus">
<add as="shape" value="rhombus"/>
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="triangle">
<add as="shape" value="triangle"/>
<add as="perimeter" value="trianglePerimeter"/>
</add>
<add as="line">
<add as="shape" value="line"/>
<add as="strokeWidth" value="4"/>
<add as="labelBackgroundColor" value="#FFFFFF"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="8"/>
</add>
<add as="image">
<add as="shape" value="image"/>
<add as="labelBackgroundColor" value="white"/>
<add as="verticalAlign" value="top"/>
<add as="verticalLabelPosition" value="bottom"/>
</add>
<add as="roundImage" extend="image">
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombusImage" extend="image">
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="arrow">
<add as="shape" value="arrow"/>
<add as="edgeStyle" value="none"/>
<add as="fillColor" value="#adc5ff"/>
<add as="gradientColor" value="#7d85df"/>
</add>
</mxStylesheet>

@ -1,203 +0,0 @@
<mxStylesheet>
<add as="defaultVertex">
<add as="shape" value="label"/>
<add as="perimeter" value="rectanglePerimeter"/>
<add as="fontSize" value="12"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="fillColor" value="default"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="defaultEdge">
<add as="shape" value="connector"/>
<add as="labelBackgroundColor" value="default"/>
<add as="endArrow" value="classic"/>
<add as="fontSize" value="11"/>
<add as="fontFamily" value="Helvetica"/>
<add as="align" value="center"/>
<add as="verticalAlign" value="middle"/>
<add as="rounded" value="1"/>
<add as="strokeColor" value="default"/>
<add as="fontColor" value="default"/>
</add>
<add as="text">
<add as="fillColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="top"/>
</add>
<add as="edgeLabel" extend="text">
<add as="labelBackgroundColor" value="default"/>
<add as="fontSize" value="11"/>
</add>
<add as="label">
<add as="fontStyle" value="1"/>
<add as="align" value="left"/>
<add as="verticalAlign" value="middle"/>
<add as="spacing" value="2"/>
<add as="spacingLeft" value="52"/>
<add as="imageWidth" value="42"/>
<add as="imageHeight" value="42"/>
<add as="rounded" value="1"/>
</add>
<add as="icon" extend="label">
<add as="align" value="center"/>
<add as="imageAlign" value="center"/>
<add as="verticalLabelPosition" value="bottom"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="spacing" value="0"/>
<add as="spacingLeft" value="0"/>
<add as="spacingTop" value="6"/>
<add as="fontStyle" value="0"/>
<add as="imageWidth" value="48"/>
<add as="imageHeight" value="48"/>
</add>
<add as="swimlane">
<add as="shape" value="swimlane"/>
<add as="fontSize" value="12"/>
<add as="fontStyle" value="1"/>
<add as="startSize" value="23"/>
</add>
<add as="group">
<add as="verticalAlign" value="top"/>
<add as="fillColor" value="none"/>
<add as="strokeColor" value="none"/>
<add as="gradientColor" value="none"/>
<add as="pointerEvents" value="0"/>
</add>
<add as="ellipse">
<add as="shape" value="ellipse"/>
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombus">
<add as="shape" value="rhombus"/>
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="triangle">
<add as="shape" value="triangle"/>
<add as="perimeter" value="trianglePerimeter"/>
</add>
<add as="line">
<add as="shape" value="line"/>
<add as="strokeWidth" value="4"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="spacingTop" value="8"/>
</add>
<add as="image">
<add as="shape" value="image"/>
<add as="labelBackgroundColor" value="default"/>
<add as="verticalAlign" value="top"/>
<add as="verticalLabelPosition" value="bottom"/>
</add>
<add as="roundImage" extend="image">
<add as="perimeter" value="ellipsePerimeter"/>
</add>
<add as="rhombusImage" extend="image">
<add as="perimeter" value="rhombusPerimeter"/>
</add>
<add as="arrow">
<add as="shape" value="arrow"/>
<add as="edgeStyle" value="none"/>
<add as="fillColor" value="default"/>
</add>
<add as="fancy">
<add as="shadow" value="1"/>
<add as="glass" value="1"/>
</add>
<add as="gray" extend="fancy">
<add as="gradientColor" value="#B3B3B3"/>
<add as="fillColor" value="#F5F5F5"/>
<add as="strokeColor" value="#666666"/>
</add>
<add as="blue" extend="fancy">
<add as="gradientColor" value="#7EA6E0"/>
<add as="fillColor" value="#DAE8FC"/>
<add as="strokeColor" value="#6C8EBF"/>
</add>
<add as="green" extend="fancy">
<add as="gradientColor" value="#97D077"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#82B366"/>
</add>
<add as="turquoise" extend="fancy">
<add as="gradientColor" value="#67AB9F"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#6A9153"/>
</add>
<add as="yellow" extend="fancy">
<add as="gradientColor" value="#FFD966"/>
<add as="fillColor" value="#FFF2CC"/>
<add as="strokeColor" value="#D6B656"/>
</add>
<add as="orange" extend="fancy">
<add as="gradientColor" value="#FFA500"/>
<add as="fillColor" value="#FFCD28"/>
<add as="strokeColor" value="#D79B00"/>
</add>
<add as="red" extend="fancy">
<add as="gradientColor" value="#EA6B66"/>
<add as="fillColor" value="#F8CECC"/>
<add as="strokeColor" value="#B85450"/>
</add>
<add as="pink" extend="fancy">
<add as="gradientColor" value="#B5739D"/>
<add as="fillColor" value="#E6D0DE"/>
<add as="strokeColor" value="#996185"/>
</add>
<add as="purple" extend="fancy">
<add as="gradientColor" value="#8C6C9C"/>
<add as="fillColor" value="#E1D5E7"/>
<add as="strokeColor" value="#9673A6"/>
</add>
<add as="plain-gray">
<add as="gradientColor" value="#B3B3B3"/>
<add as="fillColor" value="#F5F5F5"/>
<add as="strokeColor" value="#666666"/>
</add>
<add as="plain-blue">
<add as="gradientColor" value="#7EA6E0"/>
<add as="fillColor" value="#DAE8FC"/>
<add as="strokeColor" value="#6C8EBF"/>
</add>
<add as="plain-green">
<add as="gradientColor" value="#97D077"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#82B366"/>
</add>
<add as="plain-turquoise">
<add as="gradientColor" value="#67AB9F"/>
<add as="fillColor" value="#D5E8D4"/>
<add as="strokeColor" value="#6A9153"/>
</add>
<add as="plain-yellow">
<add as="gradientColor" value="#FFD966"/>
<add as="fillColor" value="#FFF2CC"/>
<add as="strokeColor" value="#D6B656"/>
</add>
<add as="plain-orange">
<add as="gradientColor" value="#FFA500"/>
<add as="fillColor" value="#FFCD28"/>
<add as="strokeColor" value="#D79B00"/>
</add>
<add as="plain-red">
<add as="gradientColor" value="#EA6B66"/>
<add as="fillColor" value="#F8CECC"/>
<add as="strokeColor" value="#B85450"/>
</add>
<add as="plain-pink">
<add as="gradientColor" value="#B5739D"/>
<add as="fillColor" value="#E6D0DE"/>
<add as="strokeColor" value="#996185"/>
</add>
<add as="plain-purple">
<add as="gradientColor" value="#8C6C9C"/>
<add as="fillColor" value="#E1D5E7"/>
<add as="strokeColor" value="#9673A6"/>
</add>
</mxStylesheet>

@ -1,78 +0,0 @@
// Extends EditorUi to update I/O action states based on availability of backend
(function()
{
var editorUiInit = EditorUi.prototype.init;
EditorUi.prototype.init = function()
{
editorUiInit.apply(this, arguments);
};
// Adds required resources (disables loading of fallback properties, this can only
// be used if we know that all keys are defined in the language specific file)
mxResources.loadDefaultBundle = false;
var bundle = mxResources.getDefaultBundle(mxLanguage);
// Fixes possible asynchronous requests
mxUtils.getAll([bundle, './drawio_demo/theme/default.xml'], function(xhr)
{
// Adds bundle text to resources
mxResources.parse(xhr[0].getText());
// Configures the default graph theme
var themes = new Object();
themes[Graph.prototype.defaultThemeName] = xhr[1].getDocumentElement();
// Main
window.editorUIInstance = new EditorUi(new Editor(false, themes));
try {
addPostMessageListener(editorUIInstance.editor);
} catch (error) {
console.log(error);
}
window.parent.postMessage({eventName: 'ready', value: ''}, '*');
}, function()
{
document.body.innerHTML = '<center style="margin-top:10%;">Error loading resource files. Please check browser console.</center>';
});
})();
function addPostMessageListener(graphEditor) {
window.addEventListener('message', function(event) {
if(!event.data || !event.data.eventName) {
return
}
switch (event.data.eventName) {
case 'setData':
var value = event.data.value;
var doc = mxUtils.parseXml(value);
var documentName = 'cherry-drawio-' + new Date().getTime();
editorUIInstance.editor.setGraphXml(null);
graphEditor.graph.importGraphModel(doc.documentElement);
graphEditor.setFilename(documentName);
window.parent.postMessage({eventName: 'setData:success', value: ''}, '*');
break;
case 'getData':
editorUIInstance.editor.graph.stopEditing();
var xmlData = mxUtils.getXml(editorUIInstance.editor.getGraphXml());
editorUIInstance.exportImage(1, "#ffffff", true, null, true, 50, null, "png", function(base64, filename){
window.parent.postMessage({
mceAction: 'getData:success',
eventName: 'getData:success',
value: {
xmlData: xmlData,
base64: base64,
}
}, '*');
})
break;
case 'ready?':
window.parent.postMessage({eventName: 'ready', value: ''}, '*');
break;
default:
break;
}
});
}

@ -1,100 +0,0 @@
/*
_____ ____ ____ ____ _______
| __ \ / __ \| _ \ / __ \__ __|
| |__) | | | | |_) | | | | | |
| _ /| | | | _ <| | | | | |
| | \ \| |__| | |_) | |__| | | |
|_| \_\\____/|____/ \____/ |_|
*/
@font-face {
font-family: "graph.iconfont";
src: url('@{iconfont-path}iconfont/graph.iconfont.eot');
src: url('@{iconfont-path}iconfont/graph.iconfont.eot?#iefix') format('eot'),
url('@{iconfont-path}iconfont/graph.iconfont.woff') format('woff'),
url('@{iconfont-path}iconfont/graph.iconfont.ttf') format('truetype');
font-weight: normal;
font-style: normal;
}
.font-graph {
vertical-align: middle;
}
.font-graph:after {
display: inline-block;
font-family: "graph.iconfont";
font-style: normal;
font-weight: normal;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.font-graph-lg {
font-size: 1.3333333333333333em;
line-height: 0.75em;
vertical-align: -15%;
}
.font-graph-2x { font-size: 2em; }
.font-graph-3x { font-size: 3em; }
.font-graph-4x { font-size: 4em; }
.font-graph-5x { font-size: 5em; }
.font-graph-fw {
width: 1.2857142857142858em;
text-align: center;
}
.font-graph-geSprite-arrow:after { content: "\EA01" }
.font-graph-geSprite-bold:after { content: "\EA02" }
.font-graph-geSprite-bottom:after { content: "\EA03" }
.font-graph-geSprite-center:after { content: "\EA04" }
.font-graph-geSprite-code:after { content: "\EA05" }
.font-graph-geSprite-connection:after { content: "\EA06" }
.font-graph-geSprite-curved:after { content: "\EA07" }
.font-graph-geSprite-delete:after { content: "\EA08" }
.font-graph-geSprite-dots:after { content: "\EA09" }
.font-graph-geSprite-entity:after { content: "\EA0A" }
.font-graph-geSprite-fit:after { content: "\EA0B" }
.font-graph-geSprite-fontbackground:after { content: "\EA0C" }
.font-graph-geSprite-fontcolor:after { content: "\EA0D" }
.font-graph-geSprite-formatpanel:after { content: "\EA0E" }
.font-graph-geSprite-horizontalelbow:after { content: "\EA0F" }
.font-graph-geSprite-horizontalisometric:after { content: "\EA10" }
.font-graph-geSprite-horizontalrule:after { content: "\EA11" }
.font-graph-geSprite-indent:after { content: "\EA12" }
.font-graph-geSprite-italic:after { content: "\EA13" }
.font-graph-geSprite-justifyfull:after { content: "\EA14" }
.font-graph-geSprite-left:after { content: "\EA15" }
.font-graph-geSprite-link:after { content: "\EA16" }
.font-graph-geSprite-linkedge:after { content: "\EA17" }
.font-graph-geSprite-middle:after { content: "\EA18" }
.font-graph-geSprite-orderedlist:after { content: "\EA19" }
.font-graph-geSprite-orthogonal:after { content: "\EA1A" }
.font-graph-geSprite-outdent:after { content: "\EA1B" }
.font-graph-geSprite-plus:after { content: "\EA1C" }
.font-graph-geSprite-redo:after { content: "\EA1D" }
.font-graph-geSprite-removeformat:after { content: "\EA1E" }
.font-graph-geSprite-right:after { content: "\EA1F" }
.font-graph-geSprite-shadow:after { content: "\EA20" }
.font-graph-geSprite-simplearrow:after { content: "\EA21" }
.font-graph-geSprite-straight:after { content: "\EA22" }
.font-graph-geSprite-strokecolor:after { content: "\EA23" }
.font-graph-geSprite-subscript:after { content: "\EA24" }
.font-graph-geSprite-superscript:after { content: "\EA25" }
.font-graph-geSprite-table:after { content: "\EA26" }
.font-graph-geSprite-toback:after { content: "\EA27" }
.font-graph-geSprite-tofront:after { content: "\EA28" }
.font-graph-geSprite-top:after { content: "\EA29" }
.font-graph-geSprite-underline:after { content: "\EA2A" }
.font-graph-geSprite-undo:after { content: "\EA2B" }
.font-graph-geSprite-unorderedlist:after { content: "\EA2C" }
.font-graph-geSprite-vertical:after { content: "\EA2D" }
.font-graph-geSprite-verticalelbow:after { content: "\EA2E" }
.font-graph-geSprite-verticalisometric:after { content: "\EA2F" }
.font-graph-geSprite-zoomin:after { content: "\EA30" }
.font-graph-geSprite-zoomout:after { content: "\EA31" }
.font-graph-geSprite-zz-填充色_icon:after { content: "\EA32" }
.font-graph-geSprite-zz-复选框:after { content: "\EA33" }
.font-graph-geSprite-zz-查看画图2:after { content: "\EA34" }
.font-graph-geSprite-zz-线条颜色_icon:after { content: "\EA35" }

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M925.473,452.482L722.136,280.767c-0.44-0.372-0.892-0.731-1.353-1.078
c-12.267-9.202-28.431-10.696-42.19-3.894c-13.849,6.851-22.451,20.694-22.451,36.125v94.268H120.288
c-12.15,0-23.101,7.329-27.734,18.562c-1.803,4.373-2.511,9.001-2.194,13.528c0.227,9.12,0.23,81.85,0.005,91.374
c-0.62,8.568,2.464,17.175,8.774,23.446c5.761,5.727,13.51,8.836,21.425,8.723h535.578v94.269c0,15.432,8.603,29.273,22.438,36.118
c5.547,2.747,11.751,4.199,17.943,4.199c8.702,0,17.323-2.875,24.274-8.097c0.456-0.343,0.903-0.698,1.339-1.067l203.339-171.716
c9.543-7.604,15.207-19.301,15.207-31.522C940.682,471.782,935.017,460.085,925.473,452.482z M716.142,613.774v-81.952
c0-16.568-13.432-30-30-30H150.527c0.003-5.199,0.002-11.204,0.002-18.15c0-6.116-0.006-12.027-0.016-17.482l535.628,0
c16.568,0,30-13.432,30-30v-81.951l153.665,129.768L716.142,613.774z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M674.738,484.009c17.27-9.87,33.35-22.04,47.83-36.36c43.54-43.02,67.52-100.24,67.52-161.13
c0-60.89-23.98-118.12-67.52-161.14c-43.44-42.93-101.17-66.57-162.56-66.57h-289.12c-16.57,0-30,13.43-30,30v790.39
c0,16.57,13.43,30,30,30h289.12c61.39,0,119.12-23.64,162.56-66.56c43.54-43.03,67.52-100.25,67.52-161.14
s-23.98-118.12-67.52-161.14C708.088,506.039,692.008,493.869,674.738,484.009z M300.888,118.809h259.12
c93.78,0,170.08,75.23,170.08,167.71c0,89.39-71.31,162.68-160.78,167.45c-3.09-0.12-6.19-0.18-9.3-0.18
c-1.19,0-2.37,0.08-3.53,0.22h-255.59V118.809z M560.008,849.199h-259.12v-335.19h255.58c1.17,0.13,2.35,0.21,3.54,0.21
c3.11,0,6.21-0.06,9.3-0.18c89.47,4.78,160.78,78.06,160.78,167.46C730.088,773.969,653.788,849.199,560.008,849.199z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.557,909.202H120.413c-16.568,0-30-13.432-30-30s13.432-30,30-30h790.144c16.568,0,30,13.432,30,30
S927.125,909.202,910.557,909.202z"/>
<path d="M535.574,760.672c-0.001,0.001-0.002,0.002-0.003,0.003c-0.001,0.001-0.003,0.003-0.004,0.004
c-0.481,0.481-0.979,0.935-1.484,1.377c-0.119,0.104-0.238,0.206-0.358,0.307c-1.057,0.896-2.16,1.707-3.303,2.433
c-0.067,0.043-0.135,0.085-0.203,0.127c-1.203,0.751-2.447,1.409-3.723,1.974c-0.038,0.017-0.075,0.033-0.113,0.049
c-1.292,0.565-2.614,1.035-3.959,1.409c-0.071,0.02-0.143,0.038-0.214,0.058c-0.655,0.177-1.314,0.337-1.978,0.469
c-0.008,0.002-0.016,0.004-0.023,0.005c-0.651,0.129-1.306,0.232-1.962,0.317c-0.141,0.018-0.282,0.034-0.424,0.051
c-0.584,0.068-1.169,0.121-1.755,0.154c-0.076,0.004-0.152,0.013-0.229,0.016c-0.628,0.031-1.256,0.036-1.884,0.028
c-0.179-0.002-0.358-0.007-0.537-0.013c-0.597-0.019-1.193-0.05-1.788-0.104c-0.048-0.004-0.097-0.006-0.145-0.01
c-0.65-0.062-1.298-0.153-1.944-0.258c-0.139-0.023-0.277-0.046-0.416-0.07c-1.368-0.241-2.721-0.578-4.05-1.009
c-0.044-0.014-0.087-0.028-0.131-0.042c-1.403-0.462-2.778-1.031-4.114-1.706c-0.004-0.002-0.007-0.003-0.011-0.005
c-1.264-0.64-2.492-1.376-3.674-2.206c-0.075-0.053-0.151-0.104-0.226-0.157c-0.546-0.391-1.083-0.799-1.607-1.231
c-0.079-0.065-0.154-0.134-0.233-0.2c-0.417-0.35-0.825-0.715-1.227-1.091c-0.142-0.133-0.284-0.267-0.423-0.403
c-0.095-0.093-0.194-0.18-0.289-0.275L268.456,535.919c-11.714-11.718-11.711-30.712,0.006-42.426
c5.858-5.856,13.533-8.784,21.21-8.784c7.679,0,15.359,2.931,21.216,8.79L484.357,667.02l-0.001-578.211c0-16.568,13.432-30,30-30
s30,13.432,30,30l0.001,578.21l175.724-175.782c11.714-11.717,30.709-11.722,42.427-0.007
c11.718,11.714,11.721,30.709,0.007,42.427L535.574,760.672z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M284.288,454.006c-16.568,0-30,13.432-30,30s13.432,30,30,30h462.394c16.568,0,30-13.431,30-30s-13.432-30-30-30H284.288z"
/>
<path d="M120.288,219.374h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,219.374,120.288,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 824 B

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M346.012,281.124c-11.203-12.208-30.181-13.023-42.388-1.821l-203.62,186.85c-6.281,5.764-9.813,13.927-9.714,22.451
s3.819,16.604,10.231,22.22l203.62,178.347c5.693,4.986,12.739,7.433,19.754,7.433c8.346,0,16.649-3.462,22.58-10.233
c10.917-12.464,9.663-31.417-2.801-42.334L165.226,487.737l178.965-164.226C356.399,312.309,357.214,293.332,346.012,281.124z"/>
<path d="M930.449,457.187L726.829,278.84c-12.463-10.915-31.417-9.663-42.334,2.801c-10.917,12.464-9.663,31.417,2.801,42.334
l178.448,156.3L686.779,644.5c-12.208,11.202-13.023,30.18-1.82,42.387c5.916,6.447,14,9.717,22.111,9.717
c7.247,0,14.516-2.61,20.275-7.896l203.62-186.849c6.281-5.764,9.813-13.927,9.715-22.451S936.861,462.804,930.449,457.187z"/>
<path d="M580.414,218.643c-16.093-3.939-32.333,5.916-36.271,22.01L428.545,713.098c-3.938,16.094,5.917,32.332,22.01,36.271
c2.396,0.586,4.793,0.866,7.154,0.866c13.5,0,25.765-9.179,29.117-22.877l115.598-472.444
C606.362,238.82,596.507,222.581,580.414,218.643z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M937.393,475.397L725.625,315.453c-3.267-2.467-7.646-2.872-11.311-1.049
c-3.664,1.824-5.98,5.565-5.98,9.658v129.943H119.29c-16.568,0-30,13.431-30,30s13.432,30,30,30h589.044v129.944
c0,4.093,2.316,7.833,5.98,9.657c1.522,0.759,3.169,1.132,4.808,1.132c2.305,0,4.595-0.738,6.503-2.18l211.768-159.944
c2.7-2.039,4.287-5.226,4.287-8.609S940.093,477.435,937.393,475.397z"/>
</svg>

Before

Width:  |  Height:  |  Size: 777 B

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v225.808c0,16.568,13.432,30,30,30h82.694
c-1.744,24.448-8.296,59.855-30.194,83.764c-16.582,18.104-39.718,26.904-70.731,26.904c-2.474,0-252.412,0.389-266.542,1.475
c-66.996,5.147-115.616,23.797-148.637,57.015c-27.231,27.393-42.85,63.446-47.402,109.622h-83.809c-16.568,0-30,13.432-30,30
v225.807c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30V653.396c0-16.568-13.432-30-30-30h-81.583
c8.882-68.411,51.361-99.952,140.115-106.803c14.44-0.779,232.373-1.309,262.087-1.309c48.264,0,87.037-15.702,115.243-46.67
c34.711-38.111,43.813-90.387,45.782-123.998h82.979c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z
M316.06,849.202H150.288V683.396H316.06V849.202z M880.682,284.616h-78.289c-2.432-0.388-4.95-0.481-7.513-0.243
c-0.636,0.06-1.263,0.145-1.885,0.243H714.91V118.809h165.772V284.616z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M905.725,161.016H651.477v-57.774c0-24.5-19.941-44.433-44.453-44.433H423.948c-24.512,0-44.454,19.933-44.454,44.433
v57.774h-254.25c-16.568,0-30,13.432-30,30s13.432,30,30,30h71.764v644.366c0,24.72,19.087,44.831,42.549,44.831h551.856
c23.462,0,42.55-20.111,42.55-44.831V221.016h71.762c16.568,0,30-13.432,30-30S922.293,161.016,905.725,161.016z M439.494,118.809
h151.983v42.207H439.494V118.809z M775.141,851.391H255.83V221.016h168.118h183.076h168.117V851.391z"/>
<path d="M415.863,294.732c-16.568,0-30,13.432-30,30v421.89c0,16.568,13.432,30,30,30s30-13.432,30-30v-421.89
C445.863,308.163,432.432,294.732,415.863,294.732z"/>
<path d="M585.107,324.732v421.89c0,16.568,13.432,30,30,30s30-13.432,30-30v-421.89c0-16.568-13.432-30-30-30
S585.107,308.163,585.107,324.732z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M515.485,909.203c-46.964,0-85.038-38.074-85.038-85.04c0-46.964,38.074-85.039,85.038-85.039
c46.967,0,85.039,38.074,85.039,85.039C600.523,871.128,562.452,909.203,515.485,909.203z"/>
<path d="M515.485,569.045c-46.965,0-85.039-38.072-85.039-85.041c0-46.965,38.075-85.039,85.039-85.039
c46.968,0,85.039,38.075,85.039,85.039C600.524,530.973,562.453,569.045,515.485,569.045z"/>
<path d="M515.484,228.882c-46.966,0-85.039-38.068-85.039-85.036c0-46.969,38.073-85.037,85.039-85.037
c46.966,0,85.04,38.069,85.04,85.037C600.524,190.815,562.45,228.882,515.484,228.882z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 971 B

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v83.652c-46.112,4.569-82.121,20.184-109.486,47.388
c-33.218,33.022-51.868,81.642-57.016,148.638c-1.085,14.126-1.474,264.068-1.474,266.542c0,31.014-8.801,54.149-26.904,70.731
c-23.974,21.958-59.516,28.487-83.97,30.21v-82.574c0-16.568-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30v225.807
c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30v-83.139c33.604-1.943,86.013-11.007,124.205-45.791
c30.968-28.206,46.67-66.979,46.67-115.243c0-29.715,0.529-247.649,1.309-262.084c6.842-88.709,38.345-131.183,106.667-140.101
v81.773c0,16.568,13.432,30,30,30h225.772c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z
M150.288,849.202V683.396H316.06v79.91c-0.168,1.838-0.159,3.65,0,5.425v80.472H150.288z M880.682,284.616H714.91v-82.623
c0.01-0.321,0.024-0.641,0.024-0.965s-0.014-0.644-0.024-0.965v-81.255h165.772V284.616z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,232.495c16.568,0,30-13.432,30-30V88.809c0-16.568-13.432-30-30-30H800.603c-16.568,0-30,13.432-30,30v28.733
H260.367V88.809c0-16.568-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30v113.687c0,16.568,13.432,30,30,30h29.147v503.021
h-29.147c-16.568,0-30,13.432-30,30v113.687c0,16.568,13.432,30,30,30h110.079c16.568,0,30-13.432,30-30v-27.675h510.236v27.675
c0,16.568,13.432,30,30,30h110.079c16.568,0,30-13.432,30-30V765.516c0-16.568-13.432-30-30-30h-27.261V232.495H910.682z
M830.603,118.809h50.079v53.687h-50.079V118.809z M150.288,118.809h50.079v53.687h-50.079V118.809z M200.367,849.202h-50.079
v-53.687h50.079V849.202z M880.682,849.202h-50.079v-53.687h50.079V849.202z M827.935,735.516h-27.332c-16.568,0-30,13.432-30,30
v30.525H260.367v-30.525c0-16.568-13.432-30-30-30h-25.446V232.495h25.446c16.568,0,30-13.432,30-30v-29.468h510.236v29.468
c0,16.568,13.432,30,30,30h27.332V735.516z"/>
<rect x="276.678" y="243.284" width="216" height="216"/>
<path d="M785.63,368.567c0.337-0.433,0.656-0.876,0.959-1.328c0.077-0.116,0.163-0.227,0.238-0.344
c0.342-0.533,0.655-1.082,0.949-1.638c0.121-0.228,0.229-0.46,0.341-0.691c0.177-0.364,0.344-0.731,0.5-1.103
c0.104-0.249,0.208-0.497,0.303-0.748c0.164-0.434,0.311-0.874,0.448-1.317c0.053-0.173,0.118-0.344,0.167-0.518
c0.17-0.599,0.307-1.206,0.427-1.817c0.041-0.213,0.073-0.427,0.108-0.641c0.074-0.449,0.136-0.9,0.183-1.353
c0.022-0.21,0.044-0.42,0.059-0.631c0.041-0.542,0.062-1.085,0.063-1.63c0-0.106,0.008-0.211,0.007-0.317
c-0.007-0.652-0.046-1.305-0.111-1.958c-0.017-0.169-0.044-0.337-0.064-0.506c-0.058-0.477-0.13-0.952-0.219-1.426
c-0.043-0.229-0.089-0.457-0.139-0.686c-0.093-0.422-0.201-0.841-0.319-1.26c-0.065-0.231-0.123-0.462-0.195-0.691
c-0.184-0.582-0.389-1.161-0.623-1.733c-0.001-0.002-0.002-0.005-0.003-0.007c-0.094-0.229-0.206-0.451-0.307-0.677
c-0.17-0.378-0.343-0.753-0.531-1.119c-0.128-0.249-0.266-0.493-0.404-0.738c-0.205-0.363-0.42-0.718-0.644-1.067
c-0.132-0.206-0.26-0.412-0.399-0.614c-0.372-0.541-0.761-1.067-1.176-1.57c-0.058-0.071-0.124-0.137-0.183-0.207
c-0.391-0.463-0.802-0.906-1.227-1.334c-0.064-0.064-0.117-0.134-0.182-0.198l-88.614-87.068
c-8.863-8.708-23.109-8.583-31.818,0.28c-8.71,8.864-8.584,23.109,0.279,31.818l49.38,48.519H556.486
c-12.427,0-22.5,10.074-22.5,22.5s10.073,22.5,22.5,22.5h156.397l-50.271,49.393c-8.864,8.709-8.99,22.955-0.281,31.818
c4.405,4.483,10.226,6.731,16.051,6.731c5.691,0,11.388-2.146,15.769-6.451l89.507-87.942c0.059-0.058,0.11-0.12,0.168-0.178
c0.036-0.036,0.076-0.066,0.111-0.102c0.083-0.085,0.153-0.178,0.235-0.264c0.37-0.388,0.724-0.786,1.061-1.195
C785.367,368.895,785.501,368.733,785.63,368.567z"/>
<path d="M456.071,641.91l-49.393,50.271V535.784c0-12.427-10.074-22.5-22.5-22.5s-22.5,10.073-22.5,22.5v156.398l-48.519-49.38
c-8.709-8.863-22.955-8.989-31.818-0.279c-8.864,8.709-8.989,22.954-0.28,31.818l87.068,88.614c0.063,0.064,0.133,0.117,0.196,0.18
c0.443,0.441,0.902,0.867,1.383,1.271c0.058,0.049,0.113,0.103,0.172,0.152c0.508,0.418,1.039,0.809,1.585,1.183
c0.204,0.14,0.411,0.269,0.619,0.402c0.355,0.227,0.717,0.443,1.086,0.651c0.241,0.135,0.481,0.272,0.726,0.398
c0.403,0.207,0.816,0.396,1.234,0.58c1.531,0.672,3.116,1.184,4.735,1.499c0.535,0.105,1.074,0.17,1.612,0.235
c0.175,0.021,0.349,0.059,0.525,0.076c0.724,0.07,1.448,0.106,2.171,0.106c0.108,0,0.215-0.014,0.322-0.016
c0.62-0.009,1.239-0.032,1.857-0.091c0.19-0.019,0.378-0.058,0.567-0.081c0.537-0.066,1.074-0.134,1.606-0.239
c0.175-0.034,0.345-0.087,0.519-0.125c0.542-0.12,1.082-0.245,1.616-0.405c0.165-0.049,0.324-0.115,0.488-0.169
c0.532-0.173,1.062-0.353,1.583-0.567c0.178-0.073,0.349-0.163,0.525-0.241c0.492-0.217,0.982-0.439,1.461-0.693
c0.215-0.114,0.421-0.248,0.633-0.369c0.423-0.242,0.846-0.484,1.255-0.756c0.263-0.174,0.512-0.371,0.768-0.557
c0.342-0.249,0.687-0.491,1.018-0.761c0.29-0.237,0.564-0.498,0.844-0.75c0.236-0.213,0.482-0.408,0.711-0.632
c0.046-0.045,0.084-0.095,0.129-0.14c0.049-0.049,0.103-0.09,0.151-0.139l87.942-89.506c8.709-8.864,8.583-23.11-0.28-31.819
C479.027,632.924,464.781,633.047,456.071,641.91z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.4 KiB

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<polygon fill="#080103" points="435.651,523.311 601.711,523.311 521.674,312.434 "/>
<path fill="#080103" d="M909.485,60.006h-788c-16.568,0-30,13.432-30,30v788c0,16.568,13.432,30,30,30h788
c16.568,0,30-13.432,30-30v-788C939.485,73.437,926.053,60.006,909.485,60.006z M725.727,765.518
c-3.504,1.33-7.103,1.96-10.64,1.96c-12.103,0.001-23.504-7.376-28.054-19.362l-62.55-164.805H411.175l-67.509,165.49
c-6.258,15.342-23.767,22.706-39.109,16.446c-15.341-6.258-22.704-23.768-16.446-39.108l75.082-184.055
c0.08-0.197,0.157-0.395,0.241-0.59l131.47-322.284c4.609-11.299,15.597-18.668,27.776-18.668c0.123,0,0.246,0,0.371,0.002
c12.325,0.151,23.305,7.828,27.679,19.352L673.21,542.603c0.068,0.178,0.138,0.354,0.203,0.534l69.717,183.688
C749.008,742.315,741.217,759.639,725.727,765.518z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M274.258,683.452c15.305,6.348,32.856-0.922,39.2-16.229l77.68-187.443h248.15l72.007,186.75
c4.593,11.911,15.953,19.216,27.998,19.215c3.587,0,7.238-0.648,10.786-2.017c15.459-5.961,23.159-23.325,17.198-38.784
l-79.198-205.402c-0.061-0.169-0.129-0.334-0.193-0.501L548.682,78.016c-4.413-11.446-15.352-19.052-27.618-19.205
c-0.126-0.002-0.25-0.002-0.375-0.002c-12.118,0-23.064,7.298-27.712,18.515L343.55,437.89c-0.088,0.203-0.171,0.409-0.255,0.615
l-85.267,205.749C251.686,659.56,258.952,677.11,274.258,683.452z M519.687,169.593l96.467,250.188h-200.15L519.687,169.593z"/>
<rect x="101.154" y="789.203" width="828.662" height="120"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M909.589,60.006h-788c-16.568,0-30,13.432-30,30v186.229c-0.133,1.147-0.209,2.311-0.209,3.493
s0.076,2.346,0.209,3.493v594.786c0,16.568,13.432,30,30,30h788c16.568,0,30-13.432,30-30v-788
C939.589,73.437,926.158,60.006,909.589,60.006z M879.589,120.006v129.722h-728V120.006H879.589z M151.589,309.727h465.807v538.279
H151.589V309.727z"/>
</svg>

Before

Width:  |  Height:  |  Size: 743 B

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path fill="#080103" d="M237.483,483.946c0.001,0.549,0.023,1.096,0.064,1.641c0.016,0.209,0.037,0.417,0.059,0.626
c0.047,0.455,0.109,0.906,0.184,1.357c0.035,0.214,0.066,0.427,0.108,0.64c0.119,0.61,0.257,1.217,0.426,1.816
c0.05,0.177,0.116,0.351,0.17,0.527c0.136,0.439,0.281,0.875,0.444,1.306c0.096,0.255,0.201,0.506,0.307,0.758
c0.154,0.367,0.319,0.729,0.493,1.088c0.114,0.236,0.225,0.473,0.348,0.705c0.292,0.553,0.603,1.098,0.943,1.628
c0.081,0.126,0.174,0.247,0.258,0.372c0.296,0.441,0.607,0.874,0.935,1.296c0.134,0.172,0.274,0.341,0.414,0.511
c0.33,0.4,0.676,0.788,1.037,1.167c0.087,0.092,0.161,0.191,0.25,0.281c0.038,0.039,0.08,0.071,0.119,0.109
c0.056,0.056,0.105,0.116,0.162,0.171l73.148,71.87c4.381,4.305,10.076,6.45,15.768,6.45c5.824,0,11.646-2.248,16.05-6.73
c8.709-8.864,8.583-23.11-0.28-31.819l-33.913-33.32h117.76c12.426,0,22.5-10.073,22.5-22.5s-10.074-22.5-22.5-22.5H314.976
l33.185-32.605c8.864-8.709,8.989-22.955,0.28-31.818c-8.708-8.864-22.955-8.99-31.818-0.28l-72.419,71.155
c-0.064,0.063-0.117,0.132-0.18,0.195c-0.429,0.431-0.842,0.877-1.236,1.343c-0.057,0.067-0.119,0.131-0.175,0.198
c-0.416,0.504-0.806,1.031-1.178,1.574c-0.138,0.2-0.264,0.405-0.395,0.608c-0.225,0.352-0.442,0.71-0.648,1.076
c-0.137,0.243-0.273,0.485-0.401,0.732c-0.191,0.37-0.367,0.75-0.538,1.133c-0.099,0.221-0.209,0.438-0.3,0.662
c-0.001,0.003-0.003,0.007-0.005,0.01c-0.235,0.573-0.439,1.153-0.624,1.737c-0.071,0.225-0.128,0.452-0.192,0.679
c-0.119,0.423-0.229,0.847-0.323,1.273c-0.049,0.225-0.095,0.45-0.137,0.676c-0.09,0.479-0.162,0.958-0.221,1.439
c-0.02,0.165-0.047,0.33-0.063,0.495c-0.065,0.654-0.104,1.309-0.111,1.963C237.476,483.742,237.483,483.843,237.483,483.946z"/>
<path fill="#080103" d="M788.252,497.705c0.327-0.42,0.636-0.85,0.93-1.289c0.086-0.128,0.181-0.251,0.264-0.38
c0.339-0.529,0.649-1.072,0.94-1.624c0.125-0.236,0.237-0.476,0.353-0.715c0.172-0.355,0.335-0.713,0.488-1.076
c0.107-0.255,0.214-0.51,0.311-0.768c0.16-0.424,0.303-0.854,0.437-1.286c0.058-0.188,0.127-0.373,0.18-0.562
c0.167-0.591,0.303-1.189,0.421-1.792c0.042-0.217,0.074-0.435,0.11-0.654c0.074-0.445,0.135-0.891,0.181-1.34
c0.022-0.213,0.044-0.425,0.06-0.639c0.041-0.538,0.061-1.078,0.063-1.62c0-0.109,0.008-0.217,0.007-0.326
c-0.007-0.652-0.046-1.304-0.111-1.956c-0.017-0.17-0.044-0.339-0.065-0.508c-0.058-0.476-0.129-0.951-0.218-1.425
c-0.043-0.229-0.089-0.457-0.139-0.686c-0.093-0.422-0.201-0.841-0.319-1.26c-0.065-0.231-0.123-0.462-0.195-0.691
c-0.184-0.582-0.389-1.161-0.623-1.733c-0.001-0.002-0.002-0.005-0.003-0.007c-0.094-0.229-0.206-0.451-0.307-0.677
c-0.17-0.378-0.343-0.753-0.531-1.119c-0.128-0.249-0.266-0.493-0.404-0.738c-0.205-0.363-0.42-0.718-0.644-1.067
c-0.132-0.206-0.26-0.412-0.399-0.614c-0.372-0.541-0.761-1.067-1.176-1.57c-0.058-0.071-0.124-0.137-0.183-0.207
c-0.391-0.463-0.802-0.906-1.227-1.334c-0.064-0.064-0.117-0.134-0.182-0.198l-72.419-71.155
c-8.864-8.708-23.107-8.583-31.819,0.28c-8.709,8.864-8.583,23.109,0.28,31.818l33.185,32.605H597.737
c-12.427,0-22.5,10.074-22.5,22.5s10.073,22.5,22.5,22.5h117.761l-33.913,33.32c-8.863,8.709-8.989,22.955-0.28,31.819
c4.405,4.482,10.226,6.73,16.051,6.73c5.691,0,11.388-2.146,15.769-6.45l73.147-71.87c0.056-0.055,0.106-0.115,0.162-0.171
c0.038-0.038,0.081-0.07,0.119-0.109c0.089-0.091,0.163-0.19,0.25-0.282c0.36-0.379,0.706-0.767,1.035-1.166
C787.977,498.048,788.117,497.878,788.252,497.705z"/>
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v82.638H515.515c-7.956,0-15.587,3.161-21.213,8.787
c-5.626,5.626-8.787,13.257-8.787,21.213l0.001,535.118H376.06v-83.169c0-16.568-13.432-30-30-30H120.288
c-16.568,0-30,13.432-30,30v225.807c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30v-82.638h139.457
c7.957,0,15.587-3.161,21.213-8.787s8.787-13.257,8.787-21.213l-0.001-535.118H654.91v83.169c0,16.568,13.432,30,30,30h225.772
c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z M150.288,849.202V683.396H316.06v79.653
c-0.135,1.154-0.212,2.326-0.212,3.516s0.077,2.362,0.212,3.516v79.122H150.288z M880.682,284.616H714.91V118.809h165.772V284.616z
"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.4 KiB

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809H684.91c-16.568,0-30,13.432-30,30v204.782l-241.001,92.693
c-9.384,3.61-16.337,11.681-18.517,21.496c-2.18,9.816,0.703,20.071,7.677,27.313l101.639,105.548l-166.304,82.754H120.288
c-16.568,0-30,13.432-30,30v225.807c0,16.568,13.432,30,30,30H346.06c16.568,0,30-13.432,30-30V671.675l191.984-95.532
c8.553-4.256,14.567-12.332,16.196-21.745c1.628-9.414-1.325-19.041-7.952-25.923l-98.631-102.424l211.729-81.434h221.296
c16.568,0,30-13.432,30-30V88.809C940.682,72.24,927.25,58.809,910.682,58.809z M316.06,849.202H150.288V683.396H316.06V849.202z
M880.682,284.616H714.91V118.809h165.772V284.616z"/>
</svg>

Before

Width:  |  Height:  |  Size: 1016 B

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,514.005H120.288c-16.568,0-30-13.431-30-29.999s13.432-30,30-30h790.394c16.568,0,30,13.432,30,30
S927.25,514.005,910.682,514.005z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 545 B

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,274.414H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,274.414,910.682,274.414z"/>
<path d="M910.682,454.006H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M120.288,154.823h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,154.823,120.288,154.823z"/>
<path d="M910.682,813.189H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,813.189,910.682,813.189z"/>
<path d="M910.682,633.597H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,633.597,910.682,633.597z"/>
<path d="M95.983,640.139c1.15,0.479,2.359,0.712,3.558,0.712c2.395,0,4.75-0.93,6.518-2.683l148.856-147.59
c1.753-1.738,2.739-4.104,2.739-6.572s-0.986-4.834-2.739-6.572l-148.856-147.59c-2.653-2.631-6.626-3.407-10.076-1.971
c-3.448,1.438-5.695,4.807-5.695,8.543v295.18C90.288,635.332,92.535,638.701,95.983,640.139z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M750.754,58.811H462.963c-16.568,0-30,13.432-30,30s13.432,30,30,30h73.28L369.235,849.2h-89.02c-16.568,0-30,13.432-30,30
s13.432,30,30,30h287.792c16.568,0,30-13.432,30-30s-13.432-30-30-30h-74.412l167.008-730.39h90.151c16.568,0,30-13.432,30-30
S767.323,58.811,750.754,58.811z"/>
</svg>

Before

Width:  |  Height:  |  Size: 671 B

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,454.006H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.431,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M120.288,219.374h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,219.374,120.288,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 838 B

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M120.288,514.005h536.394c16.568,0,30-13.431,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,514.005,120.288,514.005z"/>
<path d="M120.288,219.374h336.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,219.374,120.288,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 839 B

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M304.714,637.566c-85.151,0-154.426-68.331-154.426-152.322c0-83.992,69.275-152.324,154.426-152.324h114.089
c85.149,0,154.424,68.332,154.424,152.324c0,16.568,13.432,30,30,30s30-13.432,30-30c0-56.778-22.348-110.141-62.925-150.256
c-40.486-40.025-94.289-62.067-151.499-62.067H304.714c-57.21,0-111.014,22.042-151.5,62.067
c-40.579,40.116-62.926,93.478-62.926,150.256s22.348,110.14,62.926,150.256c40.486,40.024,94.29,62.066,151.5,62.066
c16.568,0,30-13.432,30-30S321.282,637.566,304.714,637.566z"/>
<path d="M877.756,332.512c-40.486-40.024-94.29-62.066-151.5-62.066c-16.568,0-30,13.432-30,30s13.432,30,30,30
c85.15,0,154.426,68.331,154.426,152.322c0,83.992-69.275,152.324-154.426,152.324h-114.09
c-85.149,0-154.424-68.332-154.424-152.324c0-16.568-13.432-30-30-30s-30,13.432-30,30c0,117.076,96.19,212.324,214.424,212.324
h114.09c57.21,0,111.014-22.043,151.5-62.067c40.578-40.116,62.926-93.479,62.926-150.257S918.334,372.628,877.756,332.512z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M120.288,453.006h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,453.006,120.288,453.006z"/>
<path d="M910.682,515.006H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,515.006,910.682,515.006z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 690 B

@ -1,40 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M819.649,454.006H211.321c-16.568,0-30,13.431-30,30s13.432,30,30,30h608.328c16.568,0,30-13.431,30-30
S836.217,454.006,819.649,454.006z"/>
<path d="M493.53,378.637c0.158,0.161,0.322,0.311,0.483,0.467c0.133,0.13,0.265,0.26,0.401,0.388
c0.48,0.451,0.968,0.886,1.47,1.299c0.027,0.022,0.055,0.043,0.083,0.065c0.511,0.418,1.035,0.812,1.567,1.191
c0.083,0.059,0.166,0.119,0.25,0.177c1.186,0.828,2.418,1.56,3.687,2.197c0.022,0.011,0.044,0.022,0.065,0.033
c2.445,1.22,5.021,2.093,7.655,2.604c0.026,0.005,0.052,0.008,0.077,0.013c0.442,0.085,0.885,0.162,1.33,0.226
c1.438,0.21,2.883,0.314,4.324,0.314c0.245,0,0.49-0.012,0.735-0.018c0.237-0.006,0.475-0.006,0.712-0.018
c0.162-0.008,0.323-0.024,0.485-0.034c0.329-0.021,0.658-0.041,0.986-0.073c0.109-0.011,0.217-0.027,0.326-0.039
c0.381-0.041,0.762-0.085,1.142-0.141c0.07-0.01,0.138-0.024,0.208-0.035c0.42-0.065,0.839-0.136,1.256-0.218
c0.033-0.007,0.066-0.015,0.1-0.022c0.453-0.091,0.905-0.192,1.354-0.305c0.001,0,0.003-0.001,0.004-0.001
c1.897-0.474,3.756-1.138,5.55-1.989c0.003-0.001,0.006-0.003,0.009-0.004c0.435-0.206,0.865-0.424,1.292-0.652
c0.032-0.017,0.064-0.036,0.096-0.053c0.392-0.212,0.781-0.432,1.165-0.663c0.069-0.042,0.138-0.085,0.207-0.127
c0.341-0.208,0.679-0.422,1.014-0.645c0.112-0.075,0.223-0.153,0.335-0.23c0.286-0.197,0.57-0.396,0.851-0.604
c0.151-0.111,0.299-0.227,0.448-0.342c0.237-0.182,0.473-0.366,0.706-0.556c0.179-0.147,0.355-0.298,0.532-0.449
c0.199-0.171,0.398-0.341,0.593-0.518c0.192-0.173,0.38-0.352,0.568-0.531c0.119-0.113,0.241-0.219,0.358-0.335
c0.061-0.06,0.117-0.123,0.177-0.183c0.065-0.065,0.133-0.125,0.197-0.19l111.82-113.81c11.612-11.819,11.444-30.813-0.374-42.425
c-11.819-11.613-30.814-11.445-42.425,0.374l-60.421,61.496V88.809c0-16.568-13.432-30-30-30s-30,13.432-30,30v195.465
l-59.311-60.364c-11.611-11.818-30.606-11.985-42.425-0.373c-11.818,11.612-11.985,30.606-0.373,42.425L493.53,378.637z"/>
<path d="M536.329,589.374c-0.045-0.046-0.095-0.087-0.14-0.132c-0.079-0.08-0.153-0.163-0.234-0.242
c-0.4-0.393-0.809-0.769-1.224-1.135c-0.071-0.062-0.144-0.12-0.216-0.182c-0.46-0.397-0.929-0.776-1.406-1.14
c-0.103-0.079-0.206-0.158-0.31-0.236c-1.13-0.841-2.306-1.59-3.518-2.25c-0.053-0.029-0.105-0.058-0.158-0.086
c-1.253-0.673-2.542-1.251-3.859-1.733c-0.049-0.018-0.098-0.036-0.147-0.054c-1.301-0.469-2.626-0.844-3.968-1.127
c-0.106-0.022-0.211-0.045-0.317-0.066c-0.652-0.13-1.306-0.244-1.964-0.33c-0.071-0.009-0.142-0.015-0.213-0.024
c-0.573-0.071-1.147-0.124-1.722-0.162c-0.17-0.011-0.34-0.024-0.51-0.032c-0.619-0.031-1.239-0.046-1.859-0.038
c-0.144,0.002-0.289,0.01-0.433,0.014c-0.521,0.014-1.041,0.042-1.56,0.082c-0.173,0.014-0.346,0.025-0.519,0.042
c-0.63,0.06-1.258,0.14-1.884,0.24c-0.118,0.019-0.236,0.043-0.355,0.063c-0.599,0.103-1.196,0.224-1.789,0.364
c-0.077,0.018-0.154,0.034-0.23,0.052c-0.687,0.167-1.368,0.361-2.044,0.578c-0.04,0.013-0.079,0.027-0.119,0.04
c-1.398,0.454-2.768,1.014-4.1,1.679c-0.021,0.011-0.042,0.022-0.064,0.032c-1.27,0.638-2.503,1.37-3.69,2.199
c-0.085,0.06-0.17,0.12-0.254,0.181c-0.514,0.367-1.021,0.749-1.516,1.153c-0.046,0.037-0.093,0.072-0.139,0.109
c-0.497,0.41-0.981,0.841-1.457,1.288c-0.136,0.128-0.268,0.258-0.401,0.388c-0.16,0.156-0.324,0.305-0.481,0.466L382.821,702.05
c-11.612,11.818-11.445,30.813,0.373,42.425c5.842,5.739,13.435,8.601,21.024,8.601c7.766,0,15.528-2.997,21.4-8.975l59.311-60.364
v195.465c0,16.568,13.432,30,30,30s30-13.432,30-30V683.74l60.421,61.496c11.61,11.817,30.605,11.987,42.425,0.374
c11.818-11.611,11.986-30.606,0.374-42.425L536.329,589.374z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,453.555H431.337c-16.568,0-30,13.432-30,30s13.432,30,30,30h479.345c16.568,0,30-13.432,30-30
S927.25,453.555,910.682,453.555z"/>
<path d="M431.337,213.907h479.345c16.568,0,30-13.432,30-30s-13.432-30-30-30H431.337c-16.568,0-30,13.432-30,30
S414.768,213.907,431.337,213.907z"/>
<path d="M910.682,753.203H431.337c-16.568,0-30,13.432-30,30s13.432,30,30,30h479.345c16.568,0,30-13.432,30-30
S927.25,753.203,910.682,753.203z"/>
<path d="M134.986,175.62l52.727-29.633v160.867c0,16.568,13.432,30,30,30s30-13.432,30-30V94.713
c0-10.656-5.653-20.512-14.85-25.894c-9.197-5.381-20.558-5.48-29.848-0.259l-97.425,54.756
c-14.444,8.118-19.572,26.407-11.455,40.851C102.253,178.61,120.543,183.739,134.986,175.62z"/>
<path d="M253.44,456.095c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h36.576
v72.589h-36.576c-16.568,0-30,13.432-30,30s13.432,30,30,30H253.44c16.568,0,30-13.432,30-30s-13.432-30-30-30h-36.576v-72.589
H253.44z"/>
<path d="M253.44,661.524H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30H223.44v121.979H120.288c-16.568,0-30,13.432-30,30
s13.432,30,30,30H253.44c15.567,0,28.363-11.858,29.853-27.034h0.147V691.524C283.44,674.955,270.008,661.524,253.44,661.524z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path fill="#080103" d="M910.682,58.809h-221c-16.568,0-30,13.432-30,30v221c0,16.568,13.432,30,30,30h80.996v114.476h-540
c-16.568,0-30,13.432-30,30v143.918h-80.39c-16.568,0-30,13.432-30,30v221c0,16.568,13.432,30,30,30h221c16.568,0,30-13.432,30-30
v-221c0-16.568-13.432-30-30-30h-80.61V514.284h540c16.568,0,30-13.432,30-30V339.809h80.004c16.568,0,30-13.432,30-30v-221
C940.682,72.24,927.25,58.809,910.682,58.809z M311.288,849.202h-161v-161h78.281c0.698,0.049,1.399,0.082,2.109,0.082
s1.411-0.034,2.109-0.082h78.501V849.202z M880.682,279.809h-161v-161h161V279.809z"/>
</svg>

Before

Width:  |  Height:  |  Size: 953 B

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,274.414H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,274.414,910.682,274.414z"/>
<path d="M910.682,454.006H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M120.288,154.823h790.394c16.568,0,30-13.432,30-30s-13.432-30-30-30H120.288c-16.568,0-30,13.432-30,30
S103.72,154.823,120.288,154.823z"/>
<path d="M910.682,813.189H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,813.189,910.682,813.189z"/>
<path d="M910.682,633.597H436.446c-16.568,0-30,13.432-30,30s13.432,30,30,30h474.236c16.568,0,30-13.432,30-30
S927.25,633.597,910.682,633.597z"/>
<path d="M241.883,638.168c1.768,1.753,4.123,2.683,6.518,2.683c1.199,0,2.408-0.232,3.558-0.712
c3.448-1.438,5.695-4.807,5.695-8.543v-295.18c0-3.736-2.247-7.105-5.695-8.543c-3.449-1.436-7.422-0.66-10.076,1.971
L93.027,477.434c-1.753,1.738-2.739,4.104-2.739,6.572s0.986,4.834,2.739,6.572L241.883,638.168z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M910.682,454.006H545.485V88.809c0-16.568-13.432-30-30-30s-30,13.432-30,30v365.197H120.288c-16.568,0-30,13.432-30,30
s13.432,30,30,30h365.197v365.197c0,16.568,13.432,30,30,30s30-13.432,30-30V514.005h365.197c16.568,0,30-13.431,30-30
S927.25,454.006,910.682,454.006z"/>
</svg>

Before

Width:  |  Height:  |  Size: 662 B

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M193.129,436.94c49.486-51.568,115.376-79.967,185.532-79.967h435.257L579.393,111.534
c-11.446-11.979-11.015-30.969,0.964-42.416c11.979-11.446,30.969-11.015,42.416,0.964l282.996,296.164
c0.018,0.018,0.034,0.038,0.051,0.057c0.095,0.1,0.186,0.202,0.279,0.303c0.154,0.166,0.304,0.335,0.454,0.504
c0.094,0.107,0.193,0.211,0.286,0.318c0.09,0.105,0.176,0.211,0.265,0.317c0.124,0.148,0.244,0.299,0.365,0.45
c0.03,0.038,0.061,0.075,0.092,0.113c0.078,0.098,0.161,0.194,0.238,0.293c0.082,0.105,0.16,0.212,0.24,0.318
c0.095,0.125,0.185,0.253,0.278,0.38c0.058,0.08,0.117,0.159,0.175,0.239c0.067,0.093,0.137,0.184,0.203,0.277
c0.071,0.102,0.139,0.206,0.209,0.308c0.074,0.109,0.144,0.22,0.217,0.33c0.065,0.099,0.131,0.197,0.194,0.296
c0.069,0.107,0.143,0.212,0.21,0.32c0.058,0.093,0.114,0.188,0.171,0.282c0.067,0.11,0.13,0.223,0.196,0.334
c0.052,0.088,0.104,0.176,0.155,0.264c0.079,0.136,0.163,0.271,0.24,0.408c0.045,0.081,0.088,0.164,0.133,0.246
c0.073,0.134,0.142,0.272,0.213,0.407c0.023,0.044,0.046,0.088,0.069,0.131c0.092,0.178,0.19,0.354,0.279,0.533
c0.033,0.068,0.064,0.136,0.097,0.204c0.084,0.173,0.161,0.349,0.242,0.523c0.094,0.205,0.194,0.408,0.283,0.614
c0.024,0.054,0.045,0.109,0.068,0.164c0.088,0.206,0.169,0.415,0.252,0.623c0.077,0.193,0.159,0.384,0.232,0.578
c0.016,0.042,0.03,0.084,0.046,0.127c0.089,0.24,0.171,0.483,0.254,0.726c0.06,0.176,0.125,0.351,0.182,0.528
c0.011,0.034,0.02,0.068,0.031,0.103c0.085,0.267,0.162,0.537,0.24,0.807c0.046,0.162,0.097,0.323,0.141,0.485
c0.009,0.032,0.016,0.064,0.024,0.095c0.074,0.28,0.141,0.562,0.207,0.845c0.036,0.156,0.077,0.31,0.111,0.466
c0.008,0.036,0.014,0.073,0.022,0.11c0.059,0.278,0.112,0.559,0.163,0.839c0.029,0.156,0.062,0.311,0.088,0.468
c0.008,0.049,0.014,0.098,0.022,0.147c0.043,0.264,0.08,0.53,0.116,0.797c0.022,0.16,0.048,0.319,0.067,0.48
c0.008,0.071,0.013,0.142,0.021,0.212c0.027,0.243,0.049,0.487,0.071,0.732c0.014,0.161,0.033,0.321,0.044,0.482
c0.007,0.1,0.009,0.201,0.015,0.301c0.013,0.223,0.024,0.446,0.032,0.67c0.006,0.153,0.017,0.306,0.02,0.46
c0.003,0.131,0,0.262,0.001,0.393c0.001,0.108,0.008,0.214,0.008,0.322s-0.007,0.214-0.008,0.322
c-0.001,0.131,0.002,0.262-0.001,0.393c-0.004,0.153-0.015,0.306-0.02,0.46c-0.009,0.224-0.019,0.447-0.032,0.67
c-0.006,0.1-0.008,0.201-0.015,0.301c-0.011,0.161-0.03,0.321-0.044,0.482c-0.021,0.245-0.043,0.489-0.071,0.732
c-0.008,0.071-0.012,0.142-0.021,0.212c-0.019,0.16-0.045,0.32-0.067,0.48c-0.036,0.266-0.073,0.532-0.116,0.797
c-0.008,0.049-0.014,0.098-0.022,0.147c-0.026,0.156-0.059,0.312-0.088,0.468c-0.052,0.281-0.104,0.561-0.163,0.839
c-0.008,0.036-0.014,0.073-0.022,0.11c-0.034,0.156-0.075,0.311-0.111,0.466c-0.066,0.283-0.133,0.565-0.207,0.845
c-0.008,0.032-0.015,0.064-0.024,0.095c-0.044,0.163-0.094,0.323-0.141,0.485c-0.078,0.27-0.155,0.54-0.24,0.807
c-0.011,0.034-0.02,0.068-0.031,0.103c-0.057,0.177-0.122,0.352-0.182,0.528c-0.083,0.243-0.165,0.486-0.254,0.726
c-0.016,0.042-0.03,0.085-0.046,0.127c-0.073,0.194-0.155,0.386-0.233,0.579c-0.083,0.207-0.164,0.416-0.252,0.621
c-0.023,0.055-0.045,0.11-0.068,0.164c-0.09,0.207-0.189,0.41-0.284,0.615c-0.081,0.174-0.158,0.35-0.241,0.522
c-0.033,0.068-0.064,0.136-0.097,0.204c-0.089,0.179-0.186,0.355-0.279,0.533c-0.023,0.044-0.046,0.088-0.069,0.131
c-0.071,0.136-0.14,0.273-0.213,0.407c-0.045,0.082-0.087,0.164-0.133,0.246c-0.077,0.137-0.161,0.272-0.24,0.408
c-0.051,0.088-0.103,0.176-0.155,0.264c-0.066,0.111-0.129,0.224-0.196,0.334c-0.057,0.094-0.112,0.188-0.171,0.282
c-0.068,0.108-0.141,0.213-0.21,0.32c-0.064,0.099-0.129,0.197-0.194,0.296c-0.072,0.11-0.143,0.221-0.217,0.33
c-0.07,0.103-0.137,0.206-0.209,0.308c-0.065,0.093-0.136,0.184-0.203,0.277c-0.057,0.08-0.116,0.159-0.175,0.239
c-0.093,0.127-0.184,0.255-0.278,0.38c-0.08,0.106-0.158,0.213-0.24,0.318c-0.077,0.099-0.159,0.195-0.238,0.293
c-0.03,0.038-0.061,0.075-0.092,0.113c-0.121,0.151-0.241,0.302-0.365,0.45c-0.088,0.106-0.175,0.212-0.265,0.317
c-0.093,0.108-0.191,0.212-0.286,0.318c-0.15,0.169-0.3,0.338-0.454,0.504c-0.093,0.101-0.184,0.203-0.279,0.303
c-0.018,0.019-0.034,0.038-0.051,0.057L622.773,703.862c-5.895,6.169-13.787,9.274-21.694,9.274c-7.448,0-14.911-2.758-20.721-8.311
c-11.979-11.446-12.411-30.436-0.964-42.415l234.525-245.438H378.661c-111.257,0-201.771,94.886-201.771,211.518v248.712
c0,16.568-13.432,30-30,30s-30-13.432-30-30V628.49C116.891,556.198,143.966,488.17,193.129,436.94z"/>
</svg>

Before

Width:  |  Height:  |  Size: 4.6 KiB

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<path d="M932.646,341.084L680.409,88.847c-10.716-10.716-28.09-10.716-38.806-0.001L98.325,632.123
c-10.716,10.716-10.716,28.09,0,38.806l171.347,171.347c-0.199,1.616-0.313,3.257-0.313,4.926c0,22.092,17.908,40,40,40h5.239
h110.731h452.623c22.091,0,40-17.908,40-40s-17.909-40-40-40H505.33l427.316-427.315
C943.361,369.173,943.361,351.799,932.646,341.084z M554.29,670.93L418.018,807.203h-96.107L185.636,670.929
c-10.715-10.716-10.716-28.089,0-38.806L350.56,467.201c10.716-10.716,28.09-10.716,38.805,0.001L554.29,632.124
C565.005,642.841,565.006,660.214,554.29,670.93z"/>
</svg>

Before

Width:  |  Height:  |  Size: 955 B

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图形" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="90.288 58.809 850.394 850.394" enable-background="new 90.288 58.809 850.394 850.394" xml:space="preserve">
<g>
<path d="M910.682,454.006H374.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h536.394c16.568,0,30-13.431,30-30
S927.25,454.006,910.682,454.006z"/>
<path d="M574.287,219.374h336.395c16.568,0,30-13.432,30-30s-13.432-30-30-30H574.287c-16.568,0-30,13.432-30,30
S557.719,219.374,574.287,219.374z"/>
<path d="M910.682,748.637H120.288c-16.568,0-30,13.432-30,30s13.432,30,30,30h790.394c16.568,0,30-13.432,30-30
S927.25,748.637,910.682,748.637z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 839 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save